Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 77446 Details for
Bug 201870
[terminal][api] Hyperlinks support in Terminal
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
patch for org.eclipse.tm.terminal
textviewer_patch.txt (text/plain), 13.99 KB, created by
Mikhail Kalugin
on 2007-08-31 04:36:46 EDT
(
hide
)
Description:
patch for org.eclipse.tm.terminal
Filename:
MIME Type:
Creator:
Mikhail Kalugin
Created:
2007-08-31 04:36:46 EDT
Size:
13.99 KB
patch
obsolete
>Index: src/org/eclipse/tm/internal/terminal/control/impl/TerminalControl.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/control/impl/TerminalControl.java,v >retrieving revision 1.12 >diff -u -r1.12 TerminalControl.java >--- src/org/eclipse/tm/internal/terminal/control/impl/TerminalControl.java 20 Jun 2007 13:39:56 -0000 1.12 >+++ src/org/eclipse/tm/internal/terminal/control/impl/TerminalControl.java 31 Aug 2007 07:48:35 -0000 >@@ -23,6 +23,9 @@ > > import org.eclipse.jface.dialogs.MessageDialog; > import org.eclipse.jface.resource.JFaceResources; >+import org.eclipse.jface.text.ConfigurableLineTracker; >+import org.eclipse.jface.text.Document; >+import org.eclipse.jface.text.TextViewer; > import org.eclipse.osgi.util.NLS; > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.StyledText; >@@ -52,6 +55,7 @@ > import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnectorInfo; > import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; > import org.eclipse.tm.internal.terminal.provisional.api.Logger; >+import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorsManager; > import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; > import org.eclipse.ui.PlatformUI; > import org.eclipse.ui.contexts.IContextActivation; >@@ -80,7 +84,7 @@ > private TerminalText fTerminalText; > > private Display fDisplay; >- private StyledText fCtlText; >+ private TextViewer fTextViewer; > private Composite fWndParent; > private Clipboard fClipboard; > private TerminalModifyListener fModifyListener; >@@ -192,7 +196,7 @@ > * @return non null selection > */ > public String getSelection() { >- String txt= fCtlText.getSelectionText(); >+ String txt= fTextViewer.getTextWidget().getSelectionText(); > if(txt==null) > txt=""; //$NON-NLS-1$ > return txt; >@@ -216,7 +220,9 @@ > * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#isDisposed() > */ > public boolean isDisposed() { >- return getCtlText().isDisposed(); >+ if (getCtlText() != null) >+ return getCtlText().isDisposed(); >+ return true; > } > > /* (non-Javadoc) >@@ -253,6 +259,8 @@ > // clean the error message > setMsg(""); //$NON-NLS-1$ > waitForConnect(); >+ TerminalConnectorsManager.instance().registerViewer(fTextViewer, >+ fConnectorInfo); > } > > private ITerminalConnector getTerminalConnector() { >@@ -271,6 +279,7 @@ > } > if(getTerminalConnector()!=null) { > getTerminalConnector().disconnect(); >+ TerminalConnectorsManager.instance().disposeViewer(fTextViewer); > } > } > >@@ -392,6 +401,12 @@ > setupListeners(); > setupHelp(fWndParent, TerminalPlugin.HELP_VIEW); > } >+ >+ protected class TerminalDocument extends Document { >+ protected TerminalDocument() { >+ setLineTracker(new ConfigurableLineTracker(LINE_DELIMITERS)); >+ } >+ } > > /* (non-Javadoc) > * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#onFontChanged() >@@ -421,13 +436,16 @@ > layout.marginHeight=0; > > fWndParent.setLayout(layout); >- setCtlText(new StyledText(fWndParent, SWT.V_SCROLL)); >- fCtlText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); >- >+ setTextViewer(new TextViewer(fWndParent, SWT.V_SCROLL)); >+ fTextViewer.getTextWidget().setLayoutData( >+ new GridData(SWT.FILL, SWT.FILL, true, true)); >+ > > fDisplay = getCtlText().getDisplay(); > fClipboard = new Clipboard(fDisplay); >-// fViewer.setDocument(new TerminalDocument()); >+ >+ fTextViewer.setDocument(new TerminalDocument()); >+ > getCtlText().setFont(JFaceResources.getTextFont()); > } > >@@ -507,16 +525,16 @@ > return fMsg; > } > >- void setCtlText(StyledText ctlText) { >- fCtlText = ctlText; >- fTerminalText.setStyledText(ctlText); >+ void setTextViewer(TextViewer viewer) { >+ fTextViewer = viewer; >+ fTerminalText.setStyledText(viewer.getTextWidget()); > } > > /* (non-Javadoc) > * @see org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl#getCtlText() > */ > public StyledText getCtlText() { >- return fCtlText; >+ return fTextViewer.getTextWidget(); > } > > void setTerminalText(TerminalText terminalText) { >@@ -856,4 +874,9 @@ > getTerminalText().setBufferLineLimit(bufferLineLimit); > > } >+ >+ public TextViewer getTextViewer() { >+ return fTextViewer; >+ } >+ > } >Index: src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java,v >retrieving revision 1.4 >diff -u -r1.4 TerminalViewControlFactory.java >--- src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java 26 May 2007 04:15:43 -0000 1.4 >+++ src/org/eclipse/tm/internal/terminal/control/TerminalViewControlFactory.java 31 Aug 2007 07:48:35 -0000 >@@ -11,12 +11,33 @@ > *******************************************************************************/ > package org.eclipse.tm.internal.terminal.control; > >+import org.eclipse.jface.text.hyperlink.DefaultHyperlinkPresenter; >+import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; >+import org.eclipse.jface.text.presentation.PresentationReconciler; >+import org.eclipse.swt.graphics.RGB; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.tm.internal.terminal.control.impl.TerminalControl; > import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnectorInfo; > > public class TerminalViewControlFactory { >- public static ITerminalViewControl makeControl(ITerminalListener target, Composite wndParent, ITerminalConnectorInfo[] connectors) { >- return new TerminalControl(target, wndParent, connectors); >+ public ITerminalViewControl makeControl(ITerminalListener target, >+ Composite wndParent, ITerminalConnectorInfo[] connectors) { >+ TerminalControl control = new TerminalControl(target, wndParent, >+ connectors); >+ >+ DefaultHyperlinkPresenter hyperlinkPresenter = new DefaultHyperlinkPresenter( >+ new RGB(255, 0, 0)); // TODO: add preference key for color >+ >+ control.getTextViewer().setHyperlinkPresenter(hyperlinkPresenter); >+ IHyperlinkDetector[] detectors = TerminalHyperlinkDetectorsExtension >+ .getDetectors(); >+ >+ control.getTextViewer().setHyperlinkDetectors(detectors, 0); >+ >+ PresentationReconciler reconciler = new PresentationReconciler(); >+ reconciler.install(control.getTextViewer()); >+ >+ return control; >+ > } > } >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal/plugin.xml,v >retrieving revision 1.9 >diff -u -r1.9 plugin.xml >--- plugin.xml 5 Jun 2007 12:48:29 -0000 1.9 >+++ plugin.xml 31 Aug 2007 07:48:35 -0000 >@@ -13,6 +13,7 @@ > --> > <plugin> > <extension-point id="terminalConnector" name="Terminal Connector" schema="schema/terminalConnector.exsd"/> >+ <extension-point id="hyperlinkDetectors" name="hyperlinkDetectors" schema="schema/hyperlinkDetectors.exsd"/> > <extension point="org.eclipse.ui.contexts"> > <context > name="%terminal.context.name" >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.core/terminal/org.eclipse.tm.terminal/META-INF/MANIFEST.MF,v >retrieving revision 1.13 >diff -u -r1.13 MANIFEST.MF >--- META-INF/MANIFEST.MF 5 Jun 2007 12:48:28 -0000 1.13 >+++ META-INF/MANIFEST.MF 31 Aug 2007 07:48:35 -0000 >@@ -7,7 +7,8 @@ > Bundle-Vendor: %providerName > Bundle-Localization: plugin > Require-Bundle: org.eclipse.core.runtime, >- org.eclipse.ui >+ org.eclipse.ui, >+ org.eclipse.jface.text > Eclipse-LazyStart: true > Bundle-RequiredExecutionEnvironment: J2SE-1.4 > Bundle-ClassPath: . >Index: src/org/eclipse/tm/internal/terminal/control/TerminalHyperlinkDetectorsExtension.java >=================================================================== >RCS file: src/org/eclipse/tm/internal/terminal/control/TerminalHyperlinkDetectorsExtension.java >diff -N src/org/eclipse/tm/internal/terminal/control/TerminalHyperlinkDetectorsExtension.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tm/internal/terminal/control/TerminalHyperlinkDetectorsExtension.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,41 @@ >+package org.eclipse.tm.internal.terminal.control; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.core.runtime.RegistryFactory; >+import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; >+ >+public class TerminalHyperlinkDetectorsExtension { >+ >+ private static String EP_NAME = "org.eclipse.tm.terminal.hyperlinkDetectors"; //$NON-NLS-1$ >+ >+ private static IHyperlinkDetector[] detectors = null; >+ >+ public static IHyperlinkDetector[] getDetectors() { >+ if (detectors == null) >+ initialize(); >+ return detectors; >+ } >+ >+ private static void initialize() { >+ >+ List result = new ArrayList(); >+ IConfigurationElement[] config = RegistryFactory.getRegistry() >+ .getConfigurationElementsFor(EP_NAME); >+ for (int i = 0; i < config.length; i++) { >+ IConfigurationElement c = config[i]; >+ try { >+ Object extension = c.createExecutableExtension("class"); //$NON-NLS-1$ >+ if (extension instanceof IHyperlinkDetector) >+ result.add(extension); >+ } catch (CoreException e) { >+ } >+ } >+ detectors = (IHyperlinkDetector[]) result >+ .toArray(new IHyperlinkDetector[result.size()]); >+ } >+ >+} >Index: schema/hyperlinkDetectors.exsd >=================================================================== >RCS file: schema/hyperlinkDetectors.exsd >diff -N schema/hyperlinkDetectors.exsd >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ schema/hyperlinkDetectors.exsd 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,105 @@ >+<?xml version='1.0' encoding='UTF-8'?> >+<!-- Schema file written by PDE --> >+<schema targetNamespace="org.eclipse.tm.terminal"> >+<annotation> >+ <appInfo> >+ <meta.schema plugin="org.eclipse.tm.terminal" id="hyperlinkDetectors" name="hyperlinkDetectors"/> >+ </appInfo> >+ <documentation> >+ Hyperlink detectors for the terminal view. >+ </documentation> >+ </annotation> >+ >+ <element name="extension"> >+ <complexType> >+ <sequence minOccurs="0" maxOccurs="unbounded"> >+ <element ref="detector"/> >+ </sequence> >+ <attribute name="point" type="string" use="required"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="id" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="name" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ <appInfo> >+ <meta.attribute translatable="true"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <element name="detector"> >+ <complexType> >+ <attribute name="class" type="string" use="required"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ <appInfo> >+ <meta.attribute kind="java" basedOn=":org.eclipse.jface.text.hyperlink.IHyperlinkDetector"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="since"/> >+ </appInfo> >+ <documentation> >+ [Enter the first release in which this extension point appears.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="examples"/> >+ </appInfo> >+ <documentation> >+ [Enter extension point usage example here.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="apiInfo"/> >+ </appInfo> >+ <documentation> >+ [Enter API information here.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="implementation"/> >+ </appInfo> >+ <documentation> >+ [Enter information about supplied implementation of this extension point.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="copyright"/> >+ </appInfo> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ >+</schema> >Index: src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorsManager.java >=================================================================== >RCS file: src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorsManager.java >diff -N src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorsManager.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tm/internal/terminal/provisional/api/TerminalConnectorsManager.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,32 @@ >+package org.eclipse.tm.internal.terminal.provisional.api; >+ >+import java.util.HashMap; >+ >+import org.eclipse.jface.text.ITextViewer; >+ >+public class TerminalConnectorsManager { >+ >+ private TerminalConnectorsManager() { >+ } >+ >+ private static TerminalConnectorsManager inst = new TerminalConnectorsManager(); >+ >+ public static TerminalConnectorsManager instance() { >+ return inst; >+ } >+ >+ private HashMap viewersToConnectors = new HashMap(); >+ >+ public void registerViewer(ITextViewer viewer, ITerminalConnectorInfo connector) { >+ viewersToConnectors.put(viewer, connector); >+ } >+ >+ public void disposeViewer(ITextViewer viewer) { >+ viewersToConnectors.remove(viewer); >+ } >+ >+ public ITerminalConnectorInfo findConnectorInfoForViewer(ITextViewer viewer) { >+ return (ITerminalConnectorInfo) viewersToConnectors.get(viewer); >+ } >+ >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 201870
: 77446 |
77447