thanks to both of you!
great!
syncExec() works,it can get the current active editor!
as following

   PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
    public void run() {
     IWorkbenchPage page = PHPUiPlugin.getActivePage();
     if (page != null) {
      IEditorPart editor = page.getActiveEditor();
       if (editor instanceof PHPStructuredEditor) {


i think the things left may be esay to be done:)

2009/4/13 Roy Ganor <[email protected]>

> Obviously coloring is something that happens in the UI thread, but
> calculation of the tokens should not be dependent on it. Eventually we can
> remove the basic coloring to minimum and resolve some performance issues
> with big files... hopefully ;)
>
> - Roy
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
> Behalf Of Michael Spector
>  Sent: Monday, April 13, 2009 5:35 PM
> To: PDT Developers
> Subject: Re: [pdt-dev] can i get ISourceModule from
> IStructuredDocumentRegion
>
> So, in this case you should not use
> "org.eclipse.wst.sse.ui.semanticHighlighting"  :)
>
> 2009/4/13 Roy Ganor <[email protected]>:
> > Well, the whole idea with semantic highlighting that it is done in the
> background.
> > Reviewing the Java implementation we should be able to do it without any
> dependency of the UI thread?
> >
> > Thoughts?
> >
> >
> >
> > -----Original Message-----
> > From: [email protected] [mailto:[email protected]]
> On Behalf Of Michael Spector
> > Sent: Monday, April 13, 2009 5:12 PM
> > To: PDT Developers
> > Subject: 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 赵忠伟 <[email protected]>:
> >> 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 <[email protected]>
> >>>
> >>> Can you use PlatformUI.getWorkbench().getDisplay().syncExec() ?
> >>>
> >>> 2009/4/13 赵忠伟 <[email protected]>:
> >>> > 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 <[email protected]>
> >>> >>
> >>> >> 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, 赵忠伟 <
> [email protected]>
> >>> >> 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
> >>> >> > [email protected]
> >>> >> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >>> >> >
> >>> >> >
> >>> >>
> >>> >>
> >>> >>
> >>> >> --
> >>> >> Best regards,
> >>> >> Michael
> >>> >> _______________________________________________
> >>> >> pdt-dev mailing list
> >>> >> [email protected]
> >>> >> https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >>> >
> >>> >
> >>> > _______________________________________________
> >>> > pdt-dev mailing list
> >>> > [email protected]
> >>> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >>> >
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Best regards,
> >>> Michael
> >>> _______________________________________________
> >>> pdt-dev mailing list
> >>> [email protected]
> >>> https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >>
> >>
> >> _______________________________________________
> >> pdt-dev mailing list
> >> [email protected]
> >> https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >>
> >>
> >
> >
> >
> > --
> > Best regards,
> > Michael
> > _______________________________________________
> > pdt-dev mailing list
> > [email protected]
> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
> > _______________________________________________
> > pdt-dev mailing list
> > [email protected]
> > https://dev.eclipse.org/mailman/listinfo/pdt-dev
> >
>
>
>
> --
> Best regards,
> Michael
> _______________________________________________
> pdt-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/pdt-dev
> _______________________________________________
> pdt-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/pdt-dev
>
_______________________________________________
pdt-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/pdt-dev

Reply via email to