annotate dwt/widgets/Table.d @ 90:c7f7f4d7091a

All widgets are ported
author Jacob Carlborg <doob@me.com>
date Tue, 30 Dec 2008 18:54:31 +0100
parents b24476d6dedf
children 63a09873578e
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
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
10 *
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
11 * Port to the D programming language:
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
12 * Jacob Carlborg <doob@me.com>
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
13 *******************************************************************************/
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
14 module dwt.widgets.Table;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
15
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
16 import dwt.dwthelper.utils;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
17
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
18 import dwt.DWT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
19 import dwt.DWTException;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
20 import dwt.accessibility.ACC;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
21 import dwt.events.SelectionEvent;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
22 import dwt.events.SelectionListener;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
23 import dwt.graphics.Color;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
24 import dwt.graphics.Font;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
25 import dwt.graphics.GC;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
26 import dwt.graphics.GCData;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
27 import dwt.graphics.Image;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
28 import dwt.graphics.Point;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
29 import dwt.graphics.Rectangle;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
30 import dwt.internal.cocoa.NSArray;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
31 import dwt.internal.cocoa.NSBezierPath;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
32 import dwt.internal.cocoa.NSBrowserCell;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
33 import dwt.internal.cocoa.NSButtonCell;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
34 import dwt.internal.cocoa.NSColor;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
35 import dwt.internal.cocoa.NSColorSpace;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
36 import dwt.internal.cocoa.NSDictionary;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
37 import dwt.internal.cocoa.NSEvent;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
38 import dwt.internal.cocoa.NSFont;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
39 import dwt.internal.cocoa.NSGraphicsContext;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
40 import dwt.internal.cocoa.NSIndexSet;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
41 import dwt.internal.cocoa.NSMutableIndexSet;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
42 import dwt.internal.cocoa.NSNotification;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
43 import dwt.internal.cocoa.NSNumber;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
44 import dwt.internal.cocoa.NSPoint;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
45 import dwt.internal.cocoa.NSRange;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
46 import dwt.internal.cocoa.NSRect;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
47 import dwt.internal.cocoa.NSScrollView;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
48 import dwt.internal.cocoa.NSSize;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
49 import dwt.internal.cocoa.NSString;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
50 import dwt.internal.cocoa.NSTableColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
51 import dwt.internal.cocoa.NSTableHeaderCell;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
52 import dwt.internal.cocoa.NSTableHeaderView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
53 import dwt.internal.cocoa.NSTableView;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
54 import dwt.internal.cocoa.NSView;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
55 import dwt.internal.cocoa.OS;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
56 import dwt.internal.cocoa.SWTBrowserCell;
0
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.SWTTableView;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
61 import cocoa = dwt.internal.cocoa.id;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
62
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
63 import Carbon = dwt.internal.c.Carbon;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
64 import dwt.internal.objc.cocoa.Cocoa;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
65 import objc = dwt.internal.objc.runtime;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
66 import dwt.widgets.Composite;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
67 import dwt.widgets.Event;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
68 import dwt.widgets.TableColumn;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
69 import dwt.widgets.TableItem;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
70 import dwt.widgets.TypedListener;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
71
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
72 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
73 * Instances of this class implement a selectable user interface
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
74 * object that displays a list of images and strings and issues
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
75 * notification when selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
76 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
77 * 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
78 * must be of type <code>TableItem</code>.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
79 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
80 * Style <code>VIRTUAL</code> is used to create a <code>Table</code> whose
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
81 * <code>TableItem</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
82 * 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
83 * tables that are very large or for which <code>TableItem</code> population is
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
84 * 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
85 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
86 * Here is an example of using a <code>Table</code> with style <code>VIRTUAL</code>:
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
87 * <code><pre>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
88 * final Table table = new Table (parent, DWT.VIRTUAL | DWT.BORDER);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
89 * table.setItemCount (1000000);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
90 * table.addListener (DWT.SetData, new Listener () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
91 * public void handleEvent (Event event) {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
92 * TableItem item = cast(TableItem) event.item;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
93 * int index = table.indexOf (item);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
94 * item.setText ("Item " + index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
95 * System.out.println (item.getText ());
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
96 * }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
97 * });
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
98 * </pre></code>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
99 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
100 * 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
101 * 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
102 * 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
103 * editor.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
104 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
105 * <dl>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
106 * <dt><b>Styles:</b></dt>
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
107 * <dd>SINGLE, MULTI, CHECK, FULL_SELECTION, HIDE_SELECTION, VIRTUAL, NO_SCROLL</dd>
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
108 * <dt><b>Events:</b></dt>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
109 * <dd>Selection, DefaultSelection, SetData, MeasureItem, EraseItem, PaintItem</dd>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
110 * </dl>
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 * 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
113 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
114 * 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
115 * </p>
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
116 *
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
117 * @see <a href="http://www.eclipse.org/swt/snippets/#table">Table, TableItem, TableColumn snippets</a>
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
118 * @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
119 * @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
120 */
3
649b8e223d5a fix extends
Frank Benoit <benoit@tionex.de>
parents: 0
diff changeset
121 public class Table : Composite {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
122 TableItem [] items;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
123 TableColumn [] columns;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
124 TableColumn sortColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
125 TableItem currentItem;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
126 NSTableHeaderView headerView;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
127 NSTableColumn firstColumn, checkColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
128 NSBrowserCell dataCell;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
129 int columnCount, itemCount, lastIndexOf, sortDirection;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
130 bool 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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
159 * @see DWT#FULL_SELECTION
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
160 * @see DWT#HIDE_SELECTION
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
161 * @see DWT#VIRTUAL
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
162 * @see DWT#NO_SCROLL
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
163 * @see Widget#checkSubclass
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
164 * @see Widget#getStyle
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
165 */
5
1a8b3cb347e0 Fix Ctors to 'this'
Frank Benoit <benoit@tionex.de>
parents: 3
diff changeset
166 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
167 super (parent, checkStyle (style));
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
168 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
169
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
170 objc.id accessibilityAttributeValue (objc.id id, objc.SEL sel, objc.id arg0) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
171
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
172 if (accessible !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
173 NSString attribute = new NSString(arg0);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
174 cocoa.id returnValue = accessible.internal_accessibilityAttributeValue(attribute, ACC.CHILDID_SELF);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
175 if (returnValue !is null) return returnValue.id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
176 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
177
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
178 NSString attributeName = new NSString(arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
179
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
180 // Accessibility Verifier queries for a title or description. NSTableView doesn't
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
181 // 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
182 if (attributeName.isEqualToString (OS.NSAccessibilityDescriptionAttribute)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
183 return NSString.stringWith("").id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
184 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
185
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
186 return super.accessibilityAttributeValue(id, sel, arg0);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
187 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
188
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
189 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
190 * 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
191 * 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
192 * 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
193 * interface.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
194 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
195 * 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
196 * 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
197 * 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
198 * <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
199 * 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
200 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
201 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
202 * @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
203 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
204 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
205 * <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
206 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
207 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
208 * <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
209 * <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
210 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
211 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
212 * @see SelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
213 * @see #removeSelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
214 * @see SelectionEvent
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
215 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
216 public void addSelectionListener (SelectionListener listener) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
217 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
218 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
219 TypedListener typedListener = new TypedListener (listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
220 addListener (DWT.Selection, typedListener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
221 addListener (DWT.DefaultSelection, typedListener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
222 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
223
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
224 TableItem _getItem (int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
225 if ((style & DWT.VIRTUAL) is 0) return items [index];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
226 if (items [index] !is null) return items [index];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
227 return items [index] = new TableItem (this, DWT.NULL, -1, false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
228 }
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 bool checkData (TableItem item, bool redraw) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
231 if (item.cached) return true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
232 if ((style & DWT.VIRTUAL) !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
233 item.cached = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
234 Event event = new Event ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
235 event.item = item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
236 event.index = indexOf (item);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
237 currentItem = item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
238 sendEvent (DWT.SetData, event);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
239 //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
240 currentItem = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
241 if (isDisposed () || item.isDisposed ()) return false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
242 if (redraw) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
243 // 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
244 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
245 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
246 return true;
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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
249 static int checkStyle (int style) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
250 /*
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
251 * 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
252 * 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
253 * 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
254 * 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
255 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
256 * 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
257 * applications have consistent scroll bar behavior.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
258 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
259 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
260 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
261 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
262 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
263 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
264
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
265 protected void checkSubclass () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
266 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
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
270 * 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
271 * 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
272 * value. If the table 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
273 * 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
274 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
275 * @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
276 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
277 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
278 * <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
279 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
280 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
281 * <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
282 * <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
283 * </ul>
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 * @see DWT#VIRTUAL
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
286 * @see DWT#SetData
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 * @since 3.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
289 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
290 public void clear (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
291 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
292 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
293 TableItem item = items [index];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
294 if (item !is null) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
295 item.clear ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
296 NSTableView widget = cast(NSTableView) view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
297 widget.reloadData ();
0
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 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
300 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
301 * Removes the items from the receiver which are between the given
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
302 * zero-relative start and end indices (inclusive). The text, icon
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
303 * and other attributes of the items are set to their default values.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
304 * If the table 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
305 * 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
306 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
307 * @param start the start index of the item to clear
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
308 * @param end the end index of the item to clear
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
309 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
310 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
311 * <li>ERROR_INVALID_RANGE - if either the start or end are 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
312 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
313 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
314 * <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
315 * <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
316 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
317 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
318 * @see DWT#VIRTUAL
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
319 * @see DWT#SetData
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
320 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
321 * @since 3.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
322 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
323 public void clear (int start, int end) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
324 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
325 if (start > end) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
326 if (!(0 <= start && start <= end && end < itemCount)) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
327 error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
328 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
329 if (start is 0 && end is itemCount - 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
330 clearAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
331 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
332 for (int i=start; i<=end; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
333 TableItem item = items [i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
334 if (item !is null) item.clear ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
335 }
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
336 NSTableView widget = cast(NSTableView) view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
337 widget.reloadData ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
338 }
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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
341 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
342 * Clears the items at the given zero-relative indices in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
343 * The text, icon and other attributes of the items are set to their default
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
344 * values. If the table 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
345 * 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
346 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
347 * @param indices the array of indices of the items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
348 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
349 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
350 * <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
351 * <li>ERROR_NULL_ARGUMENT - if the indices array is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
352 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
353 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
354 * <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
355 * <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
356 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
357 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
358 * @see DWT#VIRTUAL
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
359 * @see DWT#SetData
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
360 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
361 * @since 3.0
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 public void clear (int [] indices) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
364 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
365 if (indices 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
366 if (indices.length is 0) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
367 for (int i=0; i<indices.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
368 if (!(0 <= indices [i] && indices [i] < itemCount)) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
369 error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
370 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
371 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
372 for (int i=0; i<indices.length; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
373 TableItem item = items [indices [i]];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
374 if (item !is null) item.clear ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
375 }
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
376 NSTableView widget = cast(NSTableView) view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
377 widget.reloadData ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
378 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
379
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 * 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
382 * 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
383 * table 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
384 * attributes are requested again as needed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
385 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
386 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
387 * <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
388 * <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
389 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
390 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
391 * @see DWT#VIRTUAL
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
392 * @see DWT#SetData
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
393 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
394 * @since 3.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
395 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
396 public void clearAll () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
397 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
398 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
399 TableItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
400 if (item !is null) item.clear ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
401 }
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
402 NSTableView widget = cast(NSTableView) view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
403 widget.reloadData ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
404 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
405
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
406 public Point computeSize (int wHint, int hHint, bool changed) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
407 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
408 int width = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
409 if (wHint is DWT.DEFAULT) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
410 if (columnCount !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
411 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
412 width += columns [i].getWidth ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
413 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
414 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
415 int columnWidth = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
416 GC gc = new GC (this);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
417 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
418 TableItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
419 if (item !is null) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
420 columnWidth = Math.max (columnWidth, item.calculateWidth (0, gc, false));
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
421 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
422 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
423 gc.dispose ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
424 width += columnWidth + getInsetWidth ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
425 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
426 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
427 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
428 width = wHint;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
429 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
430 if (width <= 0) width = DEFAULT_WIDTH;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
431 int height = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
432 if (hHint is DWT.DEFAULT) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
433 height = itemCount * getItemHeight () + getHeaderHeight();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
434 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
435 height = hHint;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
436 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
437 if (height <= 0) height = DEFAULT_HEIGHT;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
438 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
439 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
440 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
441
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
442 void createHandle () {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
443 NSScrollView scrollWidget = cast(NSScrollView)(new SWTScrollView()).alloc();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
444 scrollWidget.initWithFrame(NSRect ());
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
445 scrollWidget.setHasHorizontalScroller(true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
446 scrollWidget.setHasVerticalScroller(true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
447 scrollWidget.setAutohidesScrollers(true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
448 scrollWidget.setBorderType(hasBorder() ? OS.NSBezelBorder : OS.NSNoBorder);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
449
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
450 NSTableView widget = cast(NSTableView)(new SWTTableView()).alloc();
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
451 widget.initWithFrame(NSRect());
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
452 widget.setAllowsMultipleSelection((style & DWT.MULTI) !is 0);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
453 widget.setAllowsColumnReordering (false);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
454 widget.setDataSource(widget);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
455 widget.setDelegate(widget);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
456 widget.setDoubleAction(OS.sel_sendDoubleSelection);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
457 if (!hasBorder()) widget.setFocusRingType(OS.NSFocusRingTypeNone);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
458
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
459 headerView = cast(NSTableHeaderView)(new SWTTableHeaderView ()).alloc ().init ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
460 widget.setHeaderView (null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
461
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
462 NSString str = NSString.stringWith("");
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
463 if ((style & DWT.CHECK) !is 0) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
464 checkColumn = cast(NSTableColumn)(new NSTableColumn()).alloc();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
465 checkColumn.initWithIdentifier(checkColumn);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
466 checkColumn.headerCell().setTitle(str);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
467 widget.addTableColumn (checkColumn);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
468 NSButtonCell cell = cast(NSButtonCell)(new NSButtonCell()).alloc().init();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
469 checkColumn.setDataCell(cell);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
470 cell.setButtonType(OS.NSSwitchButton);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
471 cell.setImagePosition(OS.NSImageOnly);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
472 cell.setAllowsMixedState(true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
473 cell.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
474 checkColumn.setWidth(getCheckColumnWidth());
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
475 checkColumn.setResizingMask(OS.NSTableColumnNoResizing);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
476 checkColumn.setEditable(false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
477 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
478
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
479 firstColumn = cast(NSTableColumn)(new NSTableColumn()).alloc();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
480 firstColumn.initWithIdentifier(firstColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
481 firstColumn.setMinWidth(0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
482 //column.setResizingMask(OS.NSTableColumnAutoresizingMask);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
483 dataCell = cast(NSBrowserCell)(new SWTBrowserCell ()).alloc ().init ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
484 firstColumn.setDataCell (dataCell);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
485 widget.addTableColumn (firstColumn);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
486
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
487 scrollView = scrollWidget;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
488 view = widget;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
489 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
490
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
491 void createItem (TableColumn column, int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
492 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
493 if (columnCount is columns.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
494 TableColumn [] newColumns = new TableColumn [columnCount + 4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
495 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
496 columns = newColumns;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
497 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
498 NSTableColumn nsColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
499 if (columnCount is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
500 //TODO - clear attributes, alignment etc.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
501 nsColumn = firstColumn;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
502 nsColumn.retain();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
503 firstColumn = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
504 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
505 //TODO - set attributes, alignment etc.
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
506 nsColumn = cast(NSTableColumn)(new NSTableColumn()).alloc();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
507 nsColumn.initWithIdentifier(nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
508 nsColumn.setMinWidth(0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
509 int checkColumn = (style & DWT.CHECK) !is 0 ? 1 : 0;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
510 (cast(NSTableView)view).moveColumn (columnCount + checkColumn, index + checkColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
511 nsColumn.setDataCell (dataCell);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
512 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
513 column.createJNIRef ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
514 NSTableHeaderCell headerCell = cast(NSTableHeaderCell)(new SWTTableHeaderCell ()).alloc ().init ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
515 nsColumn.setHeaderCell (headerCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
516 display.addWidget (headerCell, column);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
517 column.nsColumn = nsColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
518 nsColumn.setWidth(0);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
519 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
520 columns [index] = column;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
521 if (columnCount > 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
522 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
523 TableItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
524 if (item !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
525 String [] strings = item.strings;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
526 if (strings !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
527 String [] temp = new String [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
528 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
529 System.arraycopy (strings, index, temp, index+1, columnCount-index-1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
530 temp [index] = "";
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
531 item.strings = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
532 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
533 if (index is 0) item.text = "";
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
534 Image [] images = item.images;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
535 if (images !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
536 Image [] temp = new Image [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
537 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
538 System.arraycopy (images, index, temp, index+1, columnCount-index-1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
539 item.images = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
540 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
541 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
542 Color [] cellBackground = item.cellBackground;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
543 if (cellBackground !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
544 Color [] temp = new Color [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
545 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
546 System.arraycopy (cellBackground, index, temp, index+1, columnCount-index-1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
547 item.cellBackground = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
548 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
549 Color [] cellForeground = item.cellForeground;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
550 if (cellForeground !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
551 Color [] temp = new Color [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
552 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
553 System.arraycopy (cellForeground, index, temp, index+1, columnCount-index-1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
554 item.cellForeground = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
555 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
556 Font [] cellFont = item.cellFont;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
557 if (cellFont !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
558 Font [] temp = new Font [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
559 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
560 System.arraycopy (cellFont, index, temp, index+1, columnCount-index-1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
561 item.cellFont = temp;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
562 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
563 }
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 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
566 for (int i = 0; i < itemCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
567 items [i].customWidth = -1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
568 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
569 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
570 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
571
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
572 void createItem (TableItem item, int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
573 if (!(0 <= index && index <= itemCount)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
574 if (itemCount is items.length) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
575 /* Grow the array faster when redraw is off */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
576 int length = drawCount is 0 ? items.length + 4 : Math.max (4, items.length * 3 / 2);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
577 TableItem [] newItems = new TableItem [length];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
578 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
579 items = newItems;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
580 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
581 System.arraycopy (items, index, items, index + 1, itemCount++ - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
582 items [index] = item;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
583 //TODO - use noteNumberOfRowsChanged?
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
584 (cast(NSTableView)view).reloadData();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
585 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
586
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
587 void createWidget () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
588 super.createWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
589 items = new TableItem [4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
590 columns = new TableColumn [4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
591 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
592
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
593 Color defaultBackground () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
594 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
595 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
596
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
597 Color defaultForeground () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
598 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
599 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
600
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
601 void deregister () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
602 super.deregister ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
603 display.removeWidget (headerView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
604 display.removeWidget (dataCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
605 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
606
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
607 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
608 * Deselects 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
609 * If the item at the index was already deselected, it remains
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
610 * deselected. Indices that are out of range are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
611 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
612 * @param index the index of the item to deselect
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
613 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
614 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
615 * <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
616 * <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
617 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
618 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
619 public void deselect (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
620 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
621 if (0 <= index && index < itemCount) {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
622 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
623 ignoreSelect = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
624 widget.deselectRow (index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
625 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
626 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
627 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
628
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 * Deselects the items at the given zero-relative indices in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
631 * If 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
632 * is selected, it is deselected. If the item at the index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
633 * was not selected, it remains deselected. The range of the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
634 * indices is inclusive. Indices that are out of range are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
635 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
636 * @param start the start index of the items to deselect
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
637 * @param end the end index of the items to deselect
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
640 * <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
641 * <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
642 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
643 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
644 public void deselect (int start, int end) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
645 checkWidget();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
646 if (start > end) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
647 if (end < 0 || start >= itemCount) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
648 start = Math.max (0, start);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
649 end = Math.min (itemCount - 1, end);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
650 if (start is 0 && end is itemCount - 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
651 deselectAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
652 } else {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
653 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
654 ignoreSelect = true;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
655 for (int i=start; i<=end; i++) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
656 widget.deselectRow (i);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
657 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
658 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
659 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
660 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
661
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
662 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
663 * Deselects the items at the given zero-relative indices in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
664 * If 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
665 * is selected, it is deselected. If the item at the index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
666 * was not selected, it remains deselected. Indices that are out
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
667 * of range and duplicate indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
668 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
669 * @param indices the array of indices for the items to deselect
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
670 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
671 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
672 * <li>ERROR_NULL_ARGUMENT - if the set of indices is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
673 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
674 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
675 * <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
676 * <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
677 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
678 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
679 public void deselect (int [] indices) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
680 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
681 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT);
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
682 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
683 ignoreSelect = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
684 for (int i=0; i<indices.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
685 widget.deselectRow (indices [i]);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
686 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
687 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
688 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
689
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
690 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
691 * 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
692 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
693 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
694 * <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
695 * <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
696 * </ul>
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 public void deselectAll () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
699 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
700 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
701 ignoreSelect = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
702 widget.deselectAll(null);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
703 ignoreSelect = false;
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 (TableColumn 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<itemCount; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
713 TableItem 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
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
769 NSInteger oldIndex = (cast(NSTableView)view).columnWithIdentifier (column.nsColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
770
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
771 if (columnCount is 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
772 //TODO - reset attributes
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
773 firstColumn = column.nsColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
774 firstColumn.setWidth (0);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
775 } else {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
776 (cast(NSTableView)view).removeTableColumn(column.nsColumn);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
777 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
778 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
779 columns [columnCount] = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
780
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
781 NSArray array = (cast(NSTableView)view).tableColumns ();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
782 NSUInteger arraySize = array.count ();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
783 for (NSUInteger i = oldIndex; i < arraySize; i++) {
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
784 objc.id columnId = array.objectAtIndex (i).id;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
785 for (int j = 0; j < columnCount; j++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
786 if (columns[j].nsColumn.id is columnId) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
787 columns [j].sendEvent (DWT.Move);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
788 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
789 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
790 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
791 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
792 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
793
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
794 void destroyItem (TableItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
795 int index = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
796 while (index < itemCount) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
797 if (items [index] is item) break;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
798 index++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
799 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
800 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
801 System.arraycopy (items, index + 1, items, index, --itemCount - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
802 items [itemCount] = null;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
803 (cast(NSTableView)view).noteNumberOfRowsChanged();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
804 if (itemCount is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
805 setTableEmpty ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
806 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
807 // fixScrollBar ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
808 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
809 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
810
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
811 void drawInteriorWithFrame_inView (objc.id id, objc.SEL sel, objc.id cellFrame, objc.id view) {
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
812 NSRect rect = NSRect ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
813 OS.memmove (&rect, cellFrame, NSRect.sizeof);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
814
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
815 NSTableView tableView = cast(NSTableView)this.view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
816 NSBrowserCell cell = new NSBrowserCell (id);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
817 NSRange rowsRange = tableView.rowsInRect (rect);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
818 NSUInteger rowIndex = rowsRange.location;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
819 TableItem item = items [rowIndex];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
820 int columnIndex = 0;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
821 NSUInteger nsColumnIndex = 0;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
822 if (columnCount !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
823 NSIndexSet columnsSet = tableView.columnIndexesInRect (rect);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
824 nsColumnIndex = columnsSet.firstIndex ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
825 NSArray nsColumns = tableView.tableColumns ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
826 cocoa.id nsColumn = nsColumns.objectAtIndex (nsColumnIndex);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
827 for (int i = 0; i < columnCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
828 if (columns[i].nsColumn.id is nsColumn.id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
829 columnIndex = indexOf (columns[i]);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
830 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
831 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
832 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
833 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
834
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
835 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
836 if (background is null) background = item.background;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
837 bool drawBackground = background !is null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
838 bool drawForeground = true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
839 bool isSelected = tableView.isRowSelected (rowIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
840 bool drawSelection = isSelected;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
841
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
842 NSColor nsSelectionBackground = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
843 NSColor nsSelectionForeground = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
844 if (isSelected) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
845 if (isFocusControl ()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
846 nsSelectionForeground = NSColor.alternateSelectedControlTextColor ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
847 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
848 nsSelectionForeground = NSColor.selectedControlTextColor ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
849 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
850 nsSelectionForeground = nsSelectionForeground.colorUsingColorSpace (NSColorSpace.deviceRGBColorSpace ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
851 nsSelectionBackground = cell.highlightColorInView (tableView);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
852 nsSelectionBackground = nsSelectionBackground.colorUsingColorSpace (NSColorSpace.deviceRGBColorSpace ());
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
853 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
854
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
855 NSRect fullRect = NSRect ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
856 fullRect.x = rect.x; fullRect.y = rect.y; fullRect.height = rect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
857 if (columnCount is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
858 if (item.customWidth !is -1) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
859 fullRect.width = item.customWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
860 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
861 NSSize contentSize = cell.cellSizeForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
862 fullRect.width = contentSize.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
863 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
864 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
865 NSSize spacing = tableView.intercellSpacing ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
866 fullRect.width = rect.width + spacing.width;
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
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
869 if (hooks (DWT.EraseItem)) {
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
870 NSRect eraseItemRect;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
871 // 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
872 // 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
873 if (columnIndex is 0 && (style & DWT.CHECK) !is 0 && (columnCount is 0 || tableView.columnWithIdentifier (columns[0].nsColumn) is 1)) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
874 eraseItemRect = NSRect ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
875 eraseItemRect.y = fullRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
876 eraseItemRect.width = fullRect.x + fullRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
877 eraseItemRect.height = fullRect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
878 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
879 eraseItemRect = fullRect;
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 GCData data = new GCData ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
882 data.paintRectStruct = eraseItemRect;
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
883 data.paintRect = &data.paintRectStruct;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
884 GC gc = GC.cocoa_new (this, data);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
885 gc.setFont (item.getFont (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
886 if (isSelected) {
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
887 Carbon.CGFloat[] components = [nsSelectionForeground.numberOfComponents ()];
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
888 nsSelectionForeground.getComponents (components.ptr);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
889 Color selectionForeground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
890 gc.setForeground (selectionForeground);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
891 components = [nsSelectionBackground.numberOfComponents ()];
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
892 nsSelectionBackground.getComponents (components.ptr);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
893 Color selectionBackground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
894 gc.setBackground (selectionBackground);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
895 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
896 gc.setForeground (item.getForeground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
897 gc.setBackground (item.getBackground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
898 }
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 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
901 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
902 event.gc = gc;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
903 event.index = columnIndex;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
904 event.detail = DWT.FOREGROUND;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
905 if (drawBackground) event.detail |= DWT.BACKGROUND;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
906 if (isSelected) event.detail |= DWT.SELECTED;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
907 event.x = cast(int)eraseItemRect.x;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
908 event.y = cast(int)eraseItemRect.y;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
909 event.width = cast(int)eraseItemRect.width;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
910 event.height = cast(int)eraseItemRect.height;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
911 sendEvent (DWT.EraseItem, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
912 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
913 if (item.isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
914 if (!event.doit) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
915 drawForeground = drawBackground = drawSelection = false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
916 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
917 drawBackground = drawBackground && (event.detail & DWT.BACKGROUND) !is 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
918 drawForeground = (event.detail & DWT.FOREGROUND) !is 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
919 drawSelection = drawSelection && (event.detail & DWT.SELECTED) !is 0;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
920 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
921
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
922 if (drawSelection) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
923 NSRect selectionRect = NSRect ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
924 selectionRect.y = rect.y; selectionRect.height = rect.height;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
925 if (columnCount > 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
926 NSRect columnRect = tableView.rectOfColumn (nsColumnIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
927 selectionRect.x = columnRect.x; selectionRect.width = columnRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
928 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
929 NSRect rowRect = tableView.rectOfRow (rowIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
930 if ((style & DWT.CHECK) !is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
931 /* highlighting at this stage draws over the checkbox, so don't include its column */
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
932 Carbon.CGFloat checkWidth = checkColumn.width ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
933 selectionRect.x = checkWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
934 selectionRect.width = rowRect.width - checkWidth;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
935 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
936 selectionRect.width = rowRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
937 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
938 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
939 callSuper (tableView.id, OS.sel_highlightSelectionInClipRect_, selectionRect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
940 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
941 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
942
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
943 if (drawBackground && !drawSelection) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
944 NSGraphicsContext context = NSGraphicsContext.currentContext ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
945 context.saveGraphicsState ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
946 Carbon.CGFloat[] colorRGB = background.handle;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
947 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
948 color.setFill ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
949 NSBezierPath.fillRect (fullRect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
950 context.restoreGraphicsState ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
951 }
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 (drawForeground) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
954 cell.setHighlighted (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
955 callSuper (id, sel, rect, view);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
956 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
957
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
958 if (hooks (DWT.PaintItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
959 NSRect contentRect = cell.titleRectForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
960 NSSize contentSize = cell.cellSizeForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
961
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
962 GCData data = new GCData ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
963 // 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
964 // 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
965 if (columnIndex is 0 && (style & DWT.CHECK) !is 0 && (columnCount is 0 || tableView.columnWithIdentifier (columns[0].nsColumn) is 1)) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
966 NSRect gcRect = NSRect ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
967 gcRect.y = fullRect.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
968 gcRect.width = fullRect.x + fullRect.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
969 gcRect.height = fullRect.height;
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
970 data.paintRectStruct = gcRect;
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
971 data.paintRect = &data.paintRectStruct;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
972 } else {
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
973 data.paintRectStruct = fullRect;
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
974 data.paintRect = &data.paintRectStruct;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
975 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
976 GC gc = GC.cocoa_new (this, data);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
977 gc.setFont (item.getFont (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
978 if (isSelected) {
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
979 Carbon.CGFloat[] components = [nsSelectionForeground.numberOfComponents ()];
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
980 nsSelectionForeground.getComponents (components.ptr);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
981 Color selectionForeground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
982 gc.setForeground (selectionForeground);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
983 components = [nsSelectionBackground.numberOfComponents ()];
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
984 nsSelectionBackground.getComponents (components.ptr);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
985 Color selectionBackground = Color.cocoa_new (display, components);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
986 gc.setBackground (selectionBackground);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
987 gc.setBackground (display.getSystemColor (DWT.COLOR_GREEN));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
988 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
989 gc.setForeground (item.getForeground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
990 gc.setBackground (item.getBackground (columnIndex));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
991 }
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 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
994 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
995 event.gc = gc;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
996 event.index = columnIndex;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
997 if (isSelected) event.detail |= DWT.SELECTED;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
998 event.x = cast(int)contentRect.x;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
999 event.y = cast(int)contentRect.y;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1000 event.width = cast(int)Math.ceil (contentSize.width);
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1001 event.height = cast(int)Math.ceil (fullRect.height);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1002 sendEvent (DWT.PaintItem, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1003 gc.dispose ();
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 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1006
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1007 void fixSelection (int index, bool add) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1008 int [] selection = getSelectionIndices ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1009 if (selection.length is 0) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1010 int newCount = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1011 bool fix = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1012 for (int i = 0; i < selection.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1013 if (!add && selection [i] is index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1014 fix = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1015 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1016 int newIndex = newCount++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1017 selection [newIndex] = selection [i] + 1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1018 if (selection [newIndex] - 1 >= index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1019 selection [newIndex] += add ? 1 : -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1020 fix = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1021 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1022 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1023 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1024 if (fix) select (selection, newCount, true);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1025 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1026
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1027 int getCheckColumnWidth () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1028 return 20; //TODO - compute width
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1029 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1030
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1031 TableColumn getColumn (cocoa.id id) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1032 for (int i = 0; i < columnCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1033 if (columns[i].nsColumn.id is id.id) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1034 return columns[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1035 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1036 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1037 return null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1038 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1039
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1040 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1041 * 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
1042 * 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
1043 * 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
1044 * If no <code>TableColumn</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
1045 * 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
1046 * the fact that a single column of data may be visible in the table.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1047 * This occurs when the programmer uses the table like a list, adding
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1048 * items but never creating a column.
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 * @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
1051 * @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
1052 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1053 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1054 * <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
1055 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1056 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1057 * <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
1058 * <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
1059 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1060 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1061 * @see Table#getColumnOrder()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1062 * @see Table#setColumnOrder(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1063 * @see TableColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1064 * @see TableColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1065 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1066 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1067 public TableColumn getColumn (int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1068 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1069 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
1070 return columns [index];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1071 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1072
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 * 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
1075 * If no <code>TableColumn</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
1076 * 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
1077 * 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
1078 * the table 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
1079 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1080 * @return the number of columns
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1081 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1082 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1083 * <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
1084 * <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
1085 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1086 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1087 public int getColumnCount () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1088 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1089 return columnCount;
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
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 * 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
1094 * 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
1095 * 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
1096 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1097 * 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
1098 * 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
1099 * 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
1100 * </p><p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1101 * 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
1102 * 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
1103 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1104 * </p>
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 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
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 * @see Table#setColumnOrder(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1114 * @see TableColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1115 * @see TableColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1116 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1117 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1118 * @since 3.1
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 public int [] getColumnOrder () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1121 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1122 int [] order = new int [columnCount];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1123 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
1124 TableColumn column = columns [i];
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1125 int index = (cast(NSTableView)view).columnWithIdentifier (column.nsColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1126 if ((style & DWT.CHECK) !is 0) index -= 1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1127 order [index] = i;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1128 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1129 return order;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1130 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1131
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1132 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1133 * Returns an array of <code>TableColumn</code>s which are the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1134 * 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
1135 * that they were created. If no <code>TableColumn</code>s were
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1136 * 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
1137 * 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
1138 * when the programmer uses the table like a list, adding items but
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1139 * never creating a column.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1140 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1141 * 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
1142 * 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
1143 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1144 * </p>
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 * @return the items in the receiver
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1149 * <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
1150 * <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
1151 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1152 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1153 * @see Table#getColumnOrder()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1154 * @see Table#setColumnOrder(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1155 * @see TableColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1156 * @see TableColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1157 * @see DWT#Move
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 public TableColumn [] getColumns () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1160 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1161 TableColumn [] result = new TableColumn [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1162 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
1163 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1164 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1165
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1166 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1167 * 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
1168 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1169 * @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
1170 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1171 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1172 * <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
1173 * <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
1174 * </ul>
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 public int getGridLineWidth () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1177 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1178 return 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1179 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1182 * 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
1183 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1184 * @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
1185 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1186 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1187 * <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
1188 * <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
1189 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1190 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1191 * @since 2.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1192 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1193 public int getHeaderHeight () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1194 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1195 NSTableHeaderView headerView = (cast(NSTableView)view).headerView();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1196 if (headerView is null) return 0;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1197 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
1198 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1199
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 * 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
1202 * and <code>false</code> otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1203 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1204 * 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
1205 * 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
1206 * 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
1207 * it may not actually be showing.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1208 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1209 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1210 * @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
1211 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1212 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1213 * <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
1214 * <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
1215 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1216 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1217 public bool getHeaderVisible () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1218 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1219 return (cast(NSTableView)view).headerView() !is null;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1220 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1221
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1222 int getInsetWidth () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1223 //TODO - wrong
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1224 return 20;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1225 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1226
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1227 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1228 * 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
1229 * 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
1230 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1231 * @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
1232 * @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
1233 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1234 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1235 * <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
1236 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1237 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1238 * <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
1239 * <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
1240 * </ul>
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 public TableItem getItem (int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1243 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1244 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1245 return _getItem (index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1246 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1247
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 * 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
1250 * 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
1251 * coordinate system of the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1252 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1253 * 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
1254 * 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
1255 * 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
1256 * 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
1257 * determines the extent of the selection.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1258 * </p>
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 * @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
1261 * @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
1262 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1263 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1264 * <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
1265 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1266 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1267 * <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
1268 * <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
1269 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1270 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1271 public TableItem getItem (Point point) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1272 checkWidget ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1273 NSTableView widget = cast(NSTableView)view;
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1274 NSPoint pt = NSPoint();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1275 pt.x = point.x;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1276 pt.y = point.y;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1277 int row = cast(int)/*64*/widget.rowAtPoint(pt);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1278 if (row is -1) return null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1279 return items[row];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1280 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1281
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1282 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1283 * 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
1284 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1285 * @return the number of items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1286 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1287 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1288 * <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
1289 * <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
1290 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1291 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1292 public int getItemCount () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1293 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1294 return itemCount;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1295 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1298 * Returns the height of the area which would be used to
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1299 * display <em>one</em> of the items in the receiver.
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1300 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1301 * @return the height of one item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1302 *
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 int getItemHeight () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1309 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1310 return cast(int)(cast(NSTableView)view).rowHeight();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1311 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1312
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1313 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1314 * Returns a (possibly empty) array of <code>TableItem</code>s which
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1315 * are the items in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1316 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1317 * 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
1318 * 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
1319 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1320 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1321 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1322 * @return the items in the receiver
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1325 * <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
1326 * <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
1327 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1328 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1329 public TableItem [] getItems () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1330 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1331 TableItem [] result = new TableItem [itemCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1332 if ((style & DWT.VIRTUAL) !is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1333 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
1334 result [i] = _getItem (i);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1335 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1336 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1337 System.arraycopy (items, 0, result, 0, itemCount);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1338 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1339 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1340 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1343 * 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
1344 * and <code>false</code> otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1345 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1346 * 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
1347 * 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
1348 * 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
1349 * it may not actually be showing.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1350 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1351 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1352 * @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
1353 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1354 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1355 * <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
1356 * <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
1357 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1358 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1359 public bool getLinesVisible () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1360 checkWidget ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1361 return (cast(NSTableView)view).usesAlternatingRowBackgroundColors();
0
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1365 * Returns an array of <code>TableItem</code>s that are currently
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1366 * 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
1367 * 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
1368 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1369 * 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
1370 * 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
1371 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1372 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1373 * @return an array representing the selection
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 TableItem [] getSelection () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1381 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1382 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1383 if (widget.numberOfSelectedRows() is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1384 return new TableItem [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 NSIndexSet selection = widget.selectedRowIndexes();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1387 NSUInteger count = selection.count();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1388 NSUInteger [] indexBuffer = new NSUInteger [count];
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1389 selection.getIndexes(indexBuffer.ptr, count, null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1390 TableItem [] result = new TableItem [count];
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1391 for (NSUInteger i=0; i<count; i++) {
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1392 result [i] = _getItem (cast(int)/*64*/indexBuffer [i]);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1393 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1394 return result;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1395 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1396
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1397 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1398 * 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
1399 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1400 * @return the number of selected items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1401 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1402 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1403 * <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
1404 * <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
1405 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1406 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1407 public int getSelectionCount () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1408 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1409 return cast(int)/*64*/(cast(NSTableView)view).numberOfSelectedRows();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1410 }
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 * Returns the zero-relative index of the item which is currently
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1414 * selected in the receiver, or -1 if no item is selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1415 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1416 * @return the index of the selected item
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1419 * <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
1420 * <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
1421 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1422 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1423 public int getSelectionIndex () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1424 checkWidget ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1425 NSTableView widget = cast(NSTableView)view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1426 if (widget.numberOfSelectedRows() is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1427 return -1;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1428 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1429 NSIndexSet selection = widget.selectedRowIndexes();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1430 NSUInteger count = selection.count();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1431 NSUInteger [] result = new NSUInteger [count];
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1432 selection.getIndexes(result.ptr, count, null);
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1433 return cast(int)/*64*/result [0];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1434 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1435
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1436 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1437 * Returns the zero-relative indices of the items which are currently
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1438 * selected in the receiver. The order of the indices is unspecified.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1439 * The array is empty if no items are selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1440 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1441 * 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
1442 * 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
1443 * not affect the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1444 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1445 * @return the array of indices of the selected items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1446 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1447 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1448 * <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
1449 * <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
1450 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1451 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1452 public int [] getSelectionIndices () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1453 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1454 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1455 if (widget.numberOfSelectedRows() is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1456 return new int [0];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1457 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1458 NSIndexSet selection = widget.selectedRowIndexes();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1459 NSUInteger count = selection.count();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1460 NSUInteger [] indices = new NSUInteger [count];
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
1461 selection.getIndexes(indices.ptr, count, null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1462 int [] result = new int [count];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1463 for (int i = 0; i < indices.length; i++) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1464 result [i] = cast(int)/*64*/indices [i];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1465 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1466 return result;
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1470 * 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
1471 * 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
1472 * the sort indicator.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1473 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1474 * @return the sort indicator
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1475 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1476 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1477 * <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
1478 * <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
1479 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1480 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1481 * @see #setSortColumn(TableColumn)
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 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1484 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1485 public TableColumn getSortColumn () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1486 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1487 return sortColumn;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1488 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1491 * 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
1492 * 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
1493 * or <code>NONE</code>.
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 * @return the sort direction
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1498 * <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
1499 * <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
1500 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1501 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1502 * @see #setSortDirection(int)
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 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1505 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1506 public int getSortDirection () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1507 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1508 return sortDirection;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1509 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1512 * Returns the zero-relative index of the item which is currently
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1513 * at the top of the receiver. This index can change when items are
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1514 * scrolled 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
1515 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1516 * @return the index of the top item
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1519 * <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
1520 * <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
1521 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1522 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1523 public int getTopIndex () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1524 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1525 //TODO - partial item at the top
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1526 NSRect rect = scrollView.documentVisibleRect();
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1527 NSPoint point = NSPoint();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1528 point.x = rect.x;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1529 point.y = rect.y;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1530 return cast(int)/*64*/(cast(NSTableView)view).rowAtPoint(point);
0
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
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1533 void highlightSelectionInClipRect(objc.id id, objc.SEL sel, objc.id rect) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1534 if (!hooks (DWT.EraseItem)) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1535 NSRect clipRect = NSRect ();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1536 OS.memmove (&clipRect, rect, NSRect.sizeof);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1537 callSuper (id, sel, clipRect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1538 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1539 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1540
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1541 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1542 * 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
1543 * (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
1544 * 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
1545 * is found, returns -1.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1546 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1547 * @param column the search column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1548 * @return the index of the column
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1549 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1550 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1551 * <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
1552 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1553 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1554 * <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
1555 * <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
1556 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1557 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1558 public int indexOf (TableColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1559 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1560 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
1561 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
1562 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
1563 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1564 return -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1565 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1566
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1567 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1568 * 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
1569 * (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
1570 * 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
1571 * is found, returns -1.
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 * @param item the search item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1574 * @return the index of the item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1575 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1576 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1577 * <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
1578 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1579 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1580 * <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
1581 * <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
1582 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1583 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1584 public int indexOf (TableItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1585 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1586 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
1587 if (1 <= lastIndexOf && lastIndexOf < itemCount - 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1588 if (items [lastIndexOf] is item) return lastIndexOf;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1589 if (items [lastIndexOf + 1] is item) return ++lastIndexOf;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1590 if (items [lastIndexOf - 1] is item) return --lastIndexOf;
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 if (lastIndexOf < itemCount / 2) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1593 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
1594 if (items [i] is item) return lastIndexOf = i;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1595 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1596 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1597 for (int i=itemCount - 1; i>=0; --i) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1598 if (items [i] is item) return lastIndexOf = i;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1599 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1600 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1601 return -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1602 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1603
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1604 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1605 * Returns <code>true</code> if the item is selected,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1606 * and <code>false</code> otherwise. Indices out of
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1607 * range are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1608 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1609 * @param index the index of the item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1610 * @return the selection state of the item at the index
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1611 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1612 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1613 * <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
1614 * <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
1615 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1616 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1617 public bool isSelected (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1618 checkWidget ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1619 if (!(0 <= index && index < itemCount)) return false;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1620 return (cast(NSTableView)view).isRowSelected(index);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1621 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1622
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1623 bool isTrim (NSView view) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1624 if (super.isTrim (view)) return true;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1625 return view.id is headerView.id;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1626 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1627
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1628 objc.id numberOfRowsInTableView(objc.id id, objc.SEL sel, objc.id aTableView) {
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1629 return cast(objc.id )itemCount;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1630 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1631
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1632 void register () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1633 super.register ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1634 display.addWidget (headerView, this);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1635 display.addWidget (dataCell, this);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1636 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1637
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1638 void releaseChildren (bool destroy) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1639 if (items !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1640 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
1641 TableItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1642 if (item !is null && !item.isDisposed ()) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1643 item.release (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1644 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1645 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1646 items = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1647 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1648 if (columns !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1649 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
1650 TableColumn column = columns [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1651 if (column !is null && !column.isDisposed ()) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1652 column.release (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1653 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1654 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1655 columns = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1656 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1657 super.releaseChildren (destroy);
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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1660 void releaseHandle () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1661 super.releaseHandle ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1662 if (headerView !is null) headerView.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1663 headerView = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1664 if (firstColumn !is null) firstColumn.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1665 firstColumn = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1666 if (checkColumn !is null) checkColumn.release();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1667 checkColumn = null;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1668 if (dataCell !is null) dataCell.release();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1669 dataCell = null;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1670 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1671
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1672 void releaseWidget () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1673 super.releaseWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1674 currentItem = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1675 sortColumn = null;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1676 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1677
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1678 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1679 * Removes the item from the receiver at the given
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1680 * zero-relative index.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1681 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1682 * @param index the index for the item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1683 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1684 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1685 * <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
1686 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1687 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1688 * <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
1689 * <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
1690 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1691 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1692 public void remove (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1693 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1694 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1695 TableItem item = items [index];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1696 if (item !is null) item.release (false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1697 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
1698 System.arraycopy (items, index + 1, items, index, --itemCount - index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1699 items [itemCount] = null;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1700 (cast(NSTableView)view).noteNumberOfRowsChanged();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1701 if (itemCount is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1702 setTableEmpty ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1703 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1704 // fixScrollBar ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1705 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1706 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1707
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1708 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1709 * Removes the items from the receiver which are
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1710 * between the given zero-relative start and end
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1711 * indices (inclusive).
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1712 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1713 * @param start the start of the range
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1714 * @param end the end of the range
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1715 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1716 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1717 * <li>ERROR_INVALID_RANGE - if either the start or end are 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
1718 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1719 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1720 * <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
1721 * <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
1722 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1723 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1724 public void remove (int start, int end) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1725 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1726 if (start > end) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1727 if (!(0 <= start && start <= end && end < itemCount)) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1728 error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1729 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1730 if (start is 0 && end is itemCount - 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1731 removeAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1732 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1733 int length = end - start + 1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1734 for (int i=0; i<length; i++) remove (start);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1735 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1736 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1737
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1738 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1739 * Removes the items from the receiver's list at the given
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1740 * zero-relative indices.
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 * @param indices the array of indices of the items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1743 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1744 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1745 * <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
1746 * <li>ERROR_NULL_ARGUMENT - if the indices array is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1747 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1748 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1749 * <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
1750 * <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
1751 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1752 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1753 public void remove (int [] indices) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1754 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1755 if (indices 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
1756 if (indices.length is 0) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1757 int [] newIndices = new int [indices.length];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1758 System.arraycopy (indices, 0, newIndices, 0, indices.length);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1759 sort (newIndices);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1760 int start = newIndices [newIndices.length - 1], end = newIndices [0];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1761 if (!(0 <= start && start <= end && end < itemCount)) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1762 error (DWT.ERROR_INVALID_RANGE);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1763 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1764 int last = -1;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1765 for (int i=0; i<newIndices.length; i++) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1766 int index = newIndices [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1767 if (index !is last) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1768 remove (index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1769 last = index;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1770 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1771 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1772 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1773
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1774 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1775 * 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
1776 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1777 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1778 * <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
1779 * <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
1780 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1781 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1782 public void removeAll () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1783 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1784 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
1785 TableItem item = items [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1786 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
1787 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1788 setTableEmpty ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1789 (cast(NSTableView)view).noteNumberOfRowsChanged();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1790 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1791
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1792 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1793 * 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
1794 * 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
1795 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1796 * @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
1797 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1798 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1799 * <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
1800 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1801 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1802 * <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
1803 * <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
1804 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1805 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1806 * @see SelectionListener
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1807 * @see #addSelectionListener(SelectionListener)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1808 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1809 public void removeSelectionListener(SelectionListener listener) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1810 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1811 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
1812 if (eventTable is null) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1813 eventTable.unhook (DWT.Selection, listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1814 eventTable.unhook (DWT.DefaultSelection,listener);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1815 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1816
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1817 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1818 * Selects 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
1819 * If the item at the index was already selected, it remains
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1820 * selected. Indices that are out of range are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1821 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1822 * @param index the index of the item to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1823 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1824 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1825 * <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
1826 * <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
1827 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1828 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1829 public void select (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1830 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1831 if (0 <= index && index < itemCount) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1832 NSIndexSet indexes = cast(NSIndexSet)(new NSIndexSet()).alloc();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1833 indexes.initWithIndex(index);
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1834 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1835 ignoreSelect = true;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1836 widget.selectRowIndexes(indexes, (style & DWT.MULTI) !is 0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1837 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1838 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1839 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1840
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1841 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1842 * Selects the items in the range specified by the given zero-relative
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1843 * indices in the receiver. The range of indices is inclusive.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1844 * The current selection is not 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
1845 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1846 * If an item in the given range is not selected, it is selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1847 * If an item in the given range was already selected, it remains selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1848 * Indices that are out of range are ignored and no items will be selected
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1849 * if start is greater than end.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1850 * If the receiver is single-select and there is more than one item in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1851 * given range, then all indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1852 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1853 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1854 * @param start the start of the range
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1855 * @param end the end of the range
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1856 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1857 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1858 * <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
1859 * <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
1860 * </ul>
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 * @see Table#setSelection(int,int)
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 public void select (int start, int end) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1865 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1866 if (end < 0 || start > end || ((style & DWT.SINGLE) !is 0 && start !is end)) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1867 if (itemCount is 0 || start >= itemCount) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1868 if (start is 0 && end is itemCount - 1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1869 selectAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1870 } else {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1871 start = Math.max (0, start);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1872 end = Math.min (end, itemCount - 1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1873 int length = end - start + 1;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1874 NSIndexSet indexes = cast(NSIndexSet)(new NSIndexSet()).alloc();
46
cfa563df4fdd Updated Widget and Display to 3.514
Jacob Carlborg <doob@me.com>
parents: 45
diff changeset
1875 NSRange range = NSRange();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1876 range.location = start;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1877 range.length = length;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1878 indexes.initWithIndexesInRange(range);
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1879 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1880 ignoreSelect = true;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1881 widget.selectRowIndexes(indexes, (style & DWT.MULTI) !is 0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1882 ignoreSelect = false;
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 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1887 * Selects the items at the given zero-relative indices in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1888 * The current selection is not 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
1889 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1890 * If the item at a given index is not selected, it is selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1891 * If the item at a given index was already selected, it remains selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1892 * Indices that are out of range and duplicate indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1893 * If the receiver is single-select and multiple indices are specified,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1894 * then all indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1895 * </p>
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 * @param indices the array of indices for the items to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1898 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1899 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1900 * <li>ERROR_NULL_ARGUMENT - if the array of indices is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1901 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1902 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1903 * <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
1904 * <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
1905 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1906 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1907 * @see Table#setSelection(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1908 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1909 public void select (int [] indices) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1910 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1911 if (indices 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
1912 int length = indices.length;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1913 if (length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1)) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1914 int count = 0;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1915 NSMutableIndexSet indexes = cast(NSMutableIndexSet)(new NSMutableIndexSet()).alloc().init();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1916 for (int i=0; i<length; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1917 int index = indices [i];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1918 if (index >= 0 && index < itemCount) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1919 indexes.addIndex (indices [i]);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1920 count++;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1921 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1922 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1923 if (count > 0) {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1924 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1925 ignoreSelect = true;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1926 widget.selectRowIndexes(indexes, (style & DWT.MULTI) !is 0);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1927 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1928 }
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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1931 void select (int [] ids, int count, bool clear) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1932 NSMutableIndexSet indexes = cast(NSMutableIndexSet)(new NSMutableIndexSet()).alloc().init();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1933 for (int i=0; i<count; i++) indexes.addIndex (ids [i] - 1); //WRONG -1
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1934 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1935 ignoreSelect = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1936 widget.selectRowIndexes(indexes, !clear);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1937 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1938 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1941 * 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
1942 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1943 * 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
1944 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1945 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1946 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1947 * <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
1948 * <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
1949 * </ul>
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 public void selectAll () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1952 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1953 if ((style & DWT.SINGLE) !is 0) return;
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
1954 NSTableView widget = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1955 ignoreSelect = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1956 widget.selectAll(null);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1957 ignoreSelect = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1958 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1959
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
1960 void setBackground (Carbon.CGFloat [] color) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1961 super.setBackground (color);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1962 NSColor nsColor;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1963 if (color is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1964 nsColor = null;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1965 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1966 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
1967 }
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
1968 (cast(NSTableView) view).setBackgroundColor (nsColor);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1969 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
1970
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1971 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1972 * 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
1973 * 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
1974 * 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
1975 * were added.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1976 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1977 * @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
1978 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1979 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1980 * <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
1981 * <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
1982 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1983 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1984 * <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
1985 * <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
1986 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1987 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1988 * @see Table#getColumnOrder()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1989 * @see TableColumn#getMoveable()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1990 * @see TableColumn#setMoveable(bool)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1991 * @see DWT#Move
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1992 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1993 * @since 3.1
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1994 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1995 public void setColumnOrder (int [] order) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1996 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1997 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
1998 if (columnCount is 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
1999 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
2000 return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2001 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2002 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
2003 int [] oldOrder = getColumnOrder ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2004 bool reorder = false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2005 bool [] seen = new bool [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2006 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
2007 int index = order [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2008 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
2009 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
2010 seen [index] = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2011 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
2012 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2013 if (reorder) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2014 NSTableView tableView = cast(NSTableView)view;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2015 int [] oldX = new int [oldOrder.length];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2016 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
2017 for (int i=0; i<oldOrder.length; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2018 int index = oldOrder[i];
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2019 oldX [index] = cast(int)tableView.rectOfColumn (i + check).x;
0
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 int [] newX = new int [order.length];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2022 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
2023 int index = order [i];
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2024 TableColumn column = columns[index];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2025 int oldIndex = tableView.columnWithIdentifier (column.nsColumn);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2026 int newIndex = i + check;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2027 tableView.moveColumn (oldIndex, newIndex);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2028 newX [index] = cast(int)tableView.rectOfColumn (newIndex).x;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2029 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2030 TableColumn[] newColumns = new TableColumn [columnCount];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2031 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
2032 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
2033 TableColumn column = newColumns [i];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2034 if (!column.isDisposed ()) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2035 if (newX [i] !is oldX [i]) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2036 column.sendEvent (DWT.Move);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2037 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2038 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2039 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2040 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2041 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2042
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2043 void setFont(NSFont font) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2044 super.setFont (font);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2045 if (!hooks (DWT.MeasureItem)) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2046 float ascent = font.ascender ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2047 float descent = -font.descender () + font.leading ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2048 (cast(NSTableView)view).setRowHeight (cast(int)Math.ceil (ascent + descent) + 1);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2049 } else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2050 view.setNeedsDisplay (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2051 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2052 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2053
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2054 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2055 * 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
2056 * and marks it invisible otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2057 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2058 * 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
2059 * 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
2060 * 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
2061 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2062 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2063 * @param show the new visibility state
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2064 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2065 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2066 * <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
2067 * <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
2068 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2069 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2070 public void setHeaderVisible (bool show) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2071 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2072 (cast(NSTableView)view).setHeaderView (show ? headerView : null);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2073 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2076 * Sets 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
2077 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2078 * @param count the number of items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2079 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2080 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2081 * <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
2082 * <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
2083 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2084 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2085 * @since 3.0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2086 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2087 public void setItemCount (int count) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2088 checkWidget ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2089 count = Math.max (0, count);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2090 if (count is itemCount) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2091 if (count is itemCount) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2092 TableItem [] children = items;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2093 if (count < itemCount) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2094 for (int index = count; index < itemCount; index ++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2095 TableItem item = children [index];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2096 if (item !is null && !item.isDisposed()) item.release (false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2097 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2098 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2099 if (count > itemCount) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2100 if ((getStyle() & DWT.VIRTUAL) is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2101 for (int i=itemCount; i<count; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2102 new TableItem (this, DWT.NONE, i, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2103 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2104 return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2105 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2106 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2107 int length = Math.max (4, (count + 3) / 4 * 4);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2108 TableItem [] newItems = new TableItem [length];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2109 if (children !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2110 System.arraycopy (items, 0, children, 0, Math.min (count, itemCount));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2111 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2112 children = newItems;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2113 this.items = newItems;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2114 this.itemCount = count;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2115 (cast(NSTableView) view).noteNumberOfRowsChanged ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2116 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2117
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2118 /*public*/ void setItemHeight (int itemHeight) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2119 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2120 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
2121 if (itemHeight is -1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2122 //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
2123 } else {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2124 // 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
2125 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2126 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2127
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2128 public void setRedraw (bool redraw) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2129 checkWidget ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2130 super.setRedraw (redraw);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2131 if (redraw && drawCount is 0) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2132 setScrollWidth ();
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 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2135
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2136 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2137 * 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
2138 * and marks it invisible otherwise.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2139 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2140 * 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
2141 * 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
2142 * 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
2143 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2144 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2145 * @param show the new visibility state
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2146 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2147 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2148 * <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
2149 * <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
2150 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2151 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2152 public void setLinesVisible (bool show) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2153 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2154 (cast(NSTableView)view).setUsesAlternatingRowBackgroundColors(show);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2155 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2156
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2157 bool setScrollWidth () {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2158 return setScrollWidth (items, true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2159 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2160
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2161 bool setScrollWidth (TableItem item, bool callMeasureItem) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2162 return setScrollWidth ([item], callMeasureItem);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2163 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2164
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2165 bool setScrollWidth (TableItem items[], bool callMeasureItem) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2166 if (columnCount !is 0) return false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2167 if (currentItem !is null) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2168 // if (currentItem !is item) fixScrollWidth = true;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2169 return false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2170 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2171 if (/*ignoreRedraw ||*/ drawCount !is 0) return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2172 int newWidth = 0;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2173 GC gc = new GC (this);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2174 for (int i = 0; i < items.length; i++) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2175 TableItem item = items[i];
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2176 if (item !is null && !item.isDisposed ()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2177 newWidth = Math.max (newWidth, item.calculateWidth (0, gc, callMeasureItem));
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2178 if (isDisposed ()) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2179 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2180 return false;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2181 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2182 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2183 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2184 gc.dispose ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2185 newWidth += getInsetWidth ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2186 if (firstColumn.width () < newWidth) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2187 NSTableView tableView = cast(NSTableView)view;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2188 NSTableViewColumnAutoresizingStyle oldResize = tableView.columnAutoresizingStyle ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2189 tableView.setColumnAutoresizingStyle (OS.NSTableViewNoColumnAutoresizing);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2190 firstColumn.setWidth (newWidth);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2191 tableView.setColumnAutoresizingStyle (oldResize);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2192 return true;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2193 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2194 return false;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2195 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2196
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2197 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2198 * Selects 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
2199 * The current selection is first cleared, then the new item is selected.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2200 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2201 * @param index the index of the item to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2202 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2203 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2204 * <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
2205 * <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
2206 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2207 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2208 * @see Table#deselectAll()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2209 * @see Table#select(int)
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 public void setSelection (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2212 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2213 //TODO - optimize to use expand flag
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2214 deselectAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2215 setSelection (index, false);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2216 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2217
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2218 void setSelection (int index, bool notify) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2219 // checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2220 if (0 <= index && index < itemCount) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2221 select (index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2222 showIndex (index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2223 if (notify) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2224 Event event = new Event ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2225 event.item = _getItem (index);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2226 postEvent (DWT.Selection, event);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2227 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2228 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2229 }
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 * Selects the items in the range specified by the given zero-relative
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2233 * indices in the receiver. The range of indices is inclusive.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2234 * 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
2235 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2236 * Indices that are out of range are ignored and no items will be selected
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2237 * if start is greater than end.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2238 * If the receiver is single-select and there is more than one item in the
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2239 * given range, then all indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2240 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2241 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2242 * @param start the start index of the items to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2243 * @param end the end index of the items to select
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 * @see Table#deselectAll()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2251 * @see Table#select(int,int)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2252 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2253 public void setSelection (int start, int end) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2254 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2255 //TODO - optimize to use expand flag
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2256 deselectAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2257 if (end < 0 || start > end || ((style & DWT.SINGLE) !is 0 && start !is end)) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2258 if (itemCount is 0 || start >= itemCount) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2259 start = Math.max (0, start);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2260 end = Math.min (end, itemCount - 1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2261 select (start, end);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2262 showIndex (start);
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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2265 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2266 * Selects the items at the given zero-relative indices in the receiver.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2267 * 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
2268 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2269 * Indices that are out of range and duplicate indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2270 * If the receiver is single-select and multiple indices are specified,
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2271 * then all indices are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2272 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2273 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2274 * @param indices the indices of the items to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2275 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2276 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2277 * <li>ERROR_NULL_ARGUMENT - if the array of indices is null</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2278 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2279 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2280 * <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
2281 * <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
2282 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2283 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2284 * @see Table#deselectAll()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2285 * @see Table#select(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2286 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2287 public void setSelection (int [] indices) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2288 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2289 if (indices 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
2290 //TODO - optimize to use expand flag
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2291 deselectAll ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2292 int length = indices.length;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2293 if (length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1)) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2294 select (indices);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2295 showIndex (indices [0]);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2296 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2297
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2298 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2299 * 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
2300 * 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
2301 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2302 * 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
2303 * </p>
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 * @param item the item to select
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2306 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2307 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2308 * <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
2309 * <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
2310 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2311 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2312 * <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
2313 * <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
2314 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2315 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2316 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2317 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2318 public void setSelection (TableItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2319 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2320 if (item is null) error (DWT.ERROR_NULL_ARGUMENT);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2321 setSelection ([item]);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2322 }
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 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2325 * 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
2326 * 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
2327 * <p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2328 * 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
2329 * 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
2330 * then all items are ignored.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2331 * </p>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2332 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2333 * @param items the array of items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2334 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2335 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2336 * <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
2337 * <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
2338 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2339 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2340 * <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
2341 * <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
2342 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2343 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2344 * @see Table#deselectAll()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2345 * @see Table#select(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2346 * @see Table#setSelection(int[])
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2347 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2348 public void setSelection (TableItem [] items) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2349 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2350 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
2351 //TODO - optimize to use expand flag
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2352 deselectAll ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2353 int length_ = items.length;
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2354 if (length_ is 0 || ((style & DWT.SINGLE) !is 0 && length_ > 1)) return;
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2355 int [] indices = new int [length_];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2356 int count = 0;
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2357 for (int i=0; i<length_; i++) {
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2358 int index = indexOf (items [length_ - i - 1]);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2359 if (index !is -1) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2360 indices [count++] = index;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2361 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2362 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2363 if (count > 0) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2364 select (indices);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2365 showIndex (indices [0] - 1);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2366 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2367 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2368
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2369 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2370 * 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
2371 * 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
2372 * before the new column is set.
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 * @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
2375 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2376 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2377 * <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
2378 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2379 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2380 * <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
2381 * <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
2382 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2383 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2384 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2385 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2386 public void setSortColumn (TableColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2387 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2388 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
2389 if (column is sortColumn) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2390 TableColumn oldSortColumn = sortColumn;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2391 sortColumn = column;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2392 if (sortDirection is DWT.NONE) return;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2393 NSTableHeaderView headerView = (cast(NSTableView)view).headerView ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2394 if (headerView is null) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2395 if (oldSortColumn !is null) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2396 NSInteger index = (cast(NSTableView)view).columnWithIdentifier (oldSortColumn.nsColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2397 NSRect rect = headerView.headerRectOfColumn (index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2398 headerView.setNeedsDisplayInRect (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2399 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2400 if (sortColumn !is null) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2401 NSInteger index = (cast(NSTableView)view).columnWithIdentifier (sortColumn.nsColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2402 NSRect rect = headerView.headerRectOfColumn (index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2403 headerView.setNeedsDisplayInRect (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2404 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2405 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2406
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2407 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2408 * 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
2409 * 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
2410 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2411 * @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
2412 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2413 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2414 * <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
2415 * <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
2416 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2417 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2418 * @since 3.2
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2419 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2420 public void setSortDirection (int direction) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2421 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2422 if (direction !is DWT.UP && direction !is DWT.DOWN && direction !is DWT.NONE) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2423 if (direction is sortDirection) return;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2424 sortDirection = direction;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2425 if (sortColumn is null) return;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2426 NSTableHeaderView headerView = (cast(NSTableView)view).headerView ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2427 if (headerView is null) return;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2428 NSInteger index = (cast(NSTableView)view).columnWithIdentifier (sortColumn.nsColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2429 NSRect rect = headerView.headerRectOfColumn (index);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2430 headerView.setNeedsDisplayInRect (rect);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2431 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2432
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2433 void setTableEmpty () {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2434 itemCount = 0;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2435 items = new TableItem [4];
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2436 }
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 * Sets the zero-relative index of the item which is currently
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2440 * at the top of the receiver. This index can change when items
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2441 * are scrolled or new items are added and removed.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2442 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2443 * @param index the index of the top item
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2444 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2445 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2446 * <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
2447 * <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
2448 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2449 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2450 public void setTopIndex (int index) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2451 checkWidget ();
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2452 NSRect rect = (cast(NSTableView)view).rectOfRow(index);
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2453 (cast(NSTableView)view).scrollRectToVisible(rect);
0
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
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 * 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
2458 * 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
2459 * the column is visible.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2460 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2461 * @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
2462 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2463 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2464 * <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
2465 * <li>ERROR_INVALID_ARGUMENT - if the column has been disposed</li>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2466 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2467 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2468 * <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
2469 * <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
2470 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2471 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2472 * @since 3.0
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 public void showColumn (TableColumn column) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2475 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2476 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
2477 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
2478 if (column.parent !is this) return;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2479 if (columnCount <= 1) return;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2480 int index = cast(int)/*64*/(cast(NSTableView)view).columnWithIdentifier (column.nsColumn);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2481 if (!(0 <= index && index < columnCount + ((style & DWT.CHECK) !is 0 ? 1 : 0))) return;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2482 (cast(NSTableView)view).scrollColumnToVisible (index);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2483 }
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 void showIndex (int index) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2486 if (0 <= index && index < itemCount) {
7
e831403a80a9 Add 'cast' to casts
Frank Benoit <benoit@tionex.de>
parents: 5
diff changeset
2487 (cast(NSTableView)view).scrollRowToVisible(index);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2488 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2489 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2490
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2491 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2492 * 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
2493 * 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
2494 * the item is visible.
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2495 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2496 * @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
2497 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2498 * @exception IllegalArgumentException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2499 * <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
2500 * <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
2501 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2502 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2503 * <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
2504 * <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
2505 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2506 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2507 * @see Table#showSelection()
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2508 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2509 public void showItem (TableItem item) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2510 checkWidget ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2511 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
2512 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
2513 int index = indexOf (item);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2514 if (index !is -1) showIndex (index);
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
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2517 /**
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2518 * 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
2519 * 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
2520 * the selection is visible.
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 * @exception DWTException <ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2523 * <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
2524 * <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
2525 * </ul>
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2526 *
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2527 * @see Table#showItem(TableItem)
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2528 */
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2529 public void showSelection () {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2530 checkWidget ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2531 int index = getSelectionIndex ();
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2532 if (index >= 0) showIndex (index);
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 void sendDoubleSelection() {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2536 postEvent (DWT.DefaultSelection);
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2537 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2538
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2539 bool sendKeyEvent (NSEvent nsEvent, int type) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2540 bool result = super.sendKeyEvent (nsEvent, type);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2541 if (!result) return result;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2542 if (type !is DWT.KeyDown) return result;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2543 ushort keyCode = nsEvent.keyCode ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2544 switch (keyCode) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2545 case 76: /* KP Enter */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2546 case 36: { /* Return */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2547 postEvent (DWT.DefaultSelection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2548 break;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2549 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2550 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2551 return result;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2552 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2553
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2554 void tableViewColumnDidMove (objc.id id, objc.SEL sel, objc.id aNotification) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2555 NSNotification notification = new NSNotification (aNotification);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2556 NSDictionary userInfo = notification.userInfo ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2557 cocoa.id nsOldIndex = userInfo.valueForKey (NSString.stringWith ("NSOldColumn")); //$NON-NLS-1$
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2558 cocoa.id nsNewIndex = userInfo.valueForKey (NSString.stringWith ("NSNewColumn")); //$NON-NLS-1$
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2559 int oldIndex = (new NSNumber (nsOldIndex)).intValue ();
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2560 int newIndex = (new NSNumber (nsNewIndex)).intValue ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2561 int startIndex = Math.min (oldIndex, newIndex);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2562 int endIndex = Math.max (oldIndex, newIndex);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2563 NSTableView tableView = cast(NSTableView)view;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2564 NSArray nsColumns = tableView.tableColumns ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2565 for (int i = startIndex; i <= endIndex; i++) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2566 cocoa.id columnId = nsColumns.objectAtIndex (i);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2567 TableColumn column = getColumn (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2568 if (column !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2569 column.sendEvent (DWT.Move);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2570 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2571 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2572 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2573 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2574
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2575 void tableViewColumnDidResize (objc.id id, objc.SEL sel, objc.id aNotification) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2576 NSNotification notification = new NSNotification (aNotification);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2577 NSDictionary userInfo = notification.userInfo ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2578 cocoa.id columnId = userInfo.valueForKey (NSString.stringWith ("NSTableColumn")); //$NON-NLS-1$
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2579 TableColumn column = getColumn (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2580 if (column is null) return; /* either CHECK column or firstColumn in 0-column Table */
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2581
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2582 column.sendEvent (DWT.Resize);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2583 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2584
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2585 NSTableView tableView = cast(NSTableView)view;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2586 int index = cast(int)/*64*/tableView.columnWithIdentifier (columnId);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2587 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
2588
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2589 NSArray nsColumns = tableView.tableColumns ();
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2590 int columnCount = cast(int)/*64*/tableView.numberOfColumns ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2591 for (int i = index + 1; i < columnCount; i++) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2592 columnId = nsColumns.objectAtIndex (i);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2593 column = getColumn (columnId);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2594 if (column !is null) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2595 column.sendEvent (DWT.Move);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2596 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2597 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2598 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2599 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2600
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2601 void tableViewSelectionDidChange (objc.id id, objc.SEL sel, objc.id aNotification) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2602 if (ignoreSelect) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2603 NSTableView widget = cast(NSTableView) view;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2604 int row = cast(int)/*64*/widget.selectedRow ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2605 if(row is -1)
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2606 postEvent (DWT.Selection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2607 else {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2608 TableItem item = _getItem (row);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2609 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2610 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2611 event.index = row;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2612 postEvent (DWT.Selection, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2613 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2614 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2615
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2616 void tableView_didClickTableColumn (objc.id id, objc.SEL sel, objc.id tableView, objc.id tableColumn) {
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2617 TableColumn column = getColumn (new cocoa.id (tableColumn));
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2618 column.postEvent (DWT.Selection);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2619 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2620
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2621 objc.id tableView_objectValueForTableColumn_row (objc.id id, objc.SEL sel, objc.id aTableView, objc.id aTableColumn, objc.id rowIndex) {
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2622 TableItem item = _getItem (cast(int)/*64*/rowIndex);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2623 if (checkColumn !is null && aTableColumn is checkColumn.id) {
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2624 NSNumber value;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2625 if (item.checked && item.grayed) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2626 value = NSNumber.numberWithInt (OS.NSMixedState);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2627 } else {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2628 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
2629 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2630 return value.id;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2631 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2632 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
2633 if (columns [i].nsColumn.id is aTableColumn) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2634 return item.createString (i).id;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2635 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2636 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2637 return item.createString (0).id;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2638 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2639
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2640 void tableView_setObjectValue_forTableColumn_row (objc.id id, objc.SEL sel, objc.id aTableView, objc.id anObject, objc.id aTableColumn, objc.id rowIndex) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2641 if (checkColumn !is null && aTableColumn is checkColumn.id) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2642 TableItem item = items [cast(int)/*64*/rowIndex];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2643 item.checked = !item.checked;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2644 Event event = new Event ();
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2645 event.detail = DWT.CHECK;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2646 event.item = item;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2647 event.index = cast(int)/*64*/rowIndex;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2648 postEvent (DWT.Selection, event);
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2649 NSTableView tableView = cast(NSTableView)view;
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2650 NSRect rect = tableView.rectOfRow (cast(NSInteger)rowIndex);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2651 tableView.setNeedsDisplayInRect (rect);
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2652 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2653 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2654
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2655 bool tableView_shouldEditTableColumn_row (objc.id id, objc.SEL sel, objc.id aTableView, objc.id aTableColumn, objc.id rowIndex) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2656 return false;
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2657 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2658
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2659 void tableView_willDisplayCell_forTableColumn_row (objc.id id, objc.SEL sel, objc.id aTableView, objc.id aCell, objc.id aTableColumn, objc.id rowIndex) {
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2660 if (checkColumn !is null && aTableColumn is checkColumn.id) return;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2661 TableItem item = items [cast(int)/*64*/rowIndex];
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2662 Image image = item.image;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2663 int columnIndex = 0;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2664 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
2665 if (columns [i].nsColumn.id is aTableColumn) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2666 image = item.getImage (i);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2667 columnIndex = i;
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2668 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2669 }
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2670 NSBrowserCell cell = new NSBrowserCell (aCell);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2671 cell.setFont (item.getFont (columnIndex).handle);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2672 cell.setImage (image !is null ? image.handle : null);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2673 cell.setLeaf (true);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2674
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2675 if (hooks (DWT.MeasureItem)) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2676 NSTableView tableView = cast(NSTableView)this.view;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2677 NSInteger nsColumnIndex = tableView.columnWithIdentifier (new cocoa.id (aTableColumn));
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2678 NSRect rect = tableView.frameOfCellAtColumn (nsColumnIndex, cast(NSInteger) rowIndex);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2679 NSRect contentRect = cell.titleRectForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2680 NSSize contentSize = cell.cellSizeForBounds (rect);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2681
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2682 GCData data = new GCData ();
90
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2683 data.paintRectStruct = tableView.frame ();
c7f7f4d7091a All widgets are ported
Jacob Carlborg <doob@me.com>
parents: 80
diff changeset
2684 data.paintRect = &data.paintRectStruct;
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2685 GC gc = GC.cocoa_new (this, data);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2686 gc.setFont (item.getFont (columnIndex));
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2687 int rowHeight = cast(int)tableView.rowHeight ();
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2688 Event event = new Event ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2689 event.item = item;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2690 event.gc = gc;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2691 event.index = columnIndex;
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2692 event.x = cast(int)contentRect.x;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2693 event.y = cast(int)contentRect.y;
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2694 event.width = cast(int)Math.ceil (contentSize.width);
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2695 event.height = rowHeight;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2696 sendEvent (DWT.MeasureItem, event);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2697 gc.dispose ();
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2698 if (isDisposed ()) return;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2699 if (rowHeight < event.height) {
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2700 tableView.setRowHeight(event.height);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2701 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2702 if (columnCount is 0) {
80
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2703 int change = event.width - (item.customWidth !is -1 ? item.customWidth : cast(int)Math.ceil (contentSize.width));
b24476d6dedf Ported dwt.widgets.Table
Jacob Carlborg <doob@me.com>
parents: 46
diff changeset
2704 if (item.customWidth !is -1 || event.width !is cast(int)Math.ceil (contentSize.width)) {
45
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2705 item.customWidth = event.width;
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2706 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2707 if (change !is 0) setScrollWidth (item, false);
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2708 }
d8635bb48c7c Merge with SWT 3.5
Jacob Carlborg <doob@me.com>
parents: 7
diff changeset
2709 }
0
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2710 }
380af2bdd8e5 Upload of whole dwt tree
Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
parents:
diff changeset
2711 }