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

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 <roy@xxxxxxxx>
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: pdt-dev-bounces@xxxxxxxxxxx [mailto:pdt-dev-bounces@xxxxxxxxxxx] 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 <roy@xxxxxxxx>:
> 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: pdt-dev-bounces@xxxxxxxxxxx [mailto:pdt-dev-bounces@xxxxxxxxxxx] 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 赵忠伟 <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
> _______________________________________________
> 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


Back to the top