• R/O
  • SSH
  • HTTPS

propedit: コミット


コミットメタ情報

リビジョン123 (tree)
日時2009-05-06 00:01:36
作者chomakichi

ログメッセージ

HyperlinkDetectorを追加できる拡張ポイントを作成

変更サマリ

差分

--- trunk/PropertiesEditor/src/jp/gr/java_conf/ussiy/app/propedit/eclipse/plugin/editors/PropertiesConfiguration.java (revision 122)
+++ trunk/PropertiesEditor/src/jp/gr/java_conf/ussiy/app/propedit/eclipse/plugin/editors/PropertiesConfiguration.java (revision 123)
@@ -1,13 +1,26 @@
11 package jp.gr.java_conf.ussiy.app.propedit.eclipse.plugin.editors;
22
3+import java.util.ArrayList;
4+import java.util.List;
5+
36 import jp.gr.java_conf.ussiy.app.propedit.eclipse.plugin.PropertiesEditorPlugin;
47 import jp.gr.java_conf.ussiy.app.propedit.eclipse.plugin.preference.PropertiesEditorPreference;
58
9+import org.eclipse.core.runtime.CoreException;
10+import org.eclipse.core.runtime.IConfigurationElement;
11+import org.eclipse.core.runtime.IExtension;
12+import org.eclipse.core.runtime.IExtensionPoint;
13+import org.eclipse.core.runtime.IExtensionRegistry;
14+import org.eclipse.core.runtime.ILog;
15+import org.eclipse.core.runtime.IStatus;
16+import org.eclipse.core.runtime.Platform;
17+import org.eclipse.core.runtime.Status;
618 import org.eclipse.jface.preference.IPreferenceStore;
719 import org.eclipse.jface.preference.PreferenceConverter;
820 import org.eclipse.jface.text.IDocument;
921 import org.eclipse.jface.text.ITextDoubleClickStrategy;
1022 import org.eclipse.jface.text.TextAttribute;
23+import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
1124 import org.eclipse.jface.text.presentation.IPresentationReconciler;
1225 import org.eclipse.jface.text.presentation.PresentationReconciler;
1326 import org.eclipse.jface.text.reconciler.IReconciler;
@@ -19,6 +32,8 @@
1932 import org.eclipse.swt.graphics.RGB;
2033
2134 public class PropertiesConfiguration extends SourceViewerConfiguration {
35+
36+ private static final String EXTENSION_POINT = "jp.gr.java_conf.ussiy.app.propedit.hyperlinkdetectors"; //$NON-NLS-1$
2237
2338 private PropertiesDoubleClickStrategy doubleClickStrategy;
2439
@@ -96,5 +111,44 @@
96111
97112 return reconciler;
98113 }
114+
115+ /**
116+ * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getHyperlinkDetectors(org.eclipse.jface.text.source.ISourceViewer)
117+ */
118+ public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer viewer) {
119+ IHyperlinkDetector[] detectors = super.getHyperlinkDetectors(viewer);
120+ List list = new ArrayList();
121+ for (int i = 0; i < detectors.length; i++) {
122+ if (detectors[i] != null) list.add(detectors[i]);
123+ }
124+ list.addAll(computePropertiesHyperlinkDetectors());
125+ detectors = (IHyperlinkDetector[])list.toArray(new IHyperlinkDetector[0]);
126+ return detectors;
127+ }
128+
129+ protected List computePropertiesHyperlinkDetectors() {
130+ IExtensionRegistry registry = Platform.getExtensionRegistry();
131+ IExtensionPoint extensionPoint = registry.getExtensionPoint(EXTENSION_POINT);
132+ IExtension[] extensions = extensionPoint.getExtensions();
133+ ArrayList results = new ArrayList();
134+ for (int i = 0; i < extensions.length; i++) {
135+ IConfigurationElement[] elements = extensions[i].getConfigurationElements();
136+ for (int j = 0; j < elements.length; j++) {
137+ try {
138+ Object detector = elements[j].createExecutableExtension("class"); //$NON-NLS-1$
139+ if (detector instanceof jp.gr.java_conf.ussiy.app.propedit.eclipse.plugin.editors.detector.IHyperlinkDetector) {
140+ ((jp.gr.java_conf.ussiy.app.propedit.eclipse.plugin.editors.detector.IHyperlinkDetector)detector).setTextEditor(editor);
141+ results.add(detector);
142+ }
143+ } catch(CoreException e) {
144+ IStatus status = new Status(IStatus.ERROR, PropertiesEditorPlugin.PLUGIN_ID, 0, e.getMessage(), e);
145+ ILog log = PropertiesEditorPlugin.getDefault().getLog();
146+ log.log(status);
147+ }
148+ }
149+ }
150+
151+ return results;
152+ }
99153
100154 }
\ No newline at end of file
--- trunk/PropertiesEditor/src/jp/gr/java_conf/ussiy/app/propedit/eclipse/plugin/editors/detector/IHyperlinkDetector.java (nonexistent)
+++ trunk/PropertiesEditor/src/jp/gr/java_conf/ussiy/app/propedit/eclipse/plugin/editors/detector/IHyperlinkDetector.java (revision 123)
@@ -0,0 +1,10 @@
1+package jp.gr.java_conf.ussiy.app.propedit.eclipse.plugin.editors.detector;
2+
3+import org.eclipse.ui.texteditor.ITextEditor;
4+
5+public interface IHyperlinkDetector extends
6+ org.eclipse.jface.text.hyperlink.IHyperlinkDetector {
7+
8+ public void setTextEditor(ITextEditor editor);
9+
10+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- trunk/PropertiesEditor/plugin.xml (revision 122)
+++ trunk/PropertiesEditor/plugin.xml (revision 123)
@@ -3,6 +3,7 @@
33 <plugin>
44
55 <extension-point id="listeners" name="Extension Unicode Convert" schema="schema/listeners.exsd"/>
6+ <extension-point id="hyperlinkdetectors" name="Extension Hyperlink Detector" schema="schema/hyperlinkdetectors.exsd"/>
67
78 <!-- Extensions -->
89 <!-- properties editor -->
旧リポジトリブラウザで表示