Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [pdt-dev] can i get ISourceModule from IStructuredDocumentRegion

I mean you can use syncExec() for running things in UI thread... like
getting an active editor page.

2009/4/13 赵忠伟 <zhaozhongwei@xxxxxxxxxxxxxxxx>:
> how to use PlatformUI.getWorkbench().getDisplay().syncExec() ?
> ISemanticHighlighting#consumes is called by wtp,so i can not change the way
> it is called.
> all i can do is in ISemanticHighlighting#consumes use the limited
> parameter,but it is not enough,so i want to do some operation on pdt.
>
> i just want to add pdt some semantic highlighting function:)
>
> and the  semantic highlighting interface and extension are defined in
> wtp.so....any advice there?
> 2009/4/13 Michael Spector <spektom@xxxxxxxxx>
>>
>> Can you use PlatformUI.getWorkbench().getDisplay().syncExec() ?
>>
>> 2009/4/13 赵忠伟 <zhaozhongwei@xxxxxxxxxxxxxxxx>:
>> > thanks for your reply.i think it is executed in non-ui thread ,and the
>> > result is (page == null),as i use the following code.
>> >
>> > //   IWorkbench workbench  = PlatformUI.getWorkbench();
>> > //   IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
>> > //   IWorkbenchPage page  = window.getActivePage();
>> > //   IEditorPart editorpart = page.getActiveEditor();
>> > //   if(editorpart instanceof PHPStructuredEditor){
>> > but i think i have some other method to get the edtior.descript as
>> > following:
>> >
>> > PHPStructuredEditor#createStructedTextViewer
>> >  protected StructuredTextViewer createStructedTextViewer(Composite
>> > parent,
>> > IVerticalRuler verticalRuler, int styles) {
>> >   PHPStructuredTextViewer structuredTextViewer = new
>> > PHPStructuredTextViewer(this, parent, verticalRuler, getOverviewRuler(),
>> > isOverviewRulerVisible(), styles);
>> >   structuredTextViewer.addTextInputListener(new ITextInputListener(){
>> >
>> >    public void inputDocumentChanged(IDocument oldInput, IDocument
>> > newInput)
>> > {
>> > //do some operation
>> >    }
>> >
>> >    public void inputDocumentAboutToBeChanged(IDocument oldInput,
>> > IDocument
>> > newInput) {
>> >    }
>> >   });
>> >   return structuredTextViewer;
>> >  }
>> > i do some operations to put the current PHPStructuredEditor instance and
>> > IDocument to two global maps(they map to each other in a thread save
>> > way)
>> > .,and remove them when the editor is disposed.
>> >
>> > so in  ISemanticHighlighting#consumes i can get the IDocument :
>> > IStructuredDocumentRegion sdRegion;
>> > IStructuredDocument parentDocument = sdRegion.getParentDocument();
>> >
>> > and then through the global map,i think i can make it. i think it is a
>> > very
>> > poor way!
>> >
>> >
>> > wei
>> >
>> > 2009/4/13 Michael Spector <spektom@xxxxxxxxx>
>> >>
>> >> In this case you can do the following hack :)
>> >>
>> >> IStructuredDocumentRegion sdRegion;
>> >> IStructuredDocument parentDocument = sdRegion.getParentDocument();
>> >> IWorkbenchPage page = PHPUiPlugin.getActivePage();
>> >> if (page != null) {
>> >>        IEditorPart editor = page.getActiveEditor();
>> >>        if (editor instanceof PHPStructuredEditor) {
>> >>                ISourceModule sourceModule = (ISourceModule)
>> >> ((PHPStructuredEditor)
>> >> editor).getModelElement();
>> >>        }
>> >> }
>> >>
>> >> On Mon, Apr 13, 2009 at 12:22 PM, 赵忠伟 <zhaozhongwei@xxxxxxxxxxxxxxxx>
>> >> wrote:
>> >> > hi, Michael
>> >> >
>> >> > i extended the extension
>> >> > "org.eclipse.wst.sse.ui.semanticHighlighting"
>> >> > as following:
>> >> >  <extension point="org.eclipse.wst.sse.ui.semanticHighlighting">
>> >> >   <highlighting
>> >> >
>> >> >
>> >> >
>> >> > class="org.eclipse.php.internal.ui.editor.highlighting.PHPStaticSemanticHighlighting"
>> >> >         target="org.eclipse.php.core.phpsource">
>> >> >   </highlighting>
>> >> >  </extension>
>> >> >
>> >> > here PHPStaticSemanticHighlighting need to implement
>> >> > ISemanticHighlighting
>> >> > interface
>> >> > and there is a method public Position[]
>> >> > consumes(IStructuredDocumentRegion
>> >> > region); in ISemanticHighlighting interface ,so the context is i can
>> >> > get
>> >> > nothing except IStructuredDocumentRegion (actually
>> >> > XMLStructuredDocumentRegion).the method
>> >> > ISemanticHighlighting#consumes
>> >> > is
>> >> > called by SemanticHighlightingReconciler#reconcile (more or less
>> >> > 133rd
>> >> > line) .there is StructuredTextEditor in
>> >> > SemanticHighlightingReconciler,but i
>> >> > could not get it.if i the editor,i can get editorinput and the
>> >> > file,so i
>> >> > can
>> >> > use DLTKCore#create to get a ISourceModule ,but now i can only get
>> >> > IStructuredDocumentRegion ,nothing else!i search a lot in the pdt
>> >> > source
>> >> > but
>> >> > i did not find a way to get ISourceModule from
>> >> > IStructuredDocumentRegion.and
>> >> > in my oponion,ISourceModule must be relative to IScriptProject and
>> >> > IScriptFolder,so from IStructuredDocumentRegion ,it is hardly to find
>> >> > the
>> >> > corresponding ISourceModule (IScriptProject and IScriptFolder) it
>> >> > belongs
>> >> > to.i am sorry for my poor english:)
>> >> >
>> >> >
>> >> >
>> >> > thank you very much!
>> >> > best regards!
>> >> > _______________________________________________
>> >> > pdt-dev mailing list
>> >> > pdt-dev@xxxxxxxxxxx
>> >> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Best regards,
>> >> Michael
>> >> _______________________________________________
>> >> pdt-dev mailing list
>> >> pdt-dev@xxxxxxxxxxx
>> >> https://dev.eclipse.org/mailman/listinfo/pdt-dev
>> >
>> >
>> > _______________________________________________
>> > pdt-dev mailing list
>> > pdt-dev@xxxxxxxxxxx
>> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
>> >
>> >
>>
>>
>>
>> --
>> Best regards,
>> Michael
>> _______________________________________________
>> pdt-dev mailing list
>> pdt-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/pdt-dev
>
>
> _______________________________________________
> pdt-dev mailing list
> pdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/pdt-dev
>
>



-- 
Best regards,
Michael


Back to the top