I mean you can use syncExec() for running things in UI thread... like getting an active editor page.
2009/4/13 赵忠伟 <zhaozhong...@eclipseworld.org>: > 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 > > -- Best regards, Michael _______________________________________________ pdt-dev mailing list pdt-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/pdt-dev