annotate dwtx/jface/viewers/OwnerDrawLabelProvider.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
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
2 * Copyright (c) 2006, 2008 IBM Corporation and others.
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 module dwtx.jface.viewers.OwnerDrawLabelProvider;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.jface.viewers.CellLabelProvider;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwtx.jface.viewers.ColumnViewer;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwtx.jface.viewers.ViewerCell;
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
19 import dwtx.jface.viewers.ViewerColumn;
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.DWT;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.graphics.Color;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.graphics.Rectangle;
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
24 import dwt.widgets.Control;
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.widgets.Event;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Listener;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 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: 72
diff changeset
29 import dwtx.dwtxhelper.Collection;
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 /**
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * OwnerDrawLabelProvider is an abstract implementation of a label provider that
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * handles custom draw.
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * <p>
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * <b>This class is intended to be subclassed by implementors.</b>
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * </p>
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * @since 3.3
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 */
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 public abstract class OwnerDrawLabelProvider : CellLabelProvider {
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
44 alias CellLabelProvider.dispose dispose;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
45
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
46 static class OwnerDrawListener : 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: 72
diff changeset
47 Set enabledColumns;
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
48 int enabledGlobally = 0;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
49 private ColumnViewer viewer;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
50
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
51 this(ColumnViewer viewer) {
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: 72
diff changeset
52 enabledColumns = new HashSet();
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
53 this.viewer = viewer;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
54 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
55
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
56 public void handleEvent(Event event) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
57 CellLabelProvider provider = viewer.getViewerColumn(event.index)
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
58 .getLabelProvider();
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
59 ViewerColumn column = viewer.getViewerColumn(event.index);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
60 if (enabledGlobally > 0 || enabledColumns.contains(column)) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
61 if (null !is cast(OwnerDrawLabelProvider)provider ) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
62 Object element = event.item.getData();
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
63 OwnerDrawLabelProvider ownerDrawProvider = cast(OwnerDrawLabelProvider) provider;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
64 switch (event.type) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
65 case DWT.MeasureItem:
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
66 ownerDrawProvider.measure(event, element);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
67 break;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
68 case DWT.PaintItem:
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
69 ownerDrawProvider.paint(event, element);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
70 break;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
71 case DWT.EraseItem:
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
72 ownerDrawProvider.erase(event, element);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
73 break;
192
c3583c6ec027 Added missing default cases for switch statements
Frank Benoit <benoit@tionex.de>
parents: 104
diff changeset
74 default:
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
75 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
76 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
77 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
78 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
79 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
80
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
81 private static const String OWNER_DRAW_LABEL_PROVIDER_LISTENER = "owner_draw_label_provider_listener"; //$NON-NLS-1$
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
82
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 /**
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * Set up the owner draw callbacks for the viewer.
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * @param viewer
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * the viewer the owner draw is set up
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
88 *
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
89 * @deprecated Since 3.4, the default implementation of
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
90 * {@link CellLabelProvider#initialize(ColumnViewer, ViewerColumn)}
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
91 * in this class will set up the necessary owner draw callbacks
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
92 * automatically. Calls to this method can be removed.
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 */
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 public static void setUpOwnerDraw(ColumnViewer viewer) {
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
95 getOrCreateOwnerDrawListener(viewer).enabledGlobally++;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
96 }
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
98 /**
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
99 * @param viewer
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
100 * @param control
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
101 * @return
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
102 */
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
103 private static OwnerDrawListener getOrCreateOwnerDrawListener(
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
104 ColumnViewer viewer) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
105 Control control = viewer.getControl();
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
106 OwnerDrawListener listener = cast(OwnerDrawListener) control
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
107 .getData(OWNER_DRAW_LABEL_PROVIDER_LISTENER);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
108 if (listener is null) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
109 listener = new OwnerDrawListener(viewer);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
110 control.setData(OWNER_DRAW_LABEL_PROVIDER_LISTENER, listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
111 control.addListener(DWT.MeasureItem, listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
112 control.addListener(DWT.EraseItem, listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
113 control.addListener(DWT.PaintItem, listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
114 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
115 return listener;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
116 }
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
118 /**
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
119 * Create a new instance of the receiver based on a column viewer.
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
120 *
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
121 */
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
122 public this() {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
123
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
124 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
125
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
126 public void dispose(ColumnViewer viewer, ViewerColumn column) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
127 if (!viewer.getControl().isDisposed()) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
128 setOwnerDrawEnabled(viewer, column, false);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
129 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
130 super.dispose(viewer, column);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
131 }
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
133 /**
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
134 * This implementation of
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
135 * {@link CellLabelProvider#initialize(ColumnViewer, ViewerColumn)}
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
136 * delegates to {@link #initialize(ColumnViewer, ViewerColumn, bool)}
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
137 * with a value of <code>true</code> for <code>enableOwnerDraw</code>.
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
138 * Subclasses may override this method but should either call the super
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
139 * implementation or, alternatively,
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
140 * {@link #initialize(ColumnViewer, ViewerColumn, bool)}.
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
141 */
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
142 protected void initialize(ColumnViewer viewer, ViewerColumn column) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
143 this.initialize(viewer, column, true);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
144 }
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
146 /**
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
147 * May be called from subclasses that override
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
148 * {@link #initialize(ColumnViewer, ViewerColumn)} but want to customize
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
149 * whether owner draw will be enabled. This method calls
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
150 * <code>super.initialize(ColumnViewer, ViewerColumn)</code>, and then
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
151 * enables or disables owner draw by calling
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
152 * {@link #setOwnerDrawEnabled(ColumnViewer, ViewerColumn, bool)}.
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
153 *
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
154 * @param viewer
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
155 * the viewer
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
156 * @param column
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
157 * the column, or <code>null</code> if a column is not
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
158 * available.
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
159 * @param enableOwnerDraw
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
160 * <code>true</code> if owner draw should be enabled for the
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
161 * given viewer and column, <code>false</code> otherwise.
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
162 *
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
163 * @since 3.4
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
164 */
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
165 final protected void initialize(ColumnViewer viewer, ViewerColumn column,
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
166 bool enableOwnerDraw) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
167 super.initialize(viewer, column);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
168 setOwnerDrawEnabled(viewer, column, enableOwnerDraw);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
169 }
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
171 public void update(ViewerCell cell) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
172 // Force a redraw
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
173 Rectangle cellBounds = cell.getBounds();
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
174 cell.getControl().redraw(cellBounds.x, cellBounds.y, cellBounds.width,
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
175 cellBounds.height, true);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
176
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 }
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 /**
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * Handle the erase event. The default implementation colors the background
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * of selected areas with {@link DWT#COLOR_LIST_SELECTION} and foregrounds
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
182 * with {@link DWT#COLOR_LIST_SELECTION_TEXT}. Note that this
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
183 * implementation causes non-native behavior on some platforms. Subclasses
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
184 * should override this method and <b>not</b> call the super
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
185 * implementation.
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 * @param event
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 * the erase event
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 * @param element
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 * the model object
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 * @see DWT#EraseItem
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 * @see DWT#COLOR_LIST_SELECTION
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 * @see DWT#COLOR_LIST_SELECTION_TEXT
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 */
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 protected void erase(Event event, Object element) {
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 Rectangle bounds = event.getBounds();
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 if ((event.detail & DWT.SELECTED) !is 0) {
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 Color oldForeground = event.gc.getForeground();
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 Color oldBackground = event.gc.getBackground();
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 event.gc.setBackground(event.item.getDisplay().getSystemColor(
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 DWT.COLOR_LIST_SELECTION));
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 event.gc.setForeground(event.item.getDisplay().getSystemColor(
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 DWT.COLOR_LIST_SELECTION_TEXT));
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 event.gc.fillRectangle(bounds);
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 /* restore the old GC colors */
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 event.gc.setForeground(oldForeground);
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 event.gc.setBackground(oldBackground);
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 /* ensure that default selection is not drawn */
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 event.detail &= ~DWT.SELECTED;
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 }
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 }
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 /**
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 * Handle the measure event.
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 *
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 * @param event
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 * the measure event
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 * @param element
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 * the model element
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 * @see DWT#MeasureItem
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 */
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 protected abstract void measure(Event event, Object element);
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 /**
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
230 * Handle the paint event.
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 *
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
232 * @param event
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
233 * the paint event
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
234 * @param element
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
235 * the model element
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
236 * @see DWT#PaintItem
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 */
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
238 protected abstract void paint(Event event, Object element);
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
240 /**
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
241 * Enables or disables owner draw for the given viewer and column. This
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
242 * method will attach or remove a listener to the underlying control as
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
243 * necessary. This method is called from
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
244 * {@link #initialize(ColumnViewer, ViewerColumn)} and
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
245 * {@link #dispose(ColumnViewer, ViewerColumn)} but may be called from
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
246 * subclasses to enable or disable owner draw dynamically.
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 *
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
248 * @param viewer
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
249 * the viewer
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
250 * @param column
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
251 * the column, or <code>null</code> if a column is not
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
252 * available
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
253 * @param enabled
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
254 * <code>true</code> if owner draw should be enabled,
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
255 * <code>false</code> otherwise
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
256 *
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
257 * @since 3.4
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 */
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
259 protected void setOwnerDrawEnabled(ColumnViewer viewer,
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
260 ViewerColumn column, bool enabled) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
261 if (enabled) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
262 OwnerDrawListener listener = getOrCreateOwnerDrawListener(viewer);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
263 if (column is null) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
264 listener.enabledGlobally++;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
265 } else {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
266 listener.enabledColumns.add(column);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
267 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
268 } else {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
269 OwnerDrawListener listener = cast(OwnerDrawListener) viewer
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
270 .getControl().getData(OWNER_DRAW_LABEL_PROVIDER_LISTENER);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
271 if (listener !is null) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
272 if (column is null) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
273 listener.enabledGlobally--;
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
274 } else {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
275 listener.enabledColumns.remove(column);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
276 }
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: 72
diff changeset
277 if (listener.enabledColumns.isEmpty()
72
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
278 && listener.enabledGlobally <= 0) {
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
279 viewer.getControl().removeListener(DWT.MeasureItem,
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
280 listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
281 viewer.getControl().removeListener(DWT.EraseItem, listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
282 viewer.getControl().removeListener(DWT.PaintItem, listener);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
283 viewer.getControl().setData(
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
284 OWNER_DRAW_LABEL_PROVIDER_LISTENER, null);
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
285 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
286 }
5df4896124c7 JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents: 43
diff changeset
287 }
10
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 }
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289
b6c35faf97c8 Viewers
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 }