annotate dwt/widgets/Tree.d @ 45:d8635bb48c7c

Merge with SWT 3.5
author Jacob Carlborg <doob@me.com>
date Mon, 01 Dec 2008 17:07:00 +0100
parents e831403a80a9
children cfa563df4fdd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1 /*******************************************************************************
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
7 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
8 * Contributors:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
10 *******************************************************************************/
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
11 module dwt.widgets.Tree;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
12
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
13 import dwt.dwthelper.utils;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
14
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
15 import dwt.DWT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
16 import dwt.DWTException;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
17 import dwt.accessibility.ACC;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
18 import dwt.events.SelectionEvent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
19 import dwt.events.SelectionListener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
20 import dwt.events.TreeListener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
21 import dwt.graphics.Color;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
22 import dwt.graphics.Font;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
23 import dwt.graphics.GC;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
24 import dwt.graphics.GCData;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
25 import dwt.graphics.Image;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
26 import dwt.graphics.Point;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
27 import dwt.graphics.Rectangle;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
28 import dwt.internal.cocoa.NSArray;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
29 import dwt.internal.cocoa.NSBezierPath;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
30 import dwt.internal.cocoa.NSBrowserCell;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
31 import dwt.internal.cocoa.NSButtonCell;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
32 import dwt.internal.cocoa.NSColor;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
33 import dwt.internal.cocoa.NSColorSpace;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
34 import dwt.internal.cocoa.NSDictionary;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
35 import dwt.internal.cocoa.NSEvent;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
36 import dwt.internal.cocoa.NSFont;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
37 import dwt.internal.cocoa.NSGraphicsContext;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
38 import dwt.internal.cocoa.NSIndexSet;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
39 import dwt.internal.cocoa.NSMutableIndexSet;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
40 import dwt.internal.cocoa.NSNotification;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
41 import dwt.internal.cocoa.NSNumber;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
42 import dwt.internal.cocoa.NSOutlineView;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
43 import dwt.internal.cocoa.NSPoint;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
44 import dwt.internal.cocoa.NSRange;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
45 import dwt.internal.cocoa.NSRect;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
46 import dwt.internal.cocoa.NSScrollView;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
47 import dwt.internal.cocoa.NSSize;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
48 import dwt.internal.cocoa.NSString;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
49 import dwt.internal.cocoa.NSTableColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
50 import dwt.internal.cocoa.NSTableHeaderCell;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
51 import dwt.internal.cocoa.NSTableHeaderView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
52 import dwt.internal.cocoa.NSTableView;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
53 import dwt.internal.cocoa.NSView;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
54 import dwt.internal.cocoa.OS;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
55 import dwt.internal.cocoa.SWTBrowserCell;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
56 import dwt.internal.cocoa.SWTOutlineView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
57 import dwt.internal.cocoa.SWTScrollView;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
58 import dwt.internal.cocoa.SWTTableHeaderCell;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
59 import dwt.internal.cocoa.SWTTableHeaderView;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
60 import dwt.internal.cocoa.SWTTreeItem;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
61 import dwt.internal.cocoa.id;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
62
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
63 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
64 * Instances of this class provide a selectable user interface object
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
65 * that displays a hierarchy of items and issues notification when an
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
66 * item in the hierarchy is selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
67 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
68 * The item children that may be added to instances of this class
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
69 * must be of type <code>TreeItem</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
70 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
71 * Style <code>VIRTUAL</code> is used to create a <code>Tree</code> whose
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
72 * <code>TreeItem</code>s are to be populated by the client on an on-demand basis
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
73 * instead of up-front. This can provide significant performance improvements for
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
74 * trees that are very large or for which <code>TreeItem</code> population is
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
75 * expensive (for example, retrieving values from an external source).
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
76 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
77 * Here is an example of using a <code>Tree</code> with style <code>VIRTUAL</code>:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
78 * <code><pre>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
79 * final Tree tree = new Tree(parent, DWT.VIRTUAL | DWT.BORDER);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
80 * tree.setItemCount(20);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
81 * tree.addListener(DWT.SetData, new Listener() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
82 * public void handleEvent(Event event) {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
83 * TreeItem item = cast(TreeItem)event.item;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
84 * TreeItem parentItem = item.getParentItem();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
85 * String text = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
86 * if (parentItem is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
87 * text = "node " + tree.indexOf(item);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
88 * } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
89 * text = parentItem.getText() + " - " + parentItem.indexOf(item);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
90 * }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
91 * item.setText(text);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
92 * System.out.println(text);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
93 * item.setItemCount(10);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
94 * }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
95 * });
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
96 * </pre></code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
97 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
98 * Note that although this class is a subclass of <code>Composite</code>,
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
99 * it does not normally make sense to add <code>Control</code> children to
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
100 * it, or set a layout on it, unless implementing something like a cell
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
101 * editor.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
102 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
103 * <dl>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
104 * <dt><b>Styles:</b></dt>
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
105 * <dd>SINGLE, MULTI, CHECK, FULL_SELECTION, VIRTUAL, NO_SCROLL</dd>
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
106 * <dt><b>Events:</b></dt>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
107 * <dd>Selection, DefaultSelection, Collapse, Expand, SetData, MeasureItem, EraseItem, PaintItem</dd>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
108 * </dl>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
109 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
110 * Note: Only one of the styles SINGLE and MULTI may be specified.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
111 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
112 * IMPORTANT: This class is <em>not</em> intended to be subclassed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
113 * </p>
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
114 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
115 * @see <a href="http://www.eclipse.org/swt/snippets/#tree">Tree, TreeItem, TreeColumn snippets</a>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
116 * @see <a href="http://www.eclipse.org/swt/examples.php">DWT Example: ControlExample</a>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
117 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
118 */
3
649b8e223d5a fix extends
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
119 public class Tree : Composite {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
120 NSTableColumn firstColumn, checkColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
121 NSBrowserCell dataCell;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
122 NSTableHeaderView headerView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
123 TreeItem [] items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
124 int itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
125 TreeColumn [] columns;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
126 TreeColumn sortColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
127 int columnCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
128 int sortDirection;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
129 float /*double*/ levelIndent;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
130 bool ignoreExpand, ignoreSelect;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
131
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
132 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
133 * Constructs a new instance of this class given its parent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
134 * and a style value describing its behavior and appearance.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
135 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
136 * The style value is either one of the style constants defined in
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
137 * class <code>DWT</code> which is applicable to instances of this
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
138 * class, or must be built by <em>bitwise OR</em>'ing together
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
139 * (that is, using the <code>int</code> "|" operator) two or more
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
140 * of those <code>DWT</code> style constants. The class description
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
141 * lists the style constants that are applicable to the class.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
142 * Style bits are also inherited from superclasses.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
143 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
144 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
145 * @param parent a composite control which will be the parent of the new instance (cannot be null)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
146 * @param style the style of control to construct
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
147 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
148 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
149 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
150 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
151 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
152 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
153 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
154 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
155 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
156 * @see DWT#SINGLE
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
157 * @see DWT#MULTI
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
158 * @see DWT#CHECK
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
159 * @see DWT#FULL_SELECTION
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
160 * @see DWT#VIRTUAL
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
161 * @see DWT#NO_SCROLL
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
162 * @see Widget#checkSubclass
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
163 * @see Widget#getStyle
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
164 */
5
1a8b3cb347e0 Fix Ctors to 'this'
Frank Benoit <benoit@tionex.de>
parents: 3
diff changeset
165 public this (Composite parent, int style) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
166 super (parent, checkStyle (style));
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
167 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
168
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
169 TreeItem _getItem (TreeItem parentItem, int index, bool create) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
170 int count;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
171 TreeItem[] items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
172 if (parentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
173 count = parentItem.itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
174 items = parentItem.items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
175 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
176 count = this.itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
177 items = this.items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
178 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
179 if (index < 0 || index >= count) return null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
180 TreeItem item = items [index];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
181 if (item !is null || (style & DWT.VIRTUAL) is 0 || !create) return item;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
182 item = new TreeItem (this, parentItem, DWT.NONE, index, false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
183 items [index] = item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
184 return item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
185 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
186
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
187 int accessibilityAttributeValue (int /*long*/ id, int /*long*/ sel, int /*long*/ arg0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
188
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
189 if (accessible !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
190 NSString attribute = new NSString(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
191 id returnValue = accessible.internal_accessibilityAttributeValue(attribute, ACC.CHILDID_SELF);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
192 if (returnValue !is null) return returnValue.id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
193 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
194
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
195 NSString attributeName = new NSString(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
196
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
197 // Accessibility Verifier queries for a title or description. NSOutlineView doesn't
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
198 // seem to return either, so we return a default description value here.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
199 if (attributeName.isEqualToString (OS.NSAccessibilityDescriptionAttribute)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
200 return NSString.stringWith("").id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
201 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
202
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
203 return super.accessibilityAttributeValue(id, sel, arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
204 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
205
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
206
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
207 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
208 * Adds the listener to the collection of listeners who will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
209 * be notified when the user changes the receiver's selection, by sending
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
210 * it one of the messages defined in the <code>SelectionListener</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
211 * interface.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
212 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
213 * When <code>widgetSelected</code> is called, the item field of the event object is valid.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
214 * If the receiver has the <code>DWT.CHECK</code> style and the check selection changes,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
215 * the event object detail field contains the value <code>DWT.CHECK</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
216 * <code>widgetDefaultSelected</code> is typically called when an item is double-clicked.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
217 * The item field of the event object is valid for default selection, but the detail field is not used.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
218 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
219 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
220 * @param listener the listener which should be notified when the user changes the receiver's selection
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
221 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
222 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
223 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
224 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
225 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
226 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
227 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
228 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
229 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
230 * @see SelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
231 * @see #removeSelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
232 * @see SelectionEvent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
233 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
234 public void addSelectionListener(SelectionListener listener) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
235 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
236 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
237 TypedListener typedListener = new TypedListener (listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
238 addListener (DWT.Selection, typedListener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
239 addListener (DWT.DefaultSelection, typedListener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
240 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
241
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
242 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
243 * Adds the listener to the collection of listeners who will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
244 * be notified when an item in the receiver is expanded or collapsed
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
245 * by sending it one of the messages defined in the <code>TreeListener</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
246 * interface.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
247 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
248 * @param listener the listener which should be notified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
249 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
250 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
251 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
252 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
253 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
254 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
255 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
256 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
257 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
258 * @see TreeListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
259 * @see #removeTreeListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
260 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
261 public void addTreeListener(TreeListener listener) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
262 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
263 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
264 TypedListener typedListener = new TypedListener (listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
265 addListener (DWT.Expand, typedListener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
266 addListener (DWT.Collapse, typedListener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
267 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
268
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
269 bool checkData (TreeItem item, bool redraw) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
270 if (item.cached) return true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
271 if ((style & DWT.VIRTUAL) !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
272 item.cached = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
273 Event event = new Event ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
274 TreeItem parentItem = item.getParentItem ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
275 event.item = item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
276 event.index = parentItem is null ? indexOf (item) : parentItem.indexOf (item);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
277 // ignoreRedraw = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
278 sendEvent (DWT.SetData, event);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
279 //widget could be disposed at this point
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
280 // ignoreRedraw = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
281 if (isDisposed () || item.isDisposed ()) return false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
282 if (redraw) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
283 // if (!setScrollWidth (item)) item.redraw (OS.kDataBrowserNoItem);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
284 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
285 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
286 return true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
287 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
288
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
289 static int checkStyle (int style) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
290 /*
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
291 * Feature in Windows. Even when WS_HSCROLL or
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
292 * WS_VSCROLL is not specified, Windows creates
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
293 * trees and tables with scroll bars. The fix
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
294 * is to set H_SCROLL and V_SCROLL.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
295 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
296 * NOTE: This code appears on all platforms so that
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
297 * applications have consistent scroll bar behavior.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
298 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
299 if ((style & DWT.NO_SCROLL) is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
300 style |= DWT.H_SCROLL | DWT.V_SCROLL;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
301 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
302 return checkBits (style, DWT.SINGLE, DWT.MULTI, 0, 0, 0, 0);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
303 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
304
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
305 protected void checkSubclass () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
306 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
307 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
308
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
309 void clear (TreeItem parentItem, int index, bool all) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
310 TreeItem item = _getItem (parentItem, index, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
311 if (item !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
312 item.clear();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
313 ((NSOutlineView) view).reloadItem (item.handle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
314 if (all) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
315 clearAll (item, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
316 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
317 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
318 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
319
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
320 void clearAll (TreeItem parentItem, bool all) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
321 int count = getItemCount (parentItem);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
322 if (count is 0) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
323 TreeItem [] children = parentItem is null ? items : parentItem.items;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
324 for (int i=0; i<count; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
325 TreeItem item = children [i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
326 if (item !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
327 item.clear ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
328 ((NSOutlineView) view).reloadItem (item.handle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
329 if (all) clearAll (item, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
330 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
331 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
332 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
333
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
334 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
335 * Clears the item at the given zero-relative index in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
336 * The text, icon and other attributes of the item are set to the default
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
337 * value. If the tree was created with the <code>DWT.VIRTUAL</code> style,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
338 * these attributes are requested again as needed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
339 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
340 * @param index the index of the item to clear
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
341 * @param all <code>true</code> if all child items of the indexed item should be
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
342 * cleared recursively, and <code>false</code> otherwise
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
343 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
344 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
345 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
346 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
347 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
348 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
349 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
350 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
351 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
352 * @see DWT#VIRTUAL
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
353 * @see DWT#SetData
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
354 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
355 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
356 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
357 public void clear (int index, bool all) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
358 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
359 int count = getItemCount ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
360 if (index < 0 || index >= count) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
361 clear (null, index, all);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
362 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
363
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
364 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
365 * Clears all the items in the receiver. The text, icon and other
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
366 * attributes of the items are set to their default values. If the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
367 * tree was created with the <code>DWT.VIRTUAL</code> style, these
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
368 * attributes are requested again as needed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
369 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
370 * @param all <code>true</code> if all child items should be cleared
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
371 * recursively, and <code>false</code> otherwise
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
372 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
373 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
374 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
375 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
376 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
377 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
378 * @see DWT#VIRTUAL
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
379 * @see DWT#SetData
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
380 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
381 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
382 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
383 public void clearAll (bool all) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
384 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
385 clearAll (null, all);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
386 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
387
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
388 void clearCustomWidths (TreeItem item) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
389 item.customWidth = -1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
390 for (int i = 0; i < item.itemCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
391 clearCustomWidths (items[i]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
392 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
393 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
394
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
395 public Point computeSize (int wHint, int hHint, bool changed) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
396 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
397 int width = 0, height = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
398 if (wHint is DWT.DEFAULT) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
399 if (columnCount !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
400 for (int i=0; i<columnCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
401 width += columns [i].getWidth ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
402 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
403 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
404 // int levelIndent = DISCLOSURE_COLUMN_LEVEL_INDENT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
405 // if (OS.VERSION >= 0x1040) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
406 // float [] metric = new float [1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
407 // OS.DataBrowserGetMetric (handle, OS.kDataBrowserMetricDisclosureColumnPerDepthGap, null, metric);
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
408 // levelIndent = cast(int) metric [0];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
409 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
410 // GC gc = new GC (this);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
411 // width = calculateWidth (childIds, gc, true, 0, levelIndent);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
412 // gc.dispose ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
413 // width += getInsetWidth (column_id, true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
414 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
415 if ((style & DWT.CHECK) !is 0) width += getCheckColumnWidth ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
416 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
417 width = wHint;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
418 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
419 if (hHint is DWT.DEFAULT) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
420 height = (int)/*64*/(cast(NSOutlineView) view).numberOfRows () * getItemHeight () + getHeaderHeight ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
421 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
422 height = hHint;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
423 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
424 if (width <= 0) width = DEFAULT_WIDTH;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
425 if (height <= 0) height = DEFAULT_HEIGHT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
426 Rectangle rect = computeTrim (0, 0, width, height);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
427 return new Point (rect.width, rect.height);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
428 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
429
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
430 void createColumn (TreeItem item, int index) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
431 if (item.items !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
432 for (int i = 0; i < item.items.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
433 if (item.items[i] !is null) createColumn (item.items[i], index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
434 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
435 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
436 String [] strings = item.strings;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
437 if (strings !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
438 String [] temp = new String [columnCount];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
439 System.arraycopy (strings, 0, temp, 0, index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
440 System.arraycopy (strings, index, temp, index+1, columnCount-index-1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
441 temp [index] = "";
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
442 item.strings = temp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
443 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
444 if (index is 0) item.text = "";
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
445 Image [] images = item.images;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
446 if (images !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
447 Image [] temp = new Image [columnCount];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
448 System.arraycopy (images, 0, temp, 0, index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
449 System.arraycopy (images, index, temp, index+1, columnCount-index-1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
450 item.images = temp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
451 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
452 if (index is 0) item.image = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
453 Color [] cellBackground = item.cellBackground;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
454 if (cellBackground !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
455 Color [] temp = new Color [columnCount];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
456 System.arraycopy (cellBackground, 0, temp, 0, index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
457 System.arraycopy (cellBackground, index, temp, index+1, columnCount-index-1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
458 item.cellBackground = temp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
459 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
460 Color [] cellForeground = item.cellForeground;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
461 if (cellForeground !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
462 Color [] temp = new Color [columnCount];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
463 System.arraycopy (cellForeground, 0, temp, 0, index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
464 System.arraycopy (cellForeground, index, temp, index+1, columnCount-index-1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
465 item.cellForeground = temp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
466 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
467 Font [] cellFont = item.cellFont;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
468 if (cellFont !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
469 Font [] temp = new Font [columnCount];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
470 System.arraycopy (cellFont, 0, temp, 0, index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
471 System.arraycopy (cellFont, index, temp, index+1, columnCount-index-1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
472 item.cellFont = temp;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
473 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
474 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
475
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
476 void createHandle () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
477 NSScrollView scrollWidget = cast(NSScrollView) new SWTScrollView ().alloc ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
478 scrollWidget.initWithFrame (new NSRect ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
479 scrollWidget.setHasHorizontalScroller (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
480 scrollWidget.setHasVerticalScroller (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
481 scrollWidget.setAutohidesScrollers (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
482 scrollWidget.setBorderType(hasBorder () ? OS.NSBezelBorder : OS.NSNoBorder);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
483
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
484 NSOutlineView widget = cast(NSOutlineView) new SWTOutlineView ().alloc ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
485 widget.initWithFrame (new NSRect ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
486 widget.setAllowsMultipleSelection ((style & DWT.MULTI) !is 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
487 widget.setAllowsColumnReordering (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
488 widget.setAutoresizesOutlineColumn (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
489 widget.setAutosaveExpandedItems (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
490 widget.setDataSource (widget);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
491 widget.setDelegate (widget);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
492 widget.setDoubleAction (OS.sel_sendDoubleSelection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
493 if (!hasBorder ()) widget.setFocusRingType (OS.NSFocusRingTypeNone);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
494
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
495 headerView = (NSTableHeaderView)new SWTTableHeaderView ().alloc ().init ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
496 widget.setHeaderView (null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
497
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
498 NSString str = NSString.stringWith ("");
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
499 if ((style & DWT.CHECK) !is 0) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
500 checkColumn = cast(NSTableColumn) new NSTableColumn ().alloc ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
501 checkColumn.initWithIdentifier (checkColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
502 checkColumn.headerCell ().setTitle (str);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
503 widget.addTableColumn (checkColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
504 widget.setOutlineTableColumn (checkColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
505 NSButtonCell cell = cast(NSButtonCell) new NSButtonCell ().alloc ().init ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
506 checkColumn.setDataCell (cell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
507 cell.setButtonType (OS.NSSwitchButton);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
508 cell.setImagePosition (OS.NSImageOnly);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
509 cell.setAllowsMixedState (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
510 checkColumn.setWidth (getCheckColumnWidth ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
511 checkColumn.setResizingMask (OS.NSTableColumnNoResizing);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
512 checkColumn.setEditable (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
513 cell.release ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
514 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
515
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
516 firstColumn = cast(NSTableColumn) new NSTableColumn ().alloc ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
517 firstColumn.initWithIdentifier (firstColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
518 firstColumn.setMinWidth(0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
519 firstColumn.headerCell ().setTitle (str);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
520 widget.addTableColumn (firstColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
521 widget.setOutlineTableColumn (firstColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
522 dataCell = cast(NSBrowserCell)new SWTBrowserCell ().alloc ().init ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
523 dataCell.setLeaf (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
524 firstColumn.setDataCell (dataCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
525 levelIndent = widget.indentationPerLevel ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
526
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
527 scrollView = scrollWidget;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
528 view = widget;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
529 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
530
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
531 void createItem (TreeColumn column, int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
532 if (!(0 <= index && index <= columnCount)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
533 if (index is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
534 // first column must be left aligned
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
535 column.style &= ~(DWT.LEFT | DWT.RIGHT | DWT.CENTER);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
536 column.style |= DWT.LEFT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
537 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
538 if (columnCount is columns.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
539 TreeColumn [] newColumns = new TreeColumn [columnCount + 4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
540 System.arraycopy (columns, 0, newColumns, 0, columns.length);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
541 columns = newColumns;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
542 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
543 NSTableColumn nsColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
544 if (columnCount is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
545 //TODO - clear attributes, alignment etc.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
546 nsColumn = firstColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
547 nsColumn.retain();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
548 firstColumn = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
549 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
550 //TODO - set attributes, alignment etc.
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
551 NSOutlineView outlineView = (NSOutlineView)view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
552 NSString str = NSString.stringWith ("");
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
553 nsColumn = cast(NSTableColumn) new NSTableColumn ().alloc ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
554 nsColumn.initWithIdentifier (nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
555 nsColumn.setMinWidth(0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
556 nsColumn.headerCell ().setTitle (str);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
557 outlineView.addTableColumn (nsColumn);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
558 int checkColumn = (style & DWT.CHECK) !is 0 ? 1 : 0;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
559 outlineView.moveColumn (columnCount + checkColumn, index + checkColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
560 nsColumn.setDataCell (dataCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
561 if (index is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
562 outlineView.setOutlineTableColumn (nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
563 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
564 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
565 column.createJNIRef ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
566 NSTableHeaderCell headerCell = (NSTableHeaderCell)new SWTTableHeaderCell ().alloc ().init ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
567 nsColumn.setHeaderCell (headerCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
568 display.addWidget (headerCell, column);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
569 column.nsColumn = nsColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
570 nsColumn.setWidth (0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
571 System.arraycopy (columns, index, columns, index + 1, columnCount++ - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
572 columns [index] = column;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
573 if (columnCount > 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
574 for (int i=0; i<items.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
575 TreeItem item = items [i];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
576 if (item !is null) createColumn (item, index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
577 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
578 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
579 for (int i = 0; i < itemCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
580 clearCustomWidths (items[i]);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
581 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
582 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
583 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
584
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
585 void createItem (TreeItem item, TreeItem parentItem, int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
586 int count;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
587 TreeItem [] items;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
588 if (parentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
589 count = parentItem.itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
590 items = parentItem.items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
591 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
592 count = this.itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
593 items = this.items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
594 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
595 if (index is -1) index = count;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
596 if (!(0 <= index && index <= count)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
597 if (count is items.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
598 TreeItem [] newItems = new TreeItem [items.length + 4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
599 System.arraycopy (items, 0, newItems, 0, items.length);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
600 items = newItems;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
601 if (parentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
602 parentItem.items = items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
603 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
604 this.items = items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
605 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
606 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
607 System.arraycopy (items, index, items, index + 1, count++ - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
608 items [index] = item;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
609 item.items = new TreeItem [4];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
610 SWTTreeItem handle = (SWTTreeItem) new SWTTreeItem ().alloc ().init ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
611 item.handle = handle;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
612 item.createJNIRef ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
613 item.register ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
614 if (parentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
615 parentItem.itemCount = count;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
616 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
617 this.itemCount = count;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
618 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
619 ignoreExpand = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
620 NSOutlineView widget = cast(NSOutlineView)view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
621 widget.reloadItem(parentItem !is null ? parentItem.handle : null, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
622 ignoreExpand = false;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
623 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
624
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
625 void createWidget () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
626 super.createWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
627 items = new TreeItem [4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
628 columns = new TreeColumn [4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
629 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
630
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
631 Color defaultBackground () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
632 return display.getSystemColor (DWT.COLOR_LIST_BACKGROUND);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
633 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
634
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
635 Color defaultForeground () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
636 return display.getSystemColor (DWT.COLOR_LIST_FOREGROUND);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
637 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
638
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
639 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
640 * Deselects all selected items in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
641 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
642 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
643 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
644 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
645 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
646 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
647 public void deselectAll () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
648 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
649 NSTableView widget = cast(NSOutlineView) view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
650 ignoreSelect = true;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
651 widget.deselectAll (null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
652 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
653 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
654
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
655 void deregister () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
656 super.deregister ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
657 display.removeWidget (headerView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
658 display.removeWidget (dataCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
659 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
660
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
661 /**
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
662 * Deselects an item in the receiver. If the item was already
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
663 * deselected, it remains deselected.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
664 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
665 * @param item the item to be deselected
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
666 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
667 * @exception IllegalArgumentException <ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
668 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
669 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
670 * </ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
671 * @exception DWTException <ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
672 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
673 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
674 * </ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
675 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
676 * @since 3.4
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
677 */
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
678 public void deselect (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
679 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
680 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
681 if (item.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
682 // ignoreSelect = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
683 // /*
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
684 // * Bug in the Macintosh. When the DataBroswer selection flags includes
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
685 // * both kDataBrowserNeverEmptySelectionSet and kDataBrowserSelectOnlyOne,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
686 // * two items are selected when SetDataBrowserSelectedItems() is called
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
687 // * with kDataBrowserItemsAssign to assign a new seletion despite the fact
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
688 // * that kDataBrowserSelectOnlyOne was specified. The fix is to save and
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
689 // * restore kDataBrowserNeverEmptySelectionSet around each call to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
690 // * SetDataBrowserSelectedItems().
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
691 // */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
692 // int [] selectionFlags = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
693 // if ((style & DWT.SINGLE) !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
694 // selectionFlags = new int [1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
695 // OS.GetDataBrowserSelectionFlags (handle, selectionFlags);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
696 // OS.SetDataBrowserSelectionFlags (handle, selectionFlags [0] & ~OS.kDataBrowserNeverEmptySelectionSet);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
697 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
698 // OS.SetDataBrowserSelectedItems (handle, 1, new int [] {item.id}, OS.kDataBrowserItemsRemove);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
699 // if ((style & DWT.SINGLE) !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
700 // OS.SetDataBrowserSelectionFlags (handle, selectionFlags [0]);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
701 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
702 // ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
703 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
704
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
705
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
706 void destroyItem (TreeColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
707 int index = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
708 while (index < columnCount) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
709 if (columns [index] is column) break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
710 index++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
711 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
712 for (int i=0; i<items.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
713 TreeItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
714 if (item !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
715 if (columnCount <= 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
716 item.strings = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
717 item.images = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
718 item.cellBackground = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
719 item.cellForeground = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
720 item.cellFont = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
721 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
722 if (item.strings !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
723 String [] strings = item.strings;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
724 if (index is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
725 item.text = strings [1] !is null ? strings [1] : "";
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
726 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
727 String [] temp = new String [columnCount - 1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
728 System.arraycopy (strings, 0, temp, 0, index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
729 System.arraycopy (strings, index + 1, temp, index, columnCount - 1 - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
730 item.strings = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
731 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
732 if (index is 0) item.text = "";
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
733 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
734 if (item.images !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
735 Image [] images = item.images;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
736 if (index is 0) item.image = images [1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
737 Image [] temp = new Image [columnCount - 1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
738 System.arraycopy (images, 0, temp, 0, index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
739 System.arraycopy (images, index + 1, temp, index, columnCount - 1 - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
740 item.images = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
741 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
742 if (index is 0) item.image = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
743 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
744 if (item.cellBackground !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
745 Color [] cellBackground = item.cellBackground;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
746 Color [] temp = new Color [columnCount - 1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
747 System.arraycopy (cellBackground, 0, temp, 0, index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
748 System.arraycopy (cellBackground, index + 1, temp, index, columnCount - 1 - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
749 item.cellBackground = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
750 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
751 if (item.cellForeground !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
752 Color [] cellForeground = item.cellForeground;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
753 Color [] temp = new Color [columnCount - 1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
754 System.arraycopy (cellForeground, 0, temp, 0, index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
755 System.arraycopy (cellForeground, index + 1, temp, index, columnCount - 1 - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
756 item.cellForeground = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
757 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
758 if (item.cellFont !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
759 Font [] cellFont = item.cellFont;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
760 Font [] temp = new Font [columnCount - 1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
761 System.arraycopy (cellFont, 0, temp, 0, index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
762 System.arraycopy (cellFont, index + 1, temp, index, columnCount - 1 - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
763 item.cellFont = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
764 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
765 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
766 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
767 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
768
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
769 int oldIndex = (int)/*64*/((NSOutlineView)view).columnWithIdentifier (column.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
770
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
771 if (columnCount is 1) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
772 //TODO - reset attributes
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
773 firstColumn = column.nsColumn;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
774 firstColumn.setWidth (0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
775 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
776 if (index is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
777 ((NSOutlineView)view).setOutlineTableColumn(columns[1].nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
778 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
779 ((NSOutlineView)view).removeTableColumn(column.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
780 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
781 System.arraycopy (columns, index + 1, columns, index, --columnCount - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
782 columns [columnCount] = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
783
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
784 NSArray array = ((NSOutlineView)view).tableColumns ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
785 int arraySize = (int)/*64*/array.count ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
786 for (int i = oldIndex; i < arraySize; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
787 int /*long*/ columnId = array.objectAtIndex (i).id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
788 for (int j = 0; j < columnCount; j++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
789 if (columns[j].nsColumn.id is columnId) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
790 columns [j].sendEvent (DWT.Move);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
791 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
792 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
793 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
794 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
795 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
796
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
797 void destroyItem (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
798 int count;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
799 TreeItem[] items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
800 TreeItem parentItem = item.parentItem;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
801 if (parentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
802 count = parentItem.itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
803 items = parentItem.items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
804 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
805 count = this.itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
806 items = this.items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
807 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
808 int index = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
809 while (index < count) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
810 if (items [index] is item) break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
811 index++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
812 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
813 // if (index !is itemCount - 1) fixSelection (index, false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
814 System.arraycopy (items, index + 1, items, index, --count - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
815 items [count] = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
816 if (parentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
817 parentItem.itemCount = count;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
818 (cast(NSOutlineView) view).reloadItem (parentItem.handle, true);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
819 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
820 this.itemCount = count;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
821 (cast(NSOutlineView) view).reloadItem (null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
822 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
823
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
824 //noteNumberOfRowsChanged was causing crashes whenever
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
825 //a TreeItem was disposed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
826 //Using reloadItem avoids the crashes.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
827 //Not sure that this NSTableView function
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
828 //makes sense in an NSOutlineView.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
829
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
830 //(cast(NSTableView)view).noteNumberOfRowsChanged();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
831
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
832 // setScrollWidth (true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
833 // fixScrollBar ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
834 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
835
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
836 void drawInteriorWithFrame_inView (int /*long*/ id, int /*long*/ sel, int /*long*/ cellFrame, int /*long*/ view) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
837 NSRect rect = new NSRect ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
838 OS.memmove (rect, cellFrame, NSRect.sizeof);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
839
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
840 NSOutlineView outlineView = (NSOutlineView)this.view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
841 NSBrowserCell cell = new NSBrowserCell (id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
842 NSRange rowsRange = outlineView.rowsInRect (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
843 int rowIndex = (int)/*64*/rowsRange.location;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
844 TreeItem item = (TreeItem) display.getWidget (outlineView.itemAtRow (rowIndex).id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
845 int columnIndex = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
846 id nsColumn = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
847 int nsColumnIndex = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
848 if (columnCount !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
849 NSIndexSet columnsSet = outlineView.columnIndexesInRect (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
850 nsColumnIndex = (int)/*64*/columnsSet.firstIndex ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
851 NSArray nsColumns = outlineView.tableColumns ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
852 nsColumn = nsColumns.objectAtIndex (nsColumnIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
853 for (int i = 0; i < columnCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
854 if (columns[i].nsColumn.id is nsColumn.id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
855 columnIndex = indexOf (columns[i]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
856 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
857 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
858 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
859 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
860
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
861 Color background = item.cellBackground !is null ? item.cellBackground [columnIndex] : null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
862 if (background is null) background = item.background;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
863 bool drawBackground = background !is null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
864 bool drawForeground = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
865 bool isSelected = outlineView.isRowSelected (rowIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
866 bool drawSelection = isSelected;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
867
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
868 NSColor nsSelectionBackground = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
869 NSColor nsSelectionForeground = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
870 if (isSelected) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
871 if (isFocusControl ()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
872 nsSelectionForeground = NSColor.alternateSelectedControlTextColor ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
873 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
874 nsSelectionForeground = NSColor.selectedControlTextColor ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
875 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
876 nsSelectionForeground = nsSelectionForeground.colorUsingColorSpace (NSColorSpace.deviceRGBColorSpace ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
877 nsSelectionBackground = cell.highlightColorInView (outlineView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
878 nsSelectionBackground = nsSelectionBackground.colorUsingColorSpace (NSColorSpace.deviceRGBColorSpace ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
879 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
880
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
881 NSRect fullRect = new NSRect ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
882 fullRect.y = rect.y; fullRect.height = rect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
883 if (columnCount is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
884 fullRect.x = rect.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
885 if (item.customWidth !is -1) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
886 fullRect.width = item.customWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
887 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
888 NSSize contentSize = cell.cellSizeForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
889 fullRect.width = contentSize.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
890 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
891 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
892 NSSize spacing = outlineView.intercellSpacing ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
893 if (nsColumn.id is outlineView.outlineTableColumn ().id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
894 NSRect columnRect = outlineView.rectOfColumn (nsColumnIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
895 fullRect.x = columnRect.x; fullRect.width = columnRect.width + spacing.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
896 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
897 fullRect.x = rect.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
898 fullRect.width = rect.width + spacing.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
899 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
900 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
901
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
902 if (hooks (DWT.EraseItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
903 NSRect eraseItemRect = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
904 // TODO how to handle rearranged columns? The third clause below ensures that
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
905 // there are either 0 columns or that column 0 is still the first physical column.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
906 if (columnIndex is 0 && (style & DWT.CHECK) !is 0 && (columnCount is 0 || outlineView.columnWithIdentifier (columns[0].nsColumn) is 1)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
907 eraseItemRect = new NSRect ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
908 eraseItemRect.y = fullRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
909 eraseItemRect.width = fullRect.x + fullRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
910 eraseItemRect.height = fullRect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
911 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
912 eraseItemRect = fullRect;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
913 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
914 GCData data = new GCData ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
915 data.paintRect = eraseItemRect;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
916 GC gc = GC.cocoa_new (this, data);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
917 gc.setFont (item.getFont (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
918 if (isSelected) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
919 float /*double*/[] components = new float /*double*/[(int)/*64*/nsSelectionForeground.numberOfComponents ()];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
920 nsSelectionForeground.getComponents (components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
921 Color selectionForeground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
922 gc.setForeground (selectionForeground);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
923 components = new float /*double*/[(int)/*64*/nsSelectionBackground.numberOfComponents ()];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
924 nsSelectionBackground.getComponents (components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
925 Color selectionBackground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
926 gc.setBackground (selectionBackground);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
927 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
928 gc.setForeground (item.getForeground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
929 gc.setBackground (item.getBackground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
930 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
931
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
932 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
933 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
934 event.gc = gc;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
935 event.index = columnIndex;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
936 event.detail = DWT.FOREGROUND;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
937 if (drawBackground) event.detail |= DWT.BACKGROUND;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
938 if (isSelected) event.detail |= DWT.SELECTED;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
939 event.x = (int)eraseItemRect.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
940 event.y = (int)eraseItemRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
941 event.width = (int)eraseItemRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
942 event.height = (int)eraseItemRect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
943 sendEvent (DWT.EraseItem, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
944 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
945 if (item.isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
946 if (!event.doit) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
947 drawForeground = drawBackground = drawSelection = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
948 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
949 drawBackground = drawBackground && (event.detail & DWT.BACKGROUND) !is 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
950 drawForeground = (event.detail & DWT.FOREGROUND) !is 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
951 drawSelection = drawSelection && (event.detail & DWT.SELECTED) !is 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
952 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
953 if (drawSelection) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
954 NSRect selectionRect = new NSRect ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
955 selectionRect.y = rect.y; selectionRect.height = rect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
956 if (columnCount > 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
957 NSRect columnRect = outlineView.rectOfColumn (nsColumnIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
958 selectionRect.x = columnRect.x; selectionRect.width = columnRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
959 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
960 NSRect rowRect = outlineView.rectOfRow (rowIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
961 if ((style & DWT.CHECK) !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
962 /* highlighting at this stage draws over the checkbox, so don't include its column */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
963 int checkWidth = (int)/*64*/checkColumn.width ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
964 selectionRect.x = checkWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
965 selectionRect.width = rowRect.width - checkWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
966 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
967 selectionRect.width = rowRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
968 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
969 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
970 callSuper (outlineView.id, OS.sel_highlightSelectionInClipRect_, selectionRect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
971 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
972 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
973
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
974 if (drawBackground && !drawSelection) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
975 NSGraphicsContext context = NSGraphicsContext.currentContext ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
976 context.saveGraphicsState ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
977 float[] colorRGB = background.handle;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
978 NSColor color = NSColor.colorWithDeviceRed (colorRGB[0], colorRGB[1], colorRGB[2], 1f);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
979 color.setFill ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
980 NSBezierPath.fillRect (fullRect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
981 context.restoreGraphicsState ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
982 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
983
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
984 if (drawForeground) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
985 cell.setHighlighted (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
986 callSuper (id, sel, rect, view);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
987 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
988
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
989 if (hooks (DWT.PaintItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
990 NSRect contentRect = cell.titleRectForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
991 NSSize contentSize = cell.cellSizeForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
992
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
993 GCData data = new GCData ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
994 // TODO how to handle rearranged columns? The third clause below ensures that
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
995 // there are either 0 columns or that column 0 is still the first physical column.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
996 if (columnIndex is 0 && (style & DWT.CHECK) !is 0 && (columnCount is 0 || outlineView.columnWithIdentifier (columns[0].nsColumn) is 1)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
997 NSRect gcRect = new NSRect ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
998 gcRect.y = fullRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
999 gcRect.width = fullRect.x + fullRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1000 gcRect.height = fullRect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1001 data.paintRect = gcRect;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1002 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1003 data.paintRect = fullRect;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1004 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1005 GC gc = GC.cocoa_new (this, data);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1006 gc.setFont (item.getFont (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1007 if (isSelected) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1008 float /*double*/[] components = new float /*double*/[(int)/*64*/nsSelectionForeground.numberOfComponents ()];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1009 nsSelectionForeground.getComponents (components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1010 Color selectionForeground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1011 gc.setForeground (selectionForeground);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1012 components = new float /*double*/[(int)/*64*/nsSelectionBackground.numberOfComponents ()];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1013 nsSelectionBackground.getComponents (components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1014 Color selectionBackground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1015 gc.setBackground (selectionBackground);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1016 gc.setBackground (display.getSystemColor (DWT.COLOR_GREEN));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1017 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1018 gc.setForeground (item.getForeground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1019 gc.setBackground (item.getBackground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1020 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1021
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1022 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1023 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1024 event.gc = gc;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1025 event.index = columnIndex;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1026 if (isSelected) event.detail |= DWT.SELECTED;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1027 event.x = (int)contentRect.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1028 event.y = (int)contentRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1029 event.width = (int)Math.ceil (contentSize.width);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1030 event.height = (int)Math.ceil (fullRect.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1031 sendEvent (DWT.PaintItem, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1032 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1033 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1034 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1035
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1036 void fixScrollBar () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1037 /*
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1038 * Bug in the Macintosh. For some reason, the data browser does not update
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1039 * the vertical scrollbar when it is scrolled to the bottom and items are
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1040 * removed. The fix is to check if the scrollbar value is bigger the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1041 * maximum number of visible items and clamp it when needed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1042 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1043 // int [] top = new int [1], left = new int [1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1044 // OS.GetDataBrowserScrollPosition (handle, top, left);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1045 // int maximum = Math.max (0, getItemHeight () * visibleCount - getClientArea ().height);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1046 // if (top [0] > maximum) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1047 // OS.SetDataBrowserScrollPosition (handle, maximum, left [0]);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1048 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1049 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1050
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1051 int getCheckColumnWidth () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1052 return 20; //TODO - compute width
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1053 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1054
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1055 TreeColumn getColumn (id id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1056 for (int i = 0; i < columnCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1057 if (columns[i].nsColumn.id is id.id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1058 return columns[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1059 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1060 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1061 return null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1062 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1063
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1064 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1065 * Returns the column at the given, zero-relative index in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1066 * receiver. Throws an exception if the index is out of range.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1067 * Columns are returned in the order that they were created.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1068 * If no <code>TreeColumn</code>s were created by the programmer,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1069 * this method will throw <code>ERROR_INVALID_RANGE</code> despite
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1070 * the fact that a single column of data may be visible in the tree.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1071 * This occurs when the programmer uses the tree like a list, adding
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1072 * items but never creating a column.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1073 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1074 * @param index the index of the column to return
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1075 * @return the column at the given index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1076 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1077 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1078 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1079 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1080 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1081 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1082 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1083 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1084 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1085 * @see Tree#getColumnOrder()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1086 * @see Tree#setColumnOrder(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1087 * @see TreeColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1088 * @see TreeColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1089 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1090 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1091 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1092 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1093 public TreeColumn getColumn (int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1094 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1095 if (!(0 <=index && index < columnCount)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1096 return columns [index];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1097 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1098
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1099 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1100 * Returns the number of columns contained in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1101 * If no <code>TreeColumn</code>s were created by the programmer,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1102 * this value is zero, despite the fact that visually, one column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1103 * of items may be visible. This occurs when the programmer uses
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1104 * the tree like a list, adding items but never creating a column.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1105 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1106 * @return the number of columns
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1107 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1108 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1109 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1110 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1111 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1112 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1113 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1114 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1115 public int getColumnCount () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1116 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1117 return columnCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1118 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1119
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1120 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1121 * Returns an array of zero-relative integers that map
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1122 * the creation order of the receiver's items to the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1123 * order in which they are currently being displayed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1124 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1125 * Specifically, the indices of the returned array represent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1126 * the current visual order of the items, and the contents
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1127 * of the array represent the creation order of the items.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1128 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1129 * Note: This is not the actual structure used by the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1130 * to maintain its list of items, so modifying the array will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1131 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1132 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1133 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1134 * @return the current visual order of the receiver's items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1135 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1136 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1137 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1138 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1139 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1140 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1141 * @see Tree#setColumnOrder(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1142 * @see TreeColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1143 * @see TreeColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1144 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1145 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1146 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1147 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1148 public int [] getColumnOrder () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1149 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1150 int [] order = new int [columnCount];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1151 for (int i = 0; i < columnCount; i++) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1152 TreeColumn column = columns [i];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1153 int index = ((NSOutlineView)view).columnWithIdentifier (column.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1154 if ((style & DWT.CHECK) !is 0) index -= 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1155 order [index] = i;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1156 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1157 return order;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1158 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1159
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1160 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1161 * Returns an array of <code>TreeColumn</code>s which are the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1162 * columns in the receiver. Columns are returned in the order
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1163 * that they were created. If no <code>TreeColumn</code>s were
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1164 * created by the programmer, the array is empty, despite the fact
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1165 * that visually, one column of items may be visible. This occurs
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1166 * when the programmer uses the tree like a list, adding items but
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1167 * never creating a column.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1168 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1169 * Note: This is not the actual structure used by the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1170 * to maintain its list of items, so modifying the array will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1171 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1172 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1173 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1174 * @return the items in the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1175 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1176 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1177 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1178 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1179 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1180 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1181 * @see Tree#getColumnOrder()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1182 * @see Tree#setColumnOrder(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1183 * @see TreeColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1184 * @see TreeColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1185 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1186 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1187 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1188 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1189 public TreeColumn [] getColumns () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1190 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1191 TreeColumn [] result = new TreeColumn [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1192 System.arraycopy (columns, 0, result, 0, columnCount);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1193 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1194 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1195
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1196 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1197 * Returns the width in pixels of a grid line.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1198 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1199 * @return the width of a grid line in pixels
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1200 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1201 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1202 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1203 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1204 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1205 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1206 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1207 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1208 public int getGridLineWidth () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1209 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1210 return 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1211 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1212
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1213 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1214 * Returns the height of the receiver's header
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1215 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1216 * @return the height of the header or zero if the header is not visible
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1217 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1218 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1219 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1220 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1221 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1222 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1223 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1224 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1225 public int getHeaderHeight () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1226 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1227 NSTableHeaderView headerView = (cast(NSOutlineView) view).headerView ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1228 if (headerView is null) return 0;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1229 return cast(int) headerView.bounds ().height;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1230 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1231
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1232 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1233 * Returns <code>true</code> if the receiver's header is visible,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1234 * and <code>false</code> otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1235 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1236 * If one of the receiver's ancestors is not visible or some
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1237 * other condition makes the receiver not visible, this method
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1238 * may still indicate that it is considered visible even though
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1239 * it may not actually be showing.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1240 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1241 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1242 * @return the receiver's header's visibility state
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1243 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1244 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1245 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1246 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1247 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1248 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1249 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1250 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1251 public bool getHeaderVisible () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1252 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1253 return (cast(NSOutlineView) view).headerView () !is null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1254 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1255
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1256 int getInsetWidth () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1257 //TODO - wrong
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1258 return 20;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1259 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1260
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1261 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1262 * Returns the item at the given, zero-relative index in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1263 * receiver. Throws an exception if the index is out of range.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1264 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1265 * @param index the index of the item to return
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1266 * @return the item at the given index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1267 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1268 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1269 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1270 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1271 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1272 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1273 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1274 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1275 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1276 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1277 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1278 public TreeItem getItem (int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1279 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1280 int count = getItemCount ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1281 if (index < 0 || index >= count) error (DWT.ERROR_INVALID_RANGE);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1282 return _getItem (null, index, true);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1283 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1284
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1285 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1286 * Returns the item at the given point in the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1287 * or null if no such item exists. The point is in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1288 * coordinate system of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1289 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1290 * The item that is returned represents an item that could be selected by the user.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1291 * For example, if selection only occurs in items in the first column, then null is
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1292 * returned if the point is outside of the item.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1293 * Note that the DWT.FULL_SELECTION style hint, which specifies the selection policy,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1294 * determines the extent of the selection.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1295 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1296 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1297 * @param point the point used to locate the item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1298 * @return the item at the given point, or null if the point is not in a selectable item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1299 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1300 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1301 * <li>ERROR_NULL_ARGUMENT - if the point is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1302 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1303 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1304 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1305 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1306 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1307 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1308 public TreeItem getItem (Point point) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1309 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1310 if (point is null) error (DWT.ERROR_NULL_ARGUMENT);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1311 NSOutlineView widget = (NSOutlineView)view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1312 NSPoint pt = new NSPoint();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1313 pt.x = point.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1314 pt.y = point.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1315 int row = (int)/*64*/widget.rowAtPoint(pt);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1316 if (row is -1) return null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1317 id id = widget.itemAtRow(row);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1318 Widget item = display.getWidget (id.id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1319 if (item !is null && item instanceof TreeItem) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1320 return (TreeItem)item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1321 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1322 return null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1323 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1324
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1325 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1326 * Returns the number of items contained in the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1327 * that are direct item children of the receiver. The
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1328 * number that is returned is the number of roots in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1329 * tree.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1330 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1331 * @return the number of items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1332 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1333 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1334 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1335 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1336 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1337 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1338 public int getItemCount () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1339 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1340 return itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1341 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1342
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1343 int getItemCount (TreeItem item) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1344 return item is null ? itemCount : item.itemCount;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1345 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1346
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1347 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1348 * Returns the height of the area which would be used to
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1349 * display <em>one</em> of the items in the tree.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1350 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1351 * @return the height of one item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1352 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1353 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1354 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1355 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1356 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1357 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1358 public int getItemHeight () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1359 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1360 return cast(int)(cast(NSOutlineView) view).rowHeight ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1361 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1362
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1363 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1364 * Returns a (possibly empty) array of items contained in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1365 * receiver that are direct item children of the receiver. These
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1366 * are the roots of the tree.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1367 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1368 * Note: This is not the actual structure used by the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1369 * to maintain its list of items, so modifying the array will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1370 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1371 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1372 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1373 * @return the items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1374 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1375 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1376 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1377 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1378 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1379 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1380 public TreeItem [] getItems () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1381 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1382 TreeItem [] result = new TreeItem [itemCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1383 for (int i=0; i<itemCount; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1384 result [i] = _getItem (null, i, true);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1385 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1386 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1387 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1388
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1389 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1390 * Returns <code>true</code> if the receiver's lines are visible,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1391 * and <code>false</code> otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1392 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1393 * If one of the receiver's ancestors is not visible or some
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1394 * other condition makes the receiver not visible, this method
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1395 * may still indicate that it is considered visible even though
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1396 * it may not actually be showing.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1397 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1398 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1399 * @return the visibility state of the lines
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1400 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1401 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1402 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1403 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1404 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1405 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1406 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1407 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1408 public bool getLinesVisible () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1409 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1410 return ((NSOutlineView) view).usesAlternatingRowBackgroundColors ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1411 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1412
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1413 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1414 * Returns the receiver's parent item, which must be a
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1415 * <code>TreeItem</code> or null when the receiver is a
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1416 * root.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1417 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1418 * @return the receiver's parent item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1419 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1420 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1421 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1422 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1423 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1424 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1425 public TreeItem getParentItem () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1426 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1427 return null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1428 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1429
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1430 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1431 * Returns an array of <code>TreeItem</code>s that are currently
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1432 * selected in the receiver. The order of the items is unspecified.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1433 * An empty array indicates that no items are selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1434 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1435 * Note: This is not the actual structure used by the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1436 * to maintain its selection, so modifying the array will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1437 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1438 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1439 * @return an array representing the selection
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1440 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1441 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1442 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1443 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1444 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1445 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1446 public TreeItem [] getSelection () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1447 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1448 NSOutlineView widget = cast(NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1449 if (widget.numberOfSelectedRows () is 0) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1450 return new TreeItem [0];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1451 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1452 NSIndexSet selection = widget.selectedRowIndexes ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1453 int count = (int)/*64*/selection.count ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1454 int /*long*/ [] indexBuffer = new int /*long*/ [count];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1455 selection.getIndexes (indexBuffer, count, 0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1456 TreeItem [] result = new TreeItem [count];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1457 for (int i=0; i<count; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1458 id id = widget.itemAtRow (indexBuffer [i]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1459 Widget item = display.getWidget (id.id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1460 if (item !is null && item instanceof TreeItem) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1461 //TODO virtual
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1462 result[i] = cast(TreeItem) item;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1463 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1464 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1465 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1466 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1467
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1468 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1469 * Returns the number of selected items contained in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1470 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1471 * @return the number of selected items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1472 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1473 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1474 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1475 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1476 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1477 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1478 public int getSelectionCount () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1479 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1480 return cast(int)/*64*/(cast(NSOutlineView) view).numberOfSelectedRows ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1481 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1482
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1483 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1484 * Returns the column which shows the sort indicator for
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1485 * the receiver. The value may be null if no column shows
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1486 * the sort indicator.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1487 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1488 * @return the sort indicator
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1489 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1490 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1491 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1492 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1493 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1494 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1495 * @see #setSortColumn(TreeColumn)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1496 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1497 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1498 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1499 public TreeColumn getSortColumn () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1500 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1501 return sortColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1502 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1503
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1504 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1505 * Returns the direction of the sort indicator for the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1506 * The value will be one of <code>UP</code>, <code>DOWN</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1507 * or <code>NONE</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1508 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1509 * @return the sort direction
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1510 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1511 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1512 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1513 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1514 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1515 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1516 * @see #setSortDirection(int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1517 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1518 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1519 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1520 public int getSortDirection () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1521 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1522 return sortDirection;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1523 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1524
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1525 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1526 * Returns the item which is currently at the top of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1527 * This item can change when items are expanded, collapsed, scrolled
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1528 * or new items are added or removed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1529 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1530 * @return the item at the top of the receiver
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1531 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1532 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1533 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1534 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1535 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1536 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1537 * @since 2.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1538 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1539 public TreeItem getTopItem () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1540 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1541 // //TODO - optimize
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1542 // Rect rect = new Rect ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1543 // int y = getBorder () + getHeaderHeight ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1544 // for (int i=0; i<items.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1545 // TreeItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1546 // if (item !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1547 // int columnId = (columnCount is 0) ? column_id : columns [0].id;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1548 // if (OS.GetDataBrowserItemPartBounds (handle, item.id, columnId, OS.kDataBrowserPropertyEnclosingPart, rect) is OS.noErr) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1549 // if (rect.top <= y && y <= rect.bottom) return item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1550 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1551 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1552 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1553 return null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1554 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1555
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1556 void highlightSelectionInClipRect(int /*long*/ id, int /*long*/ sel, int /*long*/ rect) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1557 if (!hooks (DWT.EraseItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1558 NSRect clipRect = new NSRect ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1559 OS.memmove (clipRect, rect, NSRect.sizeof);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1560 callSuper (id, sel, clipRect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1561 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1562 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1563
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1564 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1565 * Searches the receiver's list starting at the first column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1566 * (index 0) until a column is found that is equal to the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1567 * argument, and returns the index of that column. If no column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1568 * is found, returns -1.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1569 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1570 * @param column the search column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1571 * @return the index of the column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1572 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1573 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1574 * <li>ERROR_NULL_ARGUMENT - if the column is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1575 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1576 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1577 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1578 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1579 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1580 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1581 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1582 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1583 public int indexOf (TreeColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1584 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1585 if (column is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1586 if (column.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1587 for (int i=0; i<columnCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1588 if (columns [i] is column) return i;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1589 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1590 return -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1591 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1592
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1593 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1594 * Searches the receiver's list starting at the first item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1595 * (index 0) until an item is found that is equal to the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1596 * argument, and returns the index of that item. If no item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1597 * is found, returns -1.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1598 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1599 * @param item the search item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1600 * @return the index of the item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1601 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1602 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1603 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1604 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1605 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1606 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1607 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1608 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1609 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1610 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1611 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1612 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1613 public int indexOf (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1614 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1615 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1616 if (item.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1617 if (item.parentItem !is null) return -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1618 for (int i = 0; i < itemCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1619 if (item is items[i]) return i;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1620 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1621 return -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1622 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1623
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1624 bool isTrim (NSView view) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1625 if (super.isTrim (view)) return true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1626 return view.id_ is headerView.id_;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1627 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1628
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1629 int /*long*/ outlineView_child_ofItem (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ index, int /*long*/ itemID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1630 TreeItem parent = (TreeItem) display.getWidget (itemID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1631 TreeItem item = _getItem (parent, (int)/*64*/index, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1632 checkData (item, false);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1633 return item.handle.id;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1634 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1635
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1636 void outlineView_didClickTableColumn (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ tableColumn) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1637 TreeColumn column = getColumn (new id (tableColumn));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1638 column.postEvent (DWT.Selection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1639 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1640
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1641 int /*long*/ outlineView_objectValueForTableColumn_byItem (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ tableColumn, int /*long*/ itemID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1642 TreeItem item = (TreeItem) display.getWidget (itemID);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1643 if (checkColumn !is null && tableColumn is checkColumn.id) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1644 NSNumber value;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1645 if (item.checked && item.grayed) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1646 value = NSNumber.numberWithInt (OS.NSMixedState);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1647 } else {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1648 value = NSNumber.numberWithInt (item.checked ? OS.NSOnState : OS.NSOffState);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1649 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1650 return value.id;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1651 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1652 for (int i=0; i<columnCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1653 if (columns [i].nsColumn.id is tableColumn) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1654 return item.createString (i).id;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1655 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1656 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1657 return item.createString (0).id;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1658 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1659
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1660 bool outlineView_isItemExpandable (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ item) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1661 if (item is 0) return true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1662 return (cast(TreeItem) display.getWidget (item)).itemCount !is 0;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1663 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1664
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1665 int /*long*/ outlineView_numberOfChildrenOfItem (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ item) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1666 if (item is 0) return itemCount;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1667 return (cast(TreeItem) display.getWidget (item)).itemCount;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1668 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1669
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1670 void outlineView_willDisplayCell_forTableColumn_item (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ cell, int /*long*/ tableColumn, int /*long*/ itemID) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1671 if (checkColumn !is null && tableColumn is checkColumn.id) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1672 TreeItem item = cast(TreeItem) display.getWidget(itemID);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1673 Image image = item.image;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1674 int columnIndex = 0;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1675 for (int i=0; i<columnCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1676 if (columns [i].nsColumn.id is tableColumn) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1677 image = item.getImage (i);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1678 columnIndex = i;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1679 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1680 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1681 NSBrowserCell browserCell = new NSBrowserCell (cell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1682 browserCell.setImage (image !is null ? image.handle : null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1683 browserCell.setFont (item.getFont (columnIndex).handle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1684
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1685 if (hooks (DWT.MeasureItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1686 NSOutlineView view = (NSOutlineView)this.view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1687 int nsColumnIndex = (int)/*64*/view.columnWithIdentifier (new id (tableColumn));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1688 int rowIndex = (int)/*64*/view.rowForItem (new id (itemID));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1689 NSRect rect = view.frameOfCellAtColumn (nsColumnIndex, rowIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1690 NSRect contentRect = browserCell.titleRectForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1691 NSSize contentSize = browserCell.cellSizeForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1692
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1693 GCData data = new GCData ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1694 data.paintRect = view.frame ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1695 GC gc = GC.cocoa_new (this, data);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1696 gc.setFont (item.getFont (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1697 int rowHeight = (int)view.rowHeight ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1698 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1699 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1700 event.gc = gc;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1701 event.index = columnIndex;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1702 event.x = (int)contentRect.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1703 event.y = (int)contentRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1704 event.width = (int)Math.ceil (contentSize.width);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1705 event.height = rowHeight;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1706 sendEvent (DWT.MeasureItem, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1707 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1708 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1709 if (rowHeight < event.height) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1710 view.setRowHeight (event.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1711 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1712 if (columnCount is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1713 int change = event.width - (item.customWidth !is -1 ? item.customWidth : (int)Math.ceil (contentSize.width));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1714 if (item.customWidth !is -1 || event.width !is (int)Math.ceil (contentSize.width)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1715 item.customWidth = event.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1716 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1717 if (change !is 0) setScrollWidth (item, false, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1718 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1719 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1720 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1721
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1722 void outlineViewColumnDidMove (int /*long*/ id, int /*long*/ sel, int /*long*/ aNotification) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1723 NSNotification notification = new NSNotification (aNotification);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1724 NSDictionary userInfo = notification.userInfo ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1725 id nsOldIndex = userInfo.valueForKey (NSString.stringWith ("NSOldColumn")); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1726 id nsNewIndex = userInfo.valueForKey (NSString.stringWith ("NSNewColumn")); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1727 int oldIndex = new NSNumber (nsOldIndex).intValue ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1728 int newIndex = new NSNumber (nsNewIndex).intValue ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1729 int startIndex = Math.min (oldIndex, newIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1730 int endIndex = Math.max (oldIndex, newIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1731 NSOutlineView outlineView = (NSOutlineView)view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1732 NSArray nsColumns = outlineView.tableColumns ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1733 for (int i = startIndex; i <= endIndex; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1734 id columnId = nsColumns.objectAtIndex (i);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1735 TreeColumn column = getColumn (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1736 if (column !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1737 column.sendEvent (DWT.Move);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1738 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1739 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1740 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1741 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1742
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1743 void outlineViewColumnDidResize (int /*long*/ id, int /*long*/ sel, int /*long*/ aNotification) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1744 NSNotification notification = new NSNotification (aNotification);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1745 NSDictionary userInfo = notification.userInfo ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1746 id columnId = userInfo.valueForKey (NSString.stringWith ("NSTableColumn")); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1747 TreeColumn column = getColumn (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1748 if (column is null) return; /* either CHECK column or firstColumn in 0-column Tree */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1749
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1750 column.sendEvent (DWT.Resize);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1751 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1752
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1753 NSOutlineView outlineView = (NSOutlineView)view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1754 int index = (int)/*64*/outlineView.columnWithIdentifier (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1755 if (index is -1) return; /* column was disposed in Resize callback */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1756
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1757 NSArray nsColumns = outlineView.tableColumns ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1758 int columnCount = (int)/*64*/outlineView.numberOfColumns ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1759 for (int i = index + 1; i < columnCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1760 columnId = nsColumns.objectAtIndex (i);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1761 column = getColumn (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1762 if (column !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1763 column.sendEvent (DWT.Move);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1764 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1765 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1766 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1767 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1768
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1769 void outlineViewItemDidExpand (int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1770 NSNotification nsNotification = new NSNotification (notification);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1771 NSDictionary info = nsNotification.userInfo ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1772 NSString key = NSString.stringWith ("NSObject"); //$NON-NLS-1$
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1773 int /*long*/ itemHandle = info.objectForKey (key).id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1774 TreeItem item = (TreeItem)display.getWidget (itemHandle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1775 setScrollWidth (item.getItems (), true, true);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1776 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1777
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1778 void outlineViewSelectionDidChange (int /*long*/ id, int /*long*/ sel, int /*long*/ notification) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1779 if (ignoreSelect) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1780 NSOutlineView widget = cast(NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1781 int row = (int)/*64*/widget.selectedRow ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1782 if (row is -1)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1783 postEvent (DWT.Selection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1784 else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1785 id _id = widget.itemAtRow (row);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1786 TreeItem item = cast(TreeItem) display.getWidget (_id.id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1787 Event event = new Event ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1788 event.item = item;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1789 event.index = row;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1790 postEvent (DWT.Selection, event);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1791 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1792 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1793
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1794 bool outlineView_shouldCollapseItem (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ itemID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1795 TreeItem item = (TreeItem) display.getWidget (itemID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1796 if (!ignoreExpand) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1797 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1798 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1799 sendEvent (DWT.Collapse, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1800 item.expanded = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1801 ignoreExpand = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1802 ((NSOutlineView) view).collapseItem (item.handle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1803 ignoreExpand = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1804 return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1805 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1806 return !item.expanded;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1807 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1808
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1809 bool outlineView_shouldExpandItem (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ itemID) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1810 final TreeItem item = (TreeItem) display.getWidget (itemID);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1811 if (!ignoreExpand) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1812 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1813 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1814 sendEvent (DWT.Expand, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1815 item.expanded = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1816 ignoreExpand = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1817 ((NSOutlineView) view).expandItem (item.handle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1818 ignoreExpand = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1819 return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1820 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1821 return item.expanded;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1822 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1823
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1824 void outlineView_setObjectValue_forTableColumn_byItem (int /*long*/ id, int /*long*/ sel, int /*long*/ outlineView, int /*long*/ object, int /*long*/ tableColumn, int /*long*/ itemID) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1825 if (checkColumn !is null && tableColumn is checkColumn.id) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1826 TreeItem item = (TreeItem) display.getWidget (itemID);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1827 item.checked = !item.checked;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1828 Event event = new Event ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1829 event.detail = DWT.CHECK;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1830 event.item = item;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1831 postEvent (DWT.Selection, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1832 NSOutlineView view = (NSOutlineView)this.view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1833 int rowIndex = (int)/*64*/view.rowForItem (new id (itemID));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1834 NSRect rect = view.rectOfRow (rowIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1835 view.setNeedsDisplayInRect (rect);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1836 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1837 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1838
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1839 void register () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1840 super.register ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1841 display.addWidget (headerView, this);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1842 display.addWidget (dataCell, this);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1843 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1844
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1845 void releaseChildren (bool destroy) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1846 for (int i=0; i<items.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1847 TreeItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1848 if (item !is null && !item.isDisposed ()) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1849 item.release (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1850 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1851 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1852 items = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1853 if (columns !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1854 for (int i=0; i<columnCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1855 TreeColumn column = columns [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1856 if (column !is null && !column.isDisposed ()) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1857 column.release (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1858 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1859 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1860 columns = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1861 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1862 super.releaseChildren (destroy);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1863 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1864
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1865 void releaseHandle () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1866 super.releaseHandle ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1867 if (headerView !is null) headerView.release ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1868 headerView = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1869 if (firstColumn !is null) firstColumn.release ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1870 firstColumn = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1871 if (checkColumn !is null) checkColumn.release ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1872 checkColumn = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1873 if (dataCell !is null) dataCell.release ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1874 dataCell = null;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1875 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1876
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1877 void releaseWidget () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1878 super.releaseWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1879 //release handle
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1880 sortColumn = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1881 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1882
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1883 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1884 * Removes all of the items from the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1885 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1886 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1887 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1888 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1889 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1890 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1891 public void removeAll () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1892 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1893 for (int i=0; i<items.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1894 TreeItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1895 if (item !is null && !item.isDisposed ()) item.release (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1896 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1897 items = new TreeItem [4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1898 itemCount = 0;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1899 (cast(NSOutlineView) view).reloadItem (null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1900 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1901
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1902 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1903 * Removes the listener from the collection of listeners who will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1904 * be notified when the user changes the receiver's selection.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1905 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1906 * @param listener the listener which should no longer be notified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1907 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1908 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1909 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1910 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1911 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1912 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1913 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1914 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1915 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1916 * @see SelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1917 * @see #addSelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1918 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1919 public void removeSelectionListener (SelectionListener listener) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1920 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1921 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1922 eventTable.unhook (DWT.Selection, listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1923 eventTable.unhook (DWT.DefaultSelection, listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1924 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1925
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1926 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1927 * Removes the listener from the collection of listeners who will
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1928 * be notified when items in the receiver are expanded or collapsed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1929 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1930 * @param listener the listener which should no longer be notified
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1931 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1932 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1933 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1934 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1935 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1936 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1937 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1938 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1939 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1940 * @see TreeListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1941 * @see #addTreeListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1942 */
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1943 public void removeTreeListener (TreeListener listener) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1944 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1945 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1946 if (eventTable is null) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1947 eventTable.unhook (DWT.Expand, listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1948 eventTable.unhook (DWT.Collapse, listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1949 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1950
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1951 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1952 * Display a mark indicating the point at which an item will be inserted.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1953 * The drop insert item has a visual hint to show where a dragged item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1954 * will be inserted when dropped on the tree.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1955 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1956 * @param item the insert item. Null will clear the insertion mark.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1957 * @param before true places the insert mark above 'item'. false places
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1958 * the insert mark below 'item'.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1959 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1960 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1961 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1962 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1963 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1964 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1965 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1966 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1967 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1968 public void setInsertMark (TreeItem item, bool before) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1969 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1970 if (item !is null) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1971 if (item.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1972 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1973 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1974
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1975 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1976 * Selects all of the items in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1977 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1978 * If the receiver is single-select, do nothing.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1979 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1980 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1981 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1982 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1983 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1984 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1985 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1986 public void selectAll () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1987 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1988 if ((style & DWT.SINGLE) !is 0) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1989 NSOutlineView widget = cast(NSOutlineView) view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1990 ignoreSelect = true;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1991 widget.selectAll (null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1992 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1993 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1994
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1995 /**
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1996 * Selects an item in the receiver. If the item was already
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1997 * selected, it remains selected.
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1998 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1999 * @param item the item to be selected
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2000 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2001 * @exception IllegalArgumentException <ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2002 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2003 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2004 * </ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2005 * @exception DWTException <ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2006 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2007 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2008 * </ul>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2009 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2010 * @since 3.4
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2011 */
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2012 public void select (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2013 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2014 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2015 if (item.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2016 showItem (item);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2017 NSOutlineView outlineView = (NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2018 outlineView.selectRow (outlineView.rowForItem (item.handle), false);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2019 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2020
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2021 void sendDoubleSelection() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2022 postEvent (DWT.DefaultSelection);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2023 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2024
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2025 bool sendKeyEvent (NSEvent nsEvent, int type) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2026 bool result = super.sendKeyEvent (nsEvent, type);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2027 if (!result) return result;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2028 if (type !is DWT.KeyDown) return result;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2029 short keyCode = nsEvent.keyCode ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2030 switch (keyCode) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2031 case 76: /* KP Enter */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2032 case 36: { /* Return */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2033 postEvent (DWT.DefaultSelection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2034 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2035 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2036 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2037 return result;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2038 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2039
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2040 void setBackground (float [] color) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2041 super.setBackground (color);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2042 NSColor nsColor;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2043 if (color is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2044 nsColor = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2045 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2046 nsColor = NSColor.colorWithDeviceRed (color [0], color [1], color [2], 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2047 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2048 ((NSOutlineView) view).setBackgroundColor (nsColor);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2049 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2050
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2051 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2052 * Sets the order that the items in the receiver should
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2053 * be displayed in to the given argument which is described
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2054 * in terms of the zero-relative ordering of when the items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2055 * were added.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2056 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2057 * @param order the new order to display the items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2058 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2059 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2060 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2061 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2062 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2063 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2064 * <li>ERROR_NULL_ARGUMENT - if the item order is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2065 * <li>ERROR_INVALID_ARGUMENT - if the item order is not the same length as the number of items</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2066 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2067 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2068 * @see Tree#getColumnOrder()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2069 * @see TreeColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2070 * @see TreeColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2071 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2072 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2073 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2074 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2075 public void setColumnOrder (int [] order) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2076 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2077 if (order is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2078 if (columnCount is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2079 if (order.length !is 0) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2080 return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2081 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2082 if (order.length !is columnCount) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2083 int [] oldOrder = getColumnOrder ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2084 bool reorder = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2085 bool [] seen = new bool [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2086 for (int i=0; i<order.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2087 int index = order [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2088 if (index < 0 || index >= columnCount) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2089 if (seen [index]) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2090 seen [index] = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2091 if (order [i] !is oldOrder [i]) reorder = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2092 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2093 if (reorder) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2094 NSOutlineView outlineView = (NSOutlineView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2095 int [] oldX = new int [oldOrder.length];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2096 int check = (style & DWT.CHECK) !is 0 ? 1 : 0;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2097 for (int i=0; i<oldOrder.length; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2098 int index = oldOrder[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2099 oldX [index] = (int)outlineView.rectOfColumn (i + check).x;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2100 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2101 int [] newX = new int [order.length];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2102 for (int i=0; i<order.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2103 int index = order [i];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2104 TreeColumn column = columns[index];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2105 int oldIndex = outlineView.columnWithIdentifier (column.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2106 int newIndex = i + check;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2107 outlineView.moveColumn (oldIndex, newIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2108 newX [index] = (int)outlineView.rectOfColumn (newIndex).x;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2109 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2110
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2111 TreeColumn[] newColumns = new TreeColumn [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2112 System.arraycopy (columns, 0, newColumns, 0, columnCount);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2113 for (int i=0; i<columnCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2114 TreeColumn column = newColumns [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2115 if (!column.isDisposed ()) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2116 if (newX [i] !is oldX [i]) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2117 column.sendEvent (DWT.Move);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2118 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2119 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2120 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2121 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2122 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2123
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2124 void setFont(NSFont font) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2125 super.setFont (font);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2126 if (!hooks (DWT.MeasureItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2127 float ascent = font.ascender ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2128 float descent = -font.descender () + font.leading ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2129 ((NSOutlineView)view).setRowHeight ((int)Math.ceil (ascent + descent) + 1);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2130 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2131 view.setNeedsDisplay (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2132 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2133 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2134
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2135 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2136 * Marks the receiver's header as visible if the argument is <code>true</code>,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2137 * and marks it invisible otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2138 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2139 * If one of the receiver's ancestors is not visible or some
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2140 * other condition makes the receiver not visible, marking
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2141 * it visible may not actually cause it to be displayed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2142 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2143 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2144 * @param show the new visibility state
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2145 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2146 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2147 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2148 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2149 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2150 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2151 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2152 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2153 public void setHeaderVisible (bool show) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2154 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2155 (cast(NSOutlineView) view).setHeaderView (show ? headerView : null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2156 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2157
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2158 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2159 * Sets the number of root-level items contained in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2160 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2161 * @param count the number of items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2162 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2163 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2164 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2165 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2166 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2167 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2168 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2169 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2170 public void setItemCount (int count) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2171 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2172 count = Math.max (0, count);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2173 setItemCount (null, count);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2174 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2175
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2176 void setItemCount (TreeItem parentItem, int count) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2177 int itemCount = getItemCount (parentItem);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2178 if (count is itemCount) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2179 TreeItem [] children = parentItem is null ? items : parentItem.items;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2180 if (count < itemCount) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2181 for (int index = count; index < itemCount; index ++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2182 TreeItem item = children [index];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2183 if (item !is null && !item.isDisposed()) item.release (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2184 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2185 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2186 if (count > itemCount) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2187 if ((getStyle() & DWT.VIRTUAL) is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2188 for (int i=itemCount; i<count; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2189 new TreeItem (this, parentItem, DWT.NONE, i, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2190 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2191 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2192 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2193 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2194 int length = Math.max (4, (count + 3) / 4 * 4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2195 TreeItem [] newItems = new TreeItem [length];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2196 if (children !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2197 System.arraycopy (children, 0, newItems, 0, Math.min (count, itemCount));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2198 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2199 children = newItems;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2200 if (parentItem is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2201 this.items = newItems;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2202 this.itemCount = count;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2203 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2204 parentItem.items = newItems;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2205 parentItem.itemCount = count;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2206 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2207 NSOutlineView widget = (NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2208 widget.reloadItem (parentItem !is null ? parentItem.handle : null, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2209 widget.noteNumberOfRowsChanged();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2210 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2211
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2212 /*public*/ void setItemHeight (int itemHeight) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2213 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2214 if (itemHeight < -1) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2215 if (itemHeight is -1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2216 //TODO - reset item height, ensure other API's such as setFont don't do this
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2217 } else {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2218 // OS.SetDataBrowserTableViewRowHeight (handle, cast(short) itemHeight);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2219 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2220 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2221
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2222 void setItemHeight (Image image) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2223 // Rectangle bounds = image !is null ? image.getBounds () : imageBounds;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2224 // if (bounds is null) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2225 // imageBounds = bounds;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2226 // short [] height = new short [1];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2227 // if (OS.GetDataBrowserTableViewRowHeight (handle, height) is OS.noErr) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2228 // if (height [0] < bounds.height) {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2229 // OS.SetDataBrowserTableViewRowHeight (handle, cast(short) bounds.height);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2230 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2231 // }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2232 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2233
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2234 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2235 * Marks the receiver's lines as visible if the argument is <code>true</code>,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2236 * and marks it invisible otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2237 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2238 * If one of the receiver's ancestors is not visible or some
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2239 * other condition makes the receiver not visible, marking
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2240 * it visible may not actually cause it to be displayed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2241 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2242 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2243 * @param show the new visibility state
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2244 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2245 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2246 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2247 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2248 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2249 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2250 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2251 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2252 public void setLinesVisible (bool show) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2253 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2254 (cast(NSOutlineView) view).setUsesAlternatingRowBackgroundColors (show);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2255 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2256
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2257 public void setRedraw (bool redraw) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2258 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2259 super.setRedraw (redraw);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2260 if (redraw && drawCount is 0) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2261 setScrollWidth ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2262 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2263 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2264
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2265 bool setScrollWidth () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2266 return setScrollWidth (items, true, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2267 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2268
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2269 bool setScrollWidth (TreeItem item, bool recurse, bool callMeasureItem) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2270 return setScrollWidth (new TreeItem[] {item}, recurse, callMeasureItem);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2271 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2272
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2273 bool setScrollWidth (TreeItem[] items, bool recurse, bool callMeasureItem) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2274 if (columnCount !is 0) return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2275 // if (currentItem !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2276 // if (currentItem !is item) fixScrollWidth = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2277 // return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2278 // }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2279 if (/*ignoreRedraw ||*/ drawCount !is 0) return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2280 int newWidth = 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2281 GC gc = new GC (this);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2282 for (int i = 0; i < items.length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2283 TreeItem item = items[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2284 if (item !is null && !item.isDisposed ()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2285 newWidth = Math.max (newWidth, item.calculateWidth (0, gc, recurse, callMeasureItem));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2286 if (isDisposed ()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2287 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2288 return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2289 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2290 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2291 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2292 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2293 if (firstColumn.width () < newWidth) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2294 NSOutlineView outlineView = (NSOutlineView)view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2295 int /*long*/ oldResize = outlineView.columnAutoresizingStyle ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2296 outlineView.setColumnAutoresizingStyle (OS.NSTableViewNoColumnAutoresizing);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2297 firstColumn.setWidth (newWidth);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2298 outlineView.setColumnAutoresizingStyle (oldResize);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2299 return true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2300 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2301 return false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2302 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2303
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2304 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2305 * Sets the receiver's selection to the given item.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2306 * The current selection is cleared before the new item is selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2307 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2308 * If the item is not in the receiver, then it is ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2309 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2310 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2311 * @param item the item to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2312 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2313 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2314 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2315 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2316 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2317 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2318 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2319 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2320 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2321 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2322 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2323 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2324 public void setSelection (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2325 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2326 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2327 setSelection (new TreeItem [] {item});
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2328 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2329
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2330 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2331 * Sets the receiver's selection to be the given array of items.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2332 * The current selection is cleared before the new items are selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2333 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2334 * Items that are not in the receiver are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2335 * If the receiver is single-select and multiple items are specified,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2336 * then all items are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2337 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2338 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2339 * @param items the array of items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2340 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2341 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2342 * <li>ERROR_NULL_ARGUMENT - if the array of items is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2343 * <li>ERROR_INVALID_ARGUMENT - if one of the items has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2344 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2345 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2346 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2347 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2348 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2349 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2350 * @see Tree#deselectAll()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2351 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2352 public void setSelection (TreeItem [] items) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2353 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2354 if (items is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2355 deselectAll ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2356 int length = items.length;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2357 if (length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1)) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2358 NSOutlineView outlineView = (NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2359 NSMutableIndexSet rows = (NSMutableIndexSet) new NSMutableIndexSet ().alloc ().init ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2360 rows.autorelease ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2361 for (int i=0; i<length; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2362 if (items [i] !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2363 if (items [i].isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2364 TreeItem item = items [i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2365 showItem (items [i], false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2366 rows.addIndex (outlineView.rowForItem (item.handle));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2367 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2368 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2369 ignoreSelect = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2370 outlineView.selectRowIndexes (rows, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2371 ignoreSelect = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2372 if (items.length > 0) showItem(items[0], true);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2373 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2374
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2375 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2376 * Sets the column used by the sort indicator for the receiver. A null
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2377 * value will clear the sort indicator. The current sort column is cleared
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2378 * before the new column is set.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2379 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2380 * @param column the column used by the sort indicator or <code>null</code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2381 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2382 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2383 * <li>ERROR_INVALID_ARGUMENT - if the column is disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2384 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2385 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2386 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2387 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2388 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2389 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2390 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2391 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2392 public void setSortColumn (TreeColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2393 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2394 if (column !is null && column.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2395 if (column is sortColumn) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2396 TreeColumn oldSortColumn = sortColumn;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2397 sortColumn = column;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2398 if (sortDirection is DWT.NONE) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2399 NSTableHeaderView headerView = ((NSOutlineView)view).headerView ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2400 if (headerView is null) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2401 if (oldSortColumn !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2402 int /*long*/ index = ((NSOutlineView)view).columnWithIdentifier (oldSortColumn.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2403 NSRect rect = headerView.headerRectOfColumn (index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2404 headerView.setNeedsDisplayInRect (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2405 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2406 if (sortColumn !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2407 NSInteger index = (cast(NSOutlineView)view).columnWithIdentifier (sortColumn.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2408 NSRect rect = headerView.headerRectOfColumn (index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2409 headerView.setNeedsDisplayInRect (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2410 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2411 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2412
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2413 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2414 * Sets the direction of the sort indicator for the receiver. The value
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2415 * can be one of <code>UP</code>, <code>DOWN</code> or <code>NONE</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2416 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2417 * @param direction the direction of the sort indicator
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2418 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2419 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2420 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2421 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2422 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2423 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2424 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2425 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2426 public void setSortDirection (int direction) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2427 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2428 if (direction !is DWT.UP && direction !is DWT.DOWN && direction !is DWT.NONE) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2429 if (direction is sortDirection) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2430 sortDirection = direction;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2431 if (sortColumn is null) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2432 NSTableHeaderView headerView = ((NSOutlineView)view).headerView ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2433 if (headerView is null) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2434 int /*long*/ index = ((NSOutlineView)view).columnWithIdentifier (sortColumn.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2435 NSRect rect = headerView.headerRectOfColumn (index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2436 headerView.setNeedsDisplayInRect (rect);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2437 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2438
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2439 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2440 * Sets the item which is currently at the top of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2441 * This item can change when items are expanded, collapsed, scrolled
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2442 * or new items are added or removed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2443 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2444 * @param item the item to be shown
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2445 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2446 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2447 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2448 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2449 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2450 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2451 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2452 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2453 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2454 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2455 * @see Tree#getTopItem()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2456 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2457 * @since 2.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2458 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2459 public void setTopItem (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2460 checkWidget();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2461 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2462 if (item.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2463 showItem (item, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2464 NSOutlineView outlineView = (NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2465 //FIXME
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2466 ((NSOutlineView) view).scrollRowToVisible (outlineView.rowForItem (item.handle));
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2467 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2468
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2469 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2470 * Shows the column. If the column is already showing in the receiver,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2471 * this method simply returns. Otherwise, the columns are scrolled until
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2472 * the column is visible.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2473 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2474 * @param column the column to be shown
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2475 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2476 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2477 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2478 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2479 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2480 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2481 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2482 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2483 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2484 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2485 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2486 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2487 public void showColumn (TreeColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2488 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2489 if (column is null) error (DWT.ERROR_NULL_ARGUMENT);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2490 if (column.isDisposed()) error (DWT.ERROR_INVALID_ARGUMENT);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2491 if (column.parent !is this) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2492 if (columnCount <= 1) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2493 int index = (int)/*64*/((NSOutlineView)view).columnWithIdentifier (column.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2494 if (!(0 <= index && index < columnCount + ((style & DWT.CHECK) !is 0 ? 1 : 0))) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2495 ((NSOutlineView)view).scrollColumnToVisible (index);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2496 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2497
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2498 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2499 * Shows the item. If the item is already showing in the receiver,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2500 * this method simply returns. Otherwise, the items are scrolled
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2501 * and expanded until the item is visible.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2502 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2503 * @param item the item to be shown
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2504 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2505 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2506 * <li>ERROR_NULL_ARGUMENT - if the item is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2507 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2508 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2509 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2510 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2511 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2512 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2513 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2514 * @see Tree#showSelection()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2515 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2516 public void showItem (TreeItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2517 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2518 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2519 if (item.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2520 showItem (item, true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2521 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2522
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2523 void showItem (TreeItem item, bool scroll) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2524 TreeItem parentItem = item.parentItem;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2525 if (parentItem !is null && !parentItem.expanded) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2526 showItem (parentItem, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2527 parentItem.setExpanded (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2528 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2529 if (scroll) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2530 NSOutlineView outlineView = (NSOutlineView) view;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2531 outlineView.scrollRowToVisible (outlineView.rowForItem (item.handle));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2532 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2533 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2534
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2535 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2536 * Shows the selection. If the selection is already showing in the receiver,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2537 * this method simply returns. Otherwise, the items are scrolled until
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2538 * the selection is visible.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2539 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2540 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2541 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2542 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2543 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2544 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2545 * @see Tree#showItem(TreeItem)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2546 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2547 public void showSelection () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2548 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2549 //checkItems (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2550 //TODO - optimize
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2551 TreeItem [] selection = getSelection ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2552 if (selection.length > 0) showItem (selection [0], true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2553 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2554
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2555 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2556