annotate dwtx/jface/text/hyperlink/MultipleHyperlinkPresenter.d @ 133:7d818bd32d63

Fix ctors to this with gvim regexp
author Frank Benoit <benoit@tionex.de>
date Sun, 24 Aug 2008 01:29:22 +0200
parents c4fb132a086c
children 51e6e63f930e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2008 IBM Corporation and others.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.text.hyperlink.MultipleHyperlinkPresenter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
131
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
15 import dwtx.jface.text.hyperlink.IHyperlinkPresenterExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
16 import dwtx.jface.text.hyperlink.HyperlinkManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
17 import dwtx.jface.text.hyperlink.URLHyperlink; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
18 import dwtx.jface.text.hyperlink.IHyperlinkDetectorExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
19 import dwtx.jface.text.hyperlink.IHyperlinkDetector; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
20 import dwtx.jface.text.hyperlink.IHyperlinkPresenter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
21 import dwtx.jface.text.hyperlink.URLHyperlinkDetector; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
22 import dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
23 import dwtx.jface.text.hyperlink.AbstractHyperlinkDetector; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
24 import dwtx.jface.text.hyperlink.IHyperlinkDetectorExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
25 import dwtx.jface.text.hyperlink.HyperlinkMessages; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
26 import dwtx.jface.text.hyperlink.IHyperlink; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
27
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
28
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.dwthelper.utils;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwt.DWT;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import dwt.events.KeyAdapter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import dwt.events.KeyEvent;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import dwt.events.KeyListener;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import dwt.events.MouseAdapter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 import dwt.events.MouseEvent;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import dwt.events.MouseMoveListener;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import dwt.events.SelectionAdapter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import dwt.events.SelectionEvent;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 import dwt.events.ShellAdapter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 import dwt.events.ShellEvent;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 import dwt.graphics.Color;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 import dwt.graphics.Point;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 import dwt.graphics.RGB;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 import dwt.graphics.Rectangle;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 import dwt.layout.GridLayout;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 import dwt.widgets.Composite;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 import dwt.widgets.Control;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 import dwt.widgets.Display;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 import dwt.widgets.Event;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 import dwt.widgets.Listener;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 import dwt.widgets.Shell;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 import dwt.widgets.Table;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 import dwt.widgets.TableItem;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 import dwtx.jface.preference.IPreferenceStore;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 import dwtx.jface.text.AbstractInformationControl;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 import dwtx.jface.text.AbstractInformationControlManager;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 import dwtx.jface.text.IInformationControl;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 import dwtx.jface.text.IInformationControlCreator;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 import dwtx.jface.text.IInformationControlExtension2;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 import dwtx.jface.text.IInformationControlExtension3;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 import dwtx.jface.text.IRegion;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 import dwtx.jface.text.ITextHover;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 import dwtx.jface.text.ITextHoverExtension;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 import dwtx.jface.text.ITextViewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 import dwtx.jface.text.IWidgetTokenKeeper;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 import dwtx.jface.text.IWidgetTokenKeeperExtension;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 import dwtx.jface.text.IWidgetTokenOwner;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 import dwtx.jface.text.IWidgetTokenOwnerExtension;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 import dwtx.jface.text.JFaceTextUtil;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 import dwtx.jface.text.Region;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 import dwtx.jface.util.Geometry;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 import dwtx.jface.viewers.ColumnLabelProvider;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 import dwtx.jface.viewers.IStructuredContentProvider;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 import dwtx.jface.viewers.TableViewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 import dwtx.jface.viewers.Viewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * A hyperlink presenter capable of showing multiple hyperlinks in a hover.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @since 3.4
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 public class MultipleHyperlinkPresenter : DefaultHyperlinkPresenter {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * An information control capable of showing a list of hyperlinks. The hyperlinks can be opened.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 private static class LinkListInformationControl : AbstractInformationControl , IInformationControlExtension2 {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 private static final class LinkContentProvider : IStructuredContentProvider {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * @see dwtx.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 public Object[] getElements(Object inputElement) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 return (Object[]) inputElement;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 * @see dwtx.jface.viewers.IContentProvider#dispose()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 public void dispose() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * @see dwtx.jface.viewers.IContentProvider#inputChanged(dwtx.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 private static final class LinkLabelProvider : ColumnLabelProvider {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 * @see dwtx.jface.viewers.ColumnLabelProvider#getText(java.lang.Object)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 public String getText(Object element) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 IHyperlink link= (IHyperlink)element;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 String text= link.getHyperlinkText();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 if (text !is null)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 return text;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 return HyperlinkMessages.getString("LinkListInformationControl.unknownLink"); //$NON-NLS-1$
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 private final MultipleHyperlinkHoverManager fManager;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 private IHyperlink[] fInput;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 private Composite fParent;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 private Table fTable;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 private Color fForegroundColor;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 private Color fBackgroundColor;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * Creates a link list information control with the given shell as parent.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 * @param parentShell the parent shell
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 * @param manager the hover manager
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 * @param foregroundColor the foreground color, must not be disposed
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 * @param backgroundColor the background color, must not be disposed
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 */
133
7d818bd32d63 Fix ctors to this with gvim regexp
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
145 public this(Shell parentShell, MultipleHyperlinkHoverManager manager, Color foregroundColor, Color backgroundColor) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 super(parentShell, false);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 fManager= manager;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 fForegroundColor= foregroundColor;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 fBackgroundColor= backgroundColor;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 create();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * @see dwtx.jface.text.IInformationControl#setInformation(java.lang.String)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 public void setInformation(String information) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 //replaced by IInformationControlExtension2#setInput(java.lang.Object)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 * @see dwtx.jface.text.IInformationControlExtension2#setInput(java.lang.Object)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 public void setInput(Object input) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 fInput= (IHyperlink[]) input;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 deferredCreateContent(fParent);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * @see dwtx.jface.text.AbstractInformationControl#createContent(dwt.widgets.Composite)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 protected void createContent(Composite parent) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 fParent= parent;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 if ("win32".equals(DWT.getPlatform())) { //$NON-NLS-1$
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 GridLayout layout= new GridLayout();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 layout.marginWidth= 0;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 layout.marginRight= 4;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 fParent.setLayout(layout);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 fParent.setForeground(fForegroundColor);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 fParent.setBackground(fBackgroundColor);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 * @see dwtx.jface.text.AbstractInformationControl#computeSizeHint()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 public Point computeSizeHint() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 Point preferedSize= getShell().computeSize(DWT.DEFAULT, DWT.DEFAULT, true);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 Point constraints= getSizeConstraints();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 if (constraints is null)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 return preferedSize;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 if (fTable.getVerticalBar() is null || fTable.getHorizontalBar() is null)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 return Geometry.min(constraints, preferedSize);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 int scrollBarWidth= fTable.getVerticalBar().getSize().x;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 int scrollBarHeight= fTable.getHorizontalBar().getSize().y;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 int width;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 if (preferedSize.y - scrollBarHeight <= constraints.y) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 width= preferedSize.x - scrollBarWidth;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 fTable.getVerticalBar().setVisible(false);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 } else {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 width= Math.min(preferedSize.x, constraints.x);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 int height;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 if (preferedSize.x - scrollBarWidth <= constraints.x) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 height= preferedSize.y - scrollBarHeight;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 fTable.getHorizontalBar().setVisible(false);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 } else {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 height= Math.min(preferedSize.y, constraints.y);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 return new Point(width, height);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 private void deferredCreateContent(Composite parent) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 fTable= new Table(parent, DWT.SINGLE | DWT.FULL_SELECTION);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 fTable.setLinesVisible(false);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 fTable.setHeaderVisible(false);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 fTable.setForeground(fForegroundColor);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 fTable.setBackground(fBackgroundColor);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 final TableViewer viewer= new TableViewer(fTable);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 viewer.setContentProvider(new LinkContentProvider());
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 viewer.setLabelProvider(new LinkLabelProvider());
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 viewer.setInput(fInput);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 fTable.setSelection(0);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 registerTableListeners();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 getShell().addShellListener(new ShellAdapter() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 * @see dwt.events.ShellAdapter#shellActivated(dwt.events.ShellEvent)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 public void shellActivated(ShellEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 if (viewer.getTable().getSelectionCount() is 0) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 viewer.getTable().setSelection(0);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 viewer.getTable().setFocus();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 private void registerTableListeners() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 fTable.addMouseMoveListener(new MouseMoveListener() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 TableItem fLastItem= null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 public void mouseMove(MouseEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 if (fTable.equals(e.getSource())) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 Object o= fTable.getItem(new Point(e.x, e.y));
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 if (o instanceof TableItem) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 TableItem item= (TableItem) o;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 if (!o.equals(fLastItem)) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 fLastItem= (TableItem) o;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 fTable.setSelection(new TableItem[] { fLastItem });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 } else if (e.y < fTable.getItemHeight() / 4) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 // Scroll up
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 int index= fTable.indexOf(item);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 if (index > 0) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 fLastItem= fTable.getItem(index - 1);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 fTable.setSelection(new TableItem[] { fLastItem });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 } else if (e.y > fTable.getBounds().height - fTable.getItemHeight() / 4) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 // Scroll down
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 int index= fTable.indexOf(item);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 if (index < fTable.getItemCount() - 1) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 fLastItem= fTable.getItem(index + 1);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 fTable.setSelection(new TableItem[] { fLastItem });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 fTable.addSelectionListener(new SelectionAdapter() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 public void widgetSelected(SelectionEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 openSelectedLink();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 fTable.addMouseListener(new MouseAdapter() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 public void mouseUp(MouseEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 if (fTable.getSelectionCount() < 1)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 if (e.button !is 1)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 if (fTable.equals(e.getSource())) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 Object o= fTable.getItem(new Point(e.x, e.y));
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 TableItem selection= fTable.getSelection()[0];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 if (selection.equals(o))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 openSelectedLink();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 fTable.addKeyListener(new KeyAdapter() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 public void keyPressed(KeyEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 if (e.keyCode is 0x0D) // return
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 openSelectedLink();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 * @see dwtx.jface.text.IInformationControlExtension#hasContents()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 public bool hasContents() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 return true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 * Opens the currently selected link.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 private void openSelectedLink() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 TableItem selection= fTable.getSelection()[0];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 IHyperlink link= (IHyperlink)selection.getData();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 fManager.hideInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 link.open();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 private class MultipleHyperlinkHover : ITextHover, ITextHoverExtension {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 * @see dwtx.jface.text.ITextHover#getHoverInfo(dwtx.jface.text.ITextViewer, dwtx.jface.text.IRegion)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 * @deprecated
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 return null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 * @see dwtx.jface.text.ITextHover#getHoverRegion(dwtx.jface.text.ITextViewer, int)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 return fSubjectRegion;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 * @see dwtx.jface.text.ITextHoverExtension2#getHoverInfo2(dwtx.jface.text.ITextViewer, dwtx.jface.text.IRegion)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 public Object getHoverInfo2(ITextViewer textViewer, IRegion hoverRegion) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 return fHyperlinks;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 * @see dwtx.jface.text.ITextHoverExtension#getHoverControlCreator()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 public IInformationControlCreator getHoverControlCreator() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 return new IInformationControlCreator() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 public IInformationControl createInformationControl(Shell parent) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 Color foregroundColor= fTextViewer.getTextWidget().getForeground();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 Color backgroundColor= fTextViewer.getTextWidget().getBackground();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 return new LinkListInformationControl(parent, fManager, foregroundColor, backgroundColor);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 };
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 private static class MultipleHyperlinkHoverManager : AbstractInformationControlManager , IWidgetTokenKeeper, IWidgetTokenKeeperExtension {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 private class Closer : IInformationControlCloser, Listener, KeyListener {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 private Control fSubjectControl;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 private Display fDisplay;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 private IInformationControl fControl;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 private Rectangle fSubjectArea;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 * @see dwtx.jface.text.AbstractInformationControlManager.IInformationControlCloser#setInformationControl(dwtx.jface.text.IInformationControl)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 public void setInformationControl(IInformationControl control) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 fControl= control;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 * @see dwtx.jface.text.AbstractInformationControlManager.IInformationControlCloser#setSubjectControl(dwt.widgets.Control)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 public void setSubjectControl(Control subject) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 fSubjectControl= subject;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * @see dwtx.jface.text.AbstractInformationControlManager.IInformationControlCloser#start(dwt.graphics.Rectangle)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 public void start(Rectangle subjectArea) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 fSubjectArea= subjectArea;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 fDisplay= fSubjectControl.getDisplay();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 if (!fDisplay.isDisposed()) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 fDisplay.addFilter(DWT.FocusOut, this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 fDisplay.addFilter(DWT.MouseMove, this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 fTextViewer.getTextWidget().addKeyListener(this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 * @see dwtx.jface.text.AbstractInformationControlManager.IInformationControlCloser#stop()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 public void stop() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 if (fDisplay !is null && !fDisplay.isDisposed()) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 fDisplay.removeFilter(DWT.FocusOut, this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 fDisplay.removeFilter(DWT.MouseMove, this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 fTextViewer.getTextWidget().removeKeyListener(this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 fSubjectArea= null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 * @see dwt.widgets.Listener#handleEvent(dwt.widgets.Event)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 public void handleEvent(Event event) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 switch (event.type) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 case DWT.FocusOut:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 if (!fControl.isFocusControl())
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 disposeInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 break;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 case DWT.MouseMove:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 handleMouseMove(event);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 break;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 * Handle mouse movement events.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 * @param event the event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 private void handleMouseMove(Event event) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 if (!(event.widget instanceof Control))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 if (fControl.isFocusControl())
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 Control eventControl= (Control) event.widget;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 //transform coordinates to subject control:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 Point mouseLoc= event.display.map(eventControl, fSubjectControl, event.x, event.y);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 if (fSubjectArea.contains(mouseLoc))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 if (inKeepUpZone(mouseLoc.x, mouseLoc.y, ((IInformationControlExtension3) fControl).getBounds()))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 hideInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 * Tests whether a given mouse location is within the keep-up zone.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 * The hover should not be hidden as long as the mouse stays inside this zone.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 * @param x the x coordinate, relative to the <em>subject control</em>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 * @param y the y coordinate, relative to the <em>subject control</em>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 * @param controlBounds the bounds of the current control
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 * @return <code>true</code> iff the mouse event occurred in the keep-up zone
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 private bool inKeepUpZone(int x, int y, Rectangle controlBounds) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 // +-----------+
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 // |subjectArea|
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 // +-----------+
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 // |also keepUp|
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 // ++-----------+-------+
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 // | totalBounds |
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 // +--------------------+
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 if (fSubjectArea.contains(x, y))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 return true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 Rectangle iControlBounds= fSubjectControl.getDisplay().map(null, fSubjectControl, controlBounds);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 Rectangle totalBounds= Geometry.copy(iControlBounds);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 if (totalBounds.contains(x, y))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 return true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 int keepUpY= fSubjectArea.y + fSubjectArea.height;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 Rectangle alsoKeepUp= new Rectangle(fSubjectArea.x, keepUpY, fSubjectArea.width, totalBounds.y - keepUpY);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 return alsoKeepUp.contains(x, y);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 * @see dwt.events.KeyListener#keyPressed(dwt.events.KeyEvent)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 public void keyPressed(KeyEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 * @see dwt.events.KeyListener#keyReleased(dwt.events.KeyEvent)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 public void keyReleased(KeyEvent e) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 hideInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 * Priority of the hover managed by this manager.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 * Default value: One higher then for the hovers
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 * managed by TextViewerHoverManager.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 private static final int WIDGET_TOKEN_PRIORITY= 1;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 private final MultipleHyperlinkHover fHover;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 private final ITextViewer fTextViewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 private final MultipleHyperlinkPresenter fHyperlinkPresenter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 private Closer fCloser;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 private bool fIsControlVisible;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 * Create a new MultipleHyperlinkHoverManager. The MHHM can show and hide
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 * the given MultipleHyperlinkHover inside the given ITextViewer.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 * @param hover the hover to manage
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 * @param viewer the viewer to show the hover in
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 * @param hyperlinkPresenter the hyperlink presenter using this manager to present hyperlinks
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 */
133
7d818bd32d63 Fix ctors to this with gvim regexp
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
527 public this(MultipleHyperlinkHover hover, ITextViewer viewer, MultipleHyperlinkPresenter hyperlinkPresenter) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 super(hover.getHoverControlCreator());
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 fHover= hover;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 fTextViewer= viewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 fHyperlinkPresenter= hyperlinkPresenter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 fCloser= new Closer();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 setCloser(fCloser);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 fIsControlVisible= false;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * @see dwtx.jface.text.AbstractInformationControlManager#computeInformation()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 protected void computeInformation() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 IRegion region= fHover.getHoverRegion(fTextViewer, -1);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 if (region is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 setInformation(null, null);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 Rectangle area= JFaceTextUtil.computeArea(region, fTextViewer);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 if (area is null || area.isEmpty()) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 setInformation(null, null);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 Object information= fHover.getHoverInfo2(fTextViewer, region);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 setCustomInformationControlCreator(fHover.getHoverControlCreator());
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 setInformation(information, area);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 * @see dwtx.jface.text.AbstractInformationControlManager#computeInformationControlLocation(dwt.graphics.Rectangle, dwt.graphics.Point)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 protected Point computeInformationControlLocation(Rectangle subjectArea, Point controlSize) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 Point result= super.computeInformationControlLocation(subjectArea, controlSize);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 Point cursorLocation= fTextViewer.getTextWidget().getDisplay().getCursorLocation();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 if (cursorLocation.x <= result.x + controlSize.x)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 return result;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 result.x= cursorLocation.x + 20 - controlSize.x;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 return result;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 * @see dwtx.jface.text.AbstractInformationControlManager#showInformationControl(dwt.graphics.Rectangle)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 protected void showInformationControl(Rectangle subjectArea) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 if (fTextViewer instanceof IWidgetTokenOwnerExtension) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 if (((IWidgetTokenOwnerExtension) fTextViewer).requestWidgetToken(this, WIDGET_TOKEN_PRIORITY))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 super.showInformationControl(subjectArea);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 } else if (fTextViewer instanceof IWidgetTokenOwner) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 if (((IWidgetTokenOwner) fTextViewer).requestWidgetToken(this))
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 super.showInformationControl(subjectArea);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 } else {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 super.showInformationControl(subjectArea);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 fIsControlVisible= true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 * @see dwtx.jface.text.AbstractInformationControlManager#hideInformationControl()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 protected void hideInformationControl() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 super.hideInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597 if (fTextViewer instanceof IWidgetTokenOwner) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 ((IWidgetTokenOwner) fTextViewer).releaseWidgetToken(this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 fIsControlVisible= false;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 fHyperlinkPresenter.hideHyperlinks();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 * @see dwtx.jface.text.AbstractInformationControlManager#disposeInformationControl()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 public void disposeInformationControl() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 super.disposeInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 if (fTextViewer instanceof IWidgetTokenOwner) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 ((IWidgetTokenOwner) fTextViewer).releaseWidgetToken(this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 fIsControlVisible= false;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 fHyperlinkPresenter.hideHyperlinks();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 * @see dwtx.jface.text.IWidgetTokenKeeper#requestWidgetToken(dwtx.jface.text.IWidgetTokenOwner)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 public bool requestWidgetToken(IWidgetTokenOwner owner) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 hideInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 return true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 * @see dwtx.jface.text.IWidgetTokenKeeperExtension#requestWidgetToken(dwtx.jface.text.IWidgetTokenOwner, int)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 public bool requestWidgetToken(IWidgetTokenOwner owner, int priority) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 if (priority < WIDGET_TOKEN_PRIORITY)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 return false;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 hideInformationControl();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 return true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 * @see dwtx.jface.text.IWidgetTokenKeeperExtension#setFocus(dwtx.jface.text.IWidgetTokenOwner)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 public bool setFocus(IWidgetTokenOwner owner) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 return false;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 * Returns <code>true</code> if the information control managed by
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 * this manager is visible, <code>false</code> otherwise.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 * @return <code>true</code> if information control is visible
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 public bool isInformationControlVisible() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 return fIsControlVisible;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 private ITextViewer fTextViewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 private IHyperlink[] fHyperlinks;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 private Region fSubjectRegion;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 private MultipleHyperlinkHoverManager fManager;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 * Creates a new multiple hyperlink presenter which uses
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 * {@link #HYPERLINK_COLOR} to read the color from the given preference store.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 * @param store the preference store
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 */
133
7d818bd32d63 Fix ctors to this with gvim regexp
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
668 public this(IPreferenceStore store) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 super(store);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 * Creates a new multiple hyperlink presenter.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675 * @param color the hyperlink color, to be disposed by the caller
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 */
133
7d818bd32d63 Fix ctors to this with gvim regexp
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
677 public this(RGB color) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 super(color);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 * @see dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter#install(dwtx.jface.text.ITextViewer)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 public void install(ITextViewer viewer) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 super.install(viewer);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 fTextViewer= viewer;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 fManager= new MultipleHyperlinkHoverManager(new MultipleHyperlinkHover(), fTextViewer, this);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 fManager.install(viewer.getTextWidget());
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 fManager.setSizeConstraints(100, 12, false, true);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 * @see dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter#uninstall()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 public void uninstall() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 super.uninstall();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 if (fTextViewer !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 fManager.dispose();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 fTextViewer= null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * @see dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter#canShowMultipleHyperlinks()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 public bool canShowMultipleHyperlinks() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 return true;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 * @see dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter#canHideHyperlinks()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 public bool canHideHyperlinks() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 return !fManager.isInformationControlVisible();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 * @see dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter#hideHyperlinks()
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 public void hideHyperlinks() {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 super.hideHyperlinks();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 fHyperlinks= null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 /*
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 * @see dwtx.jface.text.hyperlink.DefaultHyperlinkPresenter#showHyperlinks(dwtx.jface.text.hyperlink.IHyperlink[])
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
732 public void showHyperlinks(IHyperlink[] hyperlinks) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733 super.showHyperlinks(new IHyperlink[] { hyperlinks[0] });
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735 fSubjectRegion= null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 fHyperlinks= hyperlinks;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 if (hyperlinks.length is 1)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 return;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741 int start= hyperlinks[0].getHyperlinkRegion().getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 int end= start + hyperlinks[0].getHyperlinkRegion().getLength();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
744 for (int i= 1; i < hyperlinks.length; i++) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745 int hstart= hyperlinks[i].getHyperlinkRegion().getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746 int hend= hstart + hyperlinks[i].getHyperlinkRegion().getLength();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
748 start= Math.min(start, hstart);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
749 end= Math.max(end, hend);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
750 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
751
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
752 fSubjectRegion= new Region(start, end - start);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
753
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
754 fManager.showInformation();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
755 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
756 }