annotate dwtx/ui/forms/HyperlinkGroup.d @ 200:eb3414669eb0 default tip

fix for dmd 1.041 and tango 0.99.8
author Frank Benoit <benoit@tionex.de>
date Sat, 28 Mar 2009 03:09:57 +0100
parents c3583c6ec027
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.ui.forms.HyperlinkGroup;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwtx.ui.forms.HyperlinkSettings;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.DWT;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.graphics.Color;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.widgets.Display;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.widgets.Event;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.widgets.Listener;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwtx.ui.forms.events.HyperlinkEvent;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwtx.ui.forms.events.IHyperlinkListener;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwtx.ui.forms.widgets.Hyperlink;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.dwthelper.utils;
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 75
diff changeset
27 import dwtx.dwtxhelper.Collection;
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * Manages a group of hyperlinks. It tracks activation, updates normal and
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * active colors and updates underline state depending on the underline
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * preference. Hyperlink labels are added to the group after creation and are
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * automatically removed from the group when they are disposed.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * @since 3.0
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 public final class HyperlinkGroup : HyperlinkSettings {
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 75
diff changeset
39 private ArrayList links;
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 private Hyperlink lastActivated;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 private Hyperlink lastEntered;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 private GroupListener listener;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 private bool isActiveBackgroundSet;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 private bool isActiveForegroundSet;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 private bool isBackgroundSet;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 private bool isForegroundSet;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 private class GroupListener : Listener, IHyperlinkListener {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 private Color previousBackground;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 private Color previousForeground;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 public void handleEvent(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 switch (e.type) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 case DWT.MouseEnter :
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 onMouseEnter(e);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 break;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 case DWT.MouseExit :
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 onMouseExit(e);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 break;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 case DWT.MouseDown :
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 onMouseDown(e);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 break;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 case DWT.Dispose :
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 unhook(cast(Hyperlink) e.widget);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 break;
192
c3583c6ec027 Added missing default cases for switch statements
Frank Benoit <benoit@tionex.de>
parents: 104
diff changeset
67 default:
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 private void onMouseEnter(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 Hyperlink link = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 previousBackground = link.getBackground();
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 previousForeground = link.getForeground();
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 if (isActiveBackgroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 link.setBackground(getActiveBackground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 if (isActiveForegroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 link.setForeground(getActiveForeground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 if (getHyperlinkUnderlineMode() is UNDERLINE_HOVER)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 link.setUnderlined(true);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 link.setCursor(getHyperlinkCursor());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 private void onMouseExit(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 Hyperlink link = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 if (isActiveBackgroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 link.setBackground(previousBackground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 if (isActiveForegroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 link.setForeground(previousForeground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 if (getHyperlinkUnderlineMode() is UNDERLINE_HOVER)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 link.setUnderlined(false);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 public void linkActivated(HyperlinkEvent e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 public void linkEntered(HyperlinkEvent e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 Hyperlink link = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 if (lastEntered !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 linkExited(lastEntered);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 lastEntered = link;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 public void linkExited(HyperlinkEvent e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 linkExited(cast(Hyperlink) e.widget);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 private void linkExited(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 link.setCursor(null);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 if (lastEntered is link)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 lastEntered = null;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * Creates a hyperlink group.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 public this(Display display) {
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 75
diff changeset
117 links = new ArrayList();
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 super(display);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 listener = new GroupListener();
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * Returns the link that has been active the last, or <code>null</code>
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * if no link has been active yet or the last active link has been
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * disposed.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * @return the last active link or <code>null</code>
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 public Hyperlink getLastActivated() {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 return lastActivated;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * Adds a hyperlink to the group to be jointly managed. Hyperlink will be
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * managed until it is disposed. Settings like colors, cursors and modes
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * will affect all managed hyperlinks.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 * @param link
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 public void add(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 if (isBackgroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 link.setBackground(getBackground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 if (isForegroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 link.setForeground(getForeground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 if (getHyperlinkUnderlineMode() is UNDERLINE_ALWAYS)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 link.setUnderlined(true);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 hook(link);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 * Sets the new active hyperlink background for all the links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * @param newActiveBackground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * the new active background
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 public void setActiveBackground(Color newActiveBackground) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 super.setActiveBackground(newActiveBackground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 isActiveBackgroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 * Sets the new active hyperlink foreground for all the links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * @param newActiveForeground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * the new active foreground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 public void setActiveForeground(Color newActiveForeground) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 super.setActiveForeground(newActiveForeground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 isActiveForegroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * Sets the group background and also sets the background of all the
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 * currently managed links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 * @param bg
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 * the new background
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 public void setBackground(Color bg) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 super.setBackground(bg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 isBackgroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 if (links !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 for (int i = 0; i < links.size(); i++) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 Hyperlink label = cast(Hyperlink) links.get(i);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 label.setBackground(bg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 * Sets the group foreground and also sets the background of all the
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 * currently managed links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 * @param fg
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 * the new foreground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 public void setForeground(Color fg) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 super.setForeground(fg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 isForegroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 if (links !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 for (int i = 0; i < links.size(); i++) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 Hyperlink label = cast(Hyperlink) links.get(i);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 label.setForeground(fg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 /**
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * Sets the hyperlink underline mode.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * @param mode
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 * the new hyperlink underline mode
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * @see HyperlinkSettings
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 public void setHyperlinkUnderlineMode(int mode) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 super.setHyperlinkUnderlineMode(mode);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 if (links !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 for (int i = 0; i < links.size(); i++) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 Hyperlink label = cast(Hyperlink) links.get(i);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 label.setUnderlined(mode is UNDERLINE_ALWAYS);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 private void hook(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 link.addListener(DWT.MouseDown, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 link.addHyperlinkListener(listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 link.addListener(DWT.Dispose, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 link.addListener(DWT.MouseEnter, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 link.addListener(DWT.MouseExit, listener);
104
04b47443bb01 Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections.
Frank Benoit <benoit@tionex.de>
parents: 75
diff changeset
229 links.add(link);
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 private void unhook(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 link.removeListener(DWT.MouseDown, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 link.removeHyperlinkListener(listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 link.removeListener(DWT.MouseEnter, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 link.removeListener(DWT.MouseExit, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 if (lastActivated is link)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 lastActivated = null;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 if (lastEntered is link)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 lastEntered = null;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 links.remove(link);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 private void onMouseDown(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 if (e.button is 1)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 return;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 lastActivated = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 }