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 <spek...@gmail.com>

> Can you use PlatformUI.getWorkbench().getDisplay().syncExec() ?
>
> 2009/4/13 赵忠伟 <zhaozhong...@eclipseworld.org>:
>  > 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 <spek...@gmail.com>
> >>
> >> 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, 赵忠伟 <zhaozhong...@eclipseworld.org>
> >> 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@eclipse.org
> >> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Best regards,
> >> Michael
> >> _______________________________________________
> >> pdt-dev mailing list
> >> pdt-dev@eclipse.org
> >> https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >
> >
> > _______________________________________________
> > pdt-dev mailing list
> > pdt-dev@eclipse.org
> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >
> >
>
>
>
> --
> Best regards,
> Michael
> _______________________________________________
> pdt-dev mailing list
> pdt-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/pdt-dev
>
_______________________________________________
pdt-dev mailing list
pdt-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/pdt-dev

Reply via email to