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

Reply via email to