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

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