<HTML><HEAD><META CONTENT="text/html; charset=UTF-8" HTTP-EQUIV="Content-Type"/><TITLE>EMMA Coverage Report</TITLE><STYLE TYPE="text/css"> TABLE,TD,TH {border-style:solid; border-color:black;} TD,TH {background:white;margin:0;line-height:100%;padding-left:0.5em;padding-right:0.5em;} TD {border-width:0 1px 0 0;} TH {border-width:1px 1px 1px 0;} TR TD.h {color:red;} TABLE {border-spacing:0; border-collapse:collapse;border-width:0 0 1px 1px;} P,H1,H2,H3,TH {font-family:verdana,arial,sans-serif;font-size:10pt;} TD {font-family:courier,monospace;font-size:10pt;} TABLE.hdft {border-spacing:0;border-collapse:collapse;border-style:none;} TABLE.hdft TH,TABLE.hdft TD {border-style:none;line-height:normal;} TABLE.hdft TH.tl,TABLE.hdft TD.tl {background:#6699CC;color:white;} TABLE.hdft TD.nv {background:#6633DD;color:white;} .nv A:link {color:white;} .nv A:visited {color:white;} .nv A:active {color:yellow;} TABLE.hdft A:link {color:white;} TABLE.hdft A:visited {color:white;} TABLE.hdft A:active {color:yellow;} .in {color:#356085;} TABLE.s TD {padding-left:0.25em;padding-right:0.25em;} TABLE.s TD.l {padding-left:0.25em;padding-right:0.25em;text-align:right;background:#F0F0F0;} TABLE.s TR.z TD {background:#FF9999;} TABLE.s TR.p TD {background:#FFFF88;} TABLE.s TR.c TD {background:#CCFFCC;} A:link {color:#0000EE;text-decoration:none;} A:visited {color:#0000EE;text-decoration:none;} A:hover {color:#0000EE;text-decoration:underline;} TABLE.cn {border-width:0 0 1px 0;} TABLE.s {border-width:1px 0 1px 1px;} TD.h {color:red;border-width:0 1px 0 0;} TD.f {border-width:0 1px 0 1px;} TD.hf {color:red;border-width:0 1px 0 1px;} TH.f {border-width:1px 1px 1px 1px;} TR.cis TD {background:#F0F0F0;} TR.cis TD {border-width:1px 1px 1px 0;} TR.cis TD.h {color:red;border-width:1px 1px 1px 0;} TR.cis TD.f {border-width:1px 1px 1px 1px;} TR.cis TD.hf {color:red;border-width:1px 1px 1px 1px;} TD.b {border-style:none;background:transparent;line-height:50%;} TD.bt {border-width:1px 0 0 0;background:transparent;line-height:50%;} TR.o TD {background:#F0F0F0;}TABLE.it {border-style:none;}TABLE.it TD,TABLE.it TH {border-style:none;}</STYLE></HEAD><BODY><TABLE CLASS="hdft" CELLSPACING="0" WIDTH="100%"><TR><TH CLASS="tl"><A HREF="http://www.eclemma.org/">EMMA</A> Coverage Report (generated Fri Feb 20 18:44:54 GMT 2009)</TH></TR><TR><TD CLASS="nv">[<A HREF="../xslUnitTestCoverage.html">all classes</A>][<A HREF="79.html">org.eclipse.wst.sse.ui</A>]</TD></TR></TABLE><H2>COVERAGE SUMMARY FOR SOURCE FILE [<SPAN CLASS="in">StructuredTextEditor.java</SPAN>]</H2><TABLE CELLSPACING="0" WIDTH="100%"><TR><TH>name</TH><TH>class, %</TH><TH>method, %</TH><TH>block, %</TH><TH>line, %</TH></TR><TR><TD>StructuredTextEditor.java</TD><TD CLASS="h">0% (0/21)</TD><TD CLASS="h">0% (0/174)</TD><TD CLASS="h">0% (0/5917)</TD><TD CLASS="h">0% (0/1370)</TD></TR></TABLE><H3>COVERAGE BREAKDOWN BY CLASS AND METHOD</H3><TABLE CLASS="cn" CELLSPACING="0" WIDTH="100%"><TR><TH CLASS="f">name</TH><TH>class, %</TH><TH>method, %</TH><TH>block, %</TH><TH>line, %</TH></TR><TR><TD CLASS="b"> </TD><TD CLASS="b"> </TD><TD CLASS="b"> </TD><TD CLASS="b"> </TD><TD CLASS="b"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#0">StructuredTextEditor</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/100)</TD><TD CLASS="h">0% (0/4459)</TD><TD CLASS="h">0% (0/1058)</TD></TR><TR><TD CLASS="f"><A HREF="#0"><static initializer></A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/44)</TD><TD CLASS="h">0% (0/10)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2">StructuredTextEditor (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/38)</TD><TD CLASS="h">0% (0/12)</TD></TR><TR><TD CLASS="f"><A HREF="#3">aboutToSaveModel (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/7)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4">activateContexts (IContextService): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/42)</TD><TD CLASS="h">0% (0/10)</TD></TR><TR><TD CLASS="f"><A HREF="#5">addContextMenuActions (IMenuManager): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#6">addExtendedContextMenuActions (IMenuManager): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/30)</TD><TD CLASS="h">0% (0/9)</TD></TR><TR><TD CLASS="f"><A HREF="#7">addExtendedRulerContextMenuActions (IMenuManager): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#8">beginBackgroundOperation (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#9">beginBusyStateInternal (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#a">close (boolean): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/27)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR><TD CLASS="f"><A HREF="#b">collectContextMenuPreferencePages (): String []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/96)</TD><TD CLASS="h">0% (0/19)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#c">computeAndSetDoubleClickAction (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/13)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#d">configureSourceViewerDecorationSupport (SourceViewerDecorationSupport): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#e">createActions (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/267)</TD><TD CLASS="h">0% (0/53)</TD></TR><TR><TD CLASS="f"><A HREF="#f">createChangeHover (): LineChangeHover</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#10">createCharacterPairMatcher (): ICharacterPairMatcher</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/83)</TD><TD CLASS="h">0% (0/8)</TD></TR><TR><TD CLASS="f"><A HREF="#11">createCombinedPreferenceStore (): IPreferenceStore</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/19)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#12">createContentOutlineConfiguration (): ContentOutlineConfiguration</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/27)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR><TD CLASS="f"><A HREF="#13">createModelDependentFields (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/37)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#14">createPartControl (Composite): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/85)</TD><TD CLASS="h">0% (0/19)</TD></TR><TR><TD CLASS="f"><A HREF="#15">createPropertySheetConfiguration (): PropertySheetConfiguration</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/27)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#16">createShowInTargetIds (): String []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/88)</TD><TD CLASS="h">0% (0/18)</TD></TR><TR><TD CLASS="f"><A HREF="#17">createSourceEditingTextTools (): ISourceEditingTextTools</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/145)</TD><TD CLASS="h">0% (0/24)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#18">createSourceViewer (Composite, IVerticalRuler, int): ISourceViewer</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/21)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#19">createSourceViewerConfiguration (): StructuredTextEditor$ConfigurationAndTarget</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/62)</TD><TD CLASS="h">0% (0/12)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#1a">createStructedTextViewer (Composite, IVerticalRuler, int): StructuredTextViewer</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#1b">createUndoRedoActions (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/27)</TD><TD CLASS="h">0% (0/8)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#1c">dispose (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/192)</TD><TD CLASS="h">0% (0/57)</TD></TR><TR><TD CLASS="f"><A HREF="#1d">disposeDocumentProvider (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/19)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#1e">disposeModelDependentFields (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/10)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#1f">doRevertToSaved (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/30)</TD><TD CLASS="h">0% (0/8)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#20">doSave (IProgressMonitor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR><TD CLASS="f"><A HREF="#21">doSetInput (IEditorInput): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/109)</TD><TD CLASS="h">0% (0/29)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#22">editorContextMenuAboutToShow (IMenuManager): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR><TD CLASS="f"><A HREF="#23">endBackgroundOperation (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#24">endBusyStateInternal (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/22)</TD><TD CLASS="h">0% (0/8)</TD></TR><TR><TD CLASS="f"><A HREF="#25">getAdapter (Class): Object</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/332)</TD><TD CLASS="h">0% (0/46)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#26">getConfigurationPoints (): String []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/29)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#27">getCursorPosition (): String</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/22)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#28">getDefinitions (String []): String []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/29)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR><TD CLASS="f"><A HREF="#29">getDisplay (): Display</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2a">getEditorPart (): IEditorPart</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/8)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#2b">getInternalDocumentListener (): IDocumentListener</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2c">getInternalModel (): IStructuredModel</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#2d">getInternalModelStateListener (): StructuredTextEditor$InternalModelStateList...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/13)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2e">getModel (): IStructuredModel</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/74)</TD><TD CLASS="h">0% (0/19)</TD></TR><TR><TD CLASS="f"><A HREF="#2f">getOrientation (): int</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#30">getSelectionProvider (): ISelectionProvider</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/60)</TD><TD CLASS="h">0% (0/12)</TD></TR><TR><TD CLASS="f"><A HREF="#31">getSignedSelection (ISourceViewer): IRegion</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/37)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#32">getSourceViewerDecorationSupport (ISourceViewer): SourceViewerDecorationSupport</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#33">getTextViewer (): StructuredTextViewer</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#34">gotoAnnotation (boolean): Annotation</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#35">gotoMatchingBracket (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/141)</TD><TD CLASS="h">0% (0/40)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#36">handleCursorPositionChanged (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#37">handlePreferenceStoreChanged (PropertyChangeEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/195)</TD><TD CLASS="h">0% (0/60)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#38">inBusyState (): boolean</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#39">init (IEditorSite, IEditorInput): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/15)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#3a">initSourceViewer (StructuredTextViewer): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#3b">initializeDocumentProvider (IDocumentProvider): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#3c">initializeDragAndDrop (ISourceViewer): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/13)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#3d">initializeDrop (ITextViewer): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/41)</TD><TD CLASS="h">0% (0/9)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#3e">initializeEditor (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/36)</TD><TD CLASS="h">0% (0/11)</TD></TR><TR><TD CLASS="f"><A HREF="#3f">initializeKeyBindingScopes (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#40">initializeSourceViewer (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/31)</TD><TD CLASS="h">0% (0/9)</TD></TR><TR><TD CLASS="f"><A HREF="#41">installEncodingSupport (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#42">installProjectionSupport (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/74)</TD><TD CLASS="h">0% (0/17)</TD></TR><TR><TD CLASS="f"><A HREF="#43">installSemanticHighlighting (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/23)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#44">installTextDragAndDrop (ISourceViewer): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#45">isFoldingEnabled (): boolean</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/7)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#46">logUnexpectedDocumentKind (IEditorInput): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/73)</TD><TD CLASS="h">0% (0/17)</TD></TR><TR><TD CLASS="f"><A HREF="#47">performRevert (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/45)</TD><TD CLASS="h">0% (0/16)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#48">rememberSelection (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#49">resetBusyState (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4a">restoreSelection (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/10)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#4b">rulerContextMenuAboutToShow (IMenuManager): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/71)</TD><TD CLASS="h">0% (0/18)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4c">safelySanityCheckState (IEditorInput): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#4d">sanityCheckState (IEditorInput): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/24)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4e">savedModel (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/7)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#4f">setDocumentProvider (IEditorInput): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/21)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#50">setEditorPart (IEditorPart): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#51">setModel (IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/49)</TD><TD CLASS="h">0% (0/12)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#52">setSourceViewerConfiguration (SourceViewerConfiguration): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/14)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR><TD CLASS="f"><A HREF="#53">showBusy (boolean): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/15)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#54">startBusyTimer (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/15)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#55">uninstallSemanticHighlighting (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/10)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#56">uninstallTextDragAndDrop (ISourceViewer): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#57">update (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/93)</TD><TD CLASS="h">0% (0/21)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#58">updateContentDependentActions (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/8)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#59">updateEditorContextMenuId (String): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/107)</TD><TD CLASS="h">0% (0/22)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#5a">updateEditorControlsForContentType (String): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/64)</TD><TD CLASS="h">0% (0/9)</TD></TR><TR><TD CLASS="f"><A HREF="#5b">updateEncodingMemento (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/42)</TD><TD CLASS="h">0% (0/16)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#5c">updateHelpContextId (String): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/26)</TD><TD CLASS="h">0% (0/8)</TD></TR><TR><TD CLASS="f"><A HREF="#5d">updateHoverBehavior (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/83)</TD><TD CLASS="h">0% (0/17)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#5e">updateMenuText (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/269)</TD><TD CLASS="h">0% (0/60)</TD></TR><TR><TD CLASS="f"><A HREF="#5f">updateProjectionSupport (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/55)</TD><TD CLASS="h">0% (0/15)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#60">updateRangeIndication (ISelection): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/91)</TD><TD CLASS="h">0% (0/17)</TD></TR><TR><TD CLASS="f"><A HREF="#61">updateRulerContextMenuId (String): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/105)</TD><TD CLASS="h">0% (0/21)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#62">updateSourceViewerConfiguration (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/85)</TD><TD CLASS="h">0% (0/27)</TD></TR><TR><TD CLASS="f"><A HREF="#63">updateStatusField (String): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/72)</TD><TD CLASS="h">0% (0/15)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#64">updateStatusLine (ISelection): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/54)</TD><TD CLASS="h">0% (0/16)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#65">StructuredTextEditor$1</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/80)</TD><TD CLASS="h">0% (0/15)</TD></TR><TR><TD CLASS="f"><A HREF="#65">StructuredTextEditor$1 (StructuredTextEditor$InternalDocumentListener, String...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/13)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#67">runInUIThread (IProgressMonitor): IStatus</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/67)</TD><TD CLASS="h">0% (0/13)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#68">StructuredTextEditor$10</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#68">StructuredTextEditor$10 (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#6a">createInformationControl (Shell): IInformationControl</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#6b">StructuredTextEditor$11</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/23)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#6b">StructuredTextEditor$11 (StructuredTextEditor, String): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/7)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#6d">runInUIThread (IProgressMonitor): IStatus</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/16)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#6e">StructuredTextEditor$2</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/16)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#6e">StructuredTextEditor$2 (StructuredTextEditor$InternalModelStateListener): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#70">run (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/10)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#71">StructuredTextEditor$3</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#71">StructuredTextEditor$3 (StructuredTextEditor$StructuredSelectionProvider): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#73">selectionChanged (SelectionChangedEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#74">StructuredTextEditor$4</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#74">StructuredTextEditor$4 (StructuredTextEditor$StructuredSelectionProvider): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#76">selectionChanged (SelectionChangedEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#77">StructuredTextEditor$5</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#77">StructuredTextEditor$5 (StructuredTextEditor$StructuredSelectionProvider, ISe...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#79">run (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#7a">StructuredTextEditor$6</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/22)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#7a">StructuredTextEditor$6 (StructuredTextEditor$TimeOutExpired): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#7c">run (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/16)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#7d">StructuredTextEditor$7</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/21)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#7d">StructuredTextEditor$7 (StructuredTextEditor, boolean): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#7f">run (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#80">StructuredTextEditor$8</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/25)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#80">StructuredTextEditor$8 (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#82">createInformationControl (Shell): IInformationControl</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/19)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#83">StructuredTextEditor$9</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#83">StructuredTextEditor$9 (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#85">selectionChanged (SelectionChangedEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#86">StructuredTextEditor$ConfigurationAndTarget</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/6)</TD></TR><TR><TD CLASS="f"><A HREF="#86">StructuredTextEditor$ConfigurationAndTarget (StructuredTextEditor, String, St...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#88">getConfiguration (): StructuredTextViewerConfiguration</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#89">getTargetId (): String</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#8a">StructuredTextEditor$GotoMatchingBracketHandler</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#8a">StructuredTextEditor$GotoMatchingBracketHandler (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#8c">execute (ExecutionEvent): Object</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#8d">StructuredTextEditor$InternalDocumentListener</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/45)</TD><TD CLASS="h">0% (0/10)</TD></TR><TR><TD CLASS="f"><A HREF="#8d">StructuredTextEditor$InternalDocumentListener (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#8f">documentAboutToBeChanged (DocumentEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/7)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#90">documentChanged (DocumentEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/32)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#91">StructuredTextEditor$InternalModelStateListener</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/90)</TD><TD CLASS="h">0% (0/26)</TD></TR><TR><TD CLASS="f"><A HREF="#91">StructuredTextEditor$InternalModelStateListener (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#93">modelAboutToBeChanged (IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#94">modelAboutToBeReinitialized (IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#95">modelChanged (IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/15)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#96">modelDirtyStateChanged (IStructuredModel, boolean): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#97">modelReinitialized (IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/33)</TD><TD CLASS="h">0% (0/9)</TD></TR><TR><TD CLASS="f"><A HREF="#98">modelResourceDeleted (IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#99">modelResourceMoved (IStructuredModel, IStructuredModel): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#9a">runOnDisplayThreadIfNeededed (Runnable): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/19)</TD><TD CLASS="h">0% (0/4)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#9b">StructuredTextEditor$OutlinePageListener</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/347)</TD><TD CLASS="h">0% (0/72)</TD></TR><TR><TD CLASS="f"><A HREF="#9b">StructuredTextEditor$OutlinePageListener (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#9d">doubleClick (DoubleClickEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/111)</TD><TD CLASS="h">0% (0/28)</TD></TR><TR><TD CLASS="f"><A HREF="#9e">selectionChanged (SelectionChangedEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/230)</TD><TD CLASS="h">0% (0/43)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#9f">StructuredTextEditor$ShowInTargetListAdapter</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/10)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#9f">StructuredTextEditor$ShowInTargetListAdapter (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#a1">getShowInTargetIds (): String []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#a2">StructuredTextEditor$StructuredSelectionProvider</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/584)</TD><TD CLASS="h">0% (0/138)</TD></TR><TR><TD CLASS="f"><A HREF="#a2">StructuredTextEditor$StructuredSelectionProvider (ISelectionProvider, Structu...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/58)</TD><TD CLASS="h">0% (0/15)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#a4">addPostSelectionChangedListener (ISelectionChangedListener): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#a5">addSelectionChangedListener (ISelectionChangedListener): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#a6">dispose (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/13)</TD><TD CLASS="h">0% (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#a7">fireSelectionChanged (SelectionChangedEvent, ListenerList): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/30)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#a8">getDocument (): IDocument</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/8)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#a9">getParentProvider (): ISelectionProvider</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#aa">getSelection (): ISelection</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/128)</TD><TD CLASS="h">0% (0/25)</TD></TR><TR><TD CLASS="f"><A HREF="#ab">getStructuredTextEditor (): StructuredTextEditor</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#ac">handlePostSelectionChanged (SelectionChangedEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/35)</TD><TD CLASS="h">0% (0/9)</TD></TR><TR><TD CLASS="f"><A HREF="#ad">handleSelectionChanged (SelectionChangedEvent): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/33)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#ae">isFiringSelection (): boolean</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#af">isValid (ISelection): boolean</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/25)</TD><TD CLASS="h">0% (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#b0">removePostSelectionChangedListener (ISelectionChangedListener): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#b1">removeSelectionChangedListener (ISelectionChangedListener): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/5)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#b2">setSelection (ISelection): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/30)</TD><TD CLASS="h">0% (0/11)</TD></TR><TR><TD CLASS="f"><A HREF="#b3">updateEvent (SelectionChangedEvent): SelectionChangedEvent</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/68)</TD><TD CLASS="h">0% (0/14)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#b4">updateSelection (ISelection): ISelection</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/127)</TD><TD CLASS="h">0% (0/26)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#b5">StructuredTextEditor$StructuredSelectionProvider$StructuredTextSelection</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/10)</TD><TD CLASS="h">0% (0/88)</TD><TD CLASS="h">0% (0/14)</TD></TR><TR><TD CLASS="f"><A HREF="#b6">StructuredTextEditor$StructuredSelectionProvider$StructuredTextSelection (IDo...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#b5">StructuredTextEditor$StructuredSelectionProvider$StructuredTextSelection (IDo...</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#b8">getFirstElement (): Object</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/12)</TD><TD CLASS="h">0% (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#b9">getSelectedStructures (): Object []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#ba">isEmpty (): boolean</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/11)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#bb">iterator (): Iterator</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#bc">size (): int</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#bd">toArray (): Object []</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/3)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#be">toList (): List</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/4)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#bf">toString (): String</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/18)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#c0">StructuredTextEditor$TimeOutExpired</A></TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/2)</TD><TD CLASS="h">0% (0/15)</TD><TD CLASS="h">0% (0/3)</TD></TR><TR><TD CLASS="f"><A HREF="#c0">StructuredTextEditor$TimeOutExpired (StructuredTextEditor): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/6)</TD><TD CLASS="h">0% (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#7a">run (): void</A></TD><TD> </TD><TD CLASS="h">0% (0/1)</TD><TD CLASS="h">0% (0/9)</TD><TD CLASS="h">0% (0/2)</TD></TR></TABLE><P></P><TABLE CLASS="s" CELLSPACING="0" WIDTH="100%"><TR CLASS="z"><TD CLASS="l">1</TD><TD>/*******************************************************************************</TD></TR><TR><TD CLASS="l">2</TD><TD> * Copyright (c) 2001, 2009 IBM Corporation and others.</TD></TR><TR><TD CLASS="l">3</TD><TD> * All rights reserved. This program and the accompanying materials</TD></TR><TR><TD CLASS="l">4</TD><TD> * are made available under the terms of the Eclipse Public License v1.0</TD></TR><TR><TD CLASS="l">5</TD><TD> * which accompanies this distribution, and is available at</TD></TR><TR><TD CLASS="l">6</TD><TD> * http://www.eclipse.org/legal/epl-v10.html</TD></TR><TR><TD CLASS="l">7</TD><TD> * </TD></TR><TR><TD CLASS="l">8</TD><TD> * Contributors:</TD></TR><TR><TD CLASS="l">9</TD><TD> * IBM Corporation - initial API and implementation</TD></TR><TR><TD CLASS="l">10</TD><TD> * Jens Lukowski/Innoopract - initial renaming/restructuring</TD></TR><TR><TD CLASS="l">11</TD><TD> * </TD></TR><TR><TD CLASS="l">12</TD><TD> *******************************************************************************/</TD></TR><TR><TD CLASS="l">13</TD><TD>package org.eclipse.wst.sse.ui;</TD></TR><TR><TD CLASS="l">14</TD><TD> </TD></TR><TR><TD CLASS="l">15</TD><TD>import java.io.IOException;</TD></TR><TR><TD CLASS="l">16</TD><TD>import java.lang.reflect.Method;</TD></TR><TR><TD CLASS="l">17</TD><TD>import java.text.MessageFormat;</TD></TR><TR><TD CLASS="l">18</TD><TD>import java.util.ArrayList;</TD></TR><TR><TD CLASS="l">19</TD><TD>import java.util.Arrays;</TD></TR><TR><TD CLASS="l">20</TD><TD>import java.util.Iterator;</TD></TR><TR><TD CLASS="l">21</TD><TD>import java.util.LinkedHashSet;</TD></TR><TR><TD CLASS="l">22</TD><TD>import java.util.List;</TD></TR><TR><TD CLASS="l">23</TD><TD>import java.util.ResourceBundle;</TD></TR><TR><TD CLASS="l">24</TD><TD>import java.util.Set;</TD></TR><TR><TD CLASS="l">25</TD><TD>import java.util.Timer;</TD></TR><TR><TD CLASS="l">26</TD><TD>import java.util.TimerTask;</TD></TR><TR><TD CLASS="l">27</TD><TD> </TD></TR><TR><TD CLASS="l">28</TD><TD>import org.eclipse.core.commands.AbstractHandler;</TD></TR><TR><TD CLASS="l">29</TD><TD>import org.eclipse.core.commands.ExecutionEvent;</TD></TR><TR><TD CLASS="l">30</TD><TD>import org.eclipse.core.commands.ExecutionException;</TD></TR><TR><TD CLASS="l">31</TD><TD>import org.eclipse.core.commands.IHandler;</TD></TR><TR><TD CLASS="l">32</TD><TD>import org.eclipse.core.runtime.CoreException;</TD></TR><TR><TD CLASS="l">33</TD><TD>import org.eclipse.core.runtime.IProgressMonitor;</TD></TR><TR><TD CLASS="l">34</TD><TD>import org.eclipse.core.runtime.IStatus;</TD></TR><TR><TD CLASS="l">35</TD><TD>import org.eclipse.core.runtime.ListenerList;</TD></TR><TR><TD CLASS="l">36</TD><TD>import org.eclipse.core.runtime.SafeRunner;</TD></TR><TR><TD CLASS="l">37</TD><TD>import org.eclipse.core.runtime.Status;</TD></TR><TR><TD CLASS="l">38</TD><TD>import org.eclipse.core.runtime.jobs.Job;</TD></TR><TR><TD CLASS="l">39</TD><TD>import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget;</TD></TR><TR><TD CLASS="l">40</TD><TD>import org.eclipse.emf.common.command.Command;</TD></TR><TR><TD CLASS="l">41</TD><TD>import org.eclipse.jface.action.Action;</TD></TR><TR><TD CLASS="l">42</TD><TD>import org.eclipse.jface.action.IAction;</TD></TR><TR><TD CLASS="l">43</TD><TD>import org.eclipse.jface.action.IMenuManager;</TD></TR><TR><TD CLASS="l">44</TD><TD>import org.eclipse.jface.action.IStatusLineManager;</TD></TR><TR><TD CLASS="l">45</TD><TD>import org.eclipse.jface.action.MenuManager;</TD></TR><TR><TD CLASS="l">46</TD><TD>import org.eclipse.jface.preference.IPreferenceStore;</TD></TR><TR><TD CLASS="l">47</TD><TD>import org.eclipse.jface.preference.PreferenceConverter;</TD></TR><TR><TD CLASS="l">48</TD><TD>import org.eclipse.jface.text.DefaultInformationControl;</TD></TR><TR><TD CLASS="l">49</TD><TD>import org.eclipse.jface.text.DocumentEvent;</TD></TR><TR><TD CLASS="l">50</TD><TD>import org.eclipse.jface.text.IBlockTextSelection;</TD></TR><TR><TD CLASS="l">51</TD><TD>import org.eclipse.jface.text.IDocument;</TD></TR><TR><TD CLASS="l">52</TD><TD>import org.eclipse.jface.text.IDocumentListener;</TD></TR><TR><TD CLASS="l">53</TD><TD>import org.eclipse.jface.text.IInformationControl;</TD></TR><TR><TD CLASS="l">54</TD><TD>import org.eclipse.jface.text.IInformationControlCreator;</TD></TR><TR><TD CLASS="l">55</TD><TD>import org.eclipse.jface.text.IRegion;</TD></TR><TR><TD CLASS="l">56</TD><TD>import org.eclipse.jface.text.ISelectionValidator;</TD></TR><TR><TD CLASS="l">57</TD><TD>import org.eclipse.jface.text.ITextHover;</TD></TR><TR><TD CLASS="l">58</TD><TD>import org.eclipse.jface.text.ITextOperationTarget;</TD></TR><TR><TD CLASS="l">59</TD><TD>import org.eclipse.jface.text.ITextSelection;</TD></TR><TR><TD CLASS="l">60</TD><TD>import org.eclipse.jface.text.ITextViewer;</TD></TR><TR><TD CLASS="l">61</TD><TD>import org.eclipse.jface.text.ITextViewerExtension;</TD></TR><TR><TD CLASS="l">62</TD><TD>import org.eclipse.jface.text.ITextViewerExtension2;</TD></TR><TR><TD CLASS="l">63</TD><TD>import org.eclipse.jface.text.ITextViewerExtension5;</TD></TR><TR><TD CLASS="l">64</TD><TD>import org.eclipse.jface.text.Region;</TD></TR><TR><TD CLASS="l">65</TD><TD>import org.eclipse.jface.text.TextSelection;</TD></TR><TR><TD CLASS="l">66</TD><TD>import org.eclipse.jface.text.contentassist.ContentAssistant;</TD></TR><TR><TD CLASS="l">67</TD><TD>import org.eclipse.jface.text.contentassist.IContentAssistant;</TD></TR><TR><TD CLASS="l">68</TD><TD>import org.eclipse.jface.text.information.InformationPresenter;</TD></TR><TR><TD CLASS="l">69</TD><TD>import org.eclipse.jface.text.source.Annotation;</TD></TR><TR><TD CLASS="l">70</TD><TD>import org.eclipse.jface.text.source.DefaultCharacterPairMatcher;</TD></TR><TR><TD CLASS="l">71</TD><TD>import org.eclipse.jface.text.source.ICharacterPairMatcher;</TD></TR><TR><TD CLASS="l">72</TD><TD>import org.eclipse.jface.text.source.ISourceViewer;</TD></TR><TR><TD CLASS="l">73</TD><TD>import org.eclipse.jface.text.source.IVerticalRuler;</TD></TR><TR><TD CLASS="l">74</TD><TD>import org.eclipse.jface.text.source.LineChangeHover;</TD></TR><TR><TD CLASS="l">75</TD><TD>import org.eclipse.jface.text.source.SourceViewerConfiguration;</TD></TR><TR><TD CLASS="l">76</TD><TD>import org.eclipse.jface.text.source.projection.ProjectionSupport;</TD></TR><TR><TD CLASS="l">77</TD><TD>import org.eclipse.jface.text.source.projection.ProjectionViewer;</TD></TR><TR><TD CLASS="l">78</TD><TD>import org.eclipse.jface.util.PropertyChangeEvent;</TD></TR><TR><TD CLASS="l">79</TD><TD>import org.eclipse.jface.util.SafeRunnable;</TD></TR><TR><TD CLASS="l">80</TD><TD>import org.eclipse.jface.viewers.DoubleClickEvent;</TD></TR><TR><TD CLASS="l">81</TD><TD>import org.eclipse.jface.viewers.IDoubleClickListener;</TD></TR><TR><TD CLASS="l">82</TD><TD>import org.eclipse.jface.viewers.ILabelProvider;</TD></TR><TR><TD CLASS="l">83</TD><TD>import org.eclipse.jface.viewers.IPostSelectionProvider;</TD></TR><TR><TD CLASS="l">84</TD><TD>import org.eclipse.jface.viewers.ISelection;</TD></TR><TR><TD CLASS="l">85</TD><TD>import org.eclipse.jface.viewers.ISelectionChangedListener;</TD></TR><TR><TD CLASS="l">86</TD><TD>import org.eclipse.jface.viewers.ISelectionProvider;</TD></TR><TR><TD CLASS="l">87</TD><TD>import org.eclipse.jface.viewers.IStructuredSelection;</TD></TR><TR><TD CLASS="l">88</TD><TD>import org.eclipse.jface.viewers.SelectionChangedEvent;</TD></TR><TR><TD CLASS="l">89</TD><TD>import org.eclipse.swt.SWT;</TD></TR><TR><TD CLASS="l">90</TD><TD>import org.eclipse.swt.custom.StyledText;</TD></TR><TR><TD CLASS="l">91</TD><TD>import org.eclipse.swt.dnd.DND;</TD></TR><TR><TD CLASS="l">92</TD><TD>import org.eclipse.swt.dnd.DropTarget;</TD></TR><TR><TD CLASS="l">93</TD><TD>import org.eclipse.swt.graphics.Color;</TD></TR><TR><TD CLASS="l">94</TD><TD>import org.eclipse.swt.graphics.Image;</TD></TR><TR><TD CLASS="l">95</TD><TD>import org.eclipse.swt.graphics.Point;</TD></TR><TR><TD CLASS="l">96</TD><TD>import org.eclipse.swt.graphics.RGB;</TD></TR><TR><TD CLASS="l">97</TD><TD>import org.eclipse.swt.widgets.Composite;</TD></TR><TR><TD CLASS="l">98</TD><TD>import org.eclipse.swt.widgets.Control;</TD></TR><TR><TD CLASS="l">99</TD><TD>import org.eclipse.swt.widgets.Display;</TD></TR><TR><TD CLASS="l">100</TD><TD>import org.eclipse.swt.widgets.Menu;</TD></TR><TR><TD CLASS="l">101</TD><TD>import org.eclipse.swt.widgets.Shell;</TD></TR><TR><TD CLASS="l">102</TD><TD>import org.eclipse.ui.IEditorActionBarContributor;</TD></TR><TR><TD CLASS="l">103</TD><TD>import org.eclipse.ui.IEditorInput;</TD></TR><TR><TD CLASS="l">104</TD><TD>import org.eclipse.ui.IEditorPart;</TD></TR><TR><TD CLASS="l">105</TD><TD>import org.eclipse.ui.IEditorSite;</TD></TR><TR><TD CLASS="l">106</TD><TD>import org.eclipse.ui.IFileEditorInput;</TD></TR><TR><TD CLASS="l">107</TD><TD>import org.eclipse.ui.IPageLayout;</TD></TR><TR><TD CLASS="l">108</TD><TD>import org.eclipse.ui.ISharedImages;</TD></TR><TR><TD CLASS="l">109</TD><TD>import org.eclipse.ui.IStorageEditorInput;</TD></TR><TR><TD CLASS="l">110</TD><TD>import org.eclipse.ui.IWorkbenchActionConstants;</TD></TR><TR><TD CLASS="l">111</TD><TD>import org.eclipse.ui.PartInitException;</TD></TR><TR><TD CLASS="l">112</TD><TD>import org.eclipse.ui.PlatformUI;</TD></TR><TR><TD CLASS="l">113</TD><TD>import org.eclipse.ui.contexts.IContextService;</TD></TR><TR><TD CLASS="l">114</TD><TD>import org.eclipse.ui.editors.text.EditorsUI;</TD></TR><TR><TD CLASS="l">115</TD><TD>import org.eclipse.ui.editors.text.ITextEditorHelpContextIds;</TD></TR><TR><TD CLASS="l">116</TD><TD>import org.eclipse.ui.editors.text.TextEditor;</TD></TR><TR><TD CLASS="l">117</TD><TD>import org.eclipse.ui.handlers.IHandlerService;</TD></TR><TR><TD CLASS="l">118</TD><TD>import org.eclipse.ui.help.IWorkbenchHelpSystem;</TD></TR><TR><TD CLASS="l">119</TD><TD>import org.eclipse.ui.part.IShowInTargetList;</TD></TR><TR><TD CLASS="l">120</TD><TD>import org.eclipse.ui.progress.IWorkbenchSiteProgressService;</TD></TR><TR><TD CLASS="l">121</TD><TD>import org.eclipse.ui.progress.UIJob;</TD></TR><TR><TD CLASS="l">122</TD><TD>import org.eclipse.ui.texteditor.ChainedPreferenceStore;</TD></TR><TR><TD CLASS="l">123</TD><TD>import org.eclipse.ui.texteditor.DefaultRangeIndicator;</TD></TR><TR><TD CLASS="l">124</TD><TD>import org.eclipse.ui.texteditor.IAbstractTextEditorHelpContextIds;</TD></TR><TR><TD CLASS="l">125</TD><TD>import org.eclipse.ui.texteditor.IDocumentProvider;</TD></TR><TR><TD CLASS="l">126</TD><TD>import org.eclipse.ui.texteditor.IStatusField;</TD></TR><TR><TD CLASS="l">127</TD><TD>import org.eclipse.ui.texteditor.ITextEditor;</TD></TR><TR><TD CLASS="l">128</TD><TD>import org.eclipse.ui.texteditor.ITextEditorActionConstants;</TD></TR><TR><TD CLASS="l">129</TD><TD>import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;</TD></TR><TR><TD CLASS="l">130</TD><TD>import org.eclipse.ui.texteditor.IUpdate;</TD></TR><TR><TD CLASS="l">131</TD><TD>import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;</TD></TR><TR><TD CLASS="l">132</TD><TD>import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;</TD></TR><TR><TD CLASS="l">133</TD><TD>import org.eclipse.ui.texteditor.TextOperationAction;</TD></TR><TR><TD CLASS="l">134</TD><TD>import org.eclipse.ui.views.contentoutline.IContentOutlinePage;</TD></TR><TR><TD CLASS="l">135</TD><TD>import org.eclipse.ui.views.properties.IPropertySheetPage;</TD></TR><TR><TD CLASS="l">136</TD><TD>import org.eclipse.wst.sse.core.StructuredModelManager;</TD></TR><TR><TD CLASS="l">137</TD><TD>import org.eclipse.wst.sse.core.internal.document.IDocumentCharsetDetector;</TD></TR><TR><TD CLASS="l">138</TD><TD>import org.eclipse.wst.sse.core.internal.encoding.EncodingMemento;</TD></TR><TR><TD CLASS="l">139</TD><TD>import org.eclipse.wst.sse.core.internal.provisional.IModelStateListener;</TD></TR><TR><TD CLASS="l">140</TD><TD>import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;</TD></TR><TR><TD CLASS="l">141</TD><TD>import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;</TD></TR><TR><TD CLASS="l">142</TD><TD>import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;</TD></TR><TR><TD CLASS="l">143</TD><TD>import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;</TD></TR><TR><TD CLASS="l">144</TD><TD>import org.eclipse.wst.sse.core.internal.text.IExecutionDelegatable;</TD></TR><TR><TD CLASS="l">145</TD><TD>import org.eclipse.wst.sse.core.internal.undo.IStructuredTextUndoManager;</TD></TR><TR><TD CLASS="l">146</TD><TD>import org.eclipse.wst.sse.core.utils.StringUtils;</TD></TR><TR><TD CLASS="l">147</TD><TD>import org.eclipse.wst.sse.ui.internal.ExtendedConfigurationBuilder;</TD></TR><TR><TD CLASS="l">148</TD><TD>import org.eclipse.wst.sse.ui.internal.ExtendedEditorActionBuilder;</TD></TR><TR><TD CLASS="l">149</TD><TD>import org.eclipse.wst.sse.ui.internal.ExtendedEditorDropTargetAdapter;</TD></TR><TR><TD CLASS="l">150</TD><TD>import org.eclipse.wst.sse.ui.internal.IExtendedContributor;</TD></TR><TR><TD CLASS="l">151</TD><TD>import org.eclipse.wst.sse.ui.internal.IModelProvider;</TD></TR><TR><TD CLASS="l">152</TD><TD>import org.eclipse.wst.sse.ui.internal.IPopupMenuContributor;</TD></TR><TR><TD CLASS="l">153</TD><TD>import org.eclipse.wst.sse.ui.internal.Logger;</TD></TR><TR><TD CLASS="l">154</TD><TD>import org.eclipse.wst.sse.ui.internal.ReadOnlyAwareDropTargetAdapter;</TD></TR><TR><TD CLASS="l">155</TD><TD>import org.eclipse.wst.sse.ui.internal.SSEUIMessages;</TD></TR><TR><TD CLASS="l">156</TD><TD>import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;</TD></TR><TR><TD CLASS="l">157</TD><TD>import org.eclipse.wst.sse.ui.internal.StorageModelProvider;</TD></TR><TR><TD CLASS="l">158</TD><TD>import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;</TD></TR><TR><TD CLASS="l">159</TD><TD>import org.eclipse.wst.sse.ui.internal.UnknownContentTypeDialog;</TD></TR><TR><TD CLASS="l">160</TD><TD>import org.eclipse.wst.sse.ui.internal.actions.ActionDefinitionIds;</TD></TR><TR><TD CLASS="l">161</TD><TD>import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants;</TD></TR><TR><TD CLASS="l">162</TD><TD>import org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOutlinePage;</TD></TR><TR><TD CLASS="l">163</TD><TD>import org.eclipse.wst.sse.ui.internal.debug.BreakpointRulerAction;</TD></TR><TR><TD CLASS="l">164</TD><TD>import org.eclipse.wst.sse.ui.internal.debug.EditBreakpointAction;</TD></TR><TR><TD CLASS="l">165</TD><TD>import org.eclipse.wst.sse.ui.internal.debug.ManageBreakpointAction;</TD></TR><TR><TD CLASS="l">166</TD><TD>import org.eclipse.wst.sse.ui.internal.debug.ToggleBreakpointAction;</TD></TR><TR><TD CLASS="l">167</TD><TD>import org.eclipse.wst.sse.ui.internal.debug.ToggleBreakpointsTarget;</TD></TR><TR><TD CLASS="l">168</TD><TD>import org.eclipse.wst.sse.ui.internal.derived.HTMLTextPresenter;</TD></TR><TR><TD CLASS="l">169</TD><TD>import org.eclipse.wst.sse.ui.internal.editor.EditorModelUtil;</TD></TR><TR><TD CLASS="l">170</TD><TD>import org.eclipse.wst.sse.ui.internal.editor.IHelpContextIds;</TD></TR><TR><TD CLASS="l">171</TD><TD>import org.eclipse.wst.sse.ui.internal.editor.SelectionConvertor;</TD></TR><TR><TD CLASS="l">172</TD><TD>import org.eclipse.wst.sse.ui.internal.editor.StructuredModelDocumentProvider;</TD></TR><TR><TD CLASS="l">173</TD><TD>import org.eclipse.wst.sse.ui.internal.extension.BreakpointProviderBuilder;</TD></TR><TR><TD CLASS="l">174</TD><TD>import org.eclipse.wst.sse.ui.internal.hyperlink.OpenHyperlinkAction;</TD></TR><TR><TD CLASS="l">175</TD><TD>import org.eclipse.wst.sse.ui.internal.preferences.EditorPreferenceNames;</TD></TR><TR><TD CLASS="l">176</TD><TD>import org.eclipse.wst.sse.ui.internal.projection.IStructuredTextFoldingProvider;</TD></TR><TR><TD CLASS="l">177</TD><TD>import org.eclipse.wst.sse.ui.internal.properties.ConfigurablePropertySheetPage;</TD></TR><TR><TD CLASS="l">178</TD><TD>import org.eclipse.wst.sse.ui.internal.properties.ShowPropertiesAction;</TD></TR><TR><TD CLASS="l">179</TD><TD>import org.eclipse.wst.sse.ui.internal.provisional.extensions.ConfigurationPointCalculator;</TD></TR><TR><TD CLASS="l">180</TD><TD>import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools;</TD></TR><TR><TD CLASS="l">181</TD><TD>import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.NullSourceEditingTextTools;</TD></TR><TR><TD CLASS="l">182</TD><TD>import org.eclipse.wst.sse.ui.internal.provisional.style.SemanticHighlightingManager;</TD></TR><TR><TD CLASS="l">183</TD><TD>import org.eclipse.wst.sse.ui.internal.selection.SelectionHistory;</TD></TR><TR><TD CLASS="l">184</TD><TD>import org.eclipse.wst.sse.ui.internal.text.DocumentRegionEdgeMatcher;</TD></TR><TR><TD CLASS="l">185</TD><TD>import org.eclipse.wst.sse.ui.internal.util.Assert;</TD></TR><TR><TD CLASS="l">186</TD><TD>import org.eclipse.wst.sse.ui.internal.util.EditorUtility;</TD></TR><TR><TD CLASS="l">187</TD><TD>import org.eclipse.wst.sse.ui.views.contentoutline.ContentOutlineConfiguration;</TD></TR><TR><TD CLASS="l">188</TD><TD>import org.eclipse.wst.sse.ui.views.properties.PropertySheetConfiguration;</TD></TR><TR><TD CLASS="l">189</TD><TD> </TD></TR><TR><TD CLASS="l">190</TD><TD>/**</TD></TR><TR><TD CLASS="l">191</TD><TD> * A Text Editor for editing structured models and structured documents.</TD></TR><TR><TD CLASS="l">192</TD><TD> * <p></TD></TR><TR><TD CLASS="l">193</TD><TD> * This class is not meant to be subclassed.<br /></TD></TR><TR><TD CLASS="l">194</TD><TD> * New content types may associate source viewer, content outline, and</TD></TR><TR><TD CLASS="l">195</TD><TD> * property sheet configurations to extend the existing functionality.</TD></TR><TR><TD CLASS="l">196</TD><TD> * </p></TD></TR><TR><TD CLASS="l">197</TD><TD> * </TD></TR><TR><TD CLASS="l">198</TD><TD> * @see org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration</TD></TR><TR><TD CLASS="l">199</TD><TD> * @see org.eclipse.wst.sse.ui.views.contentoutline.ContentOutlineConfiguration</TD></TR><TR><TD CLASS="l">200</TD><TD> * @see org.eclipse.wst.sse.ui.views.properties.PropertySheetConfiguration</TD></TR><TR><TD CLASS="l">201</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="8a">202</A></TD><TD> * @since 1.0</TD></TR><TR><TD CLASS="l">203</TD><TD> */</TD></TR><TR><TD CLASS="l">204</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">205</TD><TD>public class StructuredTextEditor extends TextEditor {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="8c">206</A></TD><TD> private class GotoMatchingBracketHandler extends AbstractHandler {</TD></TR><TR><TD CLASS="l">207</TD><TD> public Object execute(ExecutionEvent arg0) throws ExecutionException {</TD></TR><TR CLASS="z"><TD CLASS="l">208</TD><TD> gotoMatchingBracket();</TD></TR><TR CLASS="z"><TD CLASS="l">209</TD><TD> return null;</TD></TR><TR CLASS="z"><TD CLASS="l">210</TD><TD> }</TD></TR><TR><TD CLASS="l">211</TD><TD> }</TD></TR><TR><TD CLASS="l">212</TD><TD> </TD></TR><TR><TD CLASS="l">213</TD><TD> /* </TD></TR><TR><TD CLASS="l">214</TD><TD> * This listener serves as a last resort double-check to make sure to call </TD></TR><TR><TD CLASS="l">215</TD><TD> * validate edit on non-editor driven updates (edits from other pages in a </TD></TR><TR><TD CLASS="l">216</TD><TD> * multipage editor, properties view, outline view) and if the non-editor </TD></TR><TR><TD CLASS="l">217</TD><TD> * driven update should not have happened, undo it.</TD></TR><TR><TD CLASS="l"><A NAME="8d">218</A></TD><TD> * </TD></TR><TR><TD CLASS="l">219</TD><TD> * NOTE: Best practice though should be for the non-editor parts to call</TD></TR><TR><TD CLASS="l"><A NAME="8f">220</A></TD><TD> * validateEdit first before attempting to modify the document.</TD></TR><TR><TD CLASS="l">221</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">222</TD><TD> class InternalDocumentListener implements IDocumentListener {</TD></TR><TR><TD CLASS="l">223</TD><TD> public void documentAboutToBeChanged(DocumentEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="90">224</A></TD><TD> fDirtyBeforeDocumentEvent = isDirty();</TD></TR><TR CLASS="z"><TD CLASS="l">225</TD><TD> }</TD></TR><TR><TD CLASS="l">226</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="65">227</A></TD><TD> public void documentChanged(DocumentEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">228</TD><TD> if (isEditorInputReadOnly() && (validateEditCount == 0)) {</TD></TR><TR CLASS="z"><TD CLASS="l">229</TD><TD> final int offset = event.getOffset() + event.getLength();</TD></TR><TR CLASS="z"><TD CLASS="l">230</TD><TD> final IStructuredModel internalModel = getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">231</TD><TD> Job validateEditJob = new UIJob(SSEUIMessages._UI_File_is_read_only) {</TD></TR><TR><TD CLASS="l"><A NAME="67">232</A></TD><TD> public IStatus runInUIThread(IProgressMonitor monitor) {</TD></TR><TR><TD CLASS="l">233</TD><TD> // it's possible to trigger another document change</TD></TR><TR><TD CLASS="l">234</TD><TD> // while sanity checking, so make sure not to </TD></TR><TR><TD CLASS="l">235</TD><TD> // sanity check when already sanity checking</TD></TR><TR CLASS="z"><TD CLASS="l">236</TD><TD> if (!fEditorDisposed && (validateEditCount == 0)) {</TD></TR><TR><TD CLASS="l">237</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">238</TD><TD> ++validateEditCount;</TD></TR><TR CLASS="z"><TD CLASS="l">239</TD><TD> boolean status = validateEditorInputState();</TD></TR><TR CLASS="z"><TD CLASS="l">240</TD><TD> if (!status) {</TD></TR><TR CLASS="z"><TD CLASS="l">241</TD><TD> if (internalModel != null) {</TD></TR><TR><TD CLASS="l">242</TD><TD> // change shouldnt have been made, so undo it</TD></TR><TR CLASS="z"><TD CLASS="l">243</TD><TD> internalModel.getUndoManager().undo();</TD></TR><TR CLASS="z"><TD CLASS="l">244</TD><TD> getSourceViewer().setSelectedRange(offset, 0);</TD></TR><TR CLASS="z"><TD CLASS="l">245</TD><TD> if (!fDirtyBeforeDocumentEvent) {</TD></TR><TR><TD CLASS="l">246</TD><TD> // reset dirty state if</TD></TR><TR><TD CLASS="l">247</TD><TD> // model not dirty before</TD></TR><TR><TD CLASS="l">248</TD><TD> // document event</TD></TR><TR CLASS="z"><TD CLASS="l">249</TD><TD> internalModel.setDirtyState(false);</TD></TR><TR><TD CLASS="l">250</TD><TD> }</TD></TR><TR><TD CLASS="l">251</TD><TD> }</TD></TR><TR><TD CLASS="l">252</TD><TD> }</TD></TR><TR><TD CLASS="l">253</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">254</TD><TD> finally {</TD></TR><TR CLASS="z"><TD CLASS="l">255</TD><TD> --validateEditCount;</TD></TR><TR CLASS="z"><TD CLASS="l">256</TD><TD> }</TD></TR><TR><TD CLASS="l">257</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">258</TD><TD> return Status.OK_STATUS;</TD></TR><TR><TD CLASS="l">259</TD><TD> }</TD></TR><TR><TD CLASS="l">260</TD><TD> };</TD></TR><TR><TD CLASS="l">261</TD><TD> </TD></TR><TR><TD CLASS="l">262</TD><TD> /*</TD></TR><TR><TD CLASS="l">263</TD><TD> * We need to ensure that this is run via 'asyncExec' since</TD></TR><TR><TD CLASS="l">264</TD><TD> * these notifications can come from a non-ui thread.</TD></TR><TR><TD CLASS="l">265</TD><TD> * </TD></TR><TR><TD CLASS="l">266</TD><TD> * The non-ui thread call would occur when creating a new file</TD></TR><TR><TD CLASS="l">267</TD><TD> * under ClearCase (or other library) control. The creation of</TD></TR><TR><TD CLASS="l">268</TD><TD> * the new file would trigger a validateEdit call, on another</TD></TR><TR><TD CLASS="l">269</TD><TD> * thread, that would prompt the user to add the new file to</TD></TR><TR><TD CLASS="l">270</TD><TD> * version control.</TD></TR><TR><TD CLASS="l">271</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">272</TD><TD> validateEditJob.setSystem(true);</TD></TR><TR CLASS="z"><TD CLASS="l">273</TD><TD> validateEditJob.schedule();</TD></TR><TR><TD CLASS="l"><A NAME="91">274</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">275</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="93">276</A></TD><TD> }</TD></TR><TR><TD CLASS="l">277</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">278</TD><TD> private class InternalModelStateListener implements IModelStateListener {</TD></TR><TR><TD CLASS="l">279</TD><TD> public void modelAboutToBeChanged(IStructuredModel model) {</TD></TR><TR CLASS="z"><TD CLASS="l">280</TD><TD> if (getTextViewer() != null) {</TD></TR><TR><TD CLASS="l">281</TD><TD> // getTextViewer().setRedraw(false);</TD></TR><TR><TD CLASS="l"><A NAME="94">282</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">283</TD><TD> }</TD></TR><TR><TD CLASS="l">284</TD><TD> </TD></TR><TR><TD CLASS="l">285</TD><TD> public void modelAboutToBeReinitialized(IStructuredModel structuredModel) {</TD></TR><TR CLASS="z"><TD CLASS="l">286</TD><TD> if (getTextViewer() != null) {</TD></TR><TR><TD CLASS="l">287</TD><TD> // getTextViewer().setRedraw(false);</TD></TR><TR CLASS="z"><TD CLASS="l">288</TD><TD> getTextViewer().unconfigure();</TD></TR><TR><TD CLASS="l"><A NAME="95">289</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">290</TD><TD> }</TD></TR><TR><TD CLASS="l">291</TD><TD> </TD></TR><TR><TD CLASS="l">292</TD><TD> public void modelChanged(IStructuredModel model) {</TD></TR><TR CLASS="z"><TD CLASS="l">293</TD><TD> if (getTextViewer() != null) {</TD></TR><TR><TD CLASS="l">294</TD><TD> // getTextViewer().setRedraw(true);</TD></TR><TR><TD CLASS="l">295</TD><TD> // Since the model can be changed on a background</TD></TR><TR><TD CLASS="l">296</TD><TD> // thread, we will update menus on display thread,</TD></TR><TR><TD CLASS="l">297</TD><TD> // if we are not already on display thread,</TD></TR><TR><TD CLASS="l"><A NAME="6e">298</A></TD><TD> // and if there is not an update already pending.</TD></TR><TR><TD CLASS="l">299</TD><TD> // (we can get lots of 'modelChanged' events in rapid</TD></TR><TR><TD CLASS="l">300</TD><TD> // succession, so only need to do one.</TD></TR><TR CLASS="z"><TD CLASS="l">301</TD><TD> if (!fUpdateMenuTextPending) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="70">302</A></TD><TD> runOnDisplayThreadIfNeededed(new Runnable() {</TD></TR><TR><TD CLASS="l">303</TD><TD> public void run() {</TD></TR><TR CLASS="z"><TD CLASS="l">304</TD><TD> updateMenuText();</TD></TR><TR CLASS="z"><TD CLASS="l">305</TD><TD> fUpdateMenuTextPending = false;</TD></TR><TR CLASS="z"><TD CLASS="l">306</TD><TD> }</TD></TR><TR><TD CLASS="l">307</TD><TD> });</TD></TR><TR><TD CLASS="l">308</TD><TD> }</TD></TR><TR><TD CLASS="l">309</TD><TD> </TD></TR><TR><TD CLASS="l">310</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="96">311</A></TD><TD> }</TD></TR><TR><TD CLASS="l">312</TD><TD> </TD></TR><TR><TD CLASS="l">313</TD><TD> public void modelDirtyStateChanged(IStructuredModel model, boolean isDirty) {</TD></TR><TR><TD CLASS="l">314</TD><TD> // do nothing</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="97">315</A></TD><TD> }</TD></TR><TR><TD CLASS="l">316</TD><TD> </TD></TR><TR><TD CLASS="l">317</TD><TD> public void modelReinitialized(IStructuredModel structuredModel) {</TD></TR><TR><TD CLASS="l">318</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">319</TD><TD> if (getSourceViewer() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">320</TD><TD> SourceViewerConfiguration cfg = getSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">321</TD><TD> getSourceViewer().configure(cfg);</TD></TR><TR><TD CLASS="l">322</TD><TD> }</TD></TR><TR><TD CLASS="l">323</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">324</TD><TD> catch (Exception e) {</TD></TR><TR><TD CLASS="l">325</TD><TD> // https://w3.opensource.ibm.com/bugzilla/show_bug.cgi?id=1166</TD></TR><TR><TD CLASS="l">326</TD><TD> // investigate each error case post beta</TD></TR><TR CLASS="z"><TD CLASS="l">327</TD><TD> Logger.logException("problem trying to configure after model change", e); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">328</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">329</TD><TD> finally {</TD></TR><TR><TD CLASS="l">330</TD><TD> // so we don't freeze workbench (eg. during page language or</TD></TR><TR><TD CLASS="l">331</TD><TD> // content type change)</TD></TR><TR CLASS="z"><TD CLASS="l">332</TD><TD> ((ITextViewerExtension) getSourceViewer()).setRedraw(true);</TD></TR><TR CLASS="z"><TD CLASS="l">333</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">334</TD><TD> }</TD></TR><TR><TD CLASS="l">335</TD><TD> </TD></TR><TR><TD CLASS="l">336</TD><TD> // Note: this one should probably be used to</TD></TR><TR><TD CLASS="l"><A NAME="98">337</A></TD><TD> // control viewer</TD></TR><TR><TD CLASS="l">338</TD><TD> // instead of viewer having its own listener</TD></TR><TR><TD CLASS="l">339</TD><TD> public void modelResourceDeleted(IStructuredModel model) {</TD></TR><TR><TD CLASS="l">340</TD><TD> // do nothing</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="99">341</A></TD><TD> }</TD></TR><TR><TD CLASS="l">342</TD><TD> </TD></TR><TR><TD CLASS="l">343</TD><TD> public void modelResourceMoved(IStructuredModel originalmodel, IStructuredModel movedmodel) {</TD></TR><TR><TD CLASS="l">344</TD><TD> // do nothing</TD></TR><TR CLASS="z"><TD CLASS="l">345</TD><TD> }</TD></TR><TR><TD CLASS="l">346</TD><TD> </TD></TR><TR><TD CLASS="l">347</TD><TD> /**</TD></TR><TR><TD CLASS="l">348</TD><TD> * This 'Runnable' should be very brief, and should not "call out" to</TD></TR><TR><TD CLASS="l">349</TD><TD> * other code especially if it depends on the state of the model.</TD></TR><TR><TD CLASS="l">350</TD><TD> * </TD></TR><TR><TD CLASS="l">351</TD><TD> * @param r</TD></TR><TR><TD CLASS="l">352</TD><TD> */</TD></TR><TR><TD CLASS="l"><A NAME="9a">353</A></TD><TD> private void runOnDisplayThreadIfNeededed(Runnable r) {</TD></TR><TR><TD CLASS="l">354</TD><TD> // if there is no Display at all (that is, running headless),</TD></TR><TR><TD CLASS="l">355</TD><TD> // or if we are already running on the display thread, then</TD></TR><TR><TD CLASS="l">356</TD><TD> // simply execute the runnable.</TD></TR><TR CLASS="z"><TD CLASS="l">357</TD><TD> if (getDisplay() == null || (Thread.currentThread() == getDisplay().getThread())) {</TD></TR><TR CLASS="z"><TD CLASS="l">358</TD><TD> r.run();</TD></TR><TR><TD CLASS="l">359</TD><TD> }</TD></TR><TR><TD CLASS="l">360</TD><TD> else {</TD></TR><TR><TD CLASS="l">361</TD><TD> // otherwise force the runnable to run on the display thread.</TD></TR><TR CLASS="z"><TD CLASS="l">362</TD><TD> getDisplay().asyncExec(r);</TD></TR><TR><TD CLASS="l">363</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">364</TD><TD> }</TD></TR><TR><TD CLASS="l">365</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="9b">366</A></TD><TD> </TD></TR><TR><TD CLASS="l">367</TD><TD> /**</TD></TR><TR><TD CLASS="l"><A NAME="9d">368</A></TD><TD> * Listens to double-click and selection from the outline page</TD></TR><TR><TD CLASS="l">369</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">370</TD><TD> private class OutlinePageListener implements IDoubleClickListener, ISelectionChangedListener {</TD></TR><TR><TD CLASS="l">371</TD><TD> public void doubleClick(DoubleClickEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">372</TD><TD> if (event.getSelection().isEmpty())</TD></TR><TR CLASS="z"><TD CLASS="l">373</TD><TD> return;</TD></TR><TR><TD CLASS="l">374</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">375</TD><TD> int start = -1;</TD></TR><TR CLASS="z"><TD CLASS="l">376</TD><TD> int length = 0;</TD></TR><TR CLASS="z"><TD CLASS="l">377</TD><TD> if (event.getSelection() instanceof IStructuredSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">378</TD><TD> ISelection currentSelection = getSelectionProvider().getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">379</TD><TD> if (currentSelection instanceof IStructuredSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">380</TD><TD> Object current = ((IStructuredSelection) currentSelection).toArray();</TD></TR><TR CLASS="z"><TD CLASS="l">381</TD><TD> Object newSelection = ((IStructuredSelection) event.getSelection()).toArray();</TD></TR><TR CLASS="z"><TD CLASS="l">382</TD><TD> if (!current.equals(newSelection)) {</TD></TR><TR CLASS="z"><TD CLASS="l">383</TD><TD> IStructuredSelection selection = (IStructuredSelection) event.getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">384</TD><TD> Object o = selection.getFirstElement();</TD></TR><TR CLASS="z"><TD CLASS="l">385</TD><TD> if (o instanceof IndexedRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">386</TD><TD> start = ((IndexedRegion) o).getStartOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">387</TD><TD> length = ((IndexedRegion) o).getEndOffset() - start;</TD></TR><TR><TD CLASS="l">388</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">389</TD><TD> else if (o instanceof ITextRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">390</TD><TD> start = ((ITextRegion) o).getStart();</TD></TR><TR CLASS="z"><TD CLASS="l">391</TD><TD> length = ((ITextRegion) o).getEnd() - start;</TD></TR><TR><TD CLASS="l">392</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">393</TD><TD> else if (o instanceof IRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">394</TD><TD> start = ((ITextRegion) o).getStart();</TD></TR><TR CLASS="z"><TD CLASS="l">395</TD><TD> length = ((ITextRegion) o).getLength();</TD></TR><TR><TD CLASS="l">396</TD><TD> }</TD></TR><TR><TD CLASS="l">397</TD><TD> }</TD></TR><TR><TD CLASS="l">398</TD><TD> }</TD></TR><TR><TD CLASS="l">399</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">400</TD><TD> else if (event.getSelection() instanceof ITextSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">401</TD><TD> start = ((ITextSelection) event.getSelection()).getOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">402</TD><TD> length = ((ITextSelection) event.getSelection()).getLength();</TD></TR><TR><TD CLASS="l">403</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">404</TD><TD> if (start > -1) {</TD></TR><TR CLASS="z"><TD CLASS="l">405</TD><TD> getSourceViewer().setRangeIndication(start, length, false);</TD></TR><TR CLASS="z"><TD CLASS="l">406</TD><TD> selectAndReveal(start, length);</TD></TR><TR><TD CLASS="l">407</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">408</TD><TD> }</TD></TR><TR><TD CLASS="l">409</TD><TD> </TD></TR><TR><TD CLASS="l">410</TD><TD> public void selectionChanged(SelectionChangedEvent event) {</TD></TR><TR><TD CLASS="l">411</TD><TD> /*</TD></TR><TR><TD CLASS="l">412</TD><TD> * Do not allow selection from other parts to affect selection in</TD></TR><TR><TD CLASS="l">413</TD><TD> * the text widget if it has focus, or if we're still firing a</TD></TR><TR><TD CLASS="l">414</TD><TD> * change of selection. Selection events "bouncing" off of other</TD></TR><TR><TD CLASS="l">415</TD><TD> * parts are all that we can receive if we have focus (since we</TD></TR><TR><TD CLASS="l">416</TD><TD> * forwarded our selection to the service just a moment ago), and</TD></TR><TR><TD CLASS="l"><A NAME="9e">417</A></TD><TD> * only the user should affect selection if we have focus.</TD></TR><TR><TD CLASS="l">418</TD><TD> */</TD></TR><TR><TD CLASS="l">419</TD><TD> </TD></TR><TR><TD CLASS="l">420</TD><TD> /* The isFiringSelection check only works if a selection listener */</TD></TR><TR CLASS="z"><TD CLASS="l">421</TD><TD> if (event.getSelection().isEmpty() || fStructuredSelectionProvider.isFiringSelection())</TD></TR><TR CLASS="z"><TD CLASS="l">422</TD><TD> return;</TD></TR><TR><TD CLASS="l">423</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">424</TD><TD> if (getSourceViewer() != null && getSourceViewer().getTextWidget() != null && !getSourceViewer().getTextWidget().isDisposed() && !getSourceViewer().getTextWidget().isFocusControl()) {</TD></TR><TR CLASS="z"><TD CLASS="l">425</TD><TD> int start = -1;</TD></TR><TR CLASS="z"><TD CLASS="l">426</TD><TD> int length = 0;</TD></TR><TR CLASS="z"><TD CLASS="l">427</TD><TD> if (event.getSelection() instanceof IStructuredSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">428</TD><TD> ISelection current = getSelectionProvider().getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">429</TD><TD> if (current instanceof IStructuredSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">430</TD><TD> Object[] currentSelection = ((IStructuredSelection) current).toArray();</TD></TR><TR CLASS="z"><TD CLASS="l">431</TD><TD> Object[] newSelection = ((IStructuredSelection) event.getSelection()).toArray();</TD></TR><TR CLASS="z"><TD CLASS="l">432</TD><TD> if (!Arrays.equals(currentSelection, newSelection)) {</TD></TR><TR CLASS="z"><TD CLASS="l">433</TD><TD> if (newSelection.length > 0) {</TD></TR><TR><TD CLASS="l">434</TD><TD> /*</TD></TR><TR><TD CLASS="l">435</TD><TD> * No ordering is guaranteed for multiple</TD></TR><TR><TD CLASS="l">436</TD><TD> * selection</TD></TR><TR><TD CLASS="l">437</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">438</TD><TD> Object o = newSelection[0];</TD></TR><TR CLASS="z"><TD CLASS="l">439</TD><TD> if (o instanceof IndexedRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">440</TD><TD> start = ((IndexedRegion) o).getStartOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">441</TD><TD> int end = ((IndexedRegion) o).getEndOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">442</TD><TD> if (newSelection.length > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">443</TD><TD> for (int i = 1; i < newSelection.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">444</TD><TD> start = Math.min(start, ((IndexedRegion) newSelection[i]).getStartOffset());</TD></TR><TR CLASS="z"><TD CLASS="l">445</TD><TD> end = Math.max(end, ((IndexedRegion) newSelection[i]).getEndOffset());</TD></TR><TR><TD CLASS="l">446</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">447</TD><TD> length = end - start;</TD></TR><TR><TD CLASS="l">448</TD><TD> }</TD></TR><TR><TD CLASS="l">449</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">450</TD><TD> else if (o instanceof ITextRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">451</TD><TD> start = ((ITextRegion) o).getStart();</TD></TR><TR CLASS="z"><TD CLASS="l">452</TD><TD> int end = ((ITextRegion) o).getEnd();</TD></TR><TR CLASS="z"><TD CLASS="l">453</TD><TD> if (newSelection.length > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">454</TD><TD> for (int i = 1; i < newSelection.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">455</TD><TD> start = Math.min(start, ((ITextRegion) newSelection[i]).getStart());</TD></TR><TR CLASS="z"><TD CLASS="l">456</TD><TD> end = Math.max(end, ((ITextRegion) newSelection[i]).getEnd());</TD></TR><TR><TD CLASS="l">457</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">458</TD><TD> length = end - start;</TD></TR><TR><TD CLASS="l">459</TD><TD> }</TD></TR><TR><TD CLASS="l">460</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">461</TD><TD> else if (o instanceof IRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">462</TD><TD> start = ((IRegion) o).getOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">463</TD><TD> int end = start + ((IRegion) o).getLength();</TD></TR><TR CLASS="z"><TD CLASS="l">464</TD><TD> if (newSelection.length > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">465</TD><TD> for (int i = 1; i < newSelection.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">466</TD><TD> start = Math.min(start, ((IRegion) newSelection[i]).getOffset());</TD></TR><TR CLASS="z"><TD CLASS="l">467</TD><TD> end = Math.max(end, ((IRegion) newSelection[i]).getOffset() + ((IRegion) newSelection[i]).getLength());</TD></TR><TR><TD CLASS="l">468</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">469</TD><TD> length = end - start;</TD></TR><TR><TD CLASS="l">470</TD><TD> }</TD></TR><TR><TD CLASS="l">471</TD><TD> }</TD></TR><TR><TD CLASS="l">472</TD><TD> }</TD></TR><TR><TD CLASS="l">473</TD><TD> }</TD></TR><TR><TD CLASS="l">474</TD><TD> }</TD></TR><TR><TD CLASS="l">475</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">476</TD><TD> else if (event.getSelection() instanceof ITextSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">477</TD><TD> start = ((ITextSelection) event.getSelection()).getOffset();</TD></TR><TR><TD CLASS="l">478</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">479</TD><TD> if (start > -1) {</TD></TR><TR CLASS="z"><TD CLASS="l">480</TD><TD> updateRangeIndication(event.getSelection());</TD></TR><TR CLASS="z"><TD CLASS="l">481</TD><TD> selectAndReveal(start, length);</TD></TR><TR><TD CLASS="l">482</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="9f">483</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">484</TD><TD> }</TD></TR><TR><TD CLASS="l">485</TD><TD> }</TD></TR><TR><TD CLASS="l">486</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">487</TD><TD> private class ShowInTargetListAdapter implements IShowInTargetList {</TD></TR><TR><TD CLASS="l">488</TD><TD> /**</TD></TR><TR><TD CLASS="l">489</TD><TD> * Array of ID Strings that define the default show in targets for</TD></TR><TR><TD CLASS="l">490</TD><TD> * this editor.</TD></TR><TR><TD CLASS="l">491</TD><TD> * </TD></TR><TR><TD CLASS="l">492</TD><TD> * @see org.eclipse.ui.part.IShowInTargetList#getShowInTargetIds()</TD></TR><TR><TD CLASS="l"><A NAME="a1">493</A></TD><TD> * @return the array of ID Strings that define the default show in</TD></TR><TR><TD CLASS="l">494</TD><TD> * targets for this editor.</TD></TR><TR><TD CLASS="l">495</TD><TD> */</TD></TR><TR><TD CLASS="l">496</TD><TD> public String[] getShowInTargetIds() {</TD></TR><TR CLASS="z"><TD CLASS="l">497</TD><TD> return fShowInTargetIds;</TD></TR><TR><TD CLASS="l">498</TD><TD> }</TD></TR><TR><TD CLASS="l">499</TD><TD> }</TD></TR><TR><TD CLASS="l">500</TD><TD> </TD></TR><TR><TD CLASS="l">501</TD><TD> /**</TD></TR><TR><TD CLASS="l">502</TD><TD> * A post selection provider that wraps the provider implemented in</TD></TR><TR><TD CLASS="l">503</TD><TD> * AbstractTextEditor to provide a StructuredTextSelection to post</TD></TR><TR><TD CLASS="l">504</TD><TD> * selection listeners. Listens to selection changes from the source</TD></TR><TR><TD CLASS="l">505</TD><TD> * viewer.</TD></TR><TR><TD CLASS="l">506</TD><TD> */</TD></TR><TR><TD CLASS="l">507</TD><TD> private static class StructuredSelectionProvider implements IPostSelectionProvider, ISelectionValidator {</TD></TR><TR><TD CLASS="l">508</TD><TD> /**</TD></TR><TR><TD CLASS="l">509</TD><TD> * A "hybrid" text and structured selection class containing the text</TD></TR><TR><TD CLASS="l">510</TD><TD> * selection and a list of selected model objects. The determination</TD></TR><TR><TD CLASS="l">511</TD><TD> * of which model objects matches the text selection is responsibility</TD></TR><TR><TD CLASS="l">512</TD><TD> * of the StructuredSelectionProvider which created this selection</TD></TR><TR><TD CLASS="l">513</TD><TD> * object.</TD></TR><TR><TD CLASS="l">514</TD><TD> */</TD></TR><TR><TD CLASS="l"><A NAME="b5">515</A></TD><TD> private static class StructuredTextSelection extends TextSelection implements IStructuredSelection {</TD></TR><TR><TD CLASS="l">516</TD><TD> private Object[] selectedStructured;</TD></TR><TR><TD CLASS="l">517</TD><TD> </TD></TR><TR><TD CLASS="l">518</TD><TD> StructuredTextSelection(IDocument document, int offset, int length, Object[] selectedObjects) {</TD></TR><TR CLASS="z"><TD CLASS="l">519</TD><TD> super(document, offset, length);</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="b6">520</A></TD><TD> selectedStructured = selectedObjects;</TD></TR><TR CLASS="z"><TD CLASS="l">521</TD><TD> }</TD></TR><TR><TD CLASS="l">522</TD><TD> </TD></TR><TR><TD CLASS="l">523</TD><TD> StructuredTextSelection(IDocument document, ITextSelection selection, Object[] selectedObjects) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="b8">524</A></TD><TD> this(document, selection.getOffset(), selection.getLength(), selectedObjects);</TD></TR><TR CLASS="z"><TD CLASS="l">525</TD><TD> }</TD></TR><TR><TD CLASS="l">526</TD><TD> </TD></TR><TR><TD CLASS="l">527</TD><TD> public Object getFirstElement() {</TD></TR><TR CLASS="z"><TD CLASS="l">528</TD><TD> Object[] selectedStructures = getSelectedStructures();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="b9">529</A></TD><TD> return selectedStructures.length > 0 ? selectedStructures[0] : null;</TD></TR><TR><TD CLASS="l">530</TD><TD> }</TD></TR><TR><TD CLASS="l">531</TD><TD> </TD></TR><TR><TD CLASS="l">532</TD><TD> private Object[] getSelectedStructures() {</TD></TR><TR CLASS="z"><TD CLASS="l">533</TD><TD> return (selectedStructured != null) ? selectedStructured : new Object[0];</TD></TR><TR><TD CLASS="l"><A NAME="ba">534</A></TD><TD> }</TD></TR><TR><TD CLASS="l">535</TD><TD> </TD></TR><TR><TD CLASS="l">536</TD><TD> public boolean isEmpty() {</TD></TR><TR><TD CLASS="l">537</TD><TD> // https://bugs.eclipse.org/bugs/show_bug.cgi?id=191327</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="bb">538</A></TD><TD> return super.isEmpty() || getSelectedStructures().length == 0;</TD></TR><TR><TD CLASS="l">539</TD><TD> }</TD></TR><TR><TD CLASS="l">540</TD><TD> </TD></TR><TR><TD CLASS="l">541</TD><TD> public Iterator iterator() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="bc">542</A></TD><TD> return toList().iterator();</TD></TR><TR><TD CLASS="l">543</TD><TD> }</TD></TR><TR><TD CLASS="l">544</TD><TD> </TD></TR><TR><TD CLASS="l">545</TD><TD> public int size() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="bd">546</A></TD><TD> return (selectedStructured != null) ? selectedStructured.length : 0;</TD></TR><TR><TD CLASS="l">547</TD><TD> }</TD></TR><TR><TD CLASS="l">548</TD><TD> </TD></TR><TR><TD CLASS="l">549</TD><TD> public Object[] toArray() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="be">550</A></TD><TD> return getSelectedStructures();</TD></TR><TR><TD CLASS="l">551</TD><TD> }</TD></TR><TR><TD CLASS="l">552</TD><TD> </TD></TR><TR><TD CLASS="l">553</TD><TD> public List toList() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="bf">554</A></TD><TD> return Arrays.asList(getSelectedStructures());</TD></TR><TR><TD CLASS="l">555</TD><TD> }</TD></TR><TR><TD CLASS="l">556</TD><TD> </TD></TR><TR><TD CLASS="l">557</TD><TD> public String toString() {</TD></TR><TR CLASS="z"><TD CLASS="l">558</TD><TD> return getOffset() + ":" + getLength() + "@" + getSelectedStructures(); //$NON-NLS-1$ //$NON-NLS-2$</TD></TR><TR><TD CLASS="l">559</TD><TD> }</TD></TR><TR><TD CLASS="l">560</TD><TD> }</TD></TR><TR><TD CLASS="l">561</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">562</TD><TD> private ISelectionProvider fParentProvider = null;</TD></TR><TR CLASS="z"><TD CLASS="l">563</TD><TD> private boolean isFiringSelection = false;</TD></TR><TR CLASS="z"><TD CLASS="l">564</TD><TD> private ListenerList listeners = new ListenerList();</TD></TR><TR CLASS="z"><TD CLASS="l">565</TD><TD> private ListenerList postListeners = new ListenerList();</TD></TR><TR CLASS="z"><TD CLASS="l">566</TD><TD> private ISelection fLastSelection = null;</TD></TR><TR CLASS="z"><TD CLASS="l">567</TD><TD> private ISelectionProvider fLastSelectionProvider = null;</TD></TR><TR CLASS="z"><TD CLASS="l">568</TD><TD> private SelectionChangedEvent fLastUpdatedSelectionChangedEvent = null;</TD></TR><TR><TD CLASS="l">569</TD><TD> private StructuredTextEditor fEditor;</TD></TR><TR><TD CLASS="l">570</TD><TD> /*</TD></TR><TR><TD CLASS="l">571</TD><TD> * Responsible for finding the selected objects within a text</TD></TR><TR><TD CLASS="l">572</TD><TD> * selection. Set/reset by the StructuredTextEditor based on a</TD></TR><TR><TD CLASS="l"><A NAME="a2">573</A></TD><TD> * per-model adapter on input.</TD></TR><TR><TD CLASS="l">574</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">575</TD><TD> SelectionConvertor selectionConvertor = new SelectionConvertor();</TD></TR><TR><TD CLASS="l"><A NAME="71">576</A></TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">577</TD><TD> StructuredSelectionProvider(ISelectionProvider parentProvider, StructuredTextEditor structuredTextEditor) {</TD></TR><TR CLASS="z"><TD CLASS="l">578</TD><TD> fParentProvider = parentProvider;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="73">579</A></TD><TD> fEditor = structuredTextEditor;</TD></TR><TR CLASS="z"><TD CLASS="l">580</TD><TD> fParentProvider.addSelectionChangedListener(new ISelectionChangedListener() {</TD></TR><TR><TD CLASS="l">581</TD><TD> public void selectionChanged(SelectionChangedEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="74">582</A></TD><TD> handleSelectionChanged(event);</TD></TR><TR CLASS="z"><TD CLASS="l">583</TD><TD> }</TD></TR><TR><TD CLASS="l">584</TD><TD> });</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="76">585</A></TD><TD> if (fParentProvider instanceof IPostSelectionProvider) {</TD></TR><TR CLASS="z"><TD CLASS="l">586</TD><TD> ((IPostSelectionProvider) fParentProvider).addPostSelectionChangedListener(new ISelectionChangedListener() {</TD></TR><TR><TD CLASS="l">587</TD><TD> public void selectionChanged(SelectionChangedEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">588</TD><TD> handlePostSelectionChanged(event);</TD></TR><TR CLASS="z"><TD CLASS="l">589</TD><TD> }</TD></TR><TR><TD CLASS="l">590</TD><TD> });</TD></TR><TR><TD CLASS="l"><A NAME="a4">591</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">592</TD><TD> }</TD></TR><TR><TD CLASS="l">593</TD><TD> </TD></TR><TR><TD CLASS="l">594</TD><TD> public void addPostSelectionChangedListener(ISelectionChangedListener listener) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="a5">595</A></TD><TD> postListeners.add(listener);</TD></TR><TR CLASS="z"><TD CLASS="l">596</TD><TD> }</TD></TR><TR><TD CLASS="l">597</TD><TD> </TD></TR><TR><TD CLASS="l">598</TD><TD> public void addSelectionChangedListener(ISelectionChangedListener listener) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="a6">599</A></TD><TD> listeners.add(listener);</TD></TR><TR CLASS="z"><TD CLASS="l">600</TD><TD> }</TD></TR><TR><TD CLASS="l">601</TD><TD> </TD></TR><TR><TD CLASS="l">602</TD><TD> public void dispose() {</TD></TR><TR CLASS="z"><TD CLASS="l">603</TD><TD> fEditor = null;</TD></TR><TR CLASS="z"><TD CLASS="l">604</TD><TD> listeners.clear();</TD></TR><TR CLASS="z"><TD CLASS="l">605</TD><TD> postListeners.clear();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="a7">606</A></TD><TD> selectionConvertor = null;</TD></TR><TR CLASS="z"><TD CLASS="l">607</TD><TD> }</TD></TR><TR><TD CLASS="l">608</TD><TD> </TD></TR><TR><TD CLASS="l">609</TD><TD> private void fireSelectionChanged(final SelectionChangedEvent event, ListenerList listenerList) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="77">610</A></TD><TD> Object[] listeners = listenerList.getListeners();</TD></TR><TR CLASS="z"><TD CLASS="l">611</TD><TD> isFiringSelection = true;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="79">612</A></TD><TD> for (int i = 0; i < listeners.length; ++i) {</TD></TR><TR CLASS="z"><TD CLASS="l">613</TD><TD> final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];</TD></TR><TR CLASS="z"><TD CLASS="l">614</TD><TD> SafeRunner.run(new SafeRunnable() {</TD></TR><TR><TD CLASS="l">615</TD><TD> public void run() {</TD></TR><TR CLASS="z"><TD CLASS="l">616</TD><TD> l.selectionChanged(event);</TD></TR><TR CLASS="z"><TD CLASS="l">617</TD><TD> }</TD></TR><TR><TD CLASS="l">618</TD><TD> });</TD></TR><TR><TD CLASS="l">619</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="a9">620</A></TD><TD> isFiringSelection = false;</TD></TR><TR CLASS="z"><TD CLASS="l">621</TD><TD> }</TD></TR><TR><TD CLASS="l">622</TD><TD> </TD></TR><TR><TD CLASS="l">623</TD><TD> private ISelectionProvider getParentProvider() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="aa">624</A></TD><TD> return fParentProvider;</TD></TR><TR><TD CLASS="l">625</TD><TD> }</TD></TR><TR><TD CLASS="l">626</TD><TD> </TD></TR><TR><TD CLASS="l">627</TD><TD> public ISelection getSelection() {</TD></TR><TR CLASS="z"><TD CLASS="l">628</TD><TD> fLastSelection = null;</TD></TR><TR CLASS="z"><TD CLASS="l">629</TD><TD> fLastSelectionProvider = null;</TD></TR><TR CLASS="z"><TD CLASS="l">630</TD><TD> fLastUpdatedSelectionChangedEvent = null;</TD></TR><TR><TD CLASS="l">631</TD><TD> </TD></TR><TR><TD CLASS="l">632</TD><TD> /*</TD></TR><TR><TD CLASS="l">633</TD><TD> * When a client explicitly asks for selection, provide the hybrid</TD></TR><TR><TD CLASS="l">634</TD><TD> * result.</TD></TR><TR><TD CLASS="l">635</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">636</TD><TD> ISelection selection = getParentProvider().getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">637</TD><TD> if (!(selection instanceof IStructuredSelection) && selection instanceof ITextSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">638</TD><TD> IStructuredModel structuredModel = null;</TD></TR><TR CLASS="z"><TD CLASS="l">639</TD><TD> StructuredTextEditor localEditor = getStructuredTextEditor();</TD></TR><TR CLASS="z"><TD CLASS="l">640</TD><TD> if (localEditor != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">641</TD><TD> structuredModel = localEditor.getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">642</TD><TD> if (structuredModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">643</TD><TD> if (localEditor.isBlockSelectionModeEnabled()) {</TD></TR><TR><TD CLASS="l">644</TD><TD> /*</TD></TR><TR><TD CLASS="l">645</TD><TD> * Block selection handling - find the overlapping</TD></TR><TR><TD CLASS="l">646</TD><TD> * objects on each line, keeping in mind that the</TD></TR><TR><TD CLASS="l">647</TD><TD> * selected block may not overlap actual lines or</TD></TR><TR><TD CLASS="l">648</TD><TD> * columns of the document.</TD></TR><TR><TD CLASS="l">649</TD><TD> * IBlockTextSelection.getRegions() should handle</TD></TR><TR><TD CLASS="l">650</TD><TD> * that for us...</TD></TR><TR><TD CLASS="l">651</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">652</TD><TD> IBlockTextSelection blockSelection = (IBlockTextSelection) selection;</TD></TR><TR CLASS="z"><TD CLASS="l">653</TD><TD> IRegion[] regions = blockSelection.getRegions();</TD></TR><TR CLASS="z"><TD CLASS="l">654</TD><TD> Set blockObjects = new LinkedHashSet();</TD></TR><TR CLASS="z"><TD CLASS="l">655</TD><TD> for (int i = 0; i < regions.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">656</TD><TD> Object[] objects = selectionConvertor.getElements(structuredModel, regions[i].getOffset(), regions[i].getLength());</TD></TR><TR CLASS="z"><TD CLASS="l">657</TD><TD> for (int j = 0; j < objects.length; j++) {</TD></TR><TR CLASS="z"><TD CLASS="l">658</TD><TD> blockObjects.add(objects[j]);</TD></TR><TR><TD CLASS="l">659</TD><TD> }</TD></TR><TR><TD CLASS="l">660</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">661</TD><TD> selection = new StructuredTextSelection(getDocument(), (ITextSelection) selection, blockObjects.toArray());</TD></TR><TR><TD CLASS="l">662</TD><TD> }</TD></TR><TR><TD CLASS="l">663</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">664</TD><TD> int start = ((ITextSelection) selection).getOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">665</TD><TD> int end = start + ((ITextSelection) selection).getLength();</TD></TR><TR CLASS="z"><TD CLASS="l">666</TD><TD> selection = new StructuredTextSelection(getDocument(), (ITextSelection) selection, selectionConvertor.getElements(structuredModel, start, end));</TD></TR><TR><TD CLASS="l">667</TD><TD> }</TD></TR><TR><TD CLASS="l">668</TD><TD> }</TD></TR><TR><TD CLASS="l">669</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">670</TD><TD> if (selection == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">671</TD><TD> selection = new StructuredTextSelection(getDocument(), (ITextSelection) selection, new Object[0]);</TD></TR><TR><TD CLASS="l">672</TD><TD> }</TD></TR><TR><TD CLASS="l">673</TD><TD> }</TD></TR><TR><TD CLASS="l">674</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="ab">675</A></TD><TD> return selection;</TD></TR><TR><TD CLASS="l">676</TD><TD> }</TD></TR><TR><TD CLASS="l">677</TD><TD> </TD></TR><TR><TD CLASS="l">678</TD><TD> private StructuredTextEditor getStructuredTextEditor() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="ac">679</A></TD><TD> return fEditor;</TD></TR><TR><TD CLASS="l">680</TD><TD> }</TD></TR><TR><TD CLASS="l">681</TD><TD> </TD></TR><TR><TD CLASS="l">682</TD><TD> void handlePostSelectionChanged(SelectionChangedEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">683</TD><TD> SelectionChangedEvent updatedEvent = null;</TD></TR><TR CLASS="z"><TD CLASS="l">684</TD><TD> if (fLastSelection == event.getSelection() && fLastSelectionProvider == event.getSelectionProvider()) {</TD></TR><TR CLASS="z"><TD CLASS="l">685</TD><TD> updatedEvent = fLastUpdatedSelectionChangedEvent;</TD></TR><TR><TD CLASS="l">686</TD><TD> }</TD></TR><TR><TD CLASS="l">687</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">688</TD><TD> updatedEvent = updateEvent(event);</TD></TR><TR><TD CLASS="l">689</TD><TD> }</TD></TR><TR><TD CLASS="l">690</TD><TD> // only update the range indicator on post selection</TD></TR><TR CLASS="z"><TD CLASS="l">691</TD><TD> StructuredTextEditor localEditor = fEditor;</TD></TR><TR><TD CLASS="l">692</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">693</TD><TD> if (localEditor != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">694</TD><TD> localEditor.updateRangeIndication(updatedEvent.getSelection());</TD></TR><TR CLASS="z"><TD CLASS="l">695</TD><TD> fireSelectionChanged(updatedEvent, postListeners);</TD></TR><TR><TD CLASS="l"><A NAME="ad">696</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">697</TD><TD> }</TD></TR><TR><TD CLASS="l">698</TD><TD> </TD></TR><TR><TD CLASS="l">699</TD><TD> void handleSelectionChanged(SelectionChangedEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">700</TD><TD> SelectionChangedEvent updatedEvent = event;</TD></TR><TR CLASS="z"><TD CLASS="l">701</TD><TD> if (fLastSelection != event.getSelection() || fLastSelectionProvider != event.getSelectionProvider()) {</TD></TR><TR CLASS="z"><TD CLASS="l">702</TD><TD> fLastSelection = event.getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">703</TD><TD> fLastSelectionProvider = event.getSelectionProvider();</TD></TR><TR CLASS="z"><TD CLASS="l">704</TD><TD> fLastUpdatedSelectionChangedEvent = updatedEvent = updateEvent(event);</TD></TR><TR><TD CLASS="l">705</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="a8">706</A></TD><TD> fireSelectionChanged(updatedEvent, listeners);</TD></TR><TR CLASS="z"><TD CLASS="l">707</TD><TD> }</TD></TR><TR><TD CLASS="l">708</TD><TD> </TD></TR><TR><TD CLASS="l">709</TD><TD> IDocument getDocument() {</TD></TR><TR CLASS="z"><TD CLASS="l">710</TD><TD> return fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput());</TD></TR><TR><TD CLASS="l"><A NAME="ae">711</A></TD><TD> }</TD></TR><TR><TD CLASS="l">712</TD><TD> </TD></TR><TR><TD CLASS="l">713</TD><TD> </TD></TR><TR><TD CLASS="l">714</TD><TD> boolean isFiringSelection() {</TD></TR><TR CLASS="z"><TD CLASS="l">715</TD><TD> return isFiringSelection;</TD></TR><TR><TD CLASS="l">716</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="af">717</A></TD><TD> </TD></TR><TR><TD CLASS="l">718</TD><TD> public boolean isValid(ISelection selection) {</TD></TR><TR><TD CLASS="l">719</TD><TD> // ISSUE: is not clear default behavior should be true?</TD></TR><TR><TD CLASS="l">720</TD><TD> // But not clear is this default would apply for our editor.</TD></TR><TR CLASS="z"><TD CLASS="l">721</TD><TD> boolean result = true;</TD></TR><TR><TD CLASS="l">722</TD><TD> // if editor is "gone", can not be valid</TD></TR><TR CLASS="z"><TD CLASS="l">723</TD><TD> StructuredTextEditor e = getStructuredTextEditor();</TD></TR><TR CLASS="z"><TD CLASS="l">724</TD><TD> if (e == null || e.fEditorDisposed) {</TD></TR><TR CLASS="z"><TD CLASS="l">725</TD><TD> result = false;</TD></TR><TR><TD CLASS="l">726</TD><TD> }</TD></TR><TR><TD CLASS="l">727</TD><TD> // else defer to parent</TD></TR><TR CLASS="z"><TD CLASS="l">728</TD><TD> else if (getParentProvider() instanceof ISelectionValidator) {</TD></TR><TR CLASS="z"><TD CLASS="l">729</TD><TD> result = ((ISelectionValidator) getParentProvider()).isValid(selection);</TD></TR><TR><TD CLASS="l">730</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="b0">731</A></TD><TD> return result;</TD></TR><TR><TD CLASS="l">732</TD><TD> }</TD></TR><TR><TD CLASS="l">733</TD><TD> </TD></TR><TR><TD CLASS="l">734</TD><TD> public void removePostSelectionChangedListener(ISelectionChangedListener listener) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="b1">735</A></TD><TD> postListeners.remove(listener);</TD></TR><TR CLASS="z"><TD CLASS="l">736</TD><TD> }</TD></TR><TR><TD CLASS="l">737</TD><TD> </TD></TR><TR><TD CLASS="l">738</TD><TD> public void removeSelectionChangedListener(ISelectionChangedListener listener) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="b2">739</A></TD><TD> listeners.remove(listener);</TD></TR><TR CLASS="z"><TD CLASS="l">740</TD><TD> }</TD></TR><TR><TD CLASS="l">741</TD><TD> </TD></TR><TR><TD CLASS="l">742</TD><TD> public void setSelection(ISelection selection) {</TD></TR><TR CLASS="z"><TD CLASS="l">743</TD><TD> if (isFiringSelection()) {</TD></TR><TR CLASS="z"><TD CLASS="l">744</TD><TD> return;</TD></TR><TR><TD CLASS="l">745</TD><TD> }</TD></TR><TR><TD CLASS="l">746</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">747</TD><TD> fLastSelection = null;</TD></TR><TR CLASS="z"><TD CLASS="l">748</TD><TD> fLastSelectionProvider = null;</TD></TR><TR CLASS="z"><TD CLASS="l">749</TD><TD> fLastUpdatedSelectionChangedEvent = null;</TD></TR><TR><TD CLASS="l">750</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">751</TD><TD> ISelection textSelection = updateSelection(selection);</TD></TR><TR CLASS="z"><TD CLASS="l">752</TD><TD> getParentProvider().setSelection(textSelection);</TD></TR><TR CLASS="z"><TD CLASS="l">753</TD><TD> StructuredTextEditor localEditor = getStructuredTextEditor();</TD></TR><TR CLASS="z"><TD CLASS="l">754</TD><TD> if (localEditor != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">755</TD><TD> localEditor.updateRangeIndication(textSelection);</TD></TR><TR><TD CLASS="l">756</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">757</TD><TD> }</TD></TR><TR><TD CLASS="l">758</TD><TD> </TD></TR><TR><TD CLASS="l">759</TD><TD> /**</TD></TR><TR><TD CLASS="l">760</TD><TD> * Create a corresponding event that contains a</TD></TR><TR><TD CLASS="l">761</TD><TD> * StructuredTextselection</TD></TR><TR><TD CLASS="l">762</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="b3">763</A></TD><TD> * @param event</TD></TR><TR><TD CLASS="l">764</TD><TD> * @return</TD></TR><TR><TD CLASS="l">765</TD><TD> */</TD></TR><TR><TD CLASS="l">766</TD><TD> private SelectionChangedEvent updateEvent(SelectionChangedEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">767</TD><TD> ISelection selection = event.getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">768</TD><TD> if (selection instanceof ITextSelection && !(selection instanceof IStructuredSelection)) {</TD></TR><TR CLASS="z"><TD CLASS="l">769</TD><TD> IStructuredModel structuredModel = null;</TD></TR><TR CLASS="z"><TD CLASS="l">770</TD><TD> StructuredTextEditor localEditor = getStructuredTextEditor();</TD></TR><TR CLASS="z"><TD CLASS="l">771</TD><TD> if (localEditor != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">772</TD><TD> structuredModel = localEditor.getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">773</TD><TD> if (structuredModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">774</TD><TD> int start = ((ITextSelection) selection).getOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">775</TD><TD> int end = start + ((ITextSelection) selection).getLength();</TD></TR><TR CLASS="z"><TD CLASS="l">776</TD><TD> selection = new StructuredTextSelection(getDocument(), (ITextSelection) event.getSelection(), selectionConvertor.getElements(structuredModel, start, end));</TD></TR><TR><TD CLASS="l">777</TD><TD> }</TD></TR><TR><TD CLASS="l">778</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">779</TD><TD> if (selection == null)</TD></TR><TR CLASS="z"><TD CLASS="l">780</TD><TD> selection = new StructuredTextSelection(getDocument(), (ITextSelection) event.getSelection(), new Object[0]);</TD></TR><TR><TD CLASS="l">781</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">782</TD><TD> SelectionChangedEvent newEvent = new SelectionChangedEvent(event.getSelectionProvider(), selection);</TD></TR><TR CLASS="z"><TD CLASS="l">783</TD><TD> return newEvent;</TD></TR><TR><TD CLASS="l">784</TD><TD> }</TD></TR><TR><TD CLASS="l">785</TD><TD> </TD></TR><TR><TD CLASS="l">786</TD><TD> /**</TD></TR><TR><TD CLASS="l">787</TD><TD> * Create a corresponding StructuredTextselection</TD></TR><TR><TD CLASS="l">788</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="b4">789</A></TD><TD> * @param selection</TD></TR><TR><TD CLASS="l">790</TD><TD> * @return</TD></TR><TR><TD CLASS="l">791</TD><TD> */</TD></TR><TR><TD CLASS="l">792</TD><TD> private ISelection updateSelection(ISelection selection) {</TD></TR><TR CLASS="z"><TD CLASS="l">793</TD><TD> ISelection updated = selection;</TD></TR><TR CLASS="z"><TD CLASS="l">794</TD><TD> if (selection instanceof IStructuredSelection && !(selection instanceof ITextSelection) && !selection.isEmpty()) {</TD></TR><TR CLASS="z"><TD CLASS="l">795</TD><TD> Object[] selectedObjects = ((IStructuredSelection) selection).toArray();</TD></TR><TR CLASS="z"><TD CLASS="l">796</TD><TD> if (selectedObjects.length > 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">797</TD><TD> int start = -1;</TD></TR><TR CLASS="z"><TD CLASS="l">798</TD><TD> int length = 0;</TD></TR><TR><TD CLASS="l">799</TD><TD> </TD></TR><TR><TD CLASS="l">800</TD><TD> // no ordering is guaranteed for multiple selection</TD></TR><TR CLASS="z"><TD CLASS="l">801</TD><TD> Object o = selectedObjects[0];</TD></TR><TR CLASS="z"><TD CLASS="l">802</TD><TD> if (o instanceof IndexedRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">803</TD><TD> start = ((IndexedRegion) o).getStartOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">804</TD><TD> int end = ((IndexedRegion) o).getEndOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">805</TD><TD> if (selectedObjects.length > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">806</TD><TD> for (int i = 1; i < selectedObjects.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">807</TD><TD> start = Math.min(start, ((IndexedRegion) selectedObjects[i]).getStartOffset());</TD></TR><TR CLASS="z"><TD CLASS="l">808</TD><TD> end = Math.max(end, ((IndexedRegion) selectedObjects[i]).getEndOffset());</TD></TR><TR><TD CLASS="l">809</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">810</TD><TD> length = end - start;</TD></TR><TR><TD CLASS="l">811</TD><TD> }</TD></TR><TR><TD CLASS="l">812</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">813</TD><TD> else if (o instanceof ITextRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">814</TD><TD> start = ((ITextRegion) o).getStart();</TD></TR><TR CLASS="z"><TD CLASS="l">815</TD><TD> int end = ((ITextRegion) o).getEnd();</TD></TR><TR CLASS="z"><TD CLASS="l">816</TD><TD> if (selectedObjects.length > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">817</TD><TD> for (int i = 1; i < selectedObjects.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">818</TD><TD> start = Math.min(start, ((ITextRegion) selectedObjects[i]).getStart());</TD></TR><TR CLASS="z"><TD CLASS="l">819</TD><TD> end = Math.max(end, ((ITextRegion) selectedObjects[i]).getEnd());</TD></TR><TR><TD CLASS="l">820</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">821</TD><TD> length = end - start;</TD></TR><TR><TD CLASS="l">822</TD><TD> }</TD></TR><TR><TD CLASS="l">823</TD><TD> }</TD></TR><TR><TD CLASS="l">824</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">825</TD><TD> if (start > -1) {</TD></TR><TR CLASS="z"><TD CLASS="l">826</TD><TD> updated = new StructuredTextSelection(getDocument(), start, length, selectedObjects);</TD></TR><TR><TD CLASS="l">827</TD><TD> }</TD></TR><TR><TD CLASS="l">828</TD><TD> }</TD></TR><TR><TD CLASS="l">829</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="c0">830</A></TD><TD> return updated;</TD></TR><TR><TD CLASS="l">831</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="7a">832</A></TD><TD> }</TD></TR><TR><TD CLASS="l">833</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="7c">834</A></TD><TD> class TimeOutExpired extends TimerTask {</TD></TR><TR><TD CLASS="l">835</TD><TD> public void run() {</TD></TR><TR CLASS="z"><TD CLASS="l">836</TD><TD> getDisplay().syncExec(new Runnable() {</TD></TR><TR><TD CLASS="l">837</TD><TD> public void run() {</TD></TR><TR CLASS="z"><TD CLASS="l">838</TD><TD> if (getDisplay() != null && !getDisplay().isDisposed())</TD></TR><TR CLASS="z"><TD CLASS="l">839</TD><TD> endBusyStateInternal();</TD></TR><TR CLASS="z"><TD CLASS="l">840</TD><TD> }</TD></TR><TR><TD CLASS="l">841</TD><TD> });</TD></TR><TR CLASS="z"><TD CLASS="l">842</TD><TD> }</TD></TR><TR><TD CLASS="l">843</TD><TD> </TD></TR><TR><TD CLASS="l">844</TD><TD> }</TD></TR><TR><TD CLASS="l">845</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="86">846</A></TD><TD> private class ConfigurationAndTarget {</TD></TR><TR><TD CLASS="l">847</TD><TD> private String fTargetId;</TD></TR><TR><TD CLASS="l">848</TD><TD> private StructuredTextViewerConfiguration fConfiguration;</TD></TR><TR><TD CLASS="l">849</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">850</TD><TD> public ConfigurationAndTarget(String targetId, StructuredTextViewerConfiguration config) {</TD></TR><TR CLASS="z"><TD CLASS="l">851</TD><TD> fTargetId = targetId;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="89">852</A></TD><TD> fConfiguration = config;</TD></TR><TR CLASS="z"><TD CLASS="l">853</TD><TD> }</TD></TR><TR><TD CLASS="l">854</TD><TD> </TD></TR><TR><TD CLASS="l">855</TD><TD> public String getTargetId() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="88">856</A></TD><TD> return fTargetId;</TD></TR><TR><TD CLASS="l">857</TD><TD> }</TD></TR><TR><TD CLASS="l">858</TD><TD> </TD></TR><TR><TD CLASS="l">859</TD><TD> public StructuredTextViewerConfiguration getConfiguration() {</TD></TR><TR CLASS="z"><TD CLASS="l">860</TD><TD> return fConfiguration;</TD></TR><TR><TD CLASS="l">861</TD><TD> }</TD></TR><TR><TD CLASS="l">862</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="0">863</A></TD><TD> </TD></TR><TR><TD CLASS="l">864</TD><TD> /**</TD></TR><TR><TD CLASS="l">865</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">866</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">867</TD><TD> protected final static char[] BRACKETS = {'{', '}', '(', ')', '[', ']'};</TD></TR><TR><TD CLASS="l">868</TD><TD> </TD></TR><TR><TD CLASS="l">869</TD><TD> private static final long BUSY_STATE_DELAY = 1000;</TD></TR><TR><TD CLASS="l">870</TD><TD> /**</TD></TR><TR><TD CLASS="l">871</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">872</TD><TD> */</TD></TR><TR><TD CLASS="l">873</TD><TD> protected static final String DOT = "."; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">874</TD><TD> private static final String EDITOR_CONTEXT_MENU_ID = "org.eclipse.wst.sse.ui.StructuredTextEditor.EditorContext"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">875</TD><TD> private static final String EDITOR_CONTEXT_MENU_SUFFIX = ".source.EditorContext"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">876</TD><TD> /** Non-NLS strings */</TD></TR><TR><TD CLASS="l">877</TD><TD> private static final String EDITOR_KEYBINDING_SCOPE_ID = "org.eclipse.wst.sse.ui.structuredTextEditorScope"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">878</TD><TD> /**</TD></TR><TR><TD CLASS="l">879</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">880</TD><TD> */</TD></TR><TR><TD CLASS="l">881</TD><TD> public static final String GROUP_NAME_ADDITIONS = IWorkbenchActionConstants.MB_ADDITIONS; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">882</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">883</TD><TD> private static final String REDO_ACTION_DESC = SSEUIMessages.Redo___0___UI_; //$NON-NLS-1$ = "Redo: {0}."</TD></TR><TR CLASS="z"><TD CLASS="l">884</TD><TD> private static final String REDO_ACTION_DESC_DEFAULT = SSEUIMessages.Redo_Text_Change__UI_; //$NON-NLS-1$ = "Redo Text Change."</TD></TR><TR CLASS="z"><TD CLASS="l">885</TD><TD> private static final String REDO_ACTION_TEXT = SSEUIMessages._Redo__0___Ctrl_Y_UI_; //$NON-NLS-1$ = "&Redo {0} @Ctrl+Y"</TD></TR><TR CLASS="z"><TD CLASS="l">886</TD><TD> private static final String REDO_ACTION_TEXT_DEFAULT = SSEUIMessages._Redo_Text_Change__Ctrl_Y_UI_; //$NON-NLS-1$ = "&Redo Text Change @Ctrl+Y"</TD></TR><TR><TD CLASS="l">887</TD><TD> private static final String RULER_CONTEXT_MENU_ID = "org.eclipse.wst.sse.ui.StructuredTextEditor.RulerContext"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">888</TD><TD> private static final String RULER_CONTEXT_MENU_SUFFIX = ".source.RulerContext"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">889</TD><TD> </TD></TR><TR><TD CLASS="l">890</TD><TD> private final static String UNDERSCORE = "_"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">891</TD><TD> /** Translatable strings */</TD></TR><TR CLASS="z"><TD CLASS="l">892</TD><TD> private static final String UNDO_ACTION_DESC = SSEUIMessages.Undo___0___UI_; //$NON-NLS-1$ = "Undo: {0}."</TD></TR><TR><TD CLASS="l">893</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">894</TD><TD> private static final String UNDO_ACTION_DESC_DEFAULT = SSEUIMessages.Undo_Text_Change__UI_; //$NON-NLS-1$ = "Undo Text Change."</TD></TR><TR CLASS="z"><TD CLASS="l">895</TD><TD> private static final String UNDO_ACTION_TEXT = SSEUIMessages._Undo__0___Ctrl_Z_UI_; //$NON-NLS-1$ = "&Undo {0} @Ctrl+Z"</TD></TR><TR CLASS="z"><TD CLASS="l">896</TD><TD> private static final String UNDO_ACTION_TEXT_DEFAULT = SSEUIMessages._Undo_Text_Change__Ctrl_Z_UI_; //$NON-NLS-1$ = "&Undo Text Change @Ctrl+Z"</TD></TR><TR><TD CLASS="l">897</TD><TD> // development time/debug variables only</TD></TR><TR><TD CLASS="l">898</TD><TD> private int adapterRequests;</TD></TR><TR><TD CLASS="l">899</TD><TD> </TD></TR><TR><TD CLASS="l">900</TD><TD> private long adapterTime;</TD></TR><TR><TD CLASS="l">901</TD><TD> private boolean fBackgroundJobEnded;</TD></TR><TR><TD CLASS="l">902</TD><TD> private boolean fBusyState;</TD></TR><TR><TD CLASS="l">903</TD><TD> private Timer fBusyTimer;</TD></TR><TR CLASS="z"><TD CLASS="l">904</TD><TD> boolean fDirtyBeforeDocumentEvent = false;</TD></TR><TR CLASS="z"><TD CLASS="l">905</TD><TD> int validateEditCount = 0;</TD></TR><TR><TD CLASS="l">906</TD><TD> private ExtendedEditorDropTargetAdapter fDropAdapter;</TD></TR><TR><TD CLASS="l">907</TD><TD> private DropTarget fDropTarget;</TD></TR><TR CLASS="z"><TD CLASS="l">908</TD><TD> boolean fEditorDisposed = false;</TD></TR><TR><TD CLASS="l">909</TD><TD> private IEditorPart fEditorPart;</TD></TR><TR><TD CLASS="l">910</TD><TD> private IDocumentListener fInternalDocumentListener;</TD></TR><TR><TD CLASS="l">911</TD><TD> private InternalModelStateListener fInternalModelStateListener;</TD></TR><TR><TD CLASS="l">912</TD><TD> private IContentOutlinePage fOutlinePage;</TD></TR><TR><TD CLASS="l">913</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">914</TD><TD> private OutlinePageListener fOutlinePageListener = null;</TD></TR><TR><TD CLASS="l">915</TD><TD> /** This editor's projection model updater */</TD></TR><TR><TD CLASS="l">916</TD><TD> private IStructuredTextFoldingProvider fProjectionModelUpdater;</TD></TR><TR><TD CLASS="l">917</TD><TD> /** This editor's projection support */</TD></TR><TR><TD CLASS="l">918</TD><TD> private ProjectionSupport fProjectionSupport;</TD></TR><TR><TD CLASS="l">919</TD><TD> private IPropertySheetPage fPropertySheetPage;</TD></TR><TR><TD CLASS="l">920</TD><TD> private String fRememberTitle;</TD></TR><TR><TD CLASS="l">921</TD><TD> /** The ruler context menu to be disposed. */</TD></TR><TR><TD CLASS="l">922</TD><TD> private Menu fRulerContextMenu;</TD></TR><TR><TD CLASS="l">923</TD><TD> /** The ruler context menu manager to be disposed. */</TD></TR><TR><TD CLASS="l">924</TD><TD> private MenuManager fRulerContextMenuManager;</TD></TR><TR><TD CLASS="l">925</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">926</TD><TD> String[] fShowInTargetIds = new String[]{IPageLayout.ID_RES_NAV};</TD></TR><TR><TD CLASS="l">927</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">928</TD><TD> private IAction fShowPropertiesAction = null;</TD></TR><TR><TD CLASS="l">929</TD><TD> private IStructuredModel fStructuredModel;</TD></TR><TR CLASS="z"><TD CLASS="l">930</TD><TD> StructuredSelectionProvider fStructuredSelectionProvider = null;</TD></TR><TR><TD CLASS="l">931</TD><TD> /** The text context menu to be disposed. */</TD></TR><TR><TD CLASS="l">932</TD><TD> private Menu fTextContextMenu;</TD></TR><TR><TD CLASS="l">933</TD><TD> /** The text context menu manager to be disposed. */</TD></TR><TR><TD CLASS="l">934</TD><TD> private MenuManager fTextContextMenuManager;</TD></TR><TR><TD CLASS="l">935</TD><TD> private String fViewerConfigurationTargetId;</TD></TR><TR><TD CLASS="l">936</TD><TD> /** The selection history of the editor */</TD></TR><TR><TD CLASS="l">937</TD><TD> private SelectionHistory fSelectionHistory;</TD></TR><TR><TD CLASS="l">938</TD><TD> /** The information presenter. */</TD></TR><TR><TD CLASS="l">939</TD><TD> private InformationPresenter fInformationPresenter;</TD></TR><TR><TD CLASS="l">940</TD><TD> private boolean fUpdateMenuTextPending;</TD></TR><TR><TD CLASS="l">941</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">942</TD><TD> private boolean shouldClose = false;</TD></TR><TR><TD CLASS="l">943</TD><TD> private long startPerfTime;</TD></TR><TR><TD CLASS="l">944</TD><TD> private boolean fisReleased;</TD></TR><TR><TD CLASS="l">945</TD><TD> /**</TD></TR><TR><TD CLASS="l">946</TD><TD> * The action group for folding.</TD></TR><TR><TD CLASS="l">947</TD><TD> */</TD></TR><TR><TD CLASS="l">948</TD><TD> private FoldingActionGroup fFoldingGroup;</TD></TR><TR><TD CLASS="l">949</TD><TD> </TD></TR><TR><TD CLASS="l">950</TD><TD> private ILabelProvider fStatusLineLabelProvider;</TD></TR><TR><TD CLASS="l">951</TD><TD> </TD></TR><TR><TD CLASS="l">952</TD><TD> private SemanticHighlightingManager fSemanticManager;</TD></TR><TR><TD CLASS="l">953</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">954</TD><TD> private boolean fSelectionChangedFromGoto = false;</TD></TR><TR><TD CLASS="l">955</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="2">956</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">957</TD><TD> * Creates a new Structured Text Editor.</TD></TR><TR><TD CLASS="l">958</TD><TD> */</TD></TR><TR><TD CLASS="l">959</TD><TD> public StructuredTextEditor() {</TD></TR><TR CLASS="z"><TD CLASS="l">960</TD><TD> super();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="3">961</A></TD><TD> initializeDocumentProvider(null);</TD></TR><TR CLASS="z"><TD CLASS="l">962</TD><TD> }</TD></TR><TR><TD CLASS="l">963</TD><TD> </TD></TR><TR><TD CLASS="l">964</TD><TD> private void aboutToSaveModel() {</TD></TR><TR CLASS="z"><TD CLASS="l">965</TD><TD> if (getInternalModel() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">966</TD><TD> getInternalModel().aboutToChangeModel();</TD></TR><TR><TD CLASS="l">967</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">968</TD><TD> }</TD></TR><TR><TD CLASS="l">969</TD><TD> </TD></TR><TR><TD CLASS="l">970</TD><TD> protected void addContextMenuActions(IMenuManager menu) {</TD></TR><TR><TD CLASS="l"><A NAME="5">971</A></TD><TD> // Only offer actions that affect the text if the viewer allows</TD></TR><TR><TD CLASS="l">972</TD><TD> // modification and supports any of these operations</TD></TR><TR><TD CLASS="l">973</TD><TD> </TD></TR><TR><TD CLASS="l">974</TD><TD> // Some Design editors (DTD) rely on this view for their own uses</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="6">975</A></TD><TD> menu.appendToGroup(IWorkbenchActionConstants.GROUP_ADD, fShowPropertiesAction);</TD></TR><TR CLASS="z"><TD CLASS="l">976</TD><TD> }</TD></TR><TR><TD CLASS="l">977</TD><TD> </TD></TR><TR><TD CLASS="l">978</TD><TD> private void addExtendedContextMenuActions(IMenuManager menu) {</TD></TR><TR CLASS="z"><TD CLASS="l">979</TD><TD> IEditorActionBarContributor c = getEditorSite().getActionBarContributor();</TD></TR><TR CLASS="z"><TD CLASS="l">980</TD><TD> if (c instanceof IPopupMenuContributor) {</TD></TR><TR CLASS="z"><TD CLASS="l">981</TD><TD> ((IPopupMenuContributor) c).contributeToPopupMenu(menu);</TD></TR><TR><TD CLASS="l">982</TD><TD> }</TD></TR><TR><TD CLASS="l">983</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">984</TD><TD> ExtendedEditorActionBuilder builder = new ExtendedEditorActionBuilder();</TD></TR><TR CLASS="z"><TD CLASS="l">985</TD><TD> IExtendedContributor pmc = builder.readActionExtensions(getConfigurationPoints());</TD></TR><TR CLASS="z"><TD CLASS="l">986</TD><TD> if (pmc != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">987</TD><TD> pmc.setActiveEditor(this);</TD></TR><TR CLASS="z"><TD CLASS="l">988</TD><TD> pmc.contributeToPopupMenu(menu);</TD></TR><TR><TD CLASS="l">989</TD><TD> }</TD></TR><TR><TD CLASS="l">990</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="7">991</A></TD><TD> }</TD></TR><TR><TD CLASS="l">992</TD><TD> </TD></TR><TR><TD CLASS="l">993</TD><TD> protected void addExtendedRulerContextMenuActions(IMenuManager menu) {</TD></TR><TR><TD CLASS="l">994</TD><TD> // none at this level</TD></TR><TR CLASS="z"><TD CLASS="l">995</TD><TD> }</TD></TR><TR><TD CLASS="l">996</TD><TD> </TD></TR><TR><TD CLASS="l">997</TD><TD> </TD></TR><TR><TD CLASS="l">998</TD><TD> </TD></TR><TR><TD CLASS="l">999</TD><TD> /**</TD></TR><TR><TD CLASS="l">1000</TD><TD> * Starts background mode.</TD></TR><TR><TD CLASS="l">1001</TD><TD> * <p></TD></TR><TR><TD CLASS="l"><A NAME="8">1002</A></TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">1003</TD><TD> * </p></TD></TR><TR><TD CLASS="l">1004</TD><TD> */</TD></TR><TR><TD CLASS="l">1005</TD><TD> void beginBackgroundOperation() {</TD></TR><TR CLASS="z"><TD CLASS="l">1006</TD><TD> fBackgroundJobEnded = false;</TD></TR><TR><TD CLASS="l">1007</TD><TD> // if already in busy state, no need to do anything</TD></TR><TR><TD CLASS="l">1008</TD><TD> // and, we only start, or reset, the timed busy</TD></TR><TR><TD CLASS="l">1009</TD><TD> // state when we get the "endBackgroundOperation" call.</TD></TR><TR CLASS="z"><TD CLASS="l">1010</TD><TD> if (!inBusyState()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1011</TD><TD> beginBusyStateInternal();</TD></TR><TR><TD CLASS="l">1012</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="9">1013</A></TD><TD> }</TD></TR><TR><TD CLASS="l">1014</TD><TD> </TD></TR><TR><TD CLASS="l">1015</TD><TD> private void beginBusyStateInternal() {</TD></TR><TR><TD CLASS="l">1016</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1017</TD><TD> fBusyState = true;</TD></TR><TR CLASS="z"><TD CLASS="l">1018</TD><TD> startBusyTimer();</TD></TR><TR><TD CLASS="l">1019</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1020</TD><TD> ISourceViewer viewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">1021</TD><TD> if (viewer instanceof StructuredTextViewer) {</TD></TR><TR CLASS="z"><TD CLASS="l">1022</TD><TD> ((StructuredTextViewer) viewer).beginBackgroundUpdate();</TD></TR><TR><TD CLASS="l">1023</TD><TD> </TD></TR><TR><TD CLASS="l">1024</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1025</TD><TD> showBusy(true);</TD></TR><TR CLASS="z"><TD CLASS="l">1026</TD><TD> }</TD></TR><TR><TD CLASS="l">1027</TD><TD> </TD></TR><TR><TD CLASS="l">1028</TD><TD> /*</TD></TR><TR><TD CLASS="l">1029</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l">1030</TD><TD> * </TD></TR><TR><TD CLASS="l">1031</TD><TD> * @see org.eclipse.ui.texteditor.ITextEditor#close(boolean)</TD></TR><TR><TD CLASS="l">1032</TD><TD> */</TD></TR><TR><TD CLASS="l">1033</TD><TD> public void close(final boolean save) {</TD></TR><TR><TD CLASS="l"><A NAME="a">1034</A></TD><TD> /*</TD></TR><TR><TD CLASS="l">1035</TD><TD> * Instead of us closing directly, we have to close with our</TD></TR><TR><TD CLASS="l">1036</TD><TD> * containing (multipage) editor, if it exists.</TD></TR><TR><TD CLASS="l">1037</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">1038</TD><TD> if (getSite() == null) {</TD></TR><TR><TD CLASS="l">1039</TD><TD> // if site hasn't been set yet, then we're not</TD></TR><TR><TD CLASS="l">1040</TD><TD> // completely open</TD></TR><TR><TD CLASS="l">1041</TD><TD> // so set a flag not to open</TD></TR><TR CLASS="z"><TD CLASS="l">1042</TD><TD> shouldClose = true;</TD></TR><TR><TD CLASS="l"><A NAME="7d">1043</A></TD><TD> }</TD></TR><TR><TD CLASS="l">1044</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1045</TD><TD> if (getEditorPart() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="7f">1046</A></TD><TD> Display display = getSite().getShell().getDisplay();</TD></TR><TR CLASS="z"><TD CLASS="l">1047</TD><TD> display.asyncExec(new Runnable() {</TD></TR><TR><TD CLASS="l">1048</TD><TD> </TD></TR><TR><TD CLASS="l">1049</TD><TD> public void run() {</TD></TR><TR CLASS="z"><TD CLASS="l">1050</TD><TD> getSite().getPage().closeEditor(getEditorPart(), save);</TD></TR><TR CLASS="z"><TD CLASS="l">1051</TD><TD> }</TD></TR><TR><TD CLASS="l">1052</TD><TD> });</TD></TR><TR><TD CLASS="l">1053</TD><TD> }</TD></TR><TR><TD CLASS="l">1054</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1055</TD><TD> super.close(save);</TD></TR><TR><TD CLASS="l">1056</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="4">1057</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1058</TD><TD> }</TD></TR><TR><TD CLASS="l">1059</TD><TD> </TD></TR><TR><TD CLASS="l">1060</TD><TD> private void activateContexts(IContextService service) {</TD></TR><TR CLASS="z"><TD CLASS="l">1061</TD><TD> if(service == null)</TD></TR><TR CLASS="z"><TD CLASS="l">1062</TD><TD> return;</TD></TR><TR><TD CLASS="l">1063</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1064</TD><TD> String[] definitions = getDefinitions(getConfigurationPoints());</TD></TR><TR><TD CLASS="l">1065</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1066</TD><TD> if(definitions != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1067</TD><TD> String[] contexts = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1068</TD><TD> for(int i = 0; i < definitions.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1069</TD><TD> contexts = StringUtils.unpack(definitions[i]);</TD></TR><TR CLASS="z"><TD CLASS="l">1070</TD><TD> for(int j = 0; j < contexts.length; j++)</TD></TR><TR CLASS="z"><TD CLASS="l">1071</TD><TD> service.activateContext(contexts[j].trim());</TD></TR><TR><TD CLASS="l">1072</TD><TD> }</TD></TR><TR><TD CLASS="l">1073</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="28">1074</A></TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1075</TD><TD> }</TD></TR><TR><TD CLASS="l">1076</TD><TD> </TD></TR><TR><TD CLASS="l">1077</TD><TD> private String[] getDefinitions(String[] ids) {</TD></TR><TR CLASS="z"><TD CLASS="l">1078</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1079</TD><TD> String[] definitions = null;</TD></TR><TR><TD CLASS="l">1080</TD><TD> </TD></TR><TR><TD CLASS="l">1081</TD><TD> /* Iterate through the configuration ids until one is found that has</TD></TR><TR><TD CLASS="l">1082</TD><TD> * an activecontexts definition</TD></TR><TR><TD CLASS="l">1083</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">1084</TD><TD> for(int i = 0; i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1085</TD><TD> definitions = builder.getDefinitions("activecontexts", ids[i]); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1086</TD><TD> if(definitions != null && definitions.length > 0)</TD></TR><TR CLASS="z"><TD CLASS="l">1087</TD><TD> return definitions;</TD></TR><TR><TD CLASS="l">1088</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1089</TD><TD> return null;</TD></TR><TR><TD CLASS="l">1090</TD><TD> }</TD></TR><TR><TD CLASS="l">1091</TD><TD> </TD></TR><TR><TD CLASS="l">1092</TD><TD> /*</TD></TR><TR><TD CLASS="l">1093</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="b">1094</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1095</TD><TD> * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#collectContextMenuPreferencePages()</TD></TR><TR><TD CLASS="l">1096</TD><TD> */</TD></TR><TR><TD CLASS="l">1097</TD><TD> protected String[] collectContextMenuPreferencePages() {</TD></TR><TR CLASS="z"><TD CLASS="l">1098</TD><TD> List allIds = new ArrayList(0);</TD></TR><TR><TD CLASS="l">1099</TD><TD> </TD></TR><TR><TD CLASS="l">1100</TD><TD> // get contributed preference pages</TD></TR><TR CLASS="z"><TD CLASS="l">1101</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1102</TD><TD> String[] configurationIds = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1103</TD><TD> for (int i = 0; i < configurationIds.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1104</TD><TD> String[] definitions = builder.getDefinitions("preferencepages", configurationIds[i]); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1105</TD><TD> for (int j = 0; j < definitions.length; j++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1106</TD><TD> String someIds = definitions[j];</TD></TR><TR CLASS="z"><TD CLASS="l">1107</TD><TD> if (someIds != null && someIds.length() > 0) {</TD></TR><TR><TD CLASS="l">1108</TD><TD> // supports multiple comma-delimited page IDs in one</TD></TR><TR><TD CLASS="l">1109</TD><TD> // element</TD></TR><TR CLASS="z"><TD CLASS="l">1110</TD><TD> String[] ids = StringUtils.unpack(someIds);</TD></TR><TR CLASS="z"><TD CLASS="l">1111</TD><TD> for (int k = 0; k < ids.length; k++) {</TD></TR><TR><TD CLASS="l">1112</TD><TD> // trim, just to keep things clean</TD></TR><TR CLASS="z"><TD CLASS="l">1113</TD><TD> String id = ids[k].trim();</TD></TR><TR CLASS="z"><TD CLASS="l">1114</TD><TD> if (!allIds.contains(id)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1115</TD><TD> allIds.add(id);</TD></TR><TR><TD CLASS="l">1116</TD><TD> }</TD></TR><TR><TD CLASS="l">1117</TD><TD> }</TD></TR><TR><TD CLASS="l">1118</TD><TD> }</TD></TR><TR><TD CLASS="l">1119</TD><TD> }</TD></TR><TR><TD CLASS="l">1120</TD><TD> }</TD></TR><TR><TD CLASS="l">1121</TD><TD> </TD></TR><TR><TD CLASS="l">1122</TD><TD> // add pages contributed by super</TD></TR><TR CLASS="z"><TD CLASS="l">1123</TD><TD> String[] superPages = super.collectContextMenuPreferencePages();</TD></TR><TR CLASS="z"><TD CLASS="l">1124</TD><TD> for (int m = 0; m < superPages.length; m++) {</TD></TR><TR><TD CLASS="l">1125</TD><TD> // trim, just to keep things clean</TD></TR><TR CLASS="z"><TD CLASS="l">1126</TD><TD> String id = superPages[m].trim();</TD></TR><TR CLASS="z"><TD CLASS="l">1127</TD><TD> if (!allIds.contains(id)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1128</TD><TD> allIds.add(id);</TD></TR><TR><TD CLASS="l">1129</TD><TD> }</TD></TR><TR><TD CLASS="l">1130</TD><TD> }</TD></TR><TR><TD CLASS="l">1131</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1132</TD><TD> return (String[]) allIds.toArray(new String[0]);</TD></TR><TR><TD CLASS="l">1133</TD><TD> }</TD></TR><TR><TD CLASS="l">1134</TD><TD> </TD></TR><TR><TD CLASS="l">1135</TD><TD> /**</TD></TR><TR><TD CLASS="l">1136</TD><TD> * Compute and set double-click action for the vertical ruler</TD></TR><TR><TD CLASS="l">1137</TD><TD> */</TD></TR><TR><TD CLASS="l">1138</TD><TD> private void computeAndSetDoubleClickAction() {</TD></TR><TR><TD CLASS="l">1139</TD><TD> /*</TD></TR><TR><TD CLASS="l"><A NAME="c">1140</A></TD><TD> * Make double-clicking on the ruler toggle a breakpoint instead of</TD></TR><TR><TD CLASS="l">1141</TD><TD> * toggling a bookmark. For lines where a breakpoint won't be created,</TD></TR><TR><TD CLASS="l">1142</TD><TD> * create a bookmark through the contributed RulerDoubleClick action.</TD></TR><TR><TD CLASS="l">1143</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">1144</TD><TD> setAction(ITextEditorActionConstants.RULER_DOUBLE_CLICK, new ToggleBreakpointAction(this, getVerticalRuler(), getAction(ITextEditorActionConstants.RULER_DOUBLE_CLICK)));</TD></TR><TR CLASS="z"><TD CLASS="l">1145</TD><TD> }</TD></TR><TR><TD CLASS="l">1146</TD><TD> </TD></TR><TR><TD CLASS="l">1147</TD><TD> /*</TD></TR><TR><TD CLASS="l">1148</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="d">1149</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1150</TD><TD> * @see org.eclipse.ui.texteditor.ExtendedTextEditor#configureSourceViewerDecorationSupport(org.eclipse.ui.texteditor.SourceViewerDecorationSupport)</TD></TR><TR><TD CLASS="l">1151</TD><TD> */</TD></TR><TR><TD CLASS="l">1152</TD><TD> protected void configureSourceViewerDecorationSupport(SourceViewerDecorationSupport support) {</TD></TR><TR CLASS="z"><TD CLASS="l">1153</TD><TD> support.setCharacterPairMatcher(createCharacterPairMatcher());</TD></TR><TR CLASS="z"><TD CLASS="l">1154</TD><TD> support.setMatchingCharacterPainterPreferenceKeys(EditorPreferenceNames.MATCHING_BRACKETS, EditorPreferenceNames.MATCHING_BRACKETS_COLOR);</TD></TR><TR><TD CLASS="l">1155</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="e">1156</A></TD><TD> super.configureSourceViewerDecorationSupport(support);</TD></TR><TR CLASS="z"><TD CLASS="l">1157</TD><TD> }</TD></TR><TR><TD CLASS="l">1158</TD><TD> </TD></TR><TR><TD CLASS="l">1159</TD><TD> protected void createActions() {</TD></TR><TR CLASS="z"><TD CLASS="l">1160</TD><TD> super.createActions();</TD></TR><TR CLASS="z"><TD CLASS="l">1161</TD><TD> ResourceBundle resourceBundle = SSEUIMessages.getResourceBundle();</TD></TR><TR CLASS="z"><TD CLASS="l">1162</TD><TD> IWorkbenchHelpSystem helpSystem = SSEUIPlugin.getDefault().getWorkbench().getHelpSystem();</TD></TR><TR><TD CLASS="l">1163</TD><TD> // TextView Action - moving the selected text to</TD></TR><TR><TD CLASS="l">1164</TD><TD> // the clipboard</TD></TR><TR><TD CLASS="l">1165</TD><TD> // override the cut/paste/delete action to make</TD></TR><TR><TD CLASS="l">1166</TD><TD> // them run on read-only</TD></TR><TR><TD CLASS="l">1167</TD><TD> // files</TD></TR><TR CLASS="z"><TD CLASS="l">1168</TD><TD> Action action = new TextOperationAction(resourceBundle, "Editor_Cut_", this, ITextOperationTarget.CUT, true); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1169</TD><TD> action.setActionDefinitionId(IWorkbenchActionDefinitionIds.CUT);</TD></TR><TR CLASS="z"><TD CLASS="l">1170</TD><TD> setAction(ITextEditorActionConstants.CUT, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1171</TD><TD> helpSystem.setHelp(action, IAbstractTextEditorHelpContextIds.CUT_ACTION);</TD></TR><TR><TD CLASS="l">1172</TD><TD> // TextView Action - inserting the clipboard</TD></TR><TR><TD CLASS="l">1173</TD><TD> // content at the current</TD></TR><TR><TD CLASS="l">1174</TD><TD> // position</TD></TR><TR><TD CLASS="l">1175</TD><TD> // override the cut/paste/delete action to make</TD></TR><TR><TD CLASS="l">1176</TD><TD> // them run on read-only</TD></TR><TR><TD CLASS="l">1177</TD><TD> // files</TD></TR><TR CLASS="z"><TD CLASS="l">1178</TD><TD> action = new TextOperationAction(resourceBundle, "Editor_Paste_", this, ITextOperationTarget.PASTE, true); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1179</TD><TD> action.setActionDefinitionId(IWorkbenchActionDefinitionIds.PASTE);</TD></TR><TR CLASS="z"><TD CLASS="l">1180</TD><TD> setAction(ITextEditorActionConstants.PASTE, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1181</TD><TD> helpSystem.setHelp(action, IAbstractTextEditorHelpContextIds.PASTE_ACTION);</TD></TR><TR><TD CLASS="l">1182</TD><TD> // TextView Action - deleting the selected text or</TD></TR><TR><TD CLASS="l">1183</TD><TD> // if selection is</TD></TR><TR><TD CLASS="l">1184</TD><TD> // empty the character at the right of the current</TD></TR><TR><TD CLASS="l">1185</TD><TD> // position</TD></TR><TR><TD CLASS="l">1186</TD><TD> // override the cut/paste/delete action to make</TD></TR><TR><TD CLASS="l">1187</TD><TD> // them run on read-only</TD></TR><TR><TD CLASS="l">1188</TD><TD> // files</TD></TR><TR CLASS="z"><TD CLASS="l">1189</TD><TD> action = new TextOperationAction(resourceBundle, "Editor_Delete_", this, ITextOperationTarget.DELETE, true); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1190</TD><TD> action.setActionDefinitionId(IWorkbenchActionDefinitionIds.DELETE);</TD></TR><TR CLASS="z"><TD CLASS="l">1191</TD><TD> setAction(ITextEditorActionConstants.DELETE, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1192</TD><TD> helpSystem.setHelp(action, IAbstractTextEditorHelpContextIds.DELETE_ACTION);</TD></TR><TR><TD CLASS="l">1193</TD><TD> // SourceView Action - requesting content assist to</TD></TR><TR><TD CLASS="l">1194</TD><TD> // show completetion</TD></TR><TR><TD CLASS="l">1195</TD><TD> // proposals for the current insert position</TD></TR><TR CLASS="z"><TD CLASS="l">1196</TD><TD> action = new TextOperationAction(resourceBundle, StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_PROPOSALS + UNDERSCORE, this, ISourceViewer.CONTENTASSIST_PROPOSALS, true);</TD></TR><TR CLASS="z"><TD CLASS="l">1197</TD><TD> helpSystem.setHelp(action, IHelpContextIds.CONTMNU_CONTENTASSIST_HELPID);</TD></TR><TR CLASS="z"><TD CLASS="l">1198</TD><TD> action.setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS);</TD></TR><TR CLASS="z"><TD CLASS="l">1199</TD><TD> setAction(StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_PROPOSALS, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1200</TD><TD> markAsStateDependentAction(StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_PROPOSALS, true);</TD></TR><TR><TD CLASS="l">1201</TD><TD> // SourceView Action - requesting content assist to</TD></TR><TR><TD CLASS="l">1202</TD><TD> // show the content</TD></TR><TR><TD CLASS="l">1203</TD><TD> // information for the current insert position</TD></TR><TR CLASS="z"><TD CLASS="l">1204</TD><TD> action = new TextOperationAction(SSEUIMessages.getResourceBundle(), StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_CONTEXT_INFORMATION + UNDERSCORE, this, ISourceViewer.CONTENTASSIST_CONTEXT_INFORMATION);</TD></TR><TR CLASS="z"><TD CLASS="l">1205</TD><TD> action.setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_CONTEXT_INFORMATION);</TD></TR><TR CLASS="z"><TD CLASS="l">1206</TD><TD> setAction(StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_CONTEXT_INFORMATION, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1207</TD><TD> markAsStateDependentAction(StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_CONTEXT_INFORMATION, true);</TD></TR><TR><TD CLASS="l">1208</TD><TD> // StructuredTextViewer Action - requesting format</TD></TR><TR><TD CLASS="l">1209</TD><TD> // of the whole</TD></TR><TR><TD CLASS="l">1210</TD><TD> // document</TD></TR><TR CLASS="z"><TD CLASS="l">1211</TD><TD> action = new TextOperationAction(resourceBundle, StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_DOCUMENT + UNDERSCORE, this, StructuredTextViewer.FORMAT_DOCUMENT);</TD></TR><TR CLASS="z"><TD CLASS="l">1212</TD><TD> helpSystem.setHelp(action, IHelpContextIds.CONTMNU_FORMAT_DOC_HELPID);</TD></TR><TR CLASS="z"><TD CLASS="l">1213</TD><TD> action.setActionDefinitionId(ActionDefinitionIds.FORMAT_DOCUMENT);</TD></TR><TR CLASS="z"><TD CLASS="l">1214</TD><TD> setAction(StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_DOCUMENT, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1215</TD><TD> markAsStateDependentAction(StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_DOCUMENT, true);</TD></TR><TR CLASS="z"><TD CLASS="l">1216</TD><TD> markAsSelectionDependentAction(StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_DOCUMENT, true);</TD></TR><TR><TD CLASS="l">1217</TD><TD> // StructuredTextViewer Action - requesting format</TD></TR><TR><TD CLASS="l">1218</TD><TD> // of the active</TD></TR><TR><TD CLASS="l">1219</TD><TD> // elements</TD></TR><TR CLASS="z"><TD CLASS="l">1220</TD><TD> action = new TextOperationAction(resourceBundle, StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_ACTIVE_ELEMENTS + UNDERSCORE, this, StructuredTextViewer.FORMAT_ACTIVE_ELEMENTS);</TD></TR><TR CLASS="z"><TD CLASS="l">1221</TD><TD> helpSystem.setHelp(action, IHelpContextIds.CONTMNU_FORMAT_ELEMENTS_HELPID);</TD></TR><TR CLASS="z"><TD CLASS="l">1222</TD><TD> action.setActionDefinitionId(ActionDefinitionIds.FORMAT_ACTIVE_ELEMENTS);</TD></TR><TR CLASS="z"><TD CLASS="l">1223</TD><TD> setAction(StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_ACTIVE_ELEMENTS, action);</TD></TR><TR CLASS="z"><TD CLASS="l">1224</TD><TD> markAsStateDependentAction(StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_ACTIVE_ELEMENTS, true);</TD></TR><TR CLASS="z"><TD CLASS="l">1225</TD><TD> markAsSelectionDependentAction(StructuredTextEditorActionConstants.ACTION_NAME_FORMAT_ACTIVE_ELEMENTS, true);</TD></TR><TR><TD CLASS="l">1226</TD><TD> </TD></TR><TR><TD CLASS="l">1227</TD><TD> // StructuredTextEditor Action - add breakpoints (falling back to the</TD></TR><TR><TD CLASS="l">1228</TD><TD> // current double-click if they can't be added)</TD></TR><TR CLASS="z"><TD CLASS="l">1229</TD><TD> action = new ToggleBreakpointAction(this, getVerticalRuler());</TD></TR><TR CLASS="z"><TD CLASS="l">1230</TD><TD> setAction(ActionDefinitionIds.TOGGLE_BREAKPOINTS, action);</TD></TR><TR><TD CLASS="l">1231</TD><TD> // StructuredTextEditor Action - manage breakpoints</TD></TR><TR CLASS="z"><TD CLASS="l">1232</TD><TD> action = new ManageBreakpointAction(this, getVerticalRuler());</TD></TR><TR CLASS="z"><TD CLASS="l">1233</TD><TD> setAction(ActionDefinitionIds.MANAGE_BREAKPOINTS, action);</TD></TR><TR><TD CLASS="l">1234</TD><TD> // StructuredTextEditor Action - edit breakpoints</TD></TR><TR CLASS="z"><TD CLASS="l">1235</TD><TD> action = new EditBreakpointAction(this, getVerticalRuler());</TD></TR><TR CLASS="z"><TD CLASS="l">1236</TD><TD> setAction(ActionDefinitionIds.EDIT_BREAKPOINTS, action);</TD></TR><TR><TD CLASS="l">1237</TD><TD> // StructuredTextViewer Action - open file on selection</TD></TR><TR CLASS="z"><TD CLASS="l">1238</TD><TD> action = new OpenHyperlinkAction(resourceBundle, StructuredTextEditorActionConstants.ACTION_NAME_OPEN_FILE + UNDERSCORE, this, getSourceViewer());</TD></TR><TR CLASS="z"><TD CLASS="l">1239</TD><TD> action.setActionDefinitionId(ActionDefinitionIds.OPEN_FILE);</TD></TR><TR CLASS="z"><TD CLASS="l">1240</TD><TD> setAction(StructuredTextEditorActionConstants.ACTION_NAME_OPEN_FILE, action);</TD></TR><TR><TD CLASS="l">1241</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1242</TD><TD> computeAndSetDoubleClickAction();</TD></TR><TR><TD CLASS="l">1243</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1244</TD><TD> IHandler handler = new GotoMatchingBracketHandler();</TD></TR><TR CLASS="z"><TD CLASS="l">1245</TD><TD> IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class);</TD></TR><TR CLASS="z"><TD CLASS="l">1246</TD><TD> if (handlerService != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1247</TD><TD> handlerService.activateHandler(ActionDefinitionIds.GOTO_MATCHING_BRACKET, handler);</TD></TR><TR><TD CLASS="l">1248</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1249</TD><TD> fShowPropertiesAction = new ShowPropertiesAction(getEditorPart(), getSelectionProvider());</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="f">1250</A></TD><TD> fFoldingGroup = new FoldingActionGroup(this, getSourceViewer());</TD></TR><TR CLASS="z"><TD CLASS="l">1251</TD><TD> }</TD></TR><TR><TD CLASS="l">1252</TD><TD> </TD></TR><TR><TD CLASS="l">1253</TD><TD> protected LineChangeHover createChangeHover() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="10">1254</A></TD><TD> return super.createChangeHover(); //new StructuredLineChangeHover();</TD></TR><TR><TD CLASS="l">1255</TD><TD> }</TD></TR><TR><TD CLASS="l">1256</TD><TD> </TD></TR><TR><TD CLASS="l">1257</TD><TD> protected ICharacterPairMatcher createCharacterPairMatcher() {</TD></TR><TR CLASS="z"><TD CLASS="l">1258</TD><TD> ICharacterPairMatcher matcher = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1259</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1260</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1261</TD><TD> for (int i = 0; matcher == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1262</TD><TD> matcher = (ICharacterPairMatcher) builder.getConfiguration(DocumentRegionEdgeMatcher.ID, ids[i]);</TD></TR><TR><TD CLASS="l">1263</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1264</TD><TD> if (matcher == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1265</TD><TD> matcher = new DefaultCharacterPairMatcher(new char[]{'(', ')', '{', '}', '[', ']', '<', '>', '"', '"', '\'', '\''});</TD></TR><TR><TD CLASS="l">1266</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1267</TD><TD> return matcher;</TD></TR><TR><TD CLASS="l">1268</TD><TD> }</TD></TR><TR><TD CLASS="l">1269</TD><TD> </TD></TR><TR><TD CLASS="l">1270</TD><TD> /**</TD></TR><TR><TD CLASS="l">1271</TD><TD> * Create a preference store that combines the source editor preferences</TD></TR><TR><TD CLASS="l">1272</TD><TD> * with the base editor's preferences.</TD></TR><TR><TD CLASS="l"><A NAME="11">1273</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1274</TD><TD> * @return IPreferenceStore</TD></TR><TR><TD CLASS="l">1275</TD><TD> */</TD></TR><TR><TD CLASS="l">1276</TD><TD> private IPreferenceStore createCombinedPreferenceStore() {</TD></TR><TR CLASS="z"><TD CLASS="l">1277</TD><TD> IPreferenceStore sseEditorPrefs = SSEUIPlugin.getDefault().getPreferenceStore();</TD></TR><TR CLASS="z"><TD CLASS="l">1278</TD><TD> IPreferenceStore baseEditorPrefs = EditorsUI.getPreferenceStore();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="12">1279</A></TD><TD> return new ChainedPreferenceStore(new IPreferenceStore[]{sseEditorPrefs, baseEditorPrefs});</TD></TR><TR><TD CLASS="l">1280</TD><TD> }</TD></TR><TR><TD CLASS="l">1281</TD><TD> </TD></TR><TR><TD CLASS="l">1282</TD><TD> private ContentOutlineConfiguration createContentOutlineConfiguration() {</TD></TR><TR CLASS="z"><TD CLASS="l">1283</TD><TD> ContentOutlineConfiguration cfg = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1284</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1285</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1286</TD><TD> for (int i = 0; cfg == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1287</TD><TD> cfg = (ContentOutlineConfiguration) builder.getConfiguration(ExtendedConfigurationBuilder.CONTENTOUTLINECONFIGURATION, ids[i]);</TD></TR><TR><TD CLASS="l">1288</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="13">1289</A></TD><TD> return cfg;</TD></TR><TR><TD CLASS="l">1290</TD><TD> }</TD></TR><TR><TD CLASS="l">1291</TD><TD> </TD></TR><TR><TD CLASS="l">1292</TD><TD> protected void createModelDependentFields() {</TD></TR><TR CLASS="z"><TD CLASS="l">1293</TD><TD> if (fStructuredSelectionProvider != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1294</TD><TD> SelectionConvertor convertor = (SelectionConvertor) fStructuredModel.getAdapter(SelectionConvertor.class);</TD></TR><TR CLASS="z"><TD CLASS="l">1295</TD><TD> if (convertor != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1296</TD><TD> fStructuredSelectionProvider.selectionConvertor = convertor;</TD></TR><TR><TD CLASS="l">1297</TD><TD> else</TD></TR><TR CLASS="z"><TD CLASS="l">1298</TD><TD> fStructuredSelectionProvider.selectionConvertor = new SelectionConvertor();</TD></TR><TR><TD CLASS="l">1299</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1300</TD><TD> }</TD></TR><TR><TD CLASS="l">1301</TD><TD> </TD></TR><TR><TD CLASS="l">1302</TD><TD> /**</TD></TR><TR><TD CLASS="l">1303</TD><TD> * {@inheritDoc}</TD></TR><TR><TD CLASS="l">1304</TD><TD> * <p></TD></TR><TR><TD CLASS="l">1305</TD><TD> * Use StructuredTextViewerConfiguration if a viewerconfiguration has not</TD></TR><TR><TD CLASS="l">1306</TD><TD> * already been set. Also initialize StructuredTextViewer.</TD></TR><TR><TD CLASS="l">1307</TD><TD> * </p></TD></TR><TR><TD CLASS="l"><A NAME="14">1308</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1309</TD><TD> * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createPartControl(org.eclipse.swt.widgets.Composite)</TD></TR><TR><TD CLASS="l">1310</TD><TD> */</TD></TR><TR><TD CLASS="l">1311</TD><TD> public void createPartControl(Composite parent) {</TD></TR><TR CLASS="z"><TD CLASS="l">1312</TD><TD> IContextService contextService = (IContextService) getSite().getService(IContextService.class);</TD></TR><TR CLASS="z"><TD CLASS="l">1313</TD><TD> if (contextService != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1314</TD><TD> contextService.activateContext(EDITOR_KEYBINDING_SCOPE_ID);</TD></TR><TR><TD CLASS="l">1315</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1316</TD><TD> if (getSourceViewerConfiguration() == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1317</TD><TD> ConfigurationAndTarget cat = createSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">1318</TD><TD> fViewerConfigurationTargetId = cat.getTargetId();</TD></TR><TR CLASS="z"><TD CLASS="l">1319</TD><TD> StructuredTextViewerConfiguration newViewerConfiguration = cat.getConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">1320</TD><TD> setSourceViewerConfiguration(newViewerConfiguration);</TD></TR><TR><TD CLASS="l">1321</TD><TD> }</TD></TR><TR><TD CLASS="l">1322</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1323</TD><TD> super.createPartControl(parent);</TD></TR><TR><TD CLASS="l">1324</TD><TD> </TD></TR><TR><TD CLASS="l">1325</TD><TD> // instead of calling setInput twice, use initializeSourceViewer() to</TD></TR><TR><TD CLASS="l">1326</TD><TD> // handle source viewer initialization previously handled by setInput</TD></TR><TR CLASS="z"><TD CLASS="l">1327</TD><TD> initializeSourceViewer();</TD></TR><TR><TD CLASS="l">1328</TD><TD> </TD></TR><TR><TD CLASS="l">1329</TD><TD> // update editor context menu, vertical ruler context menu, infopop</TD></TR><TR CLASS="z"><TD CLASS="l">1330</TD><TD> if (getInternalModel() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1331</TD><TD> updateEditorControlsForContentType(getInternalModel().getContentTypeIdentifier());</TD></TR><TR><TD CLASS="l">1332</TD><TD> }</TD></TR><TR><TD CLASS="l">1333</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="80">1334</A></TD><TD> updateEditorControlsForContentType(null);</TD></TR><TR><TD CLASS="l">1335</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="82">1336</A></TD><TD> </TD></TR><TR><TD CLASS="l">1337</TD><TD> // used for Show Tooltip Description</TD></TR><TR CLASS="z"><TD CLASS="l">1338</TD><TD> IInformationControlCreator informationControlCreator = new IInformationControlCreator() {</TD></TR><TR><TD CLASS="l">1339</TD><TD> public IInformationControl createInformationControl(Shell shell) {</TD></TR><TR CLASS="z"><TD CLASS="l">1340</TD><TD> boolean cutDown = false;</TD></TR><TR CLASS="z"><TD CLASS="l">1341</TD><TD> int style = cutDown ? SWT.NONE : (SWT.V_SCROLL | SWT.H_SCROLL);</TD></TR><TR CLASS="z"><TD CLASS="l">1342</TD><TD> return new DefaultInformationControl(shell, SWT.RESIZE | SWT.TOOL, style, new HTMLTextPresenter(cutDown));</TD></TR><TR><TD CLASS="l">1343</TD><TD> }</TD></TR><TR><TD CLASS="l">1344</TD><TD> };</TD></TR><TR><TD CLASS="l">1345</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1346</TD><TD> fInformationPresenter = new InformationPresenter(informationControlCreator);</TD></TR><TR CLASS="z"><TD CLASS="l">1347</TD><TD> fInformationPresenter.setSizeConstraints(60, 10, true, true);</TD></TR><TR CLASS="z"><TD CLASS="l">1348</TD><TD> fInformationPresenter.install(getSourceViewer());</TD></TR><TR><TD CLASS="l">1349</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="15">1350</A></TD><TD> installSemanticHighlighting();</TD></TR><TR CLASS="z"><TD CLASS="l">1351</TD><TD> }</TD></TR><TR><TD CLASS="l">1352</TD><TD> </TD></TR><TR><TD CLASS="l">1353</TD><TD> protected PropertySheetConfiguration createPropertySheetConfiguration() {</TD></TR><TR CLASS="z"><TD CLASS="l">1354</TD><TD> PropertySheetConfiguration cfg = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1355</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1356</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1357</TD><TD> for (int i = 0; cfg == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1358</TD><TD> cfg = (PropertySheetConfiguration) builder.getConfiguration(ExtendedConfigurationBuilder.PROPERTYSHEETCONFIGURATION, ids[i]);</TD></TR><TR><TD CLASS="l">1359</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1360</TD><TD> return cfg;</TD></TR><TR><TD CLASS="l">1361</TD><TD> }</TD></TR><TR><TD CLASS="l">1362</TD><TD> </TD></TR><TR><TD CLASS="l">1363</TD><TD> /**</TD></TR><TR><TD CLASS="l">1364</TD><TD> * Loads the Show In Target IDs from the Extended Configuration extension</TD></TR><TR><TD CLASS="l">1365</TD><TD> * point.</TD></TR><TR><TD CLASS="l"><A NAME="16">1366</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1367</TD><TD> * @return</TD></TR><TR><TD CLASS="l">1368</TD><TD> */</TD></TR><TR><TD CLASS="l">1369</TD><TD> private String[] createShowInTargetIds() {</TD></TR><TR CLASS="z"><TD CLASS="l">1370</TD><TD> List allIds = new ArrayList(0);</TD></TR><TR CLASS="z"><TD CLASS="l">1371</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1372</TD><TD> String[] configurationIds = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1373</TD><TD> for (int i = 0; i < configurationIds.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1374</TD><TD> String[] definitions = builder.getDefinitions("showintarget", configurationIds[i]); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1375</TD><TD> for (int j = 0; j < definitions.length; j++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1376</TD><TD> String someIds = definitions[j];</TD></TR><TR CLASS="z"><TD CLASS="l">1377</TD><TD> if (someIds != null && someIds.length() > 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">1378</TD><TD> String[] ids = StringUtils.unpack(someIds);</TD></TR><TR CLASS="z"><TD CLASS="l">1379</TD><TD> for (int k = 0; k < ids.length; k++) {</TD></TR><TR><TD CLASS="l">1380</TD><TD> // trim, just to keep things clean</TD></TR><TR CLASS="z"><TD CLASS="l">1381</TD><TD> String id = ids[k].trim();</TD></TR><TR CLASS="z"><TD CLASS="l">1382</TD><TD> if (!allIds.contains(id)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1383</TD><TD> allIds.add(id);</TD></TR><TR><TD CLASS="l">1384</TD><TD> }</TD></TR><TR><TD CLASS="l">1385</TD><TD> }</TD></TR><TR><TD CLASS="l">1386</TD><TD> }</TD></TR><TR><TD CLASS="l">1387</TD><TD> }</TD></TR><TR><TD CLASS="l">1388</TD><TD> }</TD></TR><TR><TD CLASS="l">1389</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1390</TD><TD> if (!allIds.contains(IPageLayout.ID_RES_NAV)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1391</TD><TD> allIds.add(IPageLayout.ID_RES_NAV);</TD></TR><TR><TD CLASS="l">1392</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1393</TD><TD> if (!allIds.contains(IPageLayout.ID_OUTLINE)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1394</TD><TD> allIds.add(IPageLayout.ID_OUTLINE);</TD></TR><TR><TD CLASS="l">1395</TD><TD> }</TD></TR><TR><TD CLASS="l">1396</TD><TD> // Copied from org.eclipse.ui.navigator.resources.ProjectExplorer.VIEW_ID</TD></TR><TR><TD CLASS="l">1397</TD><TD>// String PE_VIEW_ID = "org.eclipse.ui.navigator.ProjectExplorer"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1398</TD><TD>// if (!allIds.contains(PE_VIEW_ID)) {</TD></TR><TR><TD CLASS="l">1399</TD><TD>// allIds.add(PE_VIEW_ID);</TD></TR><TR><TD CLASS="l">1400</TD><TD>// }</TD></TR><TR CLASS="z"><TD CLASS="l">1401</TD><TD> return (String[]) allIds.toArray(new String[0]);</TD></TR><TR><TD CLASS="l">1402</TD><TD> }</TD></TR><TR><TD CLASS="l">1403</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="17">1404</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">1405</TD><TD> * @return</TD></TR><TR><TD CLASS="l">1406</TD><TD> */</TD></TR><TR><TD CLASS="l">1407</TD><TD> private ISourceEditingTextTools createSourceEditingTextTools() {</TD></TR><TR CLASS="z"><TD CLASS="l">1408</TD><TD> ISourceEditingTextTools tools = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1409</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1410</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1411</TD><TD> for (int i = 0; tools == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1412</TD><TD> tools = (ISourceEditingTextTools) builder.getConfiguration(NullSourceEditingTextTools.ID, ids[i]);</TD></TR><TR><TD CLASS="l">1413</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1414</TD><TD> if (tools == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1415</TD><TD> tools = NullSourceEditingTextTools.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1416</TD><TD> ((NullSourceEditingTextTools) tools).setTextEditor(this);</TD></TR><TR><TD CLASS="l">1417</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1418</TD><TD> Method method = null; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1419</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">1420</TD><TD> method = tools.getClass().getMethod("setTextEditor", new Class[]{StructuredTextEditor.class}); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1421</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1422</TD><TD> catch (NoSuchMethodException e) {</TD></TR><TR><TD CLASS="l">1423</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1424</TD><TD> if (method == null) {</TD></TR><TR><TD CLASS="l">1425</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">1426</TD><TD> method = tools.getClass().getMethod("setTextEditor", new Class[]{ITextEditor.class}); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1427</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1428</TD><TD> catch (NoSuchMethodException e) {</TD></TR><TR><TD CLASS="l">1429</TD><TD> }</TD></TR><TR><TD CLASS="l">1430</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1431</TD><TD> if (method == null) {</TD></TR><TR><TD CLASS="l">1432</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">1433</TD><TD> method = tools.getClass().getMethod("setTextEditor", new Class[]{IEditorPart.class}); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1434</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1435</TD><TD> catch (NoSuchMethodException e) {</TD></TR><TR><TD CLASS="l">1436</TD><TD> }</TD></TR><TR><TD CLASS="l">1437</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1438</TD><TD> if (method != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1439</TD><TD> if (!method.isAccessible()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1440</TD><TD> method.setAccessible(true);</TD></TR><TR><TD CLASS="l">1441</TD><TD> }</TD></TR><TR><TD CLASS="l">1442</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">1443</TD><TD> method.invoke(tools, new Object[]{this});</TD></TR><TR><TD CLASS="l">1444</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1445</TD><TD> catch (Exception e) {</TD></TR><TR CLASS="z"><TD CLASS="l">1446</TD><TD> Logger.logException("Problem creating ISourceEditingTextTools implementation", e); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1447</TD><TD> }</TD></TR><TR><TD CLASS="l">1448</TD><TD> }</TD></TR><TR><TD CLASS="l">1449</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1450</TD><TD> return tools;</TD></TR><TR><TD CLASS="l">1451</TD><TD> }</TD></TR><TR><TD CLASS="l">1452</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="18">1453</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">1454</TD><TD> * Creates the source viewer to be used by this editor</TD></TR><TR><TD CLASS="l">1455</TD><TD> */</TD></TR><TR><TD CLASS="l">1456</TD><TD> protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler verticalRuler, int styles) {</TD></TR><TR CLASS="z"><TD CLASS="l">1457</TD><TD> fAnnotationAccess = createAnnotationAccess();</TD></TR><TR CLASS="z"><TD CLASS="l">1458</TD><TD> fOverviewRuler = createOverviewRuler(getSharedColors());</TD></TR><TR CLASS="z"><TD CLASS="l">1459</TD><TD> StructuredTextViewer sourceViewer = createStructedTextViewer(parent, verticalRuler, styles);</TD></TR><TR CLASS="z"><TD CLASS="l">1460</TD><TD> initSourceViewer(sourceViewer);</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="19">1461</A></TD><TD> return sourceViewer;</TD></TR><TR><TD CLASS="l">1462</TD><TD> }</TD></TR><TR><TD CLASS="l">1463</TD><TD> </TD></TR><TR><TD CLASS="l">1464</TD><TD> private ConfigurationAndTarget createSourceViewerConfiguration() {</TD></TR><TR CLASS="z"><TD CLASS="l">1465</TD><TD> ConfigurationAndTarget cat = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1466</TD><TD> StructuredTextViewerConfiguration cfg = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1467</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">1468</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">1469</TD><TD> for (int i = 0; cfg == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1470</TD><TD> cfg = (StructuredTextViewerConfiguration) builder.getConfiguration(ExtendedConfigurationBuilder.SOURCEVIEWERCONFIGURATION, ids[i]);</TD></TR><TR CLASS="z"><TD CLASS="l">1471</TD><TD> cat = new ConfigurationAndTarget(ids[i], cfg);</TD></TR><TR><TD CLASS="l">1472</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1473</TD><TD> if (cfg == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1474</TD><TD> cfg = new StructuredTextViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">1475</TD><TD> String targetid = getClass().getName() + "#default"; //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1476</TD><TD> cat = new ConfigurationAndTarget(targetid, cfg);</TD></TR><TR><TD CLASS="l">1477</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="1a">1478</A></TD><TD> return cat;</TD></TR><TR><TD CLASS="l">1479</TD><TD> }</TD></TR><TR><TD CLASS="l">1480</TD><TD> </TD></TR><TR><TD CLASS="l">1481</TD><TD> protected StructuredTextViewer createStructedTextViewer(Composite parent, IVerticalRuler verticalRuler, int styles) {</TD></TR><TR CLASS="z"><TD CLASS="l">1482</TD><TD> return new StructuredTextViewer(parent, verticalRuler, getOverviewRuler(), isOverviewRulerVisible(), styles);</TD></TR><TR><TD CLASS="l">1483</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="1b">1484</A></TD><TD> </TD></TR><TR><TD CLASS="l">1485</TD><TD> protected void createUndoRedoActions() {</TD></TR><TR><TD CLASS="l">1486</TD><TD> // overridden to add icons to actions</TD></TR><TR><TD CLASS="l">1487</TD><TD> // https://bugs.eclipse.org/bugs/show_bug.cgi?id=111877</TD></TR><TR CLASS="z"><TD CLASS="l">1488</TD><TD> super.createUndoRedoActions();</TD></TR><TR CLASS="z"><TD CLASS="l">1489</TD><TD> IAction action = getAction(ITextEditorActionConstants.UNDO);</TD></TR><TR CLASS="z"><TD CLASS="l">1490</TD><TD> if (action != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1491</TD><TD> action.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_UNDO));</TD></TR><TR><TD CLASS="l">1492</TD><TD> }</TD></TR><TR><TD CLASS="l">1493</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1494</TD><TD> action = getAction(ITextEditorActionConstants.REDO);</TD></TR><TR CLASS="z"><TD CLASS="l">1495</TD><TD> if (action != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1496</TD><TD> action.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_REDO));</TD></TR><TR><TD CLASS="l">1497</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1498</TD><TD> }</TD></TR><TR><TD CLASS="l">1499</TD><TD> </TD></TR><TR><TD CLASS="l">1500</TD><TD> /*</TD></TR><TR><TD CLASS="l">1501</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="1c">1502</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1503</TD><TD> * @see org.eclipse.ui.IWorkbenchPart#dispose()</TD></TR><TR><TD CLASS="l">1504</TD><TD> */</TD></TR><TR><TD CLASS="l">1505</TD><TD> public void dispose() {</TD></TR><TR CLASS="z"><TD CLASS="l">1506</TD><TD> Logger.trace("Source Editor", "StructuredTextEditor::dispose entry"); //$NON-NLS-1$ //$NON-NLS-2$</TD></TR><TR><TD CLASS="l">1507</TD><TD> if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {</TD></TR><TR><TD CLASS="l">1508</TD><TD> System.out.println("Total calls to getAdapter: " + adapterRequests); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1509</TD><TD> System.out.println("Total time in getAdapter: " + adapterTime); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1510</TD><TD> System.out.println("Average time per call: " + (adapterTime / adapterRequests)); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1511</TD><TD> }</TD></TR><TR><TD CLASS="l">1512</TD><TD> </TD></TR><TR><TD CLASS="l">1513</TD><TD> // dispose of information presenter</TD></TR><TR CLASS="z"><TD CLASS="l">1514</TD><TD> if (fInformationPresenter != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1515</TD><TD> fInformationPresenter.dispose();</TD></TR><TR CLASS="z"><TD CLASS="l">1516</TD><TD> fInformationPresenter = null;</TD></TR><TR><TD CLASS="l">1517</TD><TD> }</TD></TR><TR><TD CLASS="l">1518</TD><TD> </TD></TR><TR><TD CLASS="l">1519</TD><TD> // dispose of selection history</TD></TR><TR CLASS="z"><TD CLASS="l">1520</TD><TD> if (fSelectionHistory != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1521</TD><TD> fSelectionHistory.dispose();</TD></TR><TR CLASS="z"><TD CLASS="l">1522</TD><TD> fSelectionHistory = null;</TD></TR><TR><TD CLASS="l">1523</TD><TD> }</TD></TR><TR><TD CLASS="l">1524</TD><TD> </TD></TR><TR><TD CLASS="l">1525</TD><TD> // dispose of document folding support</TD></TR><TR CLASS="z"><TD CLASS="l">1526</TD><TD> if (fProjectionModelUpdater != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1527</TD><TD> fProjectionModelUpdater.uninstall();</TD></TR><TR CLASS="z"><TD CLASS="l">1528</TD><TD> fProjectionModelUpdater = null;</TD></TR><TR><TD CLASS="l">1529</TD><TD> }</TD></TR><TR><TD CLASS="l">1530</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1531</TD><TD> if (fProjectionSupport != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1532</TD><TD> fProjectionSupport.dispose();</TD></TR><TR CLASS="z"><TD CLASS="l">1533</TD><TD> fProjectionSupport = null;</TD></TR><TR><TD CLASS="l">1534</TD><TD> }</TD></TR><TR><TD CLASS="l">1535</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1536</TD><TD> if (fFoldingGroup != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1537</TD><TD> fFoldingGroup.dispose();</TD></TR><TR CLASS="z"><TD CLASS="l">1538</TD><TD> fFoldingGroup = null;</TD></TR><TR><TD CLASS="l">1539</TD><TD> }</TD></TR><TR><TD CLASS="l">1540</TD><TD> </TD></TR><TR><TD CLASS="l">1541</TD><TD> // dispose of menus that were being tracked</TD></TR><TR CLASS="z"><TD CLASS="l">1542</TD><TD> if (fTextContextMenu != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1543</TD><TD> fTextContextMenu.dispose();</TD></TR><TR><TD CLASS="l">1544</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1545</TD><TD> if (fRulerContextMenu != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1546</TD><TD> fRulerContextMenu.dispose();</TD></TR><TR><TD CLASS="l">1547</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1548</TD><TD> if (fTextContextMenuManager != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1549</TD><TD> fTextContextMenuManager.removeMenuListener(getContextMenuListener());</TD></TR><TR CLASS="z"><TD CLASS="l">1550</TD><TD> fTextContextMenuManager.removeAll();</TD></TR><TR CLASS="z"><TD CLASS="l">1551</TD><TD> fTextContextMenuManager.dispose();</TD></TR><TR><TD CLASS="l">1552</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1553</TD><TD> if (fRulerContextMenuManager != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1554</TD><TD> fRulerContextMenuManager.removeMenuListener(getContextMenuListener());</TD></TR><TR CLASS="z"><TD CLASS="l">1555</TD><TD> fRulerContextMenuManager.removeAll();</TD></TR><TR CLASS="z"><TD CLASS="l">1556</TD><TD> fRulerContextMenuManager.dispose();</TD></TR><TR><TD CLASS="l">1557</TD><TD> }</TD></TR><TR><TD CLASS="l">1558</TD><TD> </TD></TR><TR><TD CLASS="l">1559</TD><TD> // added this 2/20/2004 based on probe results --</TD></TR><TR><TD CLASS="l">1560</TD><TD> // seems should be handled by setModel(null), but</TD></TR><TR><TD CLASS="l">1561</TD><TD> // that's a more radical change.</TD></TR><TR><TD CLASS="l">1562</TD><TD> // and, technically speaking, should not be needed,</TD></TR><TR><TD CLASS="l">1563</TD><TD> // but makes a memory leak</TD></TR><TR><TD CLASS="l">1564</TD><TD> // less severe.</TD></TR><TR CLASS="z"><TD CLASS="l">1565</TD><TD> if (fStructuredModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1566</TD><TD> if (fStructuredModel.getStructuredDocument() != null && fInternalDocumentListener != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1567</TD><TD> fStructuredModel.getStructuredDocument().removeDocumentListener(fInternalDocumentListener);</TD></TR><TR><TD CLASS="l">1568</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1569</TD><TD> fStructuredModel.removeModelStateListener(getInternalModelStateListener());</TD></TR><TR><TD CLASS="l">1570</TD><TD> }</TD></TR><TR><TD CLASS="l">1571</TD><TD> </TD></TR><TR><TD CLASS="l">1572</TD><TD> // BUG155335 - if there was no document provider, there was nothing</TD></TR><TR><TD CLASS="l">1573</TD><TD> // added</TD></TR><TR><TD CLASS="l">1574</TD><TD> // to document, so nothing to remove</TD></TR><TR CLASS="z"><TD CLASS="l">1575</TD><TD> if (getDocumentProvider() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1576</TD><TD> IDocument doc = getDocumentProvider().getDocument(getEditorInput());</TD></TR><TR CLASS="z"><TD CLASS="l">1577</TD><TD> if (doc != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1578</TD><TD> if (fInternalDocumentListener != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1579</TD><TD> doc.removeDocumentListener(fInternalDocumentListener);</TD></TR><TR CLASS="z"><TD CLASS="l">1580</TD><TD> if (doc instanceof IExecutionDelegatable) {</TD></TR><TR CLASS="z"><TD CLASS="l">1581</TD><TD> ((IExecutionDelegatable) doc).setExecutionDelegate(null);</TD></TR><TR><TD CLASS="l">1582</TD><TD> }</TD></TR><TR><TD CLASS="l">1583</TD><TD> }</TD></TR><TR><TD CLASS="l">1584</TD><TD> }</TD></TR><TR><TD CLASS="l">1585</TD><TD> </TD></TR><TR><TD CLASS="l">1586</TD><TD> // some things in the configuration need to clean</TD></TR><TR><TD CLASS="l">1587</TD><TD> // up after themselves</TD></TR><TR CLASS="z"><TD CLASS="l">1588</TD><TD> if (fOutlinePage != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1589</TD><TD> if (fOutlinePage instanceof ConfigurableContentOutlinePage && fOutlinePageListener != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1590</TD><TD> ((ConfigurableContentOutlinePage) fOutlinePage).removeDoubleClickListener(fOutlinePageListener);</TD></TR><TR><TD CLASS="l">1591</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1592</TD><TD> if (fOutlinePageListener != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1593</TD><TD> fOutlinePage.removeSelectionChangedListener(fOutlinePageListener);</TD></TR><TR><TD CLASS="l">1594</TD><TD> }</TD></TR><TR><TD CLASS="l">1595</TD><TD> }</TD></TR><TR><TD CLASS="l">1596</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1597</TD><TD> fEditorDisposed = true;</TD></TR><TR CLASS="z"><TD CLASS="l">1598</TD><TD> disposeModelDependentFields();</TD></TR><TR><TD CLASS="l">1599</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1600</TD><TD> if (fDropTarget != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1601</TD><TD> fDropTarget.dispose();</TD></TR><TR><TD CLASS="l">1602</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1603</TD><TD> uninstallSemanticHighlighting();</TD></TR><TR><TD CLASS="l">1604</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1605</TD><TD> setPreferenceStore(null);</TD></TR><TR><TD CLASS="l">1606</TD><TD> </TD></TR><TR><TD CLASS="l">1607</TD><TD> /*</TD></TR><TR><TD CLASS="l">1608</TD><TD> * Strictly speaking, but following null outs should not be needed,</TD></TR><TR><TD CLASS="l">1609</TD><TD> * but in the event of a memory leak, they make the memory leak less</TD></TR><TR><TD CLASS="l">1610</TD><TD> * severe</TD></TR><TR><TD CLASS="l">1611</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">1612</TD><TD> fDropAdapter = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1613</TD><TD> fDropTarget = null;</TD></TR><TR><TD CLASS="l">1614</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1615</TD><TD> if (fStructuredSelectionProvider != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1616</TD><TD> fStructuredSelectionProvider.dispose();</TD></TR><TR><TD CLASS="l">1617</TD><TD> }</TD></TR><TR><TD CLASS="l">1618</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1619</TD><TD> super.dispose();</TD></TR><TR><TD CLASS="l">1620</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1621</TD><TD> Logger.trace("Source Editor", "StructuredTextEditor::dispose exit"); //$NON-NLS-1$ //$NON-NLS-2$</TD></TR><TR CLASS="z"><TD CLASS="l">1622</TD><TD> }</TD></TR><TR><TD CLASS="l">1623</TD><TD> </TD></TR><TR><TD CLASS="l">1624</TD><TD> /*</TD></TR><TR><TD CLASS="l">1625</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="1d">1626</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1627</TD><TD> * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#disposeDocumentProvider()</TD></TR><TR><TD CLASS="l">1628</TD><TD> */</TD></TR><TR><TD CLASS="l">1629</TD><TD> protected void disposeDocumentProvider() {</TD></TR><TR CLASS="z"><TD CLASS="l">1630</TD><TD> if (fStructuredModel != null && !fisReleased && !(getDocumentProvider() instanceof IModelProvider)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1631</TD><TD> fStructuredModel.releaseFromEdit();</TD></TR><TR CLASS="z"><TD CLASS="l">1632</TD><TD> fisReleased = true;</TD></TR><TR><TD CLASS="l">1633</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1634</TD><TD> super.disposeDocumentProvider();</TD></TR><TR CLASS="z"><TD CLASS="l">1635</TD><TD> }</TD></TR><TR><TD CLASS="l">1636</TD><TD> </TD></TR><TR><TD CLASS="l">1637</TD><TD> /**</TD></TR><TR><TD CLASS="l">1638</TD><TD> * Disposes model specific editor helpers such as statusLineHelper.</TD></TR><TR><TD CLASS="l"><A NAME="1e">1639</A></TD><TD> * Basically any code repeated in update() & dispose() should be placed</TD></TR><TR><TD CLASS="l">1640</TD><TD> * here.</TD></TR><TR><TD CLASS="l">1641</TD><TD> */</TD></TR><TR><TD CLASS="l">1642</TD><TD> private void disposeModelDependentFields() {</TD></TR><TR CLASS="z"><TD CLASS="l">1643</TD><TD> if(fStructuredSelectionProvider != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1644</TD><TD> fStructuredSelectionProvider.selectionConvertor = new SelectionConvertor();</TD></TR><TR CLASS="z"><TD CLASS="l">1645</TD><TD> }</TD></TR><TR><TD CLASS="l">1646</TD><TD> </TD></TR><TR><TD CLASS="l">1647</TD><TD> /*</TD></TR><TR><TD CLASS="l">1648</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="1f">1649</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1650</TD><TD> * @see org.eclipse.ui.texteditor.ITextEditor#doRevertToSaved()</TD></TR><TR><TD CLASS="l">1651</TD><TD> */</TD></TR><TR><TD CLASS="l">1652</TD><TD> public void doRevertToSaved() {</TD></TR><TR CLASS="z"><TD CLASS="l">1653</TD><TD> super.doRevertToSaved();</TD></TR><TR CLASS="z"><TD CLASS="l">1654</TD><TD> if (fOutlinePage != null && fOutlinePage instanceof IUpdate) {</TD></TR><TR CLASS="z"><TD CLASS="l">1655</TD><TD> ((IUpdate) fOutlinePage).update();</TD></TR><TR><TD CLASS="l">1656</TD><TD> }</TD></TR><TR><TD CLASS="l">1657</TD><TD> // reset undo</TD></TR><TR CLASS="z"><TD CLASS="l">1658</TD><TD> IDocument doc = getDocumentProvider().getDocument(getEditorInput());</TD></TR><TR CLASS="z"><TD CLASS="l">1659</TD><TD> if (doc instanceof IStructuredDocument) {</TD></TR><TR CLASS="z"><TD CLASS="l">1660</TD><TD> ((IStructuredDocument) doc).getUndoManager().getCommandStack().flush();</TD></TR><TR><TD CLASS="l">1661</TD><TD> }</TD></TR><TR><TD CLASS="l">1662</TD><TD> </TD></TR><TR><TD CLASS="l">1663</TD><TD> // update menu text</TD></TR><TR CLASS="z"><TD CLASS="l">1664</TD><TD> updateMenuText();</TD></TR><TR CLASS="z"><TD CLASS="l">1665</TD><TD> }</TD></TR><TR><TD CLASS="l">1666</TD><TD> </TD></TR><TR><TD CLASS="l">1667</TD><TD> /*</TD></TR><TR><TD CLASS="l">1668</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l">1669</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="20">1670</A></TD><TD> * @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor)</TD></TR><TR><TD CLASS="l">1671</TD><TD> */</TD></TR><TR><TD CLASS="l">1672</TD><TD> public void doSave(IProgressMonitor progressMonitor) {</TD></TR><TR><TD CLASS="l">1673</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">1674</TD><TD> aboutToSaveModel();</TD></TR><TR CLASS="z"><TD CLASS="l">1675</TD><TD> updateEncodingMemento();</TD></TR><TR CLASS="z"><TD CLASS="l">1676</TD><TD> super.doSave(progressMonitor);</TD></TR><TR><TD CLASS="l">1677</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1678</TD><TD> finally {</TD></TR><TR CLASS="z"><TD CLASS="l">1679</TD><TD> savedModel();</TD></TR><TR CLASS="z"><TD CLASS="l">1680</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1681</TD><TD> }</TD></TR><TR><TD CLASS="l">1682</TD><TD> </TD></TR><TR><TD CLASS="l">1683</TD><TD> /*</TD></TR><TR><TD CLASS="l">1684</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="21">1685</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1686</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#doSetInput(org.eclipse.ui.IEditorInput)</TD></TR><TR><TD CLASS="l">1687</TD><TD> */</TD></TR><TR><TD CLASS="l">1688</TD><TD> protected void doSetInput(IEditorInput input) throws CoreException {</TD></TR><TR CLASS="z"><TD CLASS="l">1689</TD><TD> IEditorInput oldInput = getEditorInput();</TD></TR><TR CLASS="z"><TD CLASS="l">1690</TD><TD> if (oldInput != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1691</TD><TD> IDocument olddoc = getDocumentProvider().getDocument(oldInput);</TD></TR><TR CLASS="z"><TD CLASS="l">1692</TD><TD> if (olddoc != null && olddoc instanceof IExecutionDelegatable) {</TD></TR><TR CLASS="z"><TD CLASS="l">1693</TD><TD> ((IExecutionDelegatable) olddoc).setExecutionDelegate(null);</TD></TR><TR><TD CLASS="l">1694</TD><TD> }</TD></TR><TR><TD CLASS="l">1695</TD><TD> }</TD></TR><TR><TD CLASS="l">1696</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1697</TD><TD> if (fStructuredModel != null && !(getDocumentProvider() instanceof IModelProvider)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1698</TD><TD> fStructuredModel.releaseFromEdit();</TD></TR><TR><TD CLASS="l">1699</TD><TD> }</TD></TR><TR><TD CLASS="l">1700</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1701</TD><TD> super.doSetInput(input);</TD></TR><TR><TD CLASS="l">1702</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1703</TD><TD> IDocument newDocument = getDocumentProvider().getDocument(input);</TD></TR><TR CLASS="z"><TD CLASS="l">1704</TD><TD> if (newDocument instanceof IExecutionDelegatable) {</TD></TR><TR CLASS="z"><TD CLASS="l">1705</TD><TD> ((IExecutionDelegatable) newDocument).setExecutionDelegate(new EditorExecutionContext(this));</TD></TR><TR><TD CLASS="l">1706</TD><TD> }</TD></TR><TR><TD CLASS="l">1707</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1708</TD><TD> IStructuredModel model = null;</TD></TR><TR><TD CLASS="l">1709</TD><TD> // if we have a Model provider, get the model from it</TD></TR><TR CLASS="z"><TD CLASS="l">1710</TD><TD> if (getDocumentProvider() instanceof IModelProvider) {</TD></TR><TR CLASS="z"><TD CLASS="l">1711</TD><TD> model = ((IModelProvider) getDocumentProvider()).getModel(getEditorInput());</TD></TR><TR CLASS="z"><TD CLASS="l">1712</TD><TD> if (!model.isShared()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1713</TD><TD> EditorModelUtil.addFactoriesTo(model);</TD></TR><TR><TD CLASS="l">1714</TD><TD> }</TD></TR><TR><TD CLASS="l">1715</TD><TD> }</TD></TR><TR><TD CLASS="l">1716</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1717</TD><TD> if (newDocument instanceof IStructuredDocument) {</TD></TR><TR><TD CLASS="l">1718</TD><TD> // corresponding releaseFromEdit occurs in</TD></TR><TR><TD CLASS="l">1719</TD><TD> // dispose()</TD></TR><TR CLASS="z"><TD CLASS="l">1720</TD><TD> model = StructuredModelManager.getModelManager().getModelForEdit((IStructuredDocument) newDocument);</TD></TR><TR CLASS="z"><TD CLASS="l">1721</TD><TD> EditorModelUtil.addFactoriesTo(model);</TD></TR><TR><TD CLASS="l">1722</TD><TD> }</TD></TR><TR><TD CLASS="l">1723</TD><TD> </TD></TR><TR><TD CLASS="l">1724</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1725</TD><TD> logUnexpectedDocumentKind(input);</TD></TR><TR><TD CLASS="l">1726</TD><TD> }</TD></TR><TR><TD CLASS="l">1727</TD><TD> }</TD></TR><TR><TD CLASS="l">1728</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1729</TD><TD> if (fStructuredModel != null || model != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1730</TD><TD> setModel(model);</TD></TR><TR><TD CLASS="l">1731</TD><TD> }</TD></TR><TR><TD CLASS="l">1732</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1733</TD><TD> if (getInternalModel() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1734</TD><TD> updateEditorControlsForContentType(getInternalModel().getContentTypeIdentifier());</TD></TR><TR><TD CLASS="l">1735</TD><TD> }</TD></TR><TR><TD CLASS="l">1736</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1737</TD><TD> updateEditorControlsForContentType(null);</TD></TR><TR><TD CLASS="l">1738</TD><TD> }</TD></TR><TR><TD CLASS="l">1739</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1740</TD><TD> if (fProjectionModelUpdater != null)</TD></TR><TR CLASS="z"><TD CLASS="l">1741</TD><TD> updateProjectionSupport();</TD></TR><TR><TD CLASS="l">1742</TD><TD> </TD></TR><TR><TD CLASS="l">1743</TD><TD> // start editor with smart insert mode</TD></TR><TR CLASS="z"><TD CLASS="l">1744</TD><TD> setInsertMode(SMART_INSERT);</TD></TR><TR CLASS="z"><TD CLASS="l">1745</TD><TD> }</TD></TR><TR><TD CLASS="l">1746</TD><TD> </TD></TR><TR><TD CLASS="l">1747</TD><TD> /**</TD></TR><TR><TD CLASS="l">1748</TD><TD> * Sets up this editor's context menu before it is made visible.</TD></TR><TR><TD CLASS="l">1749</TD><TD> * <p></TD></TR><TR><TD CLASS="l">1750</TD><TD> * Not API. May be reduced to protected method in the future.</TD></TR><TR><TD CLASS="l">1751</TD><TD> * </p></TD></TR><TR><TD CLASS="l">1752</TD><TD> * </TD></TR><TR><TD CLASS="l">1753</TD><TD> * @param menu</TD></TR><TR><TD CLASS="l">1754</TD><TD> * the menu</TD></TR><TR><TD CLASS="l">1755</TD><TD> */</TD></TR><TR><TD CLASS="l">1756</TD><TD> public void editorContextMenuAboutToShow(IMenuManager menu) {</TD></TR><TR><TD CLASS="l"><A NAME="22">1757</A></TD><TD> /*</TD></TR><TR><TD CLASS="l">1758</TD><TD> * To be consistant with the Java Editor, we want to remove ShiftRight</TD></TR><TR><TD CLASS="l">1759</TD><TD> * and ShiftLeft from the context menu.</TD></TR><TR><TD CLASS="l">1760</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">1761</TD><TD> super.editorContextMenuAboutToShow(menu);</TD></TR><TR CLASS="z"><TD CLASS="l">1762</TD><TD> menu.remove(ITextEditorActionConstants.SHIFT_LEFT);</TD></TR><TR CLASS="z"><TD CLASS="l">1763</TD><TD> menu.remove(ITextEditorActionConstants.SHIFT_RIGHT);</TD></TR><TR><TD CLASS="l">1764</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1765</TD><TD> addContextMenuActions(menu);</TD></TR><TR CLASS="z"><TD CLASS="l">1766</TD><TD> addExtendedContextMenuActions(menu);</TD></TR><TR CLASS="z"><TD CLASS="l">1767</TD><TD> }</TD></TR><TR><TD CLASS="l">1768</TD><TD> </TD></TR><TR><TD CLASS="l">1769</TD><TD> /**</TD></TR><TR><TD CLASS="l">1770</TD><TD> * End background mode.</TD></TR><TR><TD CLASS="l">1771</TD><TD> * <p></TD></TR><TR><TD CLASS="l"><A NAME="23">1772</A></TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">1773</TD><TD> * </p></TD></TR><TR><TD CLASS="l">1774</TD><TD> */</TD></TR><TR><TD CLASS="l">1775</TD><TD> void endBackgroundOperation() {</TD></TR><TR CLASS="z"><TD CLASS="l">1776</TD><TD> fBackgroundJobEnded = true;</TD></TR><TR><TD CLASS="l">1777</TD><TD> // note, we don't immediately end our 'internal busy' state,</TD></TR><TR><TD CLASS="l">1778</TD><TD> // since we may get many calls in a short period of</TD></TR><TR><TD CLASS="l">1779</TD><TD> // time. We always wait for the time out.</TD></TR><TR CLASS="z"><TD CLASS="l">1780</TD><TD> resetBusyState();</TD></TR><TR CLASS="z"><TD CLASS="l">1781</TD><TD> }</TD></TR><TR><TD CLASS="l">1782</TD><TD> </TD></TR><TR><TD CLASS="l">1783</TD><TD> /**</TD></TR><TR><TD CLASS="l">1784</TD><TD> * Note this method can be called indirectly from background job operation</TD></TR><TR><TD CLASS="l">1785</TD><TD> * ... but expected to be gaurded there with ILock, plus, can be called</TD></TR><TR><TD CLASS="l"><A NAME="24">1786</A></TD><TD> * directly from timer thread, so the timer's run method guards with ILock</TD></TR><TR><TD CLASS="l">1787</TD><TD> * too.</TD></TR><TR><TD CLASS="l">1788</TD><TD> */</TD></TR><TR><TD CLASS="l">1789</TD><TD> private void endBusyStateInternal() {</TD></TR><TR CLASS="z"><TD CLASS="l">1790</TD><TD> if (fBackgroundJobEnded) {</TD></TR><TR CLASS="z"><TD CLASS="l">1791</TD><TD> fBusyTimer.cancel();</TD></TR><TR CLASS="z"><TD CLASS="l">1792</TD><TD> showBusy(false);</TD></TR><TR><TD CLASS="l">1793</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1794</TD><TD> ISourceViewer viewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">1795</TD><TD> if (viewer instanceof StructuredTextViewer) {</TD></TR><TR CLASS="z"><TD CLASS="l">1796</TD><TD> ((StructuredTextViewer) viewer).endBackgroundUpdate();</TD></TR><TR><TD CLASS="l">1797</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1798</TD><TD> fBusyState = false;</TD></TR><TR><TD CLASS="l">1799</TD><TD> }</TD></TR><TR><TD CLASS="l">1800</TD><TD> else {</TD></TR><TR><TD CLASS="l">1801</TD><TD> // we will only be in this branch for a back ground job that is</TD></TR><TR><TD CLASS="l">1802</TD><TD> // taking</TD></TR><TR><TD CLASS="l">1803</TD><TD> // longer than our normal time-out period (meaning we got notified</TD></TR><TR><TD CLASS="l">1804</TD><TD> // of</TD></TR><TR><TD CLASS="l">1805</TD><TD> // the timeout "inbetween" calls to 'begin' and</TD></TR><TR><TD CLASS="l">1806</TD><TD> // 'endBackgroundOperation'.</TD></TR><TR><TD CLASS="l">1807</TD><TD> // (which, remember, can only happen since there are many calls to</TD></TR><TR><TD CLASS="l">1808</TD><TD> // begin/end in a short period of time, and we only "reset" on the</TD></TR><TR><TD CLASS="l">1809</TD><TD> // 'ends').</TD></TR><TR><TD CLASS="l">1810</TD><TD> // In this event, there's really nothing to do, we're still in</TD></TR><TR><TD CLASS="l">1811</TD><TD> // "busy state"</TD></TR><TR><TD CLASS="l">1812</TD><TD> // and should start a new reset cycle once endBackgroundjob is</TD></TR><TR><TD CLASS="l">1813</TD><TD> // called.</TD></TR><TR><TD CLASS="l">1814</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1815</TD><TD> }</TD></TR><TR><TD CLASS="l">1816</TD><TD> </TD></TR><TR><TD CLASS="l">1817</TD><TD> /*</TD></TR><TR><TD CLASS="l">1818</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l">1819</TD><TD> * </TD></TR><TR><TD CLASS="l">1820</TD><TD> * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)</TD></TR><TR><TD CLASS="l">1821</TD><TD> */</TD></TR><TR><TD CLASS="l"><A NAME="25">1822</A></TD><TD> public Object getAdapter(Class required) {</TD></TR><TR><TD CLASS="l">1823</TD><TD> if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {</TD></TR><TR><TD CLASS="l">1824</TD><TD> startPerfTime = System.currentTimeMillis();</TD></TR><TR><TD CLASS="l">1825</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1826</TD><TD> Object result = null;</TD></TR><TR><TD CLASS="l">1827</TD><TD> // text editor</TD></TR><TR CLASS="z"><TD CLASS="l">1828</TD><TD> IStructuredModel internalModel = getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">1829</TD><TD> if (ITextEditor.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1830</TD><TD> result = this;</TD></TR><TR><TD CLASS="l">1831</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1832</TD><TD> else if (IWorkbenchSiteProgressService.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1833</TD><TD> return getEditorPart().getSite().getAdapter(IWorkbenchSiteProgressService.class);</TD></TR><TR><TD CLASS="l">1834</TD><TD> }</TD></TR><TR><TD CLASS="l">1835</TD><TD> // content outline page</TD></TR><TR CLASS="z"><TD CLASS="l">1836</TD><TD> else if (IContentOutlinePage.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1837</TD><TD> if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1838</TD><TD> ContentOutlineConfiguration cfg = createContentOutlineConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">1839</TD><TD> if (cfg != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1840</TD><TD> ConfigurableContentOutlinePage outlinePage = new ConfigurableContentOutlinePage();</TD></TR><TR CLASS="z"><TD CLASS="l">1841</TD><TD> outlinePage.setConfiguration(cfg);</TD></TR><TR CLASS="z"><TD CLASS="l">1842</TD><TD> if (internalModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1843</TD><TD> outlinePage.setInputContentTypeIdentifier(internalModel.getContentTypeIdentifier());</TD></TR><TR CLASS="z"><TD CLASS="l">1844</TD><TD> outlinePage.setInput(internalModel);</TD></TR><TR><TD CLASS="l">1845</TD><TD> }</TD></TR><TR><TD CLASS="l">1846</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1847</TD><TD> if (fOutlinePageListener == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1848</TD><TD> fOutlinePageListener = new OutlinePageListener();</TD></TR><TR><TD CLASS="l">1849</TD><TD> }</TD></TR><TR><TD CLASS="l">1850</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1851</TD><TD> outlinePage.addSelectionChangedListener(fOutlinePageListener);</TD></TR><TR CLASS="z"><TD CLASS="l">1852</TD><TD> outlinePage.addDoubleClickListener(fOutlinePageListener);</TD></TR><TR><TD CLASS="l">1853</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1854</TD><TD> fOutlinePage = outlinePage;</TD></TR><TR><TD CLASS="l">1855</TD><TD> }</TD></TR><TR><TD CLASS="l">1856</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1857</TD><TD> result = fOutlinePage;</TD></TR><TR><TD CLASS="l">1858</TD><TD> }</TD></TR><TR><TD CLASS="l">1859</TD><TD> // property sheet page, but only if the input's editable</TD></TR><TR CLASS="z"><TD CLASS="l">1860</TD><TD> else if (IPropertySheetPage.class.equals(required) && isEditable()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1861</TD><TD> if (fPropertySheetPage == null || fPropertySheetPage.getControl() == null || fPropertySheetPage.getControl().isDisposed()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1862</TD><TD> PropertySheetConfiguration cfg = createPropertySheetConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">1863</TD><TD> if (cfg != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1864</TD><TD> ConfigurablePropertySheetPage propertySheetPage = new ConfigurablePropertySheetPage();</TD></TR><TR CLASS="z"><TD CLASS="l">1865</TD><TD> propertySheetPage.setConfiguration(cfg);</TD></TR><TR CLASS="z"><TD CLASS="l">1866</TD><TD> fPropertySheetPage = propertySheetPage;</TD></TR><TR><TD CLASS="l">1867</TD><TD> }</TD></TR><TR><TD CLASS="l">1868</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1869</TD><TD> result = fPropertySheetPage;</TD></TR><TR><TD CLASS="l">1870</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1871</TD><TD> else if (IDocument.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1872</TD><TD> result = getDocumentProvider().getDocument(getEditorInput());</TD></TR><TR><TD CLASS="l">1873</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1874</TD><TD> else if (ISourceEditingTextTools.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1875</TD><TD> result = createSourceEditingTextTools();</TD></TR><TR><TD CLASS="l">1876</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1877</TD><TD> else if (IToggleBreakpointsTarget.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1878</TD><TD> result = ToggleBreakpointsTarget.getInstance();</TD></TR><TR><TD CLASS="l">1879</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1880</TD><TD> else if (IShowInTargetList.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1881</TD><TD> result = new ShowInTargetListAdapter();</TD></TR><TR><TD CLASS="l">1882</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1883</TD><TD> else if (SelectionHistory.class.equals(required)) {</TD></TR><TR CLASS="z"><TD CLASS="l">1884</TD><TD> if (fSelectionHistory == null)</TD></TR><TR CLASS="z"><TD CLASS="l">1885</TD><TD> fSelectionHistory = new SelectionHistory(this);</TD></TR><TR CLASS="z"><TD CLASS="l">1886</TD><TD> result = fSelectionHistory;</TD></TR><TR><TD CLASS="l">1887</TD><TD> }</TD></TR><TR><TD CLASS="l">1888</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1889</TD><TD> if (result == null && internalModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1890</TD><TD> result = internalModel.getAdapter(required);</TD></TR><TR><TD CLASS="l">1891</TD><TD> }</TD></TR><TR><TD CLASS="l">1892</TD><TD> // others</TD></TR><TR CLASS="z"><TD CLASS="l">1893</TD><TD> if (result == null)</TD></TR><TR CLASS="z"><TD CLASS="l">1894</TD><TD> result = super.getAdapter(required);</TD></TR><TR><TD CLASS="l">1895</TD><TD> }</TD></TR><TR><TD CLASS="l">1896</TD><TD> if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {</TD></TR><TR><TD CLASS="l">1897</TD><TD> long stop = System.currentTimeMillis();</TD></TR><TR><TD CLASS="l">1898</TD><TD> adapterRequests++;</TD></TR><TR><TD CLASS="l">1899</TD><TD> adapterTime += (stop - startPerfTime);</TD></TR><TR><TD CLASS="l">1900</TD><TD> }</TD></TR><TR><TD CLASS="l">1901</TD><TD> if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {</TD></TR><TR><TD CLASS="l">1902</TD><TD> System.out.println("Total calls to getAdapter: " + adapterRequests); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1903</TD><TD> System.out.println("Total time in getAdapter: " + adapterTime); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1904</TD><TD> System.out.println("Average time per call: " + (adapterTime / adapterRequests)); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1905</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="26">1906</A></TD><TD> return result;</TD></TR><TR><TD CLASS="l">1907</TD><TD> }</TD></TR><TR><TD CLASS="l">1908</TD><TD> </TD></TR><TR><TD CLASS="l">1909</TD><TD> private String[] getConfigurationPoints() {</TD></TR><TR CLASS="z"><TD CLASS="l">1910</TD><TD> String contentTypeIdentifierID = null;</TD></TR><TR CLASS="z"><TD CLASS="l">1911</TD><TD> if (getInternalModel() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1912</TD><TD> contentTypeIdentifierID = getInternalModel().getContentTypeIdentifier();</TD></TR><TR><TD CLASS="l">1913</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1914</TD><TD> return ConfigurationPointCalculator.getConfigurationPoints(this, contentTypeIdentifierID, ConfigurationPointCalculator.SOURCE, StructuredTextEditor.class);</TD></TR><TR><TD CLASS="l">1915</TD><TD> }</TD></TR><TR><TD CLASS="l">1916</TD><TD> </TD></TR><TR><TD CLASS="l">1917</TD><TD> /**</TD></TR><TR><TD CLASS="l"><A NAME="27">1918</A></TD><TD> * added checks to overcome bug such that if we are shutting down in an</TD></TR><TR><TD CLASS="l">1919</TD><TD> * error condition, then viewer will have already been disposed.</TD></TR><TR><TD CLASS="l">1920</TD><TD> */</TD></TR><TR><TD CLASS="l">1921</TD><TD> protected String getCursorPosition() {</TD></TR><TR CLASS="z"><TD CLASS="l">1922</TD><TD> String result = null;</TD></TR><TR><TD CLASS="l">1923</TD><TD> // this may be too expensive in terms of</TD></TR><TR><TD CLASS="l">1924</TD><TD> // performance, to do this check</TD></TR><TR><TD CLASS="l">1925</TD><TD> // every time, just to gaurd against error</TD></TR><TR><TD CLASS="l">1926</TD><TD> // condition.</TD></TR><TR><TD CLASS="l">1927</TD><TD> // perhaps there's a better way?</TD></TR><TR CLASS="z"><TD CLASS="l">1928</TD><TD> if (getSourceViewer() != null && getSourceViewer().getTextWidget() != null && !getSourceViewer().getTextWidget().isDisposed()) {</TD></TR><TR CLASS="z"><TD CLASS="l">1929</TD><TD> result = super.getCursorPosition();</TD></TR><TR><TD CLASS="l">1930</TD><TD> }</TD></TR><TR><TD CLASS="l">1931</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">1932</TD><TD> result = "0:0"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1933</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1934</TD><TD> return result;</TD></TR><TR><TD CLASS="l"><A NAME="29">1935</A></TD><TD> }</TD></TR><TR><TD CLASS="l">1936</TD><TD> </TD></TR><TR><TD CLASS="l">1937</TD><TD> </TD></TR><TR><TD CLASS="l">1938</TD><TD> Display getDisplay() {</TD></TR><TR CLASS="z"><TD CLASS="l">1939</TD><TD> return PlatformUI.getWorkbench().getDisplay();</TD></TR><TR><TD CLASS="l">1940</TD><TD> }</TD></TR><TR><TD CLASS="l">1941</TD><TD> </TD></TR><TR><TD CLASS="l">1942</TD><TD> /**</TD></TR><TR><TD CLASS="l">1943</TD><TD> * Returns this editor part.</TD></TR><TR><TD CLASS="l">1944</TD><TD> * <p></TD></TR><TR><TD CLASS="l">1945</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">1946</TD><TD> * </p></TD></TR><TR><TD CLASS="l"><A NAME="2a">1947</A></TD><TD> * </TD></TR><TR><TD CLASS="l">1948</TD><TD> * @return this editor part</TD></TR><TR><TD CLASS="l">1949</TD><TD> */</TD></TR><TR><TD CLASS="l">1950</TD><TD> public IEditorPart getEditorPart() {</TD></TR><TR CLASS="z"><TD CLASS="l">1951</TD><TD> if (fEditorPart == null)</TD></TR><TR CLASS="z"><TD CLASS="l">1952</TD><TD> return this;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="2b">1953</A></TD><TD> return fEditorPart;</TD></TR><TR><TD CLASS="l">1954</TD><TD> }</TD></TR><TR><TD CLASS="l">1955</TD><TD> </TD></TR><TR><TD CLASS="l">1956</TD><TD> private IDocumentListener getInternalDocumentListener() {</TD></TR><TR CLASS="z"><TD CLASS="l">1957</TD><TD> if (fInternalDocumentListener == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1958</TD><TD> fInternalDocumentListener = new InternalDocumentListener();</TD></TR><TR><TD CLASS="l">1959</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="2c">1960</A></TD><TD> return fInternalDocumentListener;</TD></TR><TR><TD CLASS="l">1961</TD><TD> }</TD></TR><TR><TD CLASS="l">1962</TD><TD> </TD></TR><TR><TD CLASS="l">1963</TD><TD> IStructuredModel getInternalModel() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="2d">1964</A></TD><TD> return fStructuredModel;</TD></TR><TR><TD CLASS="l">1965</TD><TD> }</TD></TR><TR><TD CLASS="l">1966</TD><TD> </TD></TR><TR><TD CLASS="l">1967</TD><TD> private InternalModelStateListener getInternalModelStateListener() {</TD></TR><TR CLASS="z"><TD CLASS="l">1968</TD><TD> if (fInternalModelStateListener == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">1969</TD><TD> fInternalModelStateListener = new InternalModelStateListener();</TD></TR><TR><TD CLASS="l">1970</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">1971</TD><TD> return fInternalModelStateListener;</TD></TR><TR><TD CLASS="l">1972</TD><TD> }</TD></TR><TR><TD CLASS="l">1973</TD><TD> </TD></TR><TR><TD CLASS="l">1974</TD><TD> /**</TD></TR><TR><TD CLASS="l">1975</TD><TD> * Returns this editor's StructuredModel.</TD></TR><TR><TD CLASS="l">1976</TD><TD> * <p></TD></TR><TR><TD CLASS="l">1977</TD><TD> * Not API. Will be removed in the future.</TD></TR><TR><TD CLASS="l">1978</TD><TD> * </p></TD></TR><TR><TD CLASS="l">1979</TD><TD> * </TD></TR><TR><TD CLASS="l">1980</TD><TD> * @return returns this editor's IStructuredModel</TD></TR><TR><TD CLASS="l">1981</TD><TD> * @deprecated - This method allowed for uncontrolled access to the model</TD></TR><TR><TD CLASS="l">1982</TD><TD> * instance and will be removed in the future. It is</TD></TR><TR><TD CLASS="l">1983</TD><TD> * recommended that the current document provider be asked for</TD></TR><TR><TD CLASS="l">1984</TD><TD> * the current document and the IModelManager then asked for</TD></TR><TR><TD CLASS="l">1985</TD><TD> * the corresponding model with</TD></TR><TR><TD CLASS="l">1986</TD><TD> * getExistingModelFor*(IDocument). Supported document</TD></TR><TR><TD CLASS="l"><A NAME="2e">1987</A></TD><TD> * providers ensure that the document maps to a shared</TD></TR><TR><TD CLASS="l">1988</TD><TD> * structured model.</TD></TR><TR><TD CLASS="l">1989</TD><TD> */</TD></TR><TR><TD CLASS="l">1990</TD><TD> public IStructuredModel getModel() {</TD></TR><TR CLASS="z"><TD CLASS="l">1991</TD><TD> IDocumentProvider documentProvider = getDocumentProvider();</TD></TR><TR><TD CLASS="l">1992</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">1993</TD><TD> if (documentProvider == null) {</TD></TR><TR><TD CLASS="l">1994</TD><TD> // this indicated an error in startup sequence</TD></TR><TR CLASS="z"><TD CLASS="l">1995</TD><TD> Logger.trace(getClass().getName(), "Program Info Only: document provider was null when model requested"); //$NON-NLS-1$ //$NON-NLS-2$</TD></TR><TR><TD CLASS="l">1996</TD><TD> }</TD></TR><TR><TD CLASS="l">1997</TD><TD> </TD></TR><TR><TD CLASS="l">1998</TD><TD> // Remember if we entered this method without a model existing</TD></TR><TR CLASS="z"><TD CLASS="l">1999</TD><TD> boolean initialModelNull = (fStructuredModel == null);</TD></TR><TR><TD CLASS="l">2000</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2001</TD><TD> if (fStructuredModel == null && documentProvider != null) {</TD></TR><TR><TD CLASS="l">2002</TD><TD> // lazily set the model instance, although this is an ABNORMAL</TD></TR><TR><TD CLASS="l">2003</TD><TD> // CODE PATH</TD></TR><TR CLASS="z"><TD CLASS="l">2004</TD><TD> if (documentProvider instanceof IModelProvider) {</TD></TR><TR CLASS="z"><TD CLASS="l">2005</TD><TD> fStructuredModel = ((IModelProvider) documentProvider).getModel(getEditorInput());</TD></TR><TR CLASS="z"><TD CLASS="l">2006</TD><TD> fisReleased = false;</TD></TR><TR><TD CLASS="l">2007</TD><TD> }</TD></TR><TR><TD CLASS="l">2008</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2009</TD><TD> IDocument doc = documentProvider.getDocument(getEditorInput());</TD></TR><TR CLASS="z"><TD CLASS="l">2010</TD><TD> if (doc instanceof IStructuredDocument) {</TD></TR><TR><TD CLASS="l">2011</TD><TD> /*</TD></TR><TR><TD CLASS="l">2012</TD><TD> * Called in this manner because getExistingModel can skip</TD></TR><TR><TD CLASS="l">2013</TD><TD> * some calculations always performed in getModelForEdit</TD></TR><TR><TD CLASS="l">2014</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">2015</TD><TD> IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForEdit(doc);</TD></TR><TR CLASS="z"><TD CLASS="l">2016</TD><TD> if (model == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2017</TD><TD> model = StructuredModelManager.getModelManager().getModelForEdit((IStructuredDocument) doc);</TD></TR><TR><TD CLASS="l">2018</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2019</TD><TD> fStructuredModel = model;</TD></TR><TR CLASS="z"><TD CLASS="l">2020</TD><TD> fisReleased = false;</TD></TR><TR><TD CLASS="l">2021</TD><TD> }</TD></TR><TR><TD CLASS="l">2022</TD><TD> }</TD></TR><TR><TD CLASS="l">2023</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2024</TD><TD> EditorModelUtil.addFactoriesTo(fStructuredModel);</TD></TR><TR><TD CLASS="l">2025</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2026</TD><TD> if (initialModelNull && fStructuredModel != null) {</TD></TR><TR><TD CLASS="l">2027</TD><TD> /*</TD></TR><TR><TD CLASS="l">2028</TD><TD> * DMW: 9/1/2002 -- why is update called here? No change has</TD></TR><TR><TD CLASS="l">2029</TD><TD> * been indicated? I'd like to remove, but will leave for now</TD></TR><TR><TD CLASS="l">2030</TD><TD> * to avoid breaking this hack. Should measure/breakpoint to</TD></TR><TR><TD CLASS="l">2031</TD><TD> * see how large the problem is. May cause performance</TD></TR><TR><TD CLASS="l">2032</TD><TD> * problems.</TD></TR><TR><TD CLASS="l">2033</TD><TD> * </TD></TR><TR><TD CLASS="l">2034</TD><TD> * DMW: 9/8/2002 -- not sure why this was here initially, but</TD></TR><TR><TD CLASS="l">2035</TD><TD> * the intent/hack must have been to call update if this was</TD></TR><TR><TD CLASS="l">2036</TD><TD> * the first time fStructuredModel was set. So, I added the</TD></TR><TR><TD CLASS="l">2037</TD><TD> * logic to check for that "first time" case. It would appear</TD></TR><TR><TD CLASS="l">2038</TD><TD> * we don't really need. may remove in future when can test</TD></TR><TR><TD CLASS="l">2039</TD><TD> * more.</TD></TR><TR><TD CLASS="l">2040</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">2041</TD><TD> update();</TD></TR><TR><TD CLASS="l">2042</TD><TD> }</TD></TR><TR><TD CLASS="l">2043</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2044</TD><TD> return fStructuredModel;</TD></TR><TR><TD CLASS="l">2045</TD><TD> }</TD></TR><TR><TD CLASS="l">2046</TD><TD> </TD></TR><TR><TD CLASS="l">2047</TD><TD> /*</TD></TR><TR><TD CLASS="l">2048</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l">2049</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="2f">2050</A></TD><TD> * @see org.eclipse.ui.part.IWorkbenchPartOrientation#getOrientation()</TD></TR><TR><TD CLASS="l">2051</TD><TD> */</TD></TR><TR><TD CLASS="l">2052</TD><TD> public int getOrientation() {</TD></TR><TR><TD CLASS="l">2053</TD><TD> // https://bugs.eclipse.org/bugs/show_bug.cgi?id=88714</TD></TR><TR CLASS="z"><TD CLASS="l">2054</TD><TD> return SWT.LEFT_TO_RIGHT;</TD></TR><TR><TD CLASS="l">2055</TD><TD> }</TD></TR><TR><TD CLASS="l">2056</TD><TD> </TD></TR><TR><TD CLASS="l">2057</TD><TD> /*</TD></TR><TR><TD CLASS="l">2058</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="30">2059</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2060</TD><TD> * @see org.eclipse.ui.texteditor.ITextEditor#getSelectionProvider()</TD></TR><TR><TD CLASS="l">2061</TD><TD> */</TD></TR><TR><TD CLASS="l">2062</TD><TD> public ISelectionProvider getSelectionProvider() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="83">2063</A></TD><TD> if (fStructuredSelectionProvider == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2064</TD><TD> ISelectionProvider parentProvider = super.getSelectionProvider();</TD></TR><TR CLASS="z"><TD CLASS="l">2065</TD><TD> if (parentProvider != null) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="85">2066</A></TD><TD> fStructuredSelectionProvider = new StructuredSelectionProvider(parentProvider, this);</TD></TR><TR CLASS="z"><TD CLASS="l">2067</TD><TD> fStructuredSelectionProvider.addPostSelectionChangedListener(new ISelectionChangedListener() {</TD></TR><TR><TD CLASS="l">2068</TD><TD> public void selectionChanged(SelectionChangedEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">2069</TD><TD> updateStatusLine(event.getSelection());</TD></TR><TR CLASS="z"><TD CLASS="l">2070</TD><TD> }</TD></TR><TR><TD CLASS="l">2071</TD><TD> });</TD></TR><TR CLASS="z"><TD CLASS="l">2072</TD><TD> if (fStructuredModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2073</TD><TD> SelectionConvertor convertor = (SelectionConvertor) fStructuredModel.getAdapter(SelectionConvertor.class);</TD></TR><TR CLASS="z"><TD CLASS="l">2074</TD><TD> if (convertor != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2075</TD><TD> fStructuredSelectionProvider.selectionConvertor = convertor;</TD></TR><TR><TD CLASS="l">2076</TD><TD> }</TD></TR><TR><TD CLASS="l">2077</TD><TD> }</TD></TR><TR><TD CLASS="l">2078</TD><TD> }</TD></TR><TR><TD CLASS="l">2079</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2080</TD><TD> if (fStructuredSelectionProvider == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2081</TD><TD> return super.getSelectionProvider();</TD></TR><TR><TD CLASS="l">2082</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2083</TD><TD> return fStructuredSelectionProvider;</TD></TR><TR><TD CLASS="l">2084</TD><TD> }</TD></TR><TR><TD CLASS="l">2085</TD><TD> </TD></TR><TR><TD CLASS="l">2086</TD><TD> /**</TD></TR><TR><TD CLASS="l">2087</TD><TD> * Returns the editor's source viewer. This method was created to expose</TD></TR><TR><TD CLASS="l">2088</TD><TD> * the protected final getSourceViewer() method.</TD></TR><TR><TD CLASS="l">2089</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2090</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">2091</TD><TD> * </p></TD></TR><TR><TD CLASS="l"><A NAME="33">2092</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2093</TD><TD> * @return the editor's source viewer</TD></TR><TR><TD CLASS="l">2094</TD><TD> */</TD></TR><TR><TD CLASS="l">2095</TD><TD> public StructuredTextViewer getTextViewer() {</TD></TR><TR CLASS="z"><TD CLASS="l">2096</TD><TD> return (StructuredTextViewer) getSourceViewer();</TD></TR><TR><TD CLASS="l">2097</TD><TD> }</TD></TR><TR><TD CLASS="l">2098</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="35">2099</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">2100</TD><TD> * Jumps to the matching bracket.</TD></TR><TR><TD CLASS="l">2101</TD><TD> */</TD></TR><TR><TD CLASS="l">2102</TD><TD> void gotoMatchingBracket() {</TD></TR><TR CLASS="z"><TD CLASS="l">2103</TD><TD> ICharacterPairMatcher matcher = createCharacterPairMatcher();</TD></TR><TR CLASS="z"><TD CLASS="l">2104</TD><TD> if (matcher == null)</TD></TR><TR CLASS="z"><TD CLASS="l">2105</TD><TD> return;</TD></TR><TR><TD CLASS="l">2106</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2107</TD><TD> ISourceViewer sourceViewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2108</TD><TD> IDocument document = sourceViewer.getDocument();</TD></TR><TR CLASS="z"><TD CLASS="l">2109</TD><TD> if (document == null)</TD></TR><TR CLASS="z"><TD CLASS="l">2110</TD><TD> return;</TD></TR><TR><TD CLASS="l">2111</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2112</TD><TD> IRegion selection = getSignedSelection(sourceViewer);</TD></TR><TR><TD CLASS="l">2113</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2114</TD><TD> int selectionLength = Math.abs(selection.getLength());</TD></TR><TR CLASS="z"><TD CLASS="l">2115</TD><TD> if (selectionLength > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">2116</TD><TD> setStatusLineErrorMessage(SSEUIMessages.GotoMatchingBracket_error_invalidSelection);</TD></TR><TR CLASS="z"><TD CLASS="l">2117</TD><TD> sourceViewer.getTextWidget().getDisplay().beep();</TD></TR><TR CLASS="z"><TD CLASS="l">2118</TD><TD> return;</TD></TR><TR><TD CLASS="l">2119</TD><TD> }</TD></TR><TR><TD CLASS="l">2120</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2121</TD><TD> int sourceCaretOffset = selection.getOffset() + selection.getLength();</TD></TR><TR CLASS="z"><TD CLASS="l">2122</TD><TD> IRegion region = matcher.match(document, sourceCaretOffset);</TD></TR><TR CLASS="z"><TD CLASS="l">2123</TD><TD> if (region == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2124</TD><TD> setStatusLineErrorMessage(SSEUIMessages.GotoMatchingBracket_error_noMatchingBracket);</TD></TR><TR CLASS="z"><TD CLASS="l">2125</TD><TD> sourceViewer.getTextWidget().getDisplay().beep();</TD></TR><TR CLASS="z"><TD CLASS="l">2126</TD><TD> return;</TD></TR><TR><TD CLASS="l">2127</TD><TD> }</TD></TR><TR><TD CLASS="l">2128</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2129</TD><TD> int offset = region.getOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">2130</TD><TD> int length = region.getLength();</TD></TR><TR><TD CLASS="l">2131</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2132</TD><TD> if (length < 1)</TD></TR><TR CLASS="z"><TD CLASS="l">2133</TD><TD> return;</TD></TR><TR><TD CLASS="l">2134</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2135</TD><TD> int anchor = matcher.getAnchor();</TD></TR><TR><TD CLASS="l">2136</TD><TD> </TD></TR><TR><TD CLASS="l">2137</TD><TD> // go to after the match if matching to the right</TD></TR><TR CLASS="z"><TD CLASS="l">2138</TD><TD> int targetOffset = (ICharacterPairMatcher.RIGHT == anchor) ? offset : offset + length;</TD></TR><TR><TD CLASS="l">2139</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2140</TD><TD> boolean visible = false;</TD></TR><TR CLASS="z"><TD CLASS="l">2141</TD><TD> if (sourceViewer instanceof ITextViewerExtension5) {</TD></TR><TR CLASS="z"><TD CLASS="l">2142</TD><TD> ITextViewerExtension5 extension = (ITextViewerExtension5) sourceViewer;</TD></TR><TR CLASS="z"><TD CLASS="l">2143</TD><TD> visible = (extension.modelOffset2WidgetOffset(targetOffset) > -1);</TD></TR><TR><TD CLASS="l">2144</TD><TD> }</TD></TR><TR><TD CLASS="l">2145</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2146</TD><TD> IRegion visibleRegion = sourceViewer.getVisibleRegion();</TD></TR><TR><TD CLASS="l">2147</TD><TD> // http://dev.eclipse.org/bugs/show_bug.cgi?id=34195</TD></TR><TR CLASS="z"><TD CLASS="l">2148</TD><TD> visible = (targetOffset >= visibleRegion.getOffset() && targetOffset <= visibleRegion.getOffset() + visibleRegion.getLength());</TD></TR><TR><TD CLASS="l">2149</TD><TD> }</TD></TR><TR><TD CLASS="l">2150</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2151</TD><TD> if (!visible) {</TD></TR><TR CLASS="z"><TD CLASS="l">2152</TD><TD> setStatusLineErrorMessage(SSEUIMessages.GotoMatchingBracket_error_bracketOutsideSelectedElement);</TD></TR><TR CLASS="z"><TD CLASS="l">2153</TD><TD> sourceViewer.getTextWidget().getDisplay().beep();</TD></TR><TR CLASS="z"><TD CLASS="l">2154</TD><TD> return;</TD></TR><TR><TD CLASS="l">2155</TD><TD> }</TD></TR><TR><TD CLASS="l">2156</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2157</TD><TD> if (selection.getLength() < 0)</TD></TR><TR CLASS="z"><TD CLASS="l">2158</TD><TD> targetOffset -= selection.getLength();</TD></TR><TR><TD CLASS="l">2159</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2160</TD><TD> sourceViewer.setSelectedRange(targetOffset, selection.getLength());</TD></TR><TR CLASS="z"><TD CLASS="l">2161</TD><TD> sourceViewer.revealRange(targetOffset, selection.getLength());</TD></TR><TR CLASS="z"><TD CLASS="l">2162</TD><TD> }</TD></TR><TR><TD CLASS="l">2163</TD><TD> </TD></TR><TR><TD CLASS="l">2164</TD><TD> /*</TD></TR><TR><TD CLASS="l">2165</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="36">2166</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2167</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#handleCursorPositionChanged()</TD></TR><TR><TD CLASS="l">2168</TD><TD> */</TD></TR><TR><TD CLASS="l">2169</TD><TD> protected void handleCursorPositionChanged() {</TD></TR><TR CLASS="z"><TD CLASS="l">2170</TD><TD> super.handleCursorPositionChanged();</TD></TR><TR CLASS="z"><TD CLASS="l">2171</TD><TD> updateStatusField(StructuredTextEditorActionConstants.STATUS_CATEGORY_OFFSET);</TD></TR><TR CLASS="z"><TD CLASS="l">2172</TD><TD> }</TD></TR><TR><TD CLASS="l">2173</TD><TD> </TD></TR><TR><TD CLASS="l">2174</TD><TD> /*</TD></TR><TR><TD CLASS="l">2175</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="37">2176</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2177</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#handlePreferenceStoreChanged(org.eclipse.jface.util.PropertyChangeEvent)</TD></TR><TR><TD CLASS="l">2178</TD><TD> */</TD></TR><TR><TD CLASS="l">2179</TD><TD> protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">2180</TD><TD> String property = event.getProperty();</TD></TR><TR><TD CLASS="l">2181</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2182</TD><TD> if (EditorPreferenceNames.EDITOR_TEXT_HOVER_MODIFIERS.equals(property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2183</TD><TD> updateHoverBehavior();</TD></TR><TR><TD CLASS="l">2184</TD><TD> }</TD></TR><TR><TD CLASS="l">2185</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2186</TD><TD> if (IStructuredTextFoldingProvider.FOLDING_ENABLED.equals(property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2187</TD><TD> if (getSourceViewer() instanceof ProjectionViewer) {</TD></TR><TR><TD CLASS="l">2188</TD><TD> // install projection support if it has not even been</TD></TR><TR><TD CLASS="l">2189</TD><TD> // installed yet</TD></TR><TR CLASS="z"><TD CLASS="l">2190</TD><TD> if (isFoldingEnabled() && (fProjectionSupport == null) && (fProjectionModelUpdater == null)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2191</TD><TD> installProjectionSupport();</TD></TR><TR><TD CLASS="l">2192</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2193</TD><TD> ProjectionViewer pv = (ProjectionViewer) getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2194</TD><TD> if (pv.isProjectionMode() != isFoldingEnabled()) {</TD></TR><TR CLASS="z"><TD CLASS="l">2195</TD><TD> if (pv.canDoOperation(ProjectionViewer.TOGGLE))</TD></TR><TR CLASS="z"><TD CLASS="l">2196</TD><TD> pv.doOperation(ProjectionViewer.TOGGLE);</TD></TR><TR><TD CLASS="l">2197</TD><TD> }</TD></TR><TR><TD CLASS="l">2198</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2199</TD><TD> return;</TD></TR><TR><TD CLASS="l">2200</TD><TD> }</TD></TR><TR><TD CLASS="l">2201</TD><TD> </TD></TR><TR><TD CLASS="l">2202</TD><TD> // update content assist preferences</TD></TR><TR CLASS="z"><TD CLASS="l">2203</TD><TD> if (EditorPreferenceNames.CODEASSIST_PROPOSALS_BACKGROUND.equals(property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2204</TD><TD> ISourceViewer sourceViewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2205</TD><TD> if (sourceViewer != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2206</TD><TD> SourceViewerConfiguration configuration = getSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2207</TD><TD> if (configuration != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2208</TD><TD> IContentAssistant contentAssistant = configuration.getContentAssistant(sourceViewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2209</TD><TD> if (contentAssistant instanceof ContentAssistant) {</TD></TR><TR CLASS="z"><TD CLASS="l">2210</TD><TD> ContentAssistant assistant = (ContentAssistant) contentAssistant;</TD></TR><TR CLASS="z"><TD CLASS="l">2211</TD><TD> RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), EditorPreferenceNames.CODEASSIST_PROPOSALS_BACKGROUND);</TD></TR><TR CLASS="z"><TD CLASS="l">2212</TD><TD> Color color = EditorUtility.getColor(rgb);</TD></TR><TR CLASS="z"><TD CLASS="l">2213</TD><TD> assistant.setProposalSelectorBackground(color);</TD></TR><TR><TD CLASS="l">2214</TD><TD> }</TD></TR><TR><TD CLASS="l">2215</TD><TD> }</TD></TR><TR><TD CLASS="l">2216</TD><TD> }</TD></TR><TR><TD CLASS="l">2217</TD><TD> }</TD></TR><TR><TD CLASS="l">2218</TD><TD> </TD></TR><TR><TD CLASS="l">2219</TD><TD> // update content assist preferences</TD></TR><TR CLASS="z"><TD CLASS="l">2220</TD><TD> if (EditorPreferenceNames.CODEASSIST_PROPOSALS_FOREGROUND.equals(property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2221</TD><TD> ISourceViewer sourceViewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2222</TD><TD> if (sourceViewer != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2223</TD><TD> SourceViewerConfiguration configuration = getSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2224</TD><TD> if (configuration != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2225</TD><TD> IContentAssistant contentAssistant = configuration.getContentAssistant(sourceViewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2226</TD><TD> if (contentAssistant instanceof ContentAssistant) {</TD></TR><TR CLASS="z"><TD CLASS="l">2227</TD><TD> ContentAssistant assistant = (ContentAssistant) contentAssistant;</TD></TR><TR CLASS="z"><TD CLASS="l">2228</TD><TD> RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), EditorPreferenceNames.CODEASSIST_PROPOSALS_FOREGROUND);</TD></TR><TR CLASS="z"><TD CLASS="l">2229</TD><TD> Color color = EditorUtility.getColor(rgb);</TD></TR><TR CLASS="z"><TD CLASS="l">2230</TD><TD> assistant.setProposalSelectorForeground(color);</TD></TR><TR><TD CLASS="l">2231</TD><TD> }</TD></TR><TR><TD CLASS="l">2232</TD><TD> }</TD></TR><TR><TD CLASS="l">2233</TD><TD> }</TD></TR><TR><TD CLASS="l">2234</TD><TD> }</TD></TR><TR><TD CLASS="l">2235</TD><TD> </TD></TR><TR><TD CLASS="l">2236</TD><TD> // update content assist preferences</TD></TR><TR CLASS="z"><TD CLASS="l">2237</TD><TD> if (EditorPreferenceNames.CODEASSIST_PARAMETERS_BACKGROUND.equals(property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2238</TD><TD> ISourceViewer sourceViewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2239</TD><TD> if (sourceViewer != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2240</TD><TD> SourceViewerConfiguration configuration = getSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2241</TD><TD> if (configuration != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2242</TD><TD> IContentAssistant contentAssistant = configuration.getContentAssistant(sourceViewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2243</TD><TD> if (contentAssistant instanceof ContentAssistant) {</TD></TR><TR CLASS="z"><TD CLASS="l">2244</TD><TD> ContentAssistant assistant = (ContentAssistant) contentAssistant;</TD></TR><TR CLASS="z"><TD CLASS="l">2245</TD><TD> RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), EditorPreferenceNames.CODEASSIST_PARAMETERS_BACKGROUND);</TD></TR><TR CLASS="z"><TD CLASS="l">2246</TD><TD> Color color = EditorUtility.getColor(rgb);</TD></TR><TR CLASS="z"><TD CLASS="l">2247</TD><TD> assistant.setContextInformationPopupBackground(color);</TD></TR><TR CLASS="z"><TD CLASS="l">2248</TD><TD> assistant.setContextSelectorBackground(color);</TD></TR><TR><TD CLASS="l">2249</TD><TD> }</TD></TR><TR><TD CLASS="l">2250</TD><TD> }</TD></TR><TR><TD CLASS="l">2251</TD><TD> }</TD></TR><TR><TD CLASS="l">2252</TD><TD> }</TD></TR><TR><TD CLASS="l">2253</TD><TD> </TD></TR><TR><TD CLASS="l">2254</TD><TD> // update content assist preferences</TD></TR><TR CLASS="z"><TD CLASS="l">2255</TD><TD> if (EditorPreferenceNames.CODEASSIST_PARAMETERS_FOREGROUND.equals(property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2256</TD><TD> ISourceViewer sourceViewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2257</TD><TD> if (sourceViewer != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2258</TD><TD> SourceViewerConfiguration configuration = getSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2259</TD><TD> if (configuration != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2260</TD><TD> IContentAssistant contentAssistant = configuration.getContentAssistant(sourceViewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2261</TD><TD> if (contentAssistant instanceof ContentAssistant) {</TD></TR><TR CLASS="z"><TD CLASS="l">2262</TD><TD> ContentAssistant assistant = (ContentAssistant) contentAssistant;</TD></TR><TR CLASS="z"><TD CLASS="l">2263</TD><TD> RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), EditorPreferenceNames.CODEASSIST_PARAMETERS_FOREGROUND);</TD></TR><TR CLASS="z"><TD CLASS="l">2264</TD><TD> Color color = EditorUtility.getColor(rgb);</TD></TR><TR CLASS="z"><TD CLASS="l">2265</TD><TD> assistant.setContextInformationPopupForeground(color);</TD></TR><TR CLASS="z"><TD CLASS="l">2266</TD><TD> assistant.setContextSelectorForeground(color);</TD></TR><TR><TD CLASS="l">2267</TD><TD> }</TD></TR><TR><TD CLASS="l">2268</TD><TD> }</TD></TR><TR><TD CLASS="l">2269</TD><TD> }</TD></TR><TR><TD CLASS="l">2270</TD><TD> }</TD></TR><TR><TD CLASS="l">2271</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="38">2272</A></TD><TD> super.handlePreferenceStoreChanged(event);</TD></TR><TR CLASS="z"><TD CLASS="l">2273</TD><TD> }</TD></TR><TR><TD CLASS="l">2274</TD><TD> </TD></TR><TR><TD CLASS="l">2275</TD><TD> private boolean inBusyState() {</TD></TR><TR CLASS="z"><TD CLASS="l">2276</TD><TD> return fBusyState;</TD></TR><TR><TD CLASS="l">2277</TD><TD> }</TD></TR><TR><TD CLASS="l">2278</TD><TD> </TD></TR><TR><TD CLASS="l">2279</TD><TD> /*</TD></TR><TR><TD CLASS="l">2280</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l">2281</TD><TD> * </TD></TR><TR><TD CLASS="l">2282</TD><TD> * @see org.eclipse.ui.IEditorPart#init(org.eclipse.ui.IEditorSite,</TD></TR><TR><TD CLASS="l">2283</TD><TD> * org.eclipse.ui.IEditorInput)</TD></TR><TR><TD CLASS="l"><A NAME="39">2284</A></TD><TD> */</TD></TR><TR><TD CLASS="l">2285</TD><TD> public void init(IEditorSite site, IEditorInput input) throws PartInitException {</TD></TR><TR><TD CLASS="l">2286</TD><TD> // if we've gotten an error elsewhere, before</TD></TR><TR><TD CLASS="l">2287</TD><TD> // we've actually opened, then don't open.</TD></TR><TR CLASS="z"><TD CLASS="l">2288</TD><TD> if (shouldClose) {</TD></TR><TR CLASS="z"><TD CLASS="l">2289</TD><TD> setSite(site);</TD></TR><TR CLASS="z"><TD CLASS="l">2290</TD><TD> close(false);</TD></TR><TR><TD CLASS="l">2291</TD><TD> }</TD></TR><TR><TD CLASS="l">2292</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2293</TD><TD> super.init(site, input);</TD></TR><TR><TD CLASS="l">2294</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2295</TD><TD> }</TD></TR><TR><TD CLASS="l">2296</TD><TD> </TD></TR><TR><TD CLASS="l">2297</TD><TD> /**</TD></TR><TR><TD CLASS="l">2298</TD><TD> * Set the document provider for this editor.</TD></TR><TR><TD CLASS="l">2299</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2300</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">2301</TD><TD> * </p></TD></TR><TR><TD CLASS="l">2302</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="3b">2303</A></TD><TD> * @param documentProvider</TD></TR><TR><TD CLASS="l">2304</TD><TD> * documentProvider to initialize</TD></TR><TR><TD CLASS="l">2305</TD><TD> */</TD></TR><TR><TD CLASS="l">2306</TD><TD> public void initializeDocumentProvider(IDocumentProvider documentProvider) {</TD></TR><TR CLASS="z"><TD CLASS="l">2307</TD><TD> if (documentProvider != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2308</TD><TD> setDocumentProvider(documentProvider);</TD></TR><TR><TD CLASS="l">2309</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2310</TD><TD> }</TD></TR><TR><TD CLASS="l">2311</TD><TD> </TD></TR><TR><TD CLASS="l">2312</TD><TD> /*</TD></TR><TR><TD CLASS="l">2313</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="3c">2314</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2315</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#initializeDragAndDrop(org.eclipse.jface.text.source.ISourceViewer)</TD></TR><TR><TD CLASS="l">2316</TD><TD> */</TD></TR><TR><TD CLASS="l">2317</TD><TD> protected void initializeDragAndDrop(ISourceViewer viewer) {</TD></TR><TR CLASS="z"><TD CLASS="l">2318</TD><TD> IPreferenceStore store = getPreferenceStore();</TD></TR><TR CLASS="z"><TD CLASS="l">2319</TD><TD> if (store != null && store.getBoolean(PREFERENCE_TEXT_DRAG_AND_DROP_ENABLED))</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="3d">2320</A></TD><TD> initializeDrop(viewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2321</TD><TD> }</TD></TR><TR><TD CLASS="l">2322</TD><TD> </TD></TR><TR><TD CLASS="l">2323</TD><TD> protected void initializeDrop(ITextViewer textViewer) {</TD></TR><TR CLASS="z"><TD CLASS="l">2324</TD><TD> int operations = DND.DROP_COPY | DND.DROP_MOVE;</TD></TR><TR CLASS="z"><TD CLASS="l">2325</TD><TD> fDropTarget = new DropTarget(textViewer.getTextWidget(), operations);</TD></TR><TR CLASS="z"><TD CLASS="l">2326</TD><TD> fDropAdapter = new ReadOnlyAwareDropTargetAdapter(true);</TD></TR><TR CLASS="z"><TD CLASS="l">2327</TD><TD> fDropAdapter.setTargetEditor(this);</TD></TR><TR CLASS="z"><TD CLASS="l">2328</TD><TD> fDropAdapter.setTargetIDs(getConfigurationPoints());</TD></TR><TR CLASS="z"><TD CLASS="l">2329</TD><TD> fDropAdapter.setTextViewer(textViewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2330</TD><TD> fDropTarget.setTransfer(fDropAdapter.getTransfers());</TD></TR><TR CLASS="z"><TD CLASS="l">2331</TD><TD> fDropTarget.addDropListener(fDropAdapter);</TD></TR><TR CLASS="z"><TD CLASS="l">2332</TD><TD> }</TD></TR><TR><TD CLASS="l">2333</TD><TD> </TD></TR><TR><TD CLASS="l">2334</TD><TD> /*</TD></TR><TR><TD CLASS="l">2335</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="3e">2336</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2337</TD><TD> * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#initializeEditor()</TD></TR><TR><TD CLASS="l">2338</TD><TD> */</TD></TR><TR><TD CLASS="l">2339</TD><TD> protected void initializeEditor() {</TD></TR><TR CLASS="z"><TD CLASS="l">2340</TD><TD> super.initializeEditor();</TD></TR><TR><TD CLASS="l">2341</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2342</TD><TD> setPreferenceStore(createCombinedPreferenceStore());</TD></TR><TR><TD CLASS="l">2343</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2344</TD><TD> setRangeIndicator(new DefaultRangeIndicator());</TD></TR><TR CLASS="z"><TD CLASS="l">2345</TD><TD> setEditorContextMenuId(EDITOR_CONTEXT_MENU_ID);</TD></TR><TR CLASS="z"><TD CLASS="l">2346</TD><TD> initializeDocumentProvider(null);</TD></TR><TR><TD CLASS="l">2347</TD><TD> // set the infopop for source viewer</TD></TR><TR CLASS="z"><TD CLASS="l">2348</TD><TD> String helpId = getHelpContextId();</TD></TR><TR><TD CLASS="l">2349</TD><TD> // no infopop set or using default text editor help, use default</TD></TR><TR CLASS="z"><TD CLASS="l">2350</TD><TD> if (helpId == null || ITextEditorHelpContextIds.TEXT_EDITOR.equals(helpId))</TD></TR><TR CLASS="z"><TD CLASS="l">2351</TD><TD> helpId = IHelpContextIds.XML_SOURCE_VIEW_HELPID;</TD></TR><TR CLASS="z"><TD CLASS="l">2352</TD><TD> setHelpContextId(helpId);</TD></TR><TR><TD CLASS="l">2353</TD><TD> // defect 203158 - disable ruler context menu for</TD></TR><TR><TD CLASS="l">2354</TD><TD> // beta</TD></TR><TR><TD CLASS="l">2355</TD><TD> // setRulerContextMenuId(RULER_CONTEXT_MENU_ID);</TD></TR><TR CLASS="z"><TD CLASS="l">2356</TD><TD> configureInsertMode(SMART_INSERT, true);</TD></TR><TR><TD CLASS="l">2357</TD><TD> </TD></TR><TR><TD CLASS="l">2358</TD><TD> // enable the base source editor activity when editor opens</TD></TR><TR><TD CLASS="l">2359</TD><TD> try {</TD></TR><TR><TD CLASS="l">2360</TD><TD> // FIXME: - commented out to avoid minor dependancy during</TD></TR><TR><TD CLASS="l">2361</TD><TD> // transition to org.eclipse</TD></TR><TR><TD CLASS="l">2362</TD><TD> // WTPActivityBridge.getInstance().enableActivity(CORE_SSE_ACTIVITY_ID,</TD></TR><TR><TD CLASS="l">2363</TD><TD> // true);</TD></TR><TR><TD CLASS="l">2364</TD><TD> }</TD></TR><TR><TD CLASS="l">2365</TD><TD> catch (Exception t) {</TD></TR><TR><TD CLASS="l">2366</TD><TD> // if something goes wrong with enabling activity, just log the</TD></TR><TR><TD CLASS="l">2367</TD><TD> // error but dont</TD></TR><TR><TD CLASS="l">2368</TD><TD> // have it break the editor</TD></TR><TR><TD CLASS="l">2369</TD><TD> Logger.log(Logger.WARNING_DEBUG, t.getMessage(), t);</TD></TR><TR><TD CLASS="l">2370</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2371</TD><TD> }</TD></TR><TR><TD CLASS="l">2372</TD><TD> </TD></TR><TR><TD CLASS="l">2373</TD><TD> /*</TD></TR><TR><TD CLASS="l">2374</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="3f">2375</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2376</TD><TD> * @see org.eclipse.ui.editors.text.TextEditor#initializeKeyBindingScopes()</TD></TR><TR><TD CLASS="l">2377</TD><TD> */</TD></TR><TR><TD CLASS="l">2378</TD><TD> protected void initializeKeyBindingScopes() {</TD></TR><TR CLASS="z"><TD CLASS="l">2379</TD><TD> setKeyBindingScopes(new String[]{EDITOR_KEYBINDING_SCOPE_ID});</TD></TR><TR CLASS="z"><TD CLASS="l">2380</TD><TD> }</TD></TR><TR><TD CLASS="l">2381</TD><TD> </TD></TR><TR><TD CLASS="l">2382</TD><TD> /**</TD></TR><TR><TD CLASS="l"><A NAME="40">2383</A></TD><TD> * Initializes the editor's source viewer and other items that were source</TD></TR><TR><TD CLASS="l">2384</TD><TD> * viewer-dependent.</TD></TR><TR><TD CLASS="l">2385</TD><TD> */</TD></TR><TR><TD CLASS="l">2386</TD><TD> private void initializeSourceViewer() {</TD></TR><TR CLASS="z"><TD CLASS="l">2387</TD><TD> IAction contentAssistAction = getAction(StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_PROPOSALS);</TD></TR><TR CLASS="z"><TD CLASS="l">2388</TD><TD> if (contentAssistAction instanceof IUpdate) {</TD></TR><TR CLASS="z"><TD CLASS="l">2389</TD><TD> ((IUpdate) contentAssistAction).update();</TD></TR><TR><TD CLASS="l">2390</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2391</TD><TD> IAction openHyperlinkAction = getAction(StructuredTextEditorActionConstants.ACTION_NAME_OPEN_FILE);</TD></TR><TR CLASS="z"><TD CLASS="l">2392</TD><TD> if (openHyperlinkAction instanceof OpenHyperlinkAction) {</TD></TR><TR CLASS="z"><TD CLASS="l">2393</TD><TD> ((OpenHyperlinkAction) openHyperlinkAction).setHyperlinkDetectors(getSourceViewerConfiguration().getHyperlinkDetectors(getSourceViewer()));</TD></TR><TR><TD CLASS="l">2394</TD><TD> }</TD></TR><TR><TD CLASS="l">2395</TD><TD> </TD></TR><TR><TD CLASS="l">2396</TD><TD> // do not even install projection support until folding is actually</TD></TR><TR><TD CLASS="l">2397</TD><TD> // enabled</TD></TR><TR CLASS="z"><TD CLASS="l">2398</TD><TD> if (isFoldingEnabled()) {</TD></TR><TR CLASS="z"><TD CLASS="l">2399</TD><TD> installProjectionSupport();</TD></TR><TR><TD CLASS="l">2400</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="3a">2401</A></TD><TD> }</TD></TR><TR><TD CLASS="l">2402</TD><TD> </TD></TR><TR><TD CLASS="l">2403</TD><TD> protected void initSourceViewer(StructuredTextViewer sourceViewer) {</TD></TR><TR><TD CLASS="l">2404</TD><TD> // ensure decoration support is configured</TD></TR><TR CLASS="z"><TD CLASS="l">2405</TD><TD> getSourceViewerDecorationSupport(sourceViewer);</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="44">2406</A></TD><TD> }</TD></TR><TR><TD CLASS="l">2407</TD><TD> </TD></TR><TR><TD CLASS="l">2408</TD><TD> protected void installTextDragAndDrop(ISourceViewer viewer) {</TD></TR><TR><TD CLASS="l">2409</TD><TD> // do nothing</TD></TR><TR CLASS="z"><TD CLASS="l">2410</TD><TD> }</TD></TR><TR><TD CLASS="l">2411</TD><TD> </TD></TR><TR><TD CLASS="l">2412</TD><TD> /*</TD></TR><TR><TD CLASS="l">2413</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="41">2414</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2415</TD><TD> * @see org.eclipse.ui.editors.text.TextEditor#installEncodingSupport()</TD></TR><TR><TD CLASS="l">2416</TD><TD> */</TD></TR><TR><TD CLASS="l">2417</TD><TD> protected void installEncodingSupport() {</TD></TR><TR CLASS="z"><TD CLASS="l">2418</TD><TD> fEncodingSupport = new EncodingSupport(getConfigurationPoints());</TD></TR><TR CLASS="z"><TD CLASS="l">2419</TD><TD> fEncodingSupport.initialize(this);</TD></TR><TR CLASS="z"><TD CLASS="l">2420</TD><TD> }</TD></TR><TR><TD CLASS="l">2421</TD><TD> </TD></TR><TR><TD CLASS="l">2422</TD><TD> /**</TD></TR><TR><TD CLASS="l"><A NAME="42">2423</A></TD><TD> * Install everything necessary to get document folding working and enable</TD></TR><TR><TD CLASS="l">2424</TD><TD> * document folding</TD></TR><TR><TD CLASS="l">2425</TD><TD> */</TD></TR><TR><TD CLASS="l">2426</TD><TD> private void installProjectionSupport() {</TD></TR><TR CLASS="z"><TD CLASS="l">2427</TD><TD> ProjectionViewer projectionViewer = (ProjectionViewer) getSourceViewer();</TD></TR><TR><TD CLASS="l"><A NAME="68">2428</A></TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2429</TD><TD> fProjectionSupport = new ProjectionSupport(projectionViewer, getAnnotationAccess(), getSharedColors());</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="6a">2430</A></TD><TD> fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.error"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2431</TD><TD> fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.warning"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2432</TD><TD> fProjectionSupport.setHoverControlCreator(new IInformationControlCreator() {</TD></TR><TR><TD CLASS="l">2433</TD><TD> public IInformationControl createInformationControl(Shell parent) {</TD></TR><TR CLASS="z"><TD CLASS="l">2434</TD><TD> return new DefaultInformationControl(parent);</TD></TR><TR><TD CLASS="l">2435</TD><TD> }</TD></TR><TR><TD CLASS="l">2436</TD><TD> });</TD></TR><TR CLASS="z"><TD CLASS="l">2437</TD><TD> fProjectionSupport.install();</TD></TR><TR><TD CLASS="l">2438</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2439</TD><TD> IStructuredTextFoldingProvider updater = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2440</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">2441</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">2442</TD><TD> for (int i = 0; updater == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">2443</TD><TD> updater = (IStructuredTextFoldingProvider) builder.getConfiguration(IStructuredTextFoldingProvider.ID, ids[i]);</TD></TR><TR><TD CLASS="l">2444</TD><TD> }</TD></TR><TR><TD CLASS="l">2445</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2446</TD><TD> fProjectionModelUpdater = updater;</TD></TR><TR CLASS="z"><TD CLASS="l">2447</TD><TD> if (fProjectionModelUpdater != null)</TD></TR><TR CLASS="z"><TD CLASS="l">2448</TD><TD> fProjectionModelUpdater.install(projectionViewer);</TD></TR><TR><TD CLASS="l">2449</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2450</TD><TD> if (isFoldingEnabled())</TD></TR><TR CLASS="z"><TD CLASS="l">2451</TD><TD> projectionViewer.doOperation(ProjectionViewer.TOGGLE);</TD></TR><TR CLASS="z"><TD CLASS="l">2452</TD><TD> }</TD></TR><TR><TD CLASS="l">2453</TD><TD> </TD></TR><TR><TD CLASS="l">2454</TD><TD> /**</TD></TR><TR><TD CLASS="l">2455</TD><TD> * Install everything necessary to get document folding working and enable</TD></TR><TR><TD CLASS="l"><A NAME="5f">2456</A></TD><TD> * document folding</TD></TR><TR><TD CLASS="l">2457</TD><TD> */</TD></TR><TR><TD CLASS="l">2458</TD><TD> private void updateProjectionSupport() {</TD></TR><TR><TD CLASS="l">2459</TD><TD> // dispose of previous document folding support</TD></TR><TR CLASS="z"><TD CLASS="l">2460</TD><TD> if (fProjectionModelUpdater != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2461</TD><TD> fProjectionModelUpdater.uninstall();</TD></TR><TR CLASS="z"><TD CLASS="l">2462</TD><TD> fProjectionModelUpdater = null;</TD></TR><TR><TD CLASS="l">2463</TD><TD> }</TD></TR><TR><TD CLASS="l">2464</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2465</TD><TD> ProjectionViewer projectionViewer = (ProjectionViewer) getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2466</TD><TD> IStructuredTextFoldingProvider updater = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2467</TD><TD> ExtendedConfigurationBuilder builder = ExtendedConfigurationBuilder.getInstance();</TD></TR><TR CLASS="z"><TD CLASS="l">2468</TD><TD> String[] ids = getConfigurationPoints();</TD></TR><TR CLASS="z"><TD CLASS="l">2469</TD><TD> for (int i = 0; updater == null && i < ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">2470</TD><TD> updater = (IStructuredTextFoldingProvider) builder.getConfiguration(IStructuredTextFoldingProvider.ID, ids[i]);</TD></TR><TR><TD CLASS="l">2471</TD><TD> }</TD></TR><TR><TD CLASS="l">2472</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2473</TD><TD> fProjectionModelUpdater = updater;</TD></TR><TR CLASS="z"><TD CLASS="l">2474</TD><TD> if (fProjectionModelUpdater != null)</TD></TR><TR CLASS="z"><TD CLASS="l">2475</TD><TD> fProjectionModelUpdater.install(projectionViewer);</TD></TR><TR><TD CLASS="l">2476</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2477</TD><TD> if (fProjectionModelUpdater != null)</TD></TR><TR CLASS="z"><TD CLASS="l">2478</TD><TD> fProjectionModelUpdater.initialize();</TD></TR><TR CLASS="z"><TD CLASS="l">2479</TD><TD> }</TD></TR><TR><TD CLASS="l">2480</TD><TD> </TD></TR><TR><TD CLASS="l">2481</TD><TD> /**</TD></TR><TR><TD CLASS="l">2482</TD><TD> * Return whether document folding should be enabled according to the</TD></TR><TR><TD CLASS="l">2483</TD><TD> * preference store settings.</TD></TR><TR><TD CLASS="l"><A NAME="45">2484</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2485</TD><TD> * @return <code>true</code> if document folding should be enabled</TD></TR><TR><TD CLASS="l">2486</TD><TD> */</TD></TR><TR><TD CLASS="l">2487</TD><TD> private boolean isFoldingEnabled() {</TD></TR><TR CLASS="z"><TD CLASS="l">2488</TD><TD> IPreferenceStore store = getPreferenceStore();</TD></TR><TR><TD CLASS="l">2489</TD><TD> // check both preference store and vm argument</TD></TR><TR CLASS="z"><TD CLASS="l">2490</TD><TD> return (store.getBoolean(IStructuredTextFoldingProvider.FOLDING_ENABLED));</TD></TR><TR><TD CLASS="l"><A NAME="46">2491</A></TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="6b">2492</A></TD><TD> </TD></TR><TR><TD CLASS="l">2493</TD><TD> private void logUnexpectedDocumentKind(IEditorInput input) {</TD></TR><TR><TD CLASS="l"><A NAME="6d">2494</A></TD><TD> // display a dialog informing user of uknown content type</TD></TR><TR CLASS="z"><TD CLASS="l">2495</TD><TD> if (SSEUIPlugin.getDefault().getPreferenceStore().getBoolean(EditorPreferenceNames.SHOW_UNKNOWN_CONTENT_TYPE_MSG)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2496</TD><TD> Job job = new UIJob(SSEUIMessages.StructuredTextEditor_0) {</TD></TR><TR><TD CLASS="l">2497</TD><TD> public IStatus runInUIThread(IProgressMonitor monitor) {</TD></TR><TR CLASS="z"><TD CLASS="l">2498</TD><TD> UnknownContentTypeDialog dialog = new UnknownContentTypeDialog(getSite().getShell(), SSEUIPlugin.getDefault().getPreferenceStore(), EditorPreferenceNames.SHOW_UNKNOWN_CONTENT_TYPE_MSG);</TD></TR><TR CLASS="z"><TD CLASS="l">2499</TD><TD> dialog.open();</TD></TR><TR CLASS="z"><TD CLASS="l">2500</TD><TD> return Status.OK_STATUS;</TD></TR><TR><TD CLASS="l">2501</TD><TD> }</TD></TR><TR><TD CLASS="l">2502</TD><TD> };</TD></TR><TR CLASS="z"><TD CLASS="l">2503</TD><TD> job.schedule();</TD></TR><TR><TD CLASS="l">2504</TD><TD> }</TD></TR><TR><TD CLASS="l">2505</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2506</TD><TD> Logger.log(Logger.WARNING, "StructuredTextEditor being used without StructuredDocument"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2507</TD><TD> String name = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2508</TD><TD> if (input != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2509</TD><TD> name = input.getName();</TD></TR><TR><TD CLASS="l">2510</TD><TD> }</TD></TR><TR><TD CLASS="l">2511</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2512</TD><TD> name = "input was null"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">2513</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2514</TD><TD> Logger.log(Logger.WARNING, " Input Name: " + name); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2515</TD><TD> String implClass = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2516</TD><TD> IDocument document = getDocumentProvider().getDocument(input);</TD></TR><TR CLASS="z"><TD CLASS="l">2517</TD><TD> if (document != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2518</TD><TD> implClass = document.getClass().getName();</TD></TR><TR><TD CLASS="l">2519</TD><TD> }</TD></TR><TR><TD CLASS="l">2520</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2521</TD><TD> implClass = "document was null"; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">2522</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2523</TD><TD> Logger.log(Logger.WARNING, " Unexpected IDocumentProvider implementation: " + getDocumentProvider().getClass().getName()); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2524</TD><TD> Logger.log(Logger.WARNING, " Unexpected IDocument implementation: " + implClass); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2525</TD><TD> }</TD></TR><TR><TD CLASS="l">2526</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="47">2527</A></TD><TD> /*</TD></TR><TR><TD CLASS="l">2528</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#performRevert()</TD></TR><TR><TD CLASS="l">2529</TD><TD> */</TD></TR><TR><TD CLASS="l">2530</TD><TD> protected void performRevert() {</TD></TR><TR CLASS="z"><TD CLASS="l">2531</TD><TD> ProjectionViewer projectionViewer = (ProjectionViewer) getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2532</TD><TD> projectionViewer.setRedraw(false);</TD></TR><TR><TD CLASS="l">2533</TD><TD> try {</TD></TR><TR><TD CLASS="l">2534</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2535</TD><TD> boolean projectionMode = projectionViewer.isProjectionMode();</TD></TR><TR CLASS="z"><TD CLASS="l">2536</TD><TD> if (projectionMode) {</TD></TR><TR CLASS="z"><TD CLASS="l">2537</TD><TD> projectionViewer.disableProjection();</TD></TR><TR CLASS="z"><TD CLASS="l">2538</TD><TD> if (fProjectionModelUpdater != null)</TD></TR><TR CLASS="z"><TD CLASS="l">2539</TD><TD> fProjectionModelUpdater.uninstall();</TD></TR><TR><TD CLASS="l">2540</TD><TD> }</TD></TR><TR><TD CLASS="l">2541</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2542</TD><TD> super.performRevert();</TD></TR><TR><TD CLASS="l">2543</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2544</TD><TD> if (projectionMode) {</TD></TR><TR CLASS="z"><TD CLASS="l">2545</TD><TD> if (fProjectionModelUpdater != null)</TD></TR><TR CLASS="z"><TD CLASS="l">2546</TD><TD> fProjectionModelUpdater.install(projectionViewer);</TD></TR><TR CLASS="z"><TD CLASS="l">2547</TD><TD> projectionViewer.enableProjection();</TD></TR><TR><TD CLASS="l">2548</TD><TD> }</TD></TR><TR><TD CLASS="l">2549</TD><TD> </TD></TR><TR><TD CLASS="l">2550</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2551</TD><TD> finally {</TD></TR><TR CLASS="z"><TD CLASS="l">2552</TD><TD> projectionViewer.setRedraw(true);</TD></TR><TR CLASS="z"><TD CLASS="l">2553</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2554</TD><TD> }</TD></TR><TR><TD CLASS="l">2555</TD><TD> </TD></TR><TR><TD CLASS="l">2556</TD><TD> /**</TD></TR><TR><TD CLASS="l">2557</TD><TD> * {@inheritDoc}</TD></TR><TR><TD CLASS="l">2558</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2559</TD><TD> * Not API. May be reduced to protected method in the future.</TD></TR><TR><TD CLASS="l">2560</TD><TD> * </p></TD></TR><TR><TD CLASS="l">2561</TD><TD> */</TD></TR><TR><TD CLASS="l">2562</TD><TD> public void rememberSelection() {</TD></TR><TR><TD CLASS="l"><A NAME="48">2563</A></TD><TD> /*</TD></TR><TR><TD CLASS="l">2564</TD><TD> * This method was made public for use by editors that use</TD></TR><TR><TD CLASS="l">2565</TD><TD> * StructuredTextEditor (like some clients)</TD></TR><TR><TD CLASS="l">2566</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">2567</TD><TD> super.rememberSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">2568</TD><TD> }</TD></TR><TR><TD CLASS="l">2569</TD><TD> </TD></TR><TR><TD CLASS="l">2570</TD><TD> </TD></TR><TR><TD CLASS="l">2571</TD><TD> /**</TD></TR><TR><TD CLASS="l"><A NAME="49">2572</A></TD><TD> * both starts and resets the busy state timer</TD></TR><TR><TD CLASS="l">2573</TD><TD> */</TD></TR><TR><TD CLASS="l">2574</TD><TD> private void resetBusyState() {</TD></TR><TR><TD CLASS="l">2575</TD><TD> // reset the "busy" timeout</TD></TR><TR CLASS="z"><TD CLASS="l">2576</TD><TD> if (fBusyTimer != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2577</TD><TD> fBusyTimer.cancel();</TD></TR><TR><TD CLASS="l">2578</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2579</TD><TD> startBusyTimer();</TD></TR><TR CLASS="z"><TD CLASS="l">2580</TD><TD> }</TD></TR><TR><TD CLASS="l">2581</TD><TD> </TD></TR><TR><TD CLASS="l">2582</TD><TD> /**</TD></TR><TR><TD CLASS="l">2583</TD><TD> * {@inheritDoc}</TD></TR><TR><TD CLASS="l">2584</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2585</TD><TD> * Not API. May be reduced to protected method in the future.</TD></TR><TR><TD CLASS="l">2586</TD><TD> * </p></TD></TR><TR><TD CLASS="l">2587</TD><TD> */</TD></TR><TR><TD CLASS="l">2588</TD><TD> public void restoreSelection() {</TD></TR><TR><TD CLASS="l">2589</TD><TD> /*</TD></TR><TR><TD CLASS="l">2590</TD><TD> * This method was made public for use by editors that use</TD></TR><TR><TD CLASS="l">2591</TD><TD> * StructuredTextEditor (like some clients)</TD></TR><TR><TD CLASS="l"><A NAME="4a">2592</A></TD><TD> */</TD></TR><TR><TD CLASS="l">2593</TD><TD> // catch odd case where source viewer has no text</TD></TR><TR><TD CLASS="l">2594</TD><TD> // widget (defect</TD></TR><TR><TD CLASS="l">2595</TD><TD> // 227670)</TD></TR><TR CLASS="z"><TD CLASS="l">2596</TD><TD> if ((getSourceViewer() != null) && (getSourceViewer().getTextWidget() != null))</TD></TR><TR CLASS="z"><TD CLASS="l">2597</TD><TD> super.restoreSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">2598</TD><TD> }</TD></TR><TR><TD CLASS="l">2599</TD><TD> </TD></TR><TR><TD CLASS="l">2600</TD><TD> /*</TD></TR><TR><TD CLASS="l">2601</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="4b">2602</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2603</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#rulerContextMenuAboutToShow(org.eclipse.jface.action.IMenuManager)</TD></TR><TR><TD CLASS="l">2604</TD><TD> */</TD></TR><TR><TD CLASS="l">2605</TD><TD> protected void rulerContextMenuAboutToShow(IMenuManager menu) {</TD></TR><TR CLASS="z"><TD CLASS="l">2606</TD><TD> super.rulerContextMenuAboutToShow(menu);</TD></TR><TR><TD CLASS="l">2607</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2608</TD><TD> IMenuManager foldingMenu = new MenuManager(SSEUIMessages.Folding, "projection"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2609</TD><TD> menu.appendToGroup(ITextEditorActionConstants.GROUP_RULERS, foldingMenu);</TD></TR><TR><TD CLASS="l">2610</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2611</TD><TD> IAction action = getAction("FoldingToggle"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2612</TD><TD> foldingMenu.add(action);</TD></TR><TR CLASS="z"><TD CLASS="l">2613</TD><TD> action = getAction("FoldingExpandAll"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2614</TD><TD> foldingMenu.add(action);</TD></TR><TR CLASS="z"><TD CLASS="l">2615</TD><TD> action = getAction("FoldingCollapseAll"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2616</TD><TD> foldingMenu.add(action);</TD></TR><TR><TD CLASS="l">2617</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2618</TD><TD> IStructuredModel internalModel = getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">2619</TD><TD> if (internalModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2620</TD><TD> boolean debuggingAvailable = BreakpointProviderBuilder.getInstance().isAvailable(internalModel.getContentTypeIdentifier(), BreakpointRulerAction.getFileExtension(getEditorInput()));</TD></TR><TR CLASS="z"><TD CLASS="l">2621</TD><TD> if (debuggingAvailable) {</TD></TR><TR><TD CLASS="l">2622</TD><TD> // append actions to "debug" group (created in</TD></TR><TR><TD CLASS="l">2623</TD><TD> // AbstractDecoratedTextEditor.rulerContextMenuAboutToShow(IMenuManager)</TD></TR><TR CLASS="z"><TD CLASS="l">2624</TD><TD> menu.appendToGroup("debug", getAction(ActionDefinitionIds.TOGGLE_BREAKPOINTS)); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2625</TD><TD> menu.appendToGroup("debug", getAction(ActionDefinitionIds.MANAGE_BREAKPOINTS)); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2626</TD><TD> menu.appendToGroup("debug", getAction(ActionDefinitionIds.EDIT_BREAKPOINTS)); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">2627</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2628</TD><TD> addExtendedRulerContextMenuActions(menu);</TD></TR><TR><TD CLASS="l">2629</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2630</TD><TD> }</TD></TR><TR><TD CLASS="l">2631</TD><TD> </TD></TR><TR><TD CLASS="l">2632</TD><TD> /**</TD></TR><TR><TD CLASS="l">2633</TD><TD> * {@inheritDoc}</TD></TR><TR><TD CLASS="l">2634</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2635</TD><TD> * Overridden to expose part activation handling for multi-page editors.</TD></TR><TR><TD CLASS="l">2636</TD><TD> * </p></TD></TR><TR><TD CLASS="l">2637</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2638</TD><TD> * Not API. May be reduced to protected method in the future.</TD></TR><TR><TD CLASS="l">2639</TD><TD> * </p></TD></TR><TR><TD CLASS="l"><A NAME="4c">2640</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2641</TD><TD> * @see org.eclipse.ui.texteditor.AbstractTextEditor#safelySanityCheckState(org.eclipse.ui.IEditorInput)</TD></TR><TR><TD CLASS="l">2642</TD><TD> */</TD></TR><TR><TD CLASS="l">2643</TD><TD> public void safelySanityCheckState(IEditorInput input) {</TD></TR><TR CLASS="z"><TD CLASS="l">2644</TD><TD> super.safelySanityCheckState(input);</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="4d">2645</A></TD><TD> }</TD></TR><TR><TD CLASS="l">2646</TD><TD> </TD></TR><TR><TD CLASS="l">2647</TD><TD> protected void sanityCheckState(IEditorInput input) {</TD></TR><TR><TD CLASS="l">2648</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">2649</TD><TD> ++validateEditCount;</TD></TR><TR CLASS="z"><TD CLASS="l">2650</TD><TD> super.sanityCheckState(input);</TD></TR><TR><TD CLASS="l">2651</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2652</TD><TD> finally {</TD></TR><TR CLASS="z"><TD CLASS="l">2653</TD><TD> --validateEditCount;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="4e">2654</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2655</TD><TD> }</TD></TR><TR><TD CLASS="l">2656</TD><TD> </TD></TR><TR><TD CLASS="l">2657</TD><TD> private void savedModel() {</TD></TR><TR CLASS="z"><TD CLASS="l">2658</TD><TD> if (getInternalModel() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2659</TD><TD> getInternalModel().changedModel();</TD></TR><TR><TD CLASS="l">2660</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2661</TD><TD> }</TD></TR><TR><TD CLASS="l">2662</TD><TD> </TD></TR><TR><TD CLASS="l">2663</TD><TD> /**</TD></TR><TR><TD CLASS="l">2664</TD><TD> * Ensure that the correct IDocumentProvider is used. For direct models, a</TD></TR><TR><TD CLASS="l">2665</TD><TD> * special provider is used. For StorageEditorInputs, use a custom</TD></TR><TR><TD CLASS="l">2666</TD><TD> * provider that creates a usable ResourceAnnotationModel. For everything</TD></TR><TR><TD CLASS="l">2667</TD><TD> * else, use the base support.</TD></TR><TR><TD CLASS="l"><A NAME="4f">2668</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2669</TD><TD> * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#setDocumentProvider(org.eclipse.ui.IEditorInput)</TD></TR><TR><TD CLASS="l">2670</TD><TD> */</TD></TR><TR><TD CLASS="l">2671</TD><TD> protected void setDocumentProvider(IEditorInput input) {</TD></TR><TR CLASS="z"><TD CLASS="l">2672</TD><TD> if (input instanceof IStructuredModel) {</TD></TR><TR><TD CLASS="l">2673</TD><TD> // largely untested</TD></TR><TR CLASS="z"><TD CLASS="l">2674</TD><TD> setDocumentProvider(StructuredModelDocumentProvider.getInstance());</TD></TR><TR><TD CLASS="l">2675</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2676</TD><TD> else if (input instanceof IStorageEditorInput && !(input instanceof IFileEditorInput)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2677</TD><TD> setDocumentProvider(StorageModelProvider.getInstance());</TD></TR><TR><TD CLASS="l">2678</TD><TD> }</TD></TR><TR><TD CLASS="l">2679</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2680</TD><TD> super.setDocumentProvider(input);</TD></TR><TR><TD CLASS="l">2681</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2682</TD><TD> }</TD></TR><TR><TD CLASS="l">2683</TD><TD> </TD></TR><TR><TD CLASS="l">2684</TD><TD> /**</TD></TR><TR><TD CLASS="l">2685</TD><TD> * Set editor part associated with this editor.</TD></TR><TR><TD CLASS="l">2686</TD><TD> * <p></TD></TR><TR><TD CLASS="l">2687</TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">2688</TD><TD> * </p></TD></TR><TR><TD CLASS="l">2689</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="50">2690</A></TD><TD> * @param editorPart</TD></TR><TR><TD CLASS="l">2691</TD><TD> * editor part associated with this editor</TD></TR><TR><TD CLASS="l">2692</TD><TD> */</TD></TR><TR><TD CLASS="l">2693</TD><TD> public void setEditorPart(IEditorPart editorPart) {</TD></TR><TR CLASS="z"><TD CLASS="l">2694</TD><TD> fEditorPart = editorPart;</TD></TR><TR CLASS="z"><TD CLASS="l">2695</TD><TD> }</TD></TR><TR><TD CLASS="l">2696</TD><TD> </TD></TR><TR><TD CLASS="l">2697</TD><TD> /**</TD></TR><TR><TD CLASS="l">2698</TD><TD> * Sets the model field within this editor.</TD></TR><TR><TD CLASS="l"><A NAME="51">2699</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2700</TD><TD> * @deprecated - can eventually be eliminated</TD></TR><TR><TD CLASS="l">2701</TD><TD> */</TD></TR><TR><TD CLASS="l">2702</TD><TD> private void setModel(IStructuredModel newModel) {</TD></TR><TR CLASS="z"><TD CLASS="l">2703</TD><TD> Assert.isNotNull(getDocumentProvider(), "document provider can not be null when setting model"); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2704</TD><TD> if (fStructuredModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2705</TD><TD> if (fStructuredModel.getStructuredDocument() != null && fInternalDocumentListener != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2706</TD><TD> fStructuredModel.getStructuredDocument().removeDocumentListener(fInternalDocumentListener);</TD></TR><TR><TD CLASS="l">2707</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2708</TD><TD> fStructuredModel.removeModelStateListener(getInternalModelStateListener());</TD></TR><TR><TD CLASS="l">2709</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2710</TD><TD> fStructuredModel = newModel;</TD></TR><TR CLASS="z"><TD CLASS="l">2711</TD><TD> if (fStructuredModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2712</TD><TD> if (fStructuredModel.getStructuredDocument() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2713</TD><TD> fStructuredModel.getStructuredDocument().addDocumentListener(getInternalDocumentListener());</TD></TR><TR><TD CLASS="l">2714</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2715</TD><TD> fStructuredModel.addModelStateListener(getInternalModelStateListener());</TD></TR><TR><TD CLASS="l">2716</TD><TD> }</TD></TR><TR><TD CLASS="l">2717</TD><TD> // update() should be called whenever the model is</TD></TR><TR><TD CLASS="l">2718</TD><TD> // set or changed</TD></TR><TR CLASS="z"><TD CLASS="l">2719</TD><TD> update();</TD></TR><TR CLASS="z"><TD CLASS="l">2720</TD><TD> }</TD></TR><TR><TD CLASS="l">2721</TD><TD> </TD></TR><TR><TD CLASS="l">2722</TD><TD> /**</TD></TR><TR><TD CLASS="l">2723</TD><TD> * Sets the editor's source viewer configuration which it uses to</TD></TR><TR><TD CLASS="l"><A NAME="52">2724</A></TD><TD> * configure it's internal source viewer. This method was overwritten so</TD></TR><TR><TD CLASS="l">2725</TD><TD> * that viewer configuration could be set after editor part was created.</TD></TR><TR><TD CLASS="l">2726</TD><TD> */</TD></TR><TR><TD CLASS="l">2727</TD><TD> protected void setSourceViewerConfiguration(SourceViewerConfiguration config) {</TD></TR><TR CLASS="z"><TD CLASS="l">2728</TD><TD> super.setSourceViewerConfiguration(config);</TD></TR><TR CLASS="z"><TD CLASS="l">2729</TD><TD> StructuredTextViewer stv = getTextViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2730</TD><TD> if (stv != null) {</TD></TR><TR><TD CLASS="l">2731</TD><TD> // there should be no need to unconfigure</TD></TR><TR><TD CLASS="l">2732</TD><TD> // before configure because</TD></TR><TR><TD CLASS="l">2733</TD><TD> // configure will</TD></TR><TR><TD CLASS="l">2734</TD><TD> // also unconfigure before configuring</TD></TR><TR CLASS="z"><TD CLASS="l">2735</TD><TD> stv.unconfigure();</TD></TR><TR CLASS="z"><TD CLASS="l">2736</TD><TD> stv.configure(config);</TD></TR><TR><TD CLASS="l">2737</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2738</TD><TD> }</TD></TR><TR><TD CLASS="l">2739</TD><TD> </TD></TR><TR><TD CLASS="l">2740</TD><TD> /*</TD></TR><TR><TD CLASS="l">2741</TD><TD> * (non-Javadoc)</TD></TR><TR><TD CLASS="l"><A NAME="53">2742</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2743</TD><TD> * @see org.eclipse.ui.part.WorkbenchPart#showBusy(boolean)</TD></TR><TR><TD CLASS="l">2744</TD><TD> */</TD></TR><TR><TD CLASS="l">2745</TD><TD> public void showBusy(boolean busy) {</TD></TR><TR CLASS="z"><TD CLASS="l">2746</TD><TD> if (busy) {</TD></TR><TR CLASS="z"><TD CLASS="l">2747</TD><TD> fRememberTitle = getPartName();</TD></TR><TR><TD CLASS="l">2748</TD><TD> // update title and/or fonts and/or background</TD></TR><TR><TD CLASS="l">2749</TD><TD> //</TD></TR><TR><TD CLASS="l">2750</TD><TD> // temp solution, for testing, uses "busy"</TD></TR><TR CLASS="z"><TD CLASS="l">2751</TD><TD> setPartName(SSEUIMessages.busy); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">2752</TD><TD> }</TD></TR><TR><TD CLASS="l">2753</TD><TD> else {</TD></TR><TR><TD CLASS="l">2754</TD><TD> // reset to what it was</TD></TR><TR CLASS="z"><TD CLASS="l">2755</TD><TD> setPartName(fRememberTitle);</TD></TR><TR><TD CLASS="l">2756</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2757</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="54">2758</A></TD><TD> </TD></TR><TR><TD CLASS="l">2759</TD><TD> private void startBusyTimer() {</TD></TR><TR><TD CLASS="l">2760</TD><TD> // TODO: we need a resettable timer, so not so</TD></TR><TR><TD CLASS="l">2761</TD><TD> // many are created</TD></TR><TR CLASS="z"><TD CLASS="l">2762</TD><TD> fBusyTimer = new Timer(true);</TD></TR><TR CLASS="z"><TD CLASS="l">2763</TD><TD> fBusyTimer.schedule(new TimeOutExpired(), BUSY_STATE_DELAY);</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="56">2764</A></TD><TD> }</TD></TR><TR><TD CLASS="l">2765</TD><TD> </TD></TR><TR><TD CLASS="l">2766</TD><TD> protected void uninstallTextDragAndDrop(ISourceViewer viewer) {</TD></TR><TR><TD CLASS="l">2767</TD><TD> // do nothing</TD></TR><TR CLASS="z"><TD CLASS="l">2768</TD><TD> }</TD></TR><TR><TD CLASS="l">2769</TD><TD> </TD></TR><TR><TD CLASS="l">2770</TD><TD> /**</TD></TR><TR><TD CLASS="l">2771</TD><TD> * Update should be called whenever the model is set or changed (as in</TD></TR><TR><TD CLASS="l">2772</TD><TD> * swapped)</TD></TR><TR><TD CLASS="l">2773</TD><TD> * <p></TD></TR><TR><TD CLASS="l"><A NAME="57">2774</A></TD><TD> * Not API. May be removed in the future.</TD></TR><TR><TD CLASS="l">2775</TD><TD> * </p></TD></TR><TR><TD CLASS="l">2776</TD><TD> */</TD></TR><TR><TD CLASS="l">2777</TD><TD> public void update() {</TD></TR><TR CLASS="z"><TD CLASS="l">2778</TD><TD> if (fOutlinePage != null && fOutlinePage instanceof ConfigurableContentOutlinePage) {</TD></TR><TR CLASS="z"><TD CLASS="l">2779</TD><TD> ContentOutlineConfiguration cfg = createContentOutlineConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2780</TD><TD> ((ConfigurableContentOutlinePage) fOutlinePage).setConfiguration(cfg);</TD></TR><TR CLASS="z"><TD CLASS="l">2781</TD><TD> IStructuredModel internalModel = getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">2782</TD><TD> ((ConfigurableContentOutlinePage) fOutlinePage).setInputContentTypeIdentifier(internalModel.getContentTypeIdentifier());</TD></TR><TR CLASS="z"><TD CLASS="l">2783</TD><TD> ((ConfigurableContentOutlinePage) fOutlinePage).setInput(internalModel);</TD></TR><TR><TD CLASS="l">2784</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2785</TD><TD> if (fPropertySheetPage != null && fPropertySheetPage instanceof ConfigurablePropertySheetPage) {</TD></TR><TR CLASS="z"><TD CLASS="l">2786</TD><TD> PropertySheetConfiguration cfg = createPropertySheetConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2787</TD><TD> ((ConfigurablePropertySheetPage) fPropertySheetPage).setConfiguration(cfg);</TD></TR><TR><TD CLASS="l">2788</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2789</TD><TD> disposeModelDependentFields();</TD></TR><TR><TD CLASS="l">2790</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2791</TD><TD> fShowInTargetIds = createShowInTargetIds();</TD></TR><TR><TD CLASS="l">2792</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2793</TD><TD> if (getSourceViewerConfiguration() instanceof StructuredTextViewerConfiguration && fStatusLineLabelProvider != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2794</TD><TD> fStatusLineLabelProvider.dispose();</TD></TR><TR><TD CLASS="l">2795</TD><TD> }</TD></TR><TR><TD CLASS="l">2796</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2797</TD><TD> updateSourceViewerConfiguration();</TD></TR><TR><TD CLASS="l">2798</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2799</TD><TD> if (getSourceViewerConfiguration() instanceof StructuredTextViewerConfiguration) {</TD></TR><TR CLASS="z"><TD CLASS="l">2800</TD><TD> fStatusLineLabelProvider = ((StructuredTextViewerConfiguration) getSourceViewerConfiguration()).getStatusLineLabelProvider(getSourceViewer());</TD></TR><TR CLASS="z"><TD CLASS="l">2801</TD><TD> updateStatusLine(null);</TD></TR><TR><TD CLASS="l">2802</TD><TD> }</TD></TR><TR><TD CLASS="l">2803</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2804</TD><TD> if (fEncodingSupport != null && fEncodingSupport instanceof EncodingSupport) {</TD></TR><TR CLASS="z"><TD CLASS="l">2805</TD><TD> ((EncodingSupport) fEncodingSupport).reinitialize(getConfigurationPoints());</TD></TR><TR><TD CLASS="l">2806</TD><TD> }</TD></TR><TR><TD CLASS="l">2807</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2808</TD><TD> createModelDependentFields();</TD></TR><TR CLASS="z"><TD CLASS="l">2809</TD><TD> }</TD></TR><TR><TD CLASS="l">2810</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="58">2811</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">2812</TD><TD> * Updates all content dependent actions.</TD></TR><TR><TD CLASS="l">2813</TD><TD> */</TD></TR><TR><TD CLASS="l">2814</TD><TD> protected void updateContentDependentActions() {</TD></TR><TR CLASS="z"><TD CLASS="l">2815</TD><TD> super.updateContentDependentActions();</TD></TR><TR><TD CLASS="l">2816</TD><TD> // super.updateContentDependentActions only updates</TD></TR><TR><TD CLASS="l">2817</TD><TD> // the enable/disable</TD></TR><TR><TD CLASS="l">2818</TD><TD> // state of all</TD></TR><TR><TD CLASS="l">2819</TD><TD> // the content dependent actions.</TD></TR><TR><TD CLASS="l">2820</TD><TD> // StructuredTextEditor's undo and redo actions</TD></TR><TR><TD CLASS="l">2821</TD><TD> // have a detail label and</TD></TR><TR><TD CLASS="l">2822</TD><TD> // description.</TD></TR><TR><TD CLASS="l">2823</TD><TD> // They needed to be updated.</TD></TR><TR CLASS="z"><TD CLASS="l">2824</TD><TD> if (!fEditorDisposed)</TD></TR><TR CLASS="z"><TD CLASS="l">2825</TD><TD> updateMenuText();</TD></TR><TR CLASS="z"><TD CLASS="l">2826</TD><TD> }</TD></TR><TR><TD CLASS="l">2827</TD><TD> </TD></TR><TR><TD CLASS="l">2828</TD><TD> </TD></TR><TR><TD CLASS="l">2829</TD><TD> /**</TD></TR><TR><TD CLASS="l">2830</TD><TD> * Updates the editor context menu by creating a new context menu with the</TD></TR><TR><TD CLASS="l">2831</TD><TD> * given menu id</TD></TR><TR><TD CLASS="l">2832</TD><TD> * </TD></TR><TR><TD CLASS="l">2833</TD><TD> * @param contextMenuId</TD></TR><TR><TD CLASS="l">2834</TD><TD> * Cannot be null</TD></TR><TR><TD CLASS="l"><A NAME="59">2835</A></TD><TD> */</TD></TR><TR><TD CLASS="l">2836</TD><TD> private void updateEditorContextMenuId(String contextMenuId) {</TD></TR><TR><TD CLASS="l">2837</TD><TD> // update editor context menu id if updating to a new id or if context</TD></TR><TR><TD CLASS="l">2838</TD><TD> // menu is not already set up</TD></TR><TR CLASS="z"><TD CLASS="l">2839</TD><TD> if (!contextMenuId.equals(getEditorContextMenuId()) || (fTextContextMenu == null)) {</TD></TR><TR CLASS="z"><TD CLASS="l">2840</TD><TD> setEditorContextMenuId(contextMenuId);</TD></TR><TR><TD CLASS="l">2841</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2842</TD><TD> if (getSourceViewer() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2843</TD><TD> StyledText styledText = getSourceViewer().getTextWidget();</TD></TR><TR CLASS="z"><TD CLASS="l">2844</TD><TD> if (styledText != null) {</TD></TR><TR><TD CLASS="l">2845</TD><TD> // dispose of previous context menu</TD></TR><TR CLASS="z"><TD CLASS="l">2846</TD><TD> if (fTextContextMenu != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2847</TD><TD> fTextContextMenu.dispose();</TD></TR><TR><TD CLASS="l">2848</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2849</TD><TD> if (fTextContextMenuManager != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2850</TD><TD> fTextContextMenuManager.removeMenuListener(getContextMenuListener());</TD></TR><TR CLASS="z"><TD CLASS="l">2851</TD><TD> fTextContextMenuManager.removeAll();</TD></TR><TR CLASS="z"><TD CLASS="l">2852</TD><TD> fTextContextMenuManager.dispose();</TD></TR><TR><TD CLASS="l">2853</TD><TD> }</TD></TR><TR><TD CLASS="l">2854</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2855</TD><TD> fTextContextMenuManager = new MenuManager(getEditorContextMenuId(), getEditorContextMenuId());</TD></TR><TR CLASS="z"><TD CLASS="l">2856</TD><TD> fTextContextMenuManager.setRemoveAllWhenShown(true);</TD></TR><TR CLASS="z"><TD CLASS="l">2857</TD><TD> fTextContextMenuManager.addMenuListener(getContextMenuListener());</TD></TR><TR><TD CLASS="l">2858</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2859</TD><TD> fTextContextMenu = fTextContextMenuManager.createContextMenu(styledText);</TD></TR><TR CLASS="z"><TD CLASS="l">2860</TD><TD> styledText.setMenu(fTextContextMenu);</TD></TR><TR><TD CLASS="l">2861</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2862</TD><TD> getSite().registerContextMenu(getEditorContextMenuId(), fTextContextMenuManager, getSelectionProvider());</TD></TR><TR><TD CLASS="l">2863</TD><TD> </TD></TR><TR><TD CLASS="l">2864</TD><TD> // also register this menu for source page part and</TD></TR><TR><TD CLASS="l">2865</TD><TD> // structured text editor ids</TD></TR><TR CLASS="z"><TD CLASS="l">2866</TD><TD> String partId = getSite().getId();</TD></TR><TR CLASS="z"><TD CLASS="l">2867</TD><TD> if (partId != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2868</TD><TD> getSite().registerContextMenu(partId + EDITOR_CONTEXT_MENU_SUFFIX, fTextContextMenuManager, getSelectionProvider());</TD></TR><TR><TD CLASS="l">2869</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2870</TD><TD> getSite().registerContextMenu(EDITOR_CONTEXT_MENU_ID, fTextContextMenuManager, getSelectionProvider());</TD></TR><TR><TD CLASS="l">2871</TD><TD> }</TD></TR><TR><TD CLASS="l">2872</TD><TD> }</TD></TR><TR><TD CLASS="l">2873</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2874</TD><TD> }</TD></TR><TR><TD CLASS="l">2875</TD><TD> </TD></TR><TR><TD CLASS="l">2876</TD><TD> /**</TD></TR><TR><TD CLASS="l">2877</TD><TD> * Updates editor context menu, vertical ruler menu, help context id for</TD></TR><TR><TD CLASS="l">2878</TD><TD> * new content type</TD></TR><TR><TD CLASS="l"><A NAME="5a">2879</A></TD><TD> * </TD></TR><TR><TD CLASS="l">2880</TD><TD> * @param contentType</TD></TR><TR><TD CLASS="l">2881</TD><TD> */</TD></TR><TR><TD CLASS="l">2882</TD><TD> private void updateEditorControlsForContentType(String contentType) {</TD></TR><TR CLASS="z"><TD CLASS="l">2883</TD><TD> if (contentType == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2884</TD><TD> updateEditorContextMenuId(EDITOR_CONTEXT_MENU_ID);</TD></TR><TR CLASS="z"><TD CLASS="l">2885</TD><TD> updateRulerContextMenuId(RULER_CONTEXT_MENU_ID);</TD></TR><TR CLASS="z"><TD CLASS="l">2886</TD><TD> updateHelpContextId(ITextEditorHelpContextIds.TEXT_EDITOR);</TD></TR><TR><TD CLASS="l">2887</TD><TD> }</TD></TR><TR><TD CLASS="l">2888</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2889</TD><TD> updateEditorContextMenuId(contentType + EDITOR_CONTEXT_MENU_SUFFIX);</TD></TR><TR CLASS="z"><TD CLASS="l">2890</TD><TD> updateRulerContextMenuId(contentType + RULER_CONTEXT_MENU_SUFFIX);</TD></TR><TR CLASS="z"><TD CLASS="l">2891</TD><TD> updateHelpContextId(contentType + "_source_HelpId"); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">2892</TD><TD> </TD></TR><TR><TD CLASS="l">2893</TD><TD> /* Activate the contexts defined for this editor */</TD></TR><TR CLASS="z"><TD CLASS="l">2894</TD><TD> activateContexts((IContextService) getSite().getService(IContextService.class));</TD></TR><TR><TD CLASS="l"><A NAME="5b">2895</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2896</TD><TD> }</TD></TR><TR><TD CLASS="l">2897</TD><TD> </TD></TR><TR><TD CLASS="l">2898</TD><TD> private void updateEncodingMemento() {</TD></TR><TR CLASS="z"><TD CLASS="l">2899</TD><TD> boolean failed = false;</TD></TR><TR CLASS="z"><TD CLASS="l">2900</TD><TD> IStructuredModel internalModel = getInternalModel();</TD></TR><TR CLASS="z"><TD CLASS="l">2901</TD><TD> if (internalModel != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2902</TD><TD> IStructuredDocument doc = internalModel.getStructuredDocument();</TD></TR><TR CLASS="z"><TD CLASS="l">2903</TD><TD> EncodingMemento memento = doc.getEncodingMemento();</TD></TR><TR CLASS="z"><TD CLASS="l">2904</TD><TD> IDocumentCharsetDetector detector = internalModel.getModelHandler().getEncodingDetector();</TD></TR><TR CLASS="z"><TD CLASS="l">2905</TD><TD> if (memento != null && detector != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2906</TD><TD> detector.set(doc);</TD></TR><TR><TD CLASS="l">2907</TD><TD> try {</TD></TR><TR CLASS="z"><TD CLASS="l">2908</TD><TD> String newEncoding = detector.getEncoding();</TD></TR><TR CLASS="z"><TD CLASS="l">2909</TD><TD> if (newEncoding != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2910</TD><TD> memento.setDetectedCharsetName(newEncoding);</TD></TR><TR><TD CLASS="l">2911</TD><TD> }</TD></TR><TR><TD CLASS="l">2912</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2913</TD><TD> catch (IOException e) {</TD></TR><TR CLASS="z"><TD CLASS="l">2914</TD><TD> failed = true;</TD></TR><TR><TD CLASS="l">2915</TD><TD> }</TD></TR><TR><TD CLASS="l">2916</TD><TD> }</TD></TR><TR><TD CLASS="l">2917</TD><TD> /**</TD></TR><TR><TD CLASS="l">2918</TD><TD> * Be sure to use the new value but only if no exception</TD></TR><TR><TD CLASS="l">2919</TD><TD> * occurred. (we may find cases we need to do more error recovery</TD></TR><TR><TD CLASS="l">2920</TD><TD> * there) should be near impossible to get IOException from</TD></TR><TR><TD CLASS="l">2921</TD><TD> * processing the _document_</TD></TR><TR><TD CLASS="l">2922</TD><TD> */</TD></TR><TR CLASS="z"><TD CLASS="l">2923</TD><TD> if (!failed) {</TD></TR><TR CLASS="z"><TD CLASS="l">2924</TD><TD> doc.setEncodingMemento(memento);</TD></TR><TR><TD CLASS="l">2925</TD><TD> }</TD></TR><TR><TD CLASS="l">2926</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2927</TD><TD> }</TD></TR><TR><TD CLASS="l">2928</TD><TD> </TD></TR><TR><TD CLASS="l">2929</TD><TD> /**</TD></TR><TR><TD CLASS="l">2930</TD><TD> * Updates the help context of the editor with the given help context id</TD></TR><TR><TD CLASS="l">2931</TD><TD> * </TD></TR><TR><TD CLASS="l"><A NAME="5c">2932</A></TD><TD> * @param helpContextId</TD></TR><TR><TD CLASS="l">2933</TD><TD> * Cannot be null</TD></TR><TR><TD CLASS="l">2934</TD><TD> */</TD></TR><TR><TD CLASS="l">2935</TD><TD> private void updateHelpContextId(String helpContextId) {</TD></TR><TR CLASS="z"><TD CLASS="l">2936</TD><TD> if (!helpContextId.equals(getHelpContextId())) {</TD></TR><TR CLASS="z"><TD CLASS="l">2937</TD><TD> setHelpContextId(helpContextId);</TD></TR><TR><TD CLASS="l">2938</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2939</TD><TD> if (getSourceViewer() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2940</TD><TD> StyledText styledText = getSourceViewer().getTextWidget();</TD></TR><TR CLASS="z"><TD CLASS="l">2941</TD><TD> if (styledText != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2942</TD><TD> IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem();</TD></TR><TR CLASS="z"><TD CLASS="l">2943</TD><TD> helpSystem.setHelp(styledText, getHelpContextId());</TD></TR><TR><TD CLASS="l">2944</TD><TD> }</TD></TR><TR><TD CLASS="l">2945</TD><TD> }</TD></TR><TR><TD CLASS="l">2946</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2947</TD><TD> }</TD></TR><TR><TD CLASS="l">2948</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="5d">2949</A></TD><TD> /*</TD></TR><TR><TD CLASS="l">2950</TD><TD> * Update the hovering behavior depending on the preferences.</TD></TR><TR><TD CLASS="l">2951</TD><TD> */</TD></TR><TR><TD CLASS="l">2952</TD><TD> private void updateHoverBehavior() {</TD></TR><TR CLASS="z"><TD CLASS="l">2953</TD><TD> SourceViewerConfiguration configuration = getSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">2954</TD><TD> String[] types = configuration.getConfiguredContentTypes(getSourceViewer());</TD></TR><TR><TD CLASS="l">2955</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2956</TD><TD> for (int i = 0; i < types.length; i++) {</TD></TR><TR><TD CLASS="l">2957</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2958</TD><TD> String t = types[i];</TD></TR><TR><TD CLASS="l">2959</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2960</TD><TD> ISourceViewer sourceViewer = getSourceViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2961</TD><TD> if (sourceViewer instanceof ITextViewerExtension2) {</TD></TR><TR><TD CLASS="l">2962</TD><TD> // Remove existing hovers</TD></TR><TR CLASS="z"><TD CLASS="l">2963</TD><TD> ((ITextViewerExtension2) sourceViewer).removeTextHovers(t);</TD></TR><TR><TD CLASS="l">2964</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2965</TD><TD> int[] stateMasks = configuration.getConfiguredTextHoverStateMasks(getSourceViewer(), t);</TD></TR><TR><TD CLASS="l">2966</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2967</TD><TD> if (stateMasks != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">2968</TD><TD> for (int j = 0; j < stateMasks.length; j++) {</TD></TR><TR CLASS="z"><TD CLASS="l">2969</TD><TD> int stateMask = stateMasks[j];</TD></TR><TR CLASS="z"><TD CLASS="l">2970</TD><TD> ITextHover textHover = configuration.getTextHover(sourceViewer, t, stateMask);</TD></TR><TR CLASS="z"><TD CLASS="l">2971</TD><TD> ((ITextViewerExtension2) sourceViewer).setTextHover(textHover, t, stateMask);</TD></TR><TR><TD CLASS="l">2972</TD><TD> }</TD></TR><TR><TD CLASS="l">2973</TD><TD> }</TD></TR><TR><TD CLASS="l">2974</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">2975</TD><TD> ITextHover textHover = configuration.getTextHover(sourceViewer, t);</TD></TR><TR CLASS="z"><TD CLASS="l">2976</TD><TD> ((ITextViewerExtension2) sourceViewer).setTextHover(textHover, t, ITextViewerExtension2.DEFAULT_HOVER_STATE_MASK);</TD></TR><TR><TD CLASS="l">2977</TD><TD> }</TD></TR><TR><TD CLASS="l">2978</TD><TD> }</TD></TR><TR><TD CLASS="l">2979</TD><TD> else</TD></TR><TR CLASS="z"><TD CLASS="l">2980</TD><TD> sourceViewer.setTextHover(configuration.getTextHover(sourceViewer, t), t);</TD></TR><TR><TD CLASS="l"><A NAME="5e">2981</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">2982</TD><TD> }</TD></TR><TR><TD CLASS="l">2983</TD><TD> </TD></TR><TR><TD CLASS="l">2984</TD><TD> private void updateMenuText() {</TD></TR><TR CLASS="z"><TD CLASS="l">2985</TD><TD> ITextViewer viewer = getTextViewer();</TD></TR><TR CLASS="z"><TD CLASS="l">2986</TD><TD> StyledText widget = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2987</TD><TD> if (viewer != null)</TD></TR><TR CLASS="z"><TD CLASS="l">2988</TD><TD> widget = viewer.getTextWidget();</TD></TR><TR><TD CLASS="l">2989</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">2990</TD><TD> if (fStructuredModel != null && !fStructuredModel.isModelStateChanging() && viewer != null && widget != null && !widget.isDisposed()) {</TD></TR><TR><TD CLASS="l">2991</TD><TD> // performance: don't force an update of the action bars unless</TD></TR><TR><TD CLASS="l">2992</TD><TD> // required as it is expensive</TD></TR><TR CLASS="z"><TD CLASS="l">2993</TD><TD> String previousUndoText = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2994</TD><TD> String previousUndoDesc = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2995</TD><TD> String previousRedoText = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2996</TD><TD> String previousRedoDesc = null;</TD></TR><TR CLASS="z"><TD CLASS="l">2997</TD><TD> boolean updateActions = false;</TD></TR><TR CLASS="z"><TD CLASS="l">2998</TD><TD> IAction undoAction = getAction(ITextEditorActionConstants.UNDO);</TD></TR><TR CLASS="z"><TD CLASS="l">2999</TD><TD> IAction redoAction = getAction(ITextEditorActionConstants.REDO);</TD></TR><TR CLASS="z"><TD CLASS="l">3000</TD><TD> if (undoAction != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3001</TD><TD> previousUndoText = undoAction.getText();</TD></TR><TR CLASS="z"><TD CLASS="l">3002</TD><TD> previousUndoDesc = undoAction.getDescription();</TD></TR><TR CLASS="z"><TD CLASS="l">3003</TD><TD> updateActions = updateActions || previousUndoText == null || previousUndoDesc == null;</TD></TR><TR CLASS="z"><TD CLASS="l">3004</TD><TD> undoAction.setText(UNDO_ACTION_TEXT_DEFAULT);</TD></TR><TR CLASS="z"><TD CLASS="l">3005</TD><TD> undoAction.setDescription(UNDO_ACTION_DESC_DEFAULT);</TD></TR><TR><TD CLASS="l">3006</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3007</TD><TD> if (redoAction != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3008</TD><TD> previousRedoText = redoAction.getText();</TD></TR><TR CLASS="z"><TD CLASS="l">3009</TD><TD> previousRedoDesc = redoAction.getDescription();</TD></TR><TR CLASS="z"><TD CLASS="l">3010</TD><TD> updateActions = updateActions || previousRedoText == null || previousRedoDesc == null;</TD></TR><TR CLASS="z"><TD CLASS="l">3011</TD><TD> redoAction.setText(REDO_ACTION_TEXT_DEFAULT);</TD></TR><TR CLASS="z"><TD CLASS="l">3012</TD><TD> redoAction.setDescription(REDO_ACTION_DESC_DEFAULT);</TD></TR><TR><TD CLASS="l">3013</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3014</TD><TD> if (fStructuredModel.getUndoManager() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3015</TD><TD> IStructuredTextUndoManager undoManager = fStructuredModel.getUndoManager();</TD></TR><TR><TD CLASS="l">3016</TD><TD> // get undo command</TD></TR><TR CLASS="z"><TD CLASS="l">3017</TD><TD> Command undoCommand = undoManager.getUndoCommand();</TD></TR><TR><TD CLASS="l">3018</TD><TD> // set undo label and description</TD></TR><TR CLASS="z"><TD CLASS="l">3019</TD><TD> if (undoAction != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3020</TD><TD> undoAction.setEnabled(undoManager.undoable());</TD></TR><TR CLASS="z"><TD CLASS="l">3021</TD><TD> if (undoCommand != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3022</TD><TD> String label = undoCommand.getLabel();</TD></TR><TR CLASS="z"><TD CLASS="l">3023</TD><TD> if (label != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3024</TD><TD> String customText = MessageFormat.format(UNDO_ACTION_TEXT, new String[]{label});</TD></TR><TR CLASS="z"><TD CLASS="l">3025</TD><TD> updateActions = updateActions || customText == null || previousUndoText == null || !customText.equals(previousUndoText);</TD></TR><TR CLASS="z"><TD CLASS="l">3026</TD><TD> undoAction.setText(customText);</TD></TR><TR><TD CLASS="l">3027</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3028</TD><TD> String desc = undoCommand.getDescription();</TD></TR><TR CLASS="z"><TD CLASS="l">3029</TD><TD> if (desc != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3030</TD><TD> String customDesc = MessageFormat.format(UNDO_ACTION_DESC, new String[]{desc});</TD></TR><TR CLASS="z"><TD CLASS="l">3031</TD><TD> updateActions = updateActions || customDesc == null || previousRedoDesc == null || !customDesc.equals(previousUndoDesc);</TD></TR><TR CLASS="z"><TD CLASS="l">3032</TD><TD> undoAction.setDescription(customDesc);</TD></TR><TR><TD CLASS="l">3033</TD><TD> }</TD></TR><TR><TD CLASS="l">3034</TD><TD> }</TD></TR><TR><TD CLASS="l">3035</TD><TD> }</TD></TR><TR><TD CLASS="l">3036</TD><TD> // get redo command</TD></TR><TR CLASS="z"><TD CLASS="l">3037</TD><TD> Command redoCommand = undoManager.getRedoCommand();</TD></TR><TR><TD CLASS="l">3038</TD><TD> // set redo label and description</TD></TR><TR CLASS="z"><TD CLASS="l">3039</TD><TD> if (redoAction != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3040</TD><TD> redoAction.setEnabled(undoManager.redoable());</TD></TR><TR CLASS="z"><TD CLASS="l">3041</TD><TD> if (redoCommand != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3042</TD><TD> String label = redoCommand.getLabel();</TD></TR><TR CLASS="z"><TD CLASS="l">3043</TD><TD> if (label != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3044</TD><TD> String customText = MessageFormat.format(REDO_ACTION_TEXT, new String[]{label});</TD></TR><TR CLASS="z"><TD CLASS="l">3045</TD><TD> updateActions = updateActions || customText == null || previousRedoText == null || !customText.equals(previousRedoText);</TD></TR><TR CLASS="z"><TD CLASS="l">3046</TD><TD> redoAction.setText(customText);</TD></TR><TR><TD CLASS="l">3047</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3048</TD><TD> String desc = redoCommand.getDescription();</TD></TR><TR CLASS="z"><TD CLASS="l">3049</TD><TD> if (desc != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3050</TD><TD> String customDesc = MessageFormat.format(REDO_ACTION_DESC, new String[]{desc});</TD></TR><TR CLASS="z"><TD CLASS="l">3051</TD><TD> updateActions = updateActions || customDesc == null || previousRedoDesc == null || !customDesc.equals(previousRedoDesc);</TD></TR><TR CLASS="z"><TD CLASS="l">3052</TD><TD> redoAction.setDescription(customDesc);</TD></TR><TR><TD CLASS="l">3053</TD><TD> }</TD></TR><TR><TD CLASS="l">3054</TD><TD> }</TD></TR><TR><TD CLASS="l">3055</TD><TD> }</TD></TR><TR><TD CLASS="l">3056</TD><TD> }</TD></TR><TR><TD CLASS="l">3057</TD><TD> // tell the action bars to update</TD></TR><TR CLASS="z"><TD CLASS="l">3058</TD><TD> if (updateActions) {</TD></TR><TR CLASS="z"><TD CLASS="l">3059</TD><TD> if (getEditorSite().getActionBars() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3060</TD><TD> getEditorSite().getActionBars().updateActionBars();</TD></TR><TR><TD CLASS="l">3061</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3062</TD><TD> else if (getEditorPart() != null && getEditorPart().getEditorSite().getActionBars() != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3063</TD><TD> getEditorPart().getEditorSite().getActionBars().updateActionBars();</TD></TR><TR><TD CLASS="l">3064</TD><TD> }</TD></TR><TR><TD CLASS="l">3065</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="60">3066</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3067</TD><TD> }</TD></TR><TR><TD CLASS="l">3068</TD><TD> </TD></TR><TR><TD CLASS="l">3069</TD><TD> void updateRangeIndication(ISelection selection) {</TD></TR><TR CLASS="z"><TD CLASS="l">3070</TD><TD> boolean rangeUpdated = false;</TD></TR><TR CLASS="z"><TD CLASS="l">3071</TD><TD> if (selection instanceof IStructuredSelection && !((IStructuredSelection) selection).isEmpty()) {</TD></TR><TR CLASS="z"><TD CLASS="l">3072</TD><TD> Object[] objects = ((IStructuredSelection) selection).toArray();</TD></TR><TR CLASS="z"><TD CLASS="l">3073</TD><TD> if (objects.length > 0 && objects[0] instanceof IndexedRegion) {</TD></TR><TR CLASS="z"><TD CLASS="l">3074</TD><TD> int start = ((IndexedRegion) objects[0]).getStartOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">3075</TD><TD> int end = ((IndexedRegion) objects[0]).getEndOffset();</TD></TR><TR CLASS="z"><TD CLASS="l">3076</TD><TD> if (objects.length > 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">3077</TD><TD> for (int i = 1; i < objects.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">3078</TD><TD> start = Math.min(start, ((IndexedRegion) objects[i]).getStartOffset());</TD></TR><TR CLASS="z"><TD CLASS="l">3079</TD><TD> end = Math.max(end, ((IndexedRegion) objects[i]).getEndOffset());</TD></TR><TR><TD CLASS="l">3080</TD><TD> }</TD></TR><TR><TD CLASS="l">3081</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3082</TD><TD> getSourceViewer().setRangeIndication(start, end - start, false);</TD></TR><TR CLASS="z"><TD CLASS="l">3083</TD><TD> rangeUpdated = true;</TD></TR><TR><TD CLASS="l">3084</TD><TD> }</TD></TR><TR><TD CLASS="l">3085</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3086</TD><TD> if (!rangeUpdated) {</TD></TR><TR CLASS="z"><TD CLASS="l">3087</TD><TD> if (selection instanceof ITextSelection) {</TD></TR><TR CLASS="z"><TD CLASS="l">3088</TD><TD> getSourceViewer().setRangeIndication(((ITextSelection) selection).getOffset(), ((ITextSelection) selection).getLength(), false);</TD></TR><TR><TD CLASS="l">3089</TD><TD> }</TD></TR><TR><TD CLASS="l">3090</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">3091</TD><TD> getSourceViewer().removeRangeIndication();</TD></TR><TR><TD CLASS="l">3092</TD><TD> }</TD></TR><TR><TD CLASS="l">3093</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3094</TD><TD> }</TD></TR><TR><TD CLASS="l">3095</TD><TD> </TD></TR><TR><TD CLASS="l">3096</TD><TD> </TD></TR><TR><TD CLASS="l">3097</TD><TD> /**</TD></TR><TR><TD CLASS="l">3098</TD><TD> * Updates the editor vertical ruler menu by creating a new vertical ruler</TD></TR><TR><TD CLASS="l">3099</TD><TD> * context menu with the given menu id</TD></TR><TR><TD CLASS="l">3100</TD><TD> * </TD></TR><TR><TD CLASS="l">3101</TD><TD> * @param rulerMenuId</TD></TR><TR><TD CLASS="l">3102</TD><TD> * Cannot be null</TD></TR><TR><TD CLASS="l"><A NAME="61">3103</A></TD><TD> */</TD></TR><TR><TD CLASS="l">3104</TD><TD> private void updateRulerContextMenuId(String rulerMenuId) {</TD></TR><TR><TD CLASS="l">3105</TD><TD> // update ruler context menu id if updating to a new id or if context</TD></TR><TR><TD CLASS="l">3106</TD><TD> // menu is not already set up</TD></TR><TR CLASS="z"><TD CLASS="l">3107</TD><TD> if (!rulerMenuId.equals(getRulerContextMenuId()) || (fRulerContextMenu == null)) {</TD></TR><TR CLASS="z"><TD CLASS="l">3108</TD><TD> setRulerContextMenuId(rulerMenuId);</TD></TR><TR><TD CLASS="l">3109</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3110</TD><TD> if (getVerticalRuler() != null) {</TD></TR><TR><TD CLASS="l">3111</TD><TD> // dispose of previous ruler context menu</TD></TR><TR CLASS="z"><TD CLASS="l">3112</TD><TD> if (fRulerContextMenu != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3113</TD><TD> fRulerContextMenu.dispose();</TD></TR><TR><TD CLASS="l">3114</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3115</TD><TD> if (fRulerContextMenuManager != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3116</TD><TD> fRulerContextMenuManager.removeMenuListener(getContextMenuListener());</TD></TR><TR CLASS="z"><TD CLASS="l">3117</TD><TD> fRulerContextMenuManager.removeAll();</TD></TR><TR CLASS="z"><TD CLASS="l">3118</TD><TD> fRulerContextMenuManager.dispose();</TD></TR><TR><TD CLASS="l">3119</TD><TD> }</TD></TR><TR><TD CLASS="l">3120</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3121</TD><TD> fRulerContextMenuManager = new MenuManager(getRulerContextMenuId(), getRulerContextMenuId());</TD></TR><TR CLASS="z"><TD CLASS="l">3122</TD><TD> fRulerContextMenuManager.setRemoveAllWhenShown(true);</TD></TR><TR CLASS="z"><TD CLASS="l">3123</TD><TD> fRulerContextMenuManager.addMenuListener(getContextMenuListener());</TD></TR><TR><TD CLASS="l">3124</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3125</TD><TD> Control rulerControl = getVerticalRuler().getControl();</TD></TR><TR CLASS="z"><TD CLASS="l">3126</TD><TD> fRulerContextMenu = fRulerContextMenuManager.createContextMenu(rulerControl);</TD></TR><TR CLASS="z"><TD CLASS="l">3127</TD><TD> rulerControl.setMenu(fRulerContextMenu);</TD></TR><TR><TD CLASS="l">3128</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3129</TD><TD> getSite().registerContextMenu(getRulerContextMenuId(), fRulerContextMenuManager, getSelectionProvider());</TD></TR><TR><TD CLASS="l">3130</TD><TD> </TD></TR><TR><TD CLASS="l">3131</TD><TD> // also register this menu for source page part and structured</TD></TR><TR><TD CLASS="l">3132</TD><TD> // text editor ids</TD></TR><TR CLASS="z"><TD CLASS="l">3133</TD><TD> String partId = getSite().getId();</TD></TR><TR CLASS="z"><TD CLASS="l">3134</TD><TD> if (partId != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3135</TD><TD> getSite().registerContextMenu(partId + RULER_CONTEXT_MENU_SUFFIX, fRulerContextMenuManager, getSelectionProvider());</TD></TR><TR><TD CLASS="l">3136</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3137</TD><TD> getSite().registerContextMenu(RULER_CONTEXT_MENU_ID, fRulerContextMenuManager, getSelectionProvider());</TD></TR><TR><TD CLASS="l">3138</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="62">3139</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3140</TD><TD> }</TD></TR><TR><TD CLASS="l">3141</TD><TD> </TD></TR><TR><TD CLASS="l">3142</TD><TD> private void updateSourceViewerConfiguration() {</TD></TR><TR CLASS="z"><TD CLASS="l">3143</TD><TD> SourceViewerConfiguration configuration = getSourceViewerConfiguration();</TD></TR><TR><TD CLASS="l">3144</TD><TD> // no need to update source viewer configuration if one does not exist</TD></TR><TR><TD CLASS="l">3145</TD><TD> // yet</TD></TR><TR CLASS="z"><TD CLASS="l">3146</TD><TD> if (configuration == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3147</TD><TD> return;</TD></TR><TR><TD CLASS="l">3148</TD><TD> }</TD></TR><TR><TD CLASS="l">3149</TD><TD> // do not configure source viewer configuration twice</TD></TR><TR CLASS="z"><TD CLASS="l">3150</TD><TD> boolean configured = false;</TD></TR><TR><TD CLASS="l">3151</TD><TD> </TD></TR><TR><TD CLASS="l">3152</TD><TD> // structuredtextviewer only works with</TD></TR><TR><TD CLASS="l">3153</TD><TD> // structuredtextviewerconfiguration</TD></TR><TR CLASS="z"><TD CLASS="l">3154</TD><TD> if (!(configuration instanceof StructuredTextViewerConfiguration)) {</TD></TR><TR CLASS="z"><TD CLASS="l">3155</TD><TD> ConfigurationAndTarget cat = createSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">3156</TD><TD> fViewerConfigurationTargetId = cat.getTargetId();</TD></TR><TR CLASS="z"><TD CLASS="l">3157</TD><TD> configuration = cat.getConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">3158</TD><TD> setSourceViewerConfiguration(configuration);</TD></TR><TR CLASS="z"><TD CLASS="l">3159</TD><TD> configured = true;</TD></TR><TR><TD CLASS="l">3160</TD><TD> }</TD></TR><TR><TD CLASS="l">3161</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">3162</TD><TD> ConfigurationAndTarget cat = createSourceViewerConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">3163</TD><TD> StructuredTextViewerConfiguration newViewerConfiguration = cat.getConfiguration();</TD></TR><TR CLASS="z"><TD CLASS="l">3164</TD><TD> if (!(cat.getTargetId().equals(fViewerConfigurationTargetId))) {</TD></TR><TR><TD CLASS="l">3165</TD><TD> // d282894 use newViewerConfiguration</TD></TR><TR CLASS="z"><TD CLASS="l">3166</TD><TD> fViewerConfigurationTargetId = cat.getTargetId();</TD></TR><TR CLASS="z"><TD CLASS="l">3167</TD><TD> configuration = newViewerConfiguration;</TD></TR><TR CLASS="z"><TD CLASS="l">3168</TD><TD> setSourceViewerConfiguration(configuration);</TD></TR><TR CLASS="z"><TD CLASS="l">3169</TD><TD> configured = true;</TD></TR><TR><TD CLASS="l">3170</TD><TD> }</TD></TR><TR><TD CLASS="l">3171</TD><TD> }</TD></TR><TR><TD CLASS="l">3172</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3173</TD><TD> if (getSourceViewer() != null) {</TD></TR><TR><TD CLASS="l">3174</TD><TD> // not sure if really need to reconfigure when input changes</TD></TR><TR><TD CLASS="l">3175</TD><TD> // (maybe only need to reset viewerconfig's document)</TD></TR><TR CLASS="z"><TD CLASS="l">3176</TD><TD> if (!configured)</TD></TR><TR CLASS="z"><TD CLASS="l">3177</TD><TD> getSourceViewer().configure(configuration);</TD></TR><TR CLASS="z"><TD CLASS="l">3178</TD><TD> IAction contentAssistAction = getAction(StructuredTextEditorActionConstants.ACTION_NAME_CONTENTASSIST_PROPOSALS);</TD></TR><TR CLASS="z"><TD CLASS="l">3179</TD><TD> if (contentAssistAction instanceof IUpdate) {</TD></TR><TR CLASS="z"><TD CLASS="l">3180</TD><TD> ((IUpdate) contentAssistAction).update();</TD></TR><TR><TD CLASS="l">3181</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3182</TD><TD> IAction openHyperlinkAction = getAction(StructuredTextEditorActionConstants.ACTION_NAME_OPEN_FILE);</TD></TR><TR CLASS="z"><TD CLASS="l">3183</TD><TD> if (openHyperlinkAction instanceof OpenHyperlinkAction) {</TD></TR><TR CLASS="z"><TD CLASS="l">3184</TD><TD> ((OpenHyperlinkAction) openHyperlinkAction).setHyperlinkDetectors(getSourceViewerConfiguration().getHyperlinkDetectors(getSourceViewer()));</TD></TR><TR><TD CLASS="l">3185</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="63">3186</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3187</TD><TD> }</TD></TR><TR><TD CLASS="l">3188</TD><TD> </TD></TR><TR><TD CLASS="l">3189</TD><TD> protected void updateStatusField(String category) {</TD></TR><TR CLASS="z"><TD CLASS="l">3190</TD><TD> super.updateStatusField(category);</TD></TR><TR><TD CLASS="l">3191</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3192</TD><TD> if (category == null)</TD></TR><TR CLASS="z"><TD CLASS="l">3193</TD><TD> return;</TD></TR><TR><TD CLASS="l">3194</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3195</TD><TD> if (StructuredTextEditorActionConstants.STATUS_CATEGORY_OFFSET.equals(category)) {</TD></TR><TR CLASS="z"><TD CLASS="l">3196</TD><TD> IStatusField field = getStatusField(category);</TD></TR><TR CLASS="z"><TD CLASS="l">3197</TD><TD> if (field != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3198</TD><TD> Point selection = getTextViewer().getTextWidget().getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">3199</TD><TD> int offset1 = widgetOffset2ModelOffset(getSourceViewer(), selection.x);</TD></TR><TR CLASS="z"><TD CLASS="l">3200</TD><TD> int offset2 = widgetOffset2ModelOffset(getSourceViewer(), selection.y);</TD></TR><TR CLASS="z"><TD CLASS="l">3201</TD><TD> String text = null;</TD></TR><TR CLASS="z"><TD CLASS="l">3202</TD><TD> if (offset1 != offset2)</TD></TR><TR CLASS="z"><TD CLASS="l">3203</TD><TD> text = "[" + offset1 + "-" + offset2 + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$</TD></TR><TR><TD CLASS="l">3204</TD><TD> else</TD></TR><TR CLASS="z"><TD CLASS="l">3205</TD><TD> text = "[ " + offset1 + " ]"; //$NON-NLS-1$ //$NON-NLS-2$</TD></TR><TR CLASS="z"><TD CLASS="l">3206</TD><TD> field.setText(text == null ? fErrorLabel : text);</TD></TR><TR><TD CLASS="l">3207</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="34">3208</A></TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3209</TD><TD> }</TD></TR><TR><TD CLASS="l">3210</TD><TD> </TD></TR><TR><TD CLASS="l">3211</TD><TD> public Annotation gotoAnnotation(boolean forward) {</TD></TR><TR CLASS="z"><TD CLASS="l">3212</TD><TD> Annotation result = super.gotoAnnotation(forward);</TD></TR><TR CLASS="z"><TD CLASS="l">3213</TD><TD> if(result != null)</TD></TR><TR CLASS="z"><TD CLASS="l">3214</TD><TD> fSelectionChangedFromGoto = true;</TD></TR><TR CLASS="z"><TD CLASS="l">3215</TD><TD> return result;</TD></TR><TR><TD CLASS="l">3216</TD><TD> }</TD></TR><TR><TD CLASS="l"><A NAME="64">3217</A></TD><TD> </TD></TR><TR><TD CLASS="l">3218</TD><TD> void updateStatusLine(ISelection selection) {</TD></TR><TR><TD CLASS="l">3219</TD><TD> // Bug 210481 - Don't update the status line if the selection</TD></TR><TR><TD CLASS="l">3220</TD><TD> // was caused by go to navigation</TD></TR><TR CLASS="z"><TD CLASS="l">3221</TD><TD> if(fSelectionChangedFromGoto) {</TD></TR><TR CLASS="z"><TD CLASS="l">3222</TD><TD> fSelectionChangedFromGoto = false;</TD></TR><TR CLASS="z"><TD CLASS="l">3223</TD><TD> return;</TD></TR><TR><TD CLASS="l">3224</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3225</TD><TD> IStatusLineManager statusLineManager = getEditorSite().getActionBars().getStatusLineManager();</TD></TR><TR CLASS="z"><TD CLASS="l">3226</TD><TD> if (fStatusLineLabelProvider != null && statusLineManager != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3227</TD><TD> String text = null;</TD></TR><TR CLASS="z"><TD CLASS="l">3228</TD><TD> Image image = null;</TD></TR><TR CLASS="z"><TD CLASS="l">3229</TD><TD> if (selection instanceof IStructuredSelection && !selection.isEmpty()) {</TD></TR><TR CLASS="z"><TD CLASS="l">3230</TD><TD> Object firstElement = ((IStructuredSelection) selection).getFirstElement();</TD></TR><TR CLASS="z"><TD CLASS="l">3231</TD><TD> if (firstElement != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3232</TD><TD> text = fStatusLineLabelProvider.getText(firstElement);</TD></TR><TR CLASS="z"><TD CLASS="l">3233</TD><TD> image = fStatusLineLabelProvider.getImage((firstElement));</TD></TR><TR><TD CLASS="l">3234</TD><TD> }</TD></TR><TR><TD CLASS="l">3235</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3236</TD><TD> if (image == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3237</TD><TD> statusLineManager.setMessage(text);</TD></TR><TR><TD CLASS="l">3238</TD><TD> }</TD></TR><TR><TD CLASS="l">3239</TD><TD> else {</TD></TR><TR CLASS="z"><TD CLASS="l">3240</TD><TD> statusLineManager.setMessage(image, text);</TD></TR><TR><TD CLASS="l">3241</TD><TD> }</TD></TR><TR><TD CLASS="l">3242</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3243</TD><TD> }</TD></TR><TR><TD CLASS="l">3244</TD><TD> </TD></TR><TR><TD CLASS="l">3245</TD><TD> /**</TD></TR><TR><TD CLASS="l">3246</TD><TD> * Returns the signed current selection.</TD></TR><TR><TD CLASS="l">3247</TD><TD> * The length will be negative if the resulting selection</TD></TR><TR><TD CLASS="l">3248</TD><TD> * is right-to-left (RtoL).</TD></TR><TR><TD CLASS="l">3249</TD><TD> * <p></TD></TR><TR><TD CLASS="l">3250</TD><TD> * The selection offset is model based.</TD></TR><TR><TD CLASS="l">3251</TD><TD> * </p></TD></TR><TR><TD CLASS="l">3252</TD><TD> *</TD></TR><TR><TD CLASS="l"><A NAME="31">3253</A></TD><TD> * @param sourceViewer the source viewer</TD></TR><TR><TD CLASS="l">3254</TD><TD> * @return a region denoting the current signed selection, for a resulting RtoL selections length is < 0</TD></TR><TR><TD CLASS="l">3255</TD><TD> */</TD></TR><TR><TD CLASS="l">3256</TD><TD> IRegion getSignedSelection(ISourceViewer sourceViewer) {</TD></TR><TR CLASS="z"><TD CLASS="l">3257</TD><TD> StyledText text= sourceViewer.getTextWidget();</TD></TR><TR CLASS="z"><TD CLASS="l">3258</TD><TD> Point selection= text.getSelectionRange();</TD></TR><TR><TD CLASS="l">3259</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3260</TD><TD> if (text.getCaretOffset() == selection.x) {</TD></TR><TR CLASS="z"><TD CLASS="l">3261</TD><TD> selection.x= selection.x + selection.y;</TD></TR><TR CLASS="z"><TD CLASS="l">3262</TD><TD> selection.y= -selection.y;</TD></TR><TR><TD CLASS="l">3263</TD><TD> }</TD></TR><TR><TD CLASS="l">3264</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3265</TD><TD> selection.x= widgetOffset2ModelOffset(sourceViewer, selection.x);</TD></TR><TR><TD CLASS="l">3266</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">3267</TD><TD> return new Region(selection.x, selection.y);</TD></TR><TR><TD CLASS="l">3268</TD><TD> }</TD></TR><TR><TD CLASS="l">3269</TD><TD> </TD></TR><TR><TD CLASS="l">3270</TD><TD> protected SourceViewerDecorationSupport getSourceViewerDecorationSupport(ISourceViewer viewer) {</TD></TR><TR><TD CLASS="l"><A NAME="32">3271</A></TD><TD> /* Removed workaround for Bug [206913] source annotations are not painting in source editors.</TD></TR><TR><TD CLASS="l">3272</TD><TD> * With the new presentation reconciler, we no longer need to force the painting. This</TD></TR><TR><TD CLASS="l">3273</TD><TD> * actually caused Bug [219776] Wrong annotation display on macs. We forced the</TD></TR><TR><TD CLASS="l">3274</TD><TD> * Squiggles strategy, even when the native problem underline was specified for annotations */</TD></TR><TR CLASS="z"><TD CLASS="l">3275</TD><TD> return super.getSourceViewerDecorationSupport(viewer);</TD></TR><TR><TD CLASS="l">3276</TD><TD> }</TD></TR><TR><TD CLASS="l">3277</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="43">3278</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">3279</TD><TD> * Installs semantic highlighting on the editor</TD></TR><TR><TD CLASS="l">3280</TD><TD> */</TD></TR><TR><TD CLASS="l">3281</TD><TD> private void installSemanticHighlighting() {</TD></TR><TR CLASS="z"><TD CLASS="l">3282</TD><TD> if (fSemanticManager == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3283</TD><TD> fSemanticManager = new SemanticHighlightingManager();</TD></TR><TR CLASS="z"><TD CLASS="l">3284</TD><TD> fSemanticManager.install(this, (StructuredTextViewer) getSourceViewer(), getPreferenceStore(), getSourceViewerConfiguration(), getInternalModel().getContentTypeIdentifier());</TD></TR><TR><TD CLASS="l">3285</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3286</TD><TD> }</TD></TR><TR><TD CLASS="l">3287</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="55">3288</A></TD><TD> /**</TD></TR><TR><TD CLASS="l">3289</TD><TD> * Uninstalls semantic highlighting on the editor and performs cleanup</TD></TR><TR><TD CLASS="l">3290</TD><TD> */</TD></TR><TR><TD CLASS="l">3291</TD><TD> private void uninstallSemanticHighlighting() {</TD></TR><TR CLASS="z"><TD CLASS="l">3292</TD><TD> if (fSemanticManager != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">3293</TD><TD> fSemanticManager.uninstall();</TD></TR><TR CLASS="z"><TD CLASS="l">3294</TD><TD> fSemanticManager = null;</TD></TR><TR><TD CLASS="l">3295</TD><TD> }</TD></TR><TR CLASS="z"><TD CLASS="l">3296</TD><TD> }</TD></TR><TR><TD CLASS="l">3297</TD><TD>}</TD></TR></TABLE><P></P><TABLE CLASS="hdft" CELLSPACING="0" WIDTH="100%"><TR><TD CLASS="nv">[<A HREF="../xslUnitTestCoverage.html">all classes</A>][<A HREF="79.html">org.eclipse.wst.sse.ui</A>]</TD></TR><TR><TD CLASS="tl"><A HREF="http://www.eclemma.org/support.html">EMMA 2.0.5312 EclEmma Fix 1</A> (C) Vladimir Roubtsov</TD></TR></TABLE></BODY></HTML> |