blob: 8b0be1166f6ca31273640632fb0adfbbfb54b813 [file] [log] [blame]
<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">&lt;static initializer&gt;</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> * &lt;p&gt;</TD></TR><TR><TD CLASS="l">193</TD><TD> * This class is not meant to be subclassed.&lt;br /&gt;</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> * &lt;/p&gt;</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() &amp;&amp; (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 &amp;&amp; (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(&#34;problem trying to configure after model change&#34;, 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 &#34;call out&#34; 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 &gt; -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 &#34;bouncing&#34; 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 &amp;&amp; getSourceViewer().getTextWidget() != null &amp;&amp; !getSourceViewer().getTextWidget().isDisposed() &amp;&amp; !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 &gt; 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 &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">443</TD><TD>                                                                                for (int i = 1; i &lt; 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 &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">454</TD><TD>                                                                                for (int i = 1; i &lt; 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 &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">465</TD><TD>                                                                                for (int i = 1; i &lt; 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 &gt; -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 &#34;hybrid&#34; 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 &gt; 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() + &#34;:&#34; + getLength() + &#34;@&#34; + 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 &lt; 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) &amp;&amp; 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 &lt; 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 &lt; 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() &amp;&amp; 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 &#34;gone&#34;, 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 &amp;&amp; !(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 &amp;&amp; !(selection instanceof ITextSelection) &amp;&amp; !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 &gt; 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 &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">806</TD><TD>                                                        for (int i = 1; i &lt; 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 &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">817</TD><TD>                                                        for (int i = 1; i &lt; 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 &gt; -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 &amp;&amp; !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 = &#34;.&#34;; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">874</TD><TD>        private static final String EDITOR_CONTEXT_MENU_ID = &#34;org.eclipse.wst.sse.ui.StructuredTextEditor.EditorContext&#34;; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">875</TD><TD>        private static final String EDITOR_CONTEXT_MENU_SUFFIX = &#34;.source.EditorContext&#34;; //$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 = &#34;org.eclipse.wst.sse.ui.structuredTextEditorScope&#34;; //$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$ = &#34;Redo: {0}.&#34;</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$ = &#34;Redo Text Change.&#34;</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$ = &#34;&amp;Redo {0} @Ctrl+Y&#34;</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$ = &#34;&amp;Redo Text Change @Ctrl+Y&#34;</TD></TR><TR><TD CLASS="l">887</TD><TD>        private static final String RULER_CONTEXT_MENU_ID = &#34;org.eclipse.wst.sse.ui.StructuredTextEditor.RulerContext&#34;; //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">888</TD><TD>        private static final String RULER_CONTEXT_MENU_SUFFIX = &#34;.source.RulerContext&#34;; //$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 = &#34;_&#34;; //$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$ = &#34;Undo: {0}.&#34;</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$ = &#34;Undo Text Change.&#34;</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$ = &#34;&amp;Undo {0} @Ctrl+Z&#34;</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$ = &#34;&amp;Undo Text Change @Ctrl+Z&#34;</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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &#34;endBackgroundOperation&#34; 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 &lt; 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 &lt; 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 &lt; ids.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1085</TD><TD>                        definitions = builder.getDefinitions(&#34;activecontexts&#34;, ids[i]); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1086</TD><TD>                        if(definitions != null &amp;&amp; definitions.length &gt; 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 &lt; configurationIds.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1104</TD><TD>                        String[] definitions = builder.getDefinitions(&#34;preferencepages&#34;, configurationIds[i]); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1105</TD><TD>                        for (int j = 0; j &lt; 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 &amp;&amp; someIds.length() &gt; 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 &lt; 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 &lt; 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, &#34;Editor_Cut_&#34;, 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, &#34;Editor_Paste_&#34;, 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, &#34;Editor_Delete_&#34;, 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 &amp;&amp; i &lt; 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[]{'(', ')', '{', '}', '[', ']', '&lt;', '&gt;', '&#34;', '&#34;', '\'', '\''});</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 &amp;&amp; i &lt; 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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &amp;&amp; i &lt; 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 &lt; configurationIds.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">1374</TD><TD>                        String[] definitions = builder.getDefinitions(&#34;showintarget&#34;, configurationIds[i]); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">1375</TD><TD>                        for (int j = 0; j &lt; 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 &amp;&amp; someIds.length() &gt; 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 &lt; 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 = &#34;org.eclipse.ui.navigator.ProjectExplorer&#34;; //$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 &amp;&amp; i &lt; 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(&#34;setTextEditor&#34;, 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(&#34;setTextEditor&#34;, 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(&#34;setTextEditor&#34;, 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(&#34;Problem creating ISourceEditingTextTools implementation&#34;, 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 &amp;&amp; i &lt; 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() + &#34;#default&#34;; //$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(&#34;Source Editor&#34;, &#34;StructuredTextEditor::dispose entry&#34;); //$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(&#34;Total calls to getAdapter: &#34; + adapterRequests); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1509</TD><TD>                        System.out.println(&#34;Total time in getAdapter: &#34; + adapterTime); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1510</TD><TD>                        System.out.println(&#34;Average time per call: &#34; + (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 &amp;&amp; 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 &amp;&amp; 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(&#34;Source Editor&#34;, &#34;StructuredTextEditor::dispose exit&#34;); //$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 &amp;&amp; !fisReleased &amp;&amp; !(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() &amp; 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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; !(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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &#34;inbetween&#34; 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 &#34;reset&#34; 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>                        // &#34;busy state&#34;</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) &amp;&amp; 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 &amp;&amp; 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(&#34;Total calls to getAdapter: &#34; + adapterRequests); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1903</TD><TD>                        System.out.println(&#34;Total time in getAdapter: &#34; + adapterTime); //$NON-NLS-1$</TD></TR><TR><TD CLASS="l">1904</TD><TD>                        System.out.println(&#34;Average time per call: &#34; + (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 &amp;&amp; getSourceViewer().getTextWidget() != null &amp;&amp; !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 = &#34;0:0&#34;; //$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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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(), &#34;Program Info Only: document provider was null when model requested&#34;); //$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 &amp;&amp; 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 &amp;&amp; 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 &#34;first time&#34; 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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &gt; 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 &lt; 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) &gt; -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 &gt;= visibleRegion.getOffset() &amp;&amp; targetOffset &lt;= 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() &lt; 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() &amp;&amp; (fProjectionSupport == null) &amp;&amp; (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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &amp;&amp; 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(&#34;org.eclipse.ui.workbench.texteditor.error&#34;); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2431</TD><TD>                fProjectionSupport.addSummarizableAnnotationType(&#34;org.eclipse.ui.workbench.texteditor.warning&#34;); //$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 &amp;&amp; i &lt; 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 &amp;&amp; i &lt; 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 &lt;code&gt;true&lt;/code&gt; 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, &#34;StructuredTextEditor being used without StructuredDocument&#34;); //$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 = &#34;input was null&#34;; //$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, &#34;         Input Name: &#34; + 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 = &#34;document was null&#34;; //$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, &#34;        Unexpected IDocumentProvider implementation: &#34; + getDocumentProvider().getClass().getName()); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2524</TD><TD>                Logger.log(Logger.WARNING, &#34;        Unexpected IDocument implementation: &#34; + 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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &#34;busy&#34; 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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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) &amp;&amp; (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, &#34;projection&#34;); //$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(&#34;FoldingToggle&#34;); //$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(&#34;FoldingExpandAll&#34;); //$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(&#34;FoldingCollapseAll&#34;); //$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 &#34;debug&#34; 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(&#34;debug&#34;, getAction(ActionDefinitionIds.TOGGLE_BREAKPOINTS)); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2625</TD><TD>                                menu.appendToGroup(&#34;debug&#34;, getAction(ActionDefinitionIds.MANAGE_BREAKPOINTS)); //$NON-NLS-1$</TD></TR><TR CLASS="z"><TD CLASS="l">2626</TD><TD>                                menu.appendToGroup(&#34;debug&#34;, 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>         * &lt;p&gt;</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>         * &lt;/p&gt;</TD></TR><TR><TD CLASS="l">2637</TD><TD>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &amp;&amp; !(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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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(), &#34;document provider can not be null when setting model&#34;); //$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 &amp;&amp; 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 &#34;busy&#34;</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>         * &lt;p&gt;</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>         * &lt;/p&gt;</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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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 &amp;&amp; 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 + &#34;_source_HelpId&#34;); //$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 &amp;&amp; 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 &lt; 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 &lt; 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 &amp;&amp; !fStructuredModel.isModelStateChanging() &amp;&amp; viewer != null &amp;&amp; widget != null &amp;&amp; !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 &amp;&amp; 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 &amp;&amp; !((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 &gt; 0 &amp;&amp; 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 &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">3077</TD><TD>                                        for (int i = 1; i &lt; 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 = &#34;[&#34; + offset1 + &#34;-&#34; + offset2 + &#34;]&#34;; //$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 = &#34;[ &#34; + offset1 + &#34; ]&#34;; //$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 &amp;&amp; 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 &amp;&amp; !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>         * &lt;p&gt;</TD></TR><TR><TD CLASS="l">3250</TD><TD>         * The selection offset is model based.</TD></TR><TR><TD CLASS="l">3251</TD><TD>         * &lt;/p&gt;</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 &lt; 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>