annotate dwtx/ui/forms/HyperlinkGroup.d @ 104:04b47443bb01

Reworked the collection uses to make use of a wrapper collection that is compatible to the Java Collections. These new wrappers now use the tango.util.containers instead of the tango.util.collections.
author Frank Benoit <benoit@tionex.de>
date Thu, 07 Aug 2008 15:01:33 +0200
parents 5d489b9f966c
children c3583c6ec027
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;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 }
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 private void onMouseEnter(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 Hyperlink link = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 previousBackground = link.getBackground();
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 previousForeground = link.getForeground();
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 if (isActiveBackgroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 link.setBackground(getActiveBackground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 if (isActiveForegroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 link.setForeground(getActiveForeground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 if (getHyperlinkUnderlineMode() is UNDERLINE_HOVER)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 link.setUnderlined(true);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 link.setCursor(getHyperlinkCursor());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 private void onMouseExit(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 Hyperlink link = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 if (isActiveBackgroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 link.setBackground(previousBackground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 if (isActiveForegroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 link.setForeground(previousForeground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 if (getHyperlinkUnderlineMode() is UNDERLINE_HOVER)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 link.setUnderlined(false);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 public void linkActivated(HyperlinkEvent e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 }
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 public void linkEntered(HyperlinkEvent e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 Hyperlink link = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 if (lastEntered !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 linkExited(lastEntered);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 lastEntered = link;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 }
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 public void linkExited(HyperlinkEvent e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 linkExited(cast(Hyperlink) e.widget);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 private void linkExited(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 link.setCursor(null);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 if (lastEntered is link)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 lastEntered = null;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 }
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 * Creates a hyperlink group.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 */
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 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
116 links = new ArrayList();
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 super(display);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 listener = new GroupListener();
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 }
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 * 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
123 * 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
124 * disposed.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * @return the last active link or <code>null</code>
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 public Hyperlink getLastActivated() {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 return lastActivated;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 }
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 * 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
133 * managed until it is disposed. Settings like colors, cursors and modes
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * will affect all managed hyperlinks.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 * @param link
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 */
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 public void add(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 if (isBackgroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 link.setBackground(getBackground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 if (isForegroundSet)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 link.setForeground(getForeground());
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 if (getHyperlinkUnderlineMode() is UNDERLINE_ALWAYS)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 link.setUnderlined(true);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 hook(link);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 }
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 * Sets the new active hyperlink background for all the links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 * @param newActiveBackground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * the new active background
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 public void setActiveBackground(Color newActiveBackground) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 super.setActiveBackground(newActiveBackground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 isActiveBackgroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 }
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 * Sets the new active hyperlink foreground for all the links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 * @param newActiveForeground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * the new active foreground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 public void setActiveForeground(Color newActiveForeground) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 super.setActiveForeground(newActiveForeground);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 isActiveForegroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 }
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 * Sets the group background and also sets the background of all the
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * currently managed links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 * @param bg
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 * the new background
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 public void setBackground(Color bg) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 super.setBackground(bg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 isBackgroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 if (links !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 for (int i = 0; i < links.size(); i++) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 Hyperlink label = cast(Hyperlink) links.get(i);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 label.setBackground(bg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 }
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 * Sets the group foreground and also sets the background of all the
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 * currently managed links.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 * @param fg
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 * the new foreground
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 public void setForeground(Color fg) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 super.setForeground(fg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 isForegroundSet = true;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 if (links !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 for (int i = 0; i < links.size(); i++) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 Hyperlink label = cast(Hyperlink) links.get(i);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 label.setForeground(fg);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 }
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 * Sets the hyperlink underline mode.
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 *
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * @param mode
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * the new hyperlink underline mode
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 * @see HyperlinkSettings
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 */
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 public void setHyperlinkUnderlineMode(int mode) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 super.setHyperlinkUnderlineMode(mode);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 if (links !is null) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 for (int i = 0; i < links.size(); i++) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 Hyperlink label = cast(Hyperlink) links.get(i);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 label.setUnderlined(mode is UNDERLINE_ALWAYS);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 }
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 private void hook(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 link.addListener(DWT.MouseDown, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 link.addHyperlinkListener(listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 link.addListener(DWT.Dispose, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 link.addListener(DWT.MouseEnter, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 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
228 links.add(link);
75
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 }
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 private void unhook(Hyperlink link) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 link.removeListener(DWT.MouseDown, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 link.removeHyperlinkListener(listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 link.removeListener(DWT.MouseEnter, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 link.removeListener(DWT.MouseExit, listener);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 if (lastActivated is link)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 lastActivated = null;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 if (lastEntered is link)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 lastEntered = null;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 links.remove(link);
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 }
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 private void onMouseDown(Event e) {
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 if (e.button is 1)
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 return;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 lastActivated = cast(Hyperlink) e.widget;
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 }
5d489b9f966c Fix continue porting
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 }