Mercurial > projects > dwt2
annotate org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet006Spreadsheet.d @ 99:5d5bd660917f
build some databind snippets
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 22 Apr 2009 18:59:26 +0200 |
parents | 6086085e153d |
children |
rev | line source |
---|---|
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2006, 2007 IBM Corporation and others. |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 * Brad Reynolds - bug 116920 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 *******************************************************************************/ |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
13 module org.eclipse.jface.examples.databinding.snippets.Snippet006Spreadsheet; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
14 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
15 import java.lang.all; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
16 import tango.io.Stdout; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import java.text.NumberFormat; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import java.text.ParseException; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import org.eclipse.core.databinding.observable.Realm; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import org.eclipse.core.databinding.observable.list.WritableList; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import org.eclipse.core.databinding.observable.value.ComputedValue; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import org.eclipse.core.databinding.observable.value.IObservableValue; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import org.eclipse.core.databinding.observable.value.WritableValue; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import org.eclipse.jface.databinding.swt.SWTObservables; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import org.eclipse.jface.internal.databinding.provisional.swt.TableUpdater; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import org.eclipse.jface.layout.GridLayoutFactory; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import org.eclipse.swt.SWT; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import org.eclipse.swt.custom.ControlEditor; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import org.eclipse.swt.custom.TableCursor; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import org.eclipse.swt.events.KeyAdapter; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import org.eclipse.swt.events.KeyEvent; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import org.eclipse.swt.events.SelectionAdapter; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import org.eclipse.swt.events.SelectionEvent; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 import org.eclipse.swt.widgets.Display; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 import org.eclipse.swt.widgets.Shell; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 import org.eclipse.swt.widgets.Table; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 import org.eclipse.swt.widgets.TableColumn; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 import org.eclipse.swt.widgets.TableItem; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 import org.eclipse.swt.widgets.Text; |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 /** |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 * @since 1.1 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 * |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 */ |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 public class Snippet006Spreadsheet { |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
49 private static const int COUNTER_UPDATE_DELAY = 1000; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
51 private static const int NUM_COLUMNS = 6; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
53 private static const int NUM_ROWS = 16; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
55 /** |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
56 * 0 for no output, 1 for some, 2 for more |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
57 */ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
58 private static int DEBUG_LEVEL = 0; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
60 /** |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
61 * If true, there will be a automatic counter at B1. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
62 */ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
63 private static bool FUNKY_COUNTER = false; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
65 /** |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
66 * // * If true, all formulas (except for row 1 and column A) will be the |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
67 * sum of the values of their left and top neighbouring cells. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
68 */ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
69 private static bool FUNKY_FORMULAS = true; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
70 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
71 static WritableValue[][] cellFormulas; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
72 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
73 static ComputedValue[][] cellValues; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
75 static this(){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
76 cellFormulas = new WritableValue[][](NUM_ROWS,NUM_COLUMNS); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
77 cellValues = new ComputedValue[][](NUM_ROWS,NUM_COLUMNS); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
78 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
80 static class ComputedCellValue : ComputedValue { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
81 private const IObservableValue cellFormula; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
83 private bool calculating; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
85 this(IObservableValue cellFormula) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
86 this.cellFormula = cellFormula; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
87 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
89 protected Object calculate() { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
90 if (calculating) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
91 return stringcast("#cycle"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
92 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
93 try { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
94 calculating = true; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
95 return evaluate(cellFormula.getValue()); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
96 } finally { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
97 calculating = false; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
98 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
99 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
101 private Object evaluate(Object value) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
102 if (DEBUG_LEVEL >= 2) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
103 Stdout.formatln("evaluating {} ...", this); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
104 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
105 if (value is null) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
106 return stringcast(""); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
107 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
108 try { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
109 String s = stringcast( value ); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
110 if (!s.startsWith("=")) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
111 return stringcast(s); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
112 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
113 String addition = s.substring(1); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
114 int indexOfPlus = addition.indexOf('+'); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
115 String operand1 = addition.substring(0, indexOfPlus); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
116 double value1 = eval(operand1); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
117 String operand2 = addition.substring(indexOfPlus + 1); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
118 double value2 = eval(operand2); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
119 return stringcast(NumberFormat.getNumberInstance().format(value1 + value2)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
120 } catch (Exception ex) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
121 return stringcast(ex.msg); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
122 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
123 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
125 /** |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
126 * @param s |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
127 * @return |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
128 * @throws ParseException |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
129 */ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
130 private double eval(String s) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
131 if (s.length() is 0) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
132 return 0; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
133 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
134 dchar character = s.charAt(0); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
135 if (Character.isLetter(character)) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
136 character = Character.toLowerCase(character); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
137 // reference to other cell |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
138 int columnIndex = character - 'a'; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
139 int rowIndex = 0; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
140 rowIndex = NumberFormat.getNumberInstance().parse( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
141 s.substring(1)).intValue() - 1; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
142 String value = stringcast( cellValues[rowIndex][columnIndex] |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
143 .getValue()); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
144 return value.length() is 0 ? 0 : NumberFormat |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
145 .getNumberInstance().parse(value).doubleValue(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
146 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
147 return NumberFormat.getNumberInstance().parse(s).doubleValue(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
148 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
149 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
151 protected static int counter; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
152 static class LocalTableUpdater : TableUpdater { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
153 this( Table t, WritableList l ){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
154 super( t, l ); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
155 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
156 protected void updateItem(int rowIndex, TableItem item, Object element) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
157 if (DEBUG_LEVEL >= 1) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
158 Stdout.formatln("updating row {}", rowIndex); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
159 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
160 for (int j = 0; j < NUM_COLUMNS; j++) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
161 item.setText(j, stringcast( cellValues[rowIndex][j] |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
162 .getValue())); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
163 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
164 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
165 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
166 static class CursorSelectionListener : SelectionAdapter { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
167 TableCursor cursor; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
168 Table table; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
169 ControlEditor editor; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
171 this(TableCursor c, Table t,ControlEditor e){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
172 cursor = c; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
173 table = t; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
174 editor = e; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
175 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
176 // when the TableEditor is over a cell, select the |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
177 // corresponding row |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
178 // in |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
179 // the table |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
180 public void widgetSelected(SelectionEvent e) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
181 table.setSelection([ cursor.getRow() ]); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
182 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
184 // when the user hits "ENTER" in the TableCursor, pop up a |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
185 // text |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
186 // editor so that |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
187 // they can change the text of the cell |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
188 public void widgetDefaultSelected(SelectionEvent e) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
189 final Text text = new Text(cursor, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
190 TableItem row = cursor.getRow(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
191 int rowIndex = table.indexOf(row); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
192 int columnIndex = cursor.getColumn(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
193 text |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
194 .setText(stringcast( cellFormulas[rowIndex][columnIndex] |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
195 .getValue())); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
196 text.addKeyListener(new TextKeyListener(table, cursor, text )); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
197 editor.setEditor(text); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
198 text.setFocus(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
199 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
200 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
201 static class TextKeyListener : KeyAdapter { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
202 Table table; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
203 TableCursor cursor; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
204 Text text; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
205 this(Table t, TableCursor c, Text t2){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
206 cursor = c; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
207 table = t; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
208 text = t2; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
209 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
210 public void keyPressed(KeyEvent e) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
211 // close the text editor and copy the data over |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
212 // when the user hits "ENTER" |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
213 if (e.character is SWT.CR) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
214 TableItem row = cursor.getRow(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
215 int rowIndex = table.indexOf(row); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
216 int columnIndex = cursor.getColumn(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
217 cellFormulas[rowIndex][columnIndex] |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
218 .setValue(stringcast(text.getText())); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
219 text.dispose(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
220 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
221 // close the text editor when the user hits |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
222 // "ESC" |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
223 if (e.character is SWT.ESC) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
224 text.dispose(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
225 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
226 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
227 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
228 static class CursorKeyListener : KeyAdapter { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
229 TableCursor cursor; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
230 this(TableCursor c){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
231 cursor = c; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
232 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
233 public void keyPressed(KeyEvent e) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
234 if (e.keyCode is SWT.MOD1 || e.keyCode is SWT.MOD2 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
235 || (e.stateMask & SWT.MOD1) !is 0 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
236 || (e.stateMask & SWT.MOD2) !is 0) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
237 cursor.setVisible(false); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
238 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
239 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
240 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
241 static class TableKeyListener : KeyAdapter { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
242 Table table; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
243 TableCursor cursor; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
244 this(Table t, TableCursor c){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
245 cursor = c; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
246 table = t; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
247 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
248 public void keyReleased(KeyEvent e) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
249 if (e.keyCode is SWT.MOD1 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
250 && (e.stateMask & SWT.MOD2) !is 0) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
251 return; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
252 if (e.keyCode is SWT.MOD2 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
253 && (e.stateMask & SWT.MOD1) !is 0) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
254 return; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
255 if (e.keyCode !is SWT.MOD1 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
256 && (e.stateMask & SWT.MOD1) !is 0) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
257 return; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
258 if (e.keyCode !is SWT.MOD2 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
259 && (e.stateMask & SWT.MOD2) !is 0) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
260 return; |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
262 TableItem[] selection = table.getSelection(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
263 TableItem row = (selection.length is 0) ? table |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
264 .getItem(table.getTopIndex()) : selection[0]; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
265 table.showItem(row); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
266 cursor.setSelection(row, 0); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
267 cursor.setVisible(true); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
268 cursor.setFocus(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
269 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
270 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
271 public static void main(String[] args) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
272 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
273 final Display display = new Display(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
274 Realm.runWithDefault(SWTObservables.getRealm(display), dgRunnable( (Display display_) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
275 Shell shell = new Shell(display_); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
276 shell.setText("Data Binding Snippet 006"); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
277 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
278 final Table table = new Table(shell, SWT.BORDER | SWT.MULTI |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
279 | SWT.FULL_SELECTION | SWT.VIRTUAL); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
280 table.setLinesVisible(true); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
281 table.setHeaderVisible(true); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
282 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
283 for (int i = 0; i < NUM_COLUMNS; i++) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
284 TableColumn tableColumn = new TableColumn(table, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
285 tableColumn.setText(Character.toString(cast(char) ('A' + i))); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
286 tableColumn.setWidth(60); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
287 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
288 WritableList list = new WritableList(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
289 for (int i = 0; i < NUM_ROWS; i++) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
290 list.add(new Object()); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
291 for (int j = 0; j < NUM_COLUMNS; j++) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
292 cellFormulas[i][j] = new WritableValue(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
293 cellValues[i][j] = new ComputedCellValue( |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
294 cellFormulas[i][j]); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
295 if (!FUNKY_FORMULAS || i is 0 || j is 0) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
296 cellFormulas[i][j].setValue(stringcast("")); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
297 } else { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
298 cellFormulas[i][j].setValue(stringcast("=" |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
299 ~ cellReference(i - 1, j) ~ "+" |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
300 ~ cellReference(i, j - 1))); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
301 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
302 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
303 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
304 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
305 new LocalTableUpdater( table, list ); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
307 if (FUNKY_COUNTER) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
308 // counter in A1 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
309 display_.asyncExec(dgRunnable(&output, display_)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
310 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
312 // create a TableCursor to navigate around the table |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
313 final TableCursor cursor = new TableCursor(table, SWT.NONE); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
314 // create an editor to edit the cell when the user hits "ENTER" |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
315 // while over a cell in the table |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
316 final ControlEditor editor = new ControlEditor(cursor); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
317 editor.grabHorizontal = true; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
318 editor.grabVertical = true; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
319 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
320 cursor.addSelectionListener(new CursorSelectionListener( cursor, table, editor )); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
321 // Hide the TableCursor when the user hits the "MOD1" or "MOD2" |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
322 // key. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
323 // This alows the user to select multiple items in the table. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
324 cursor.addKeyListener(new CursorKeyListener(cursor) ); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
325 // Show the TableCursor when the user releases the "MOD2" or |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
326 // "MOD1" key. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
327 // This signals the end of the multiple selection task. |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
328 table.addKeyListener(new TableKeyListener(table, cursor)); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
330 GridLayoutFactory.fillDefaults().generateLayout(shell); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
331 shell.setSize(400, 300); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
332 shell.open(); |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
334 // The SWT event loop |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
335 while (!shell.isDisposed()) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
336 if (!display_.readAndDispatch()) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
337 display_.sleep(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
338 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
339 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
340 }, display)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
341 display.dispose(); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
342 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
343 private void output( Display display ){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
344 cellFormulas[0][1].setValue(stringcast(Format("{}", counter++))); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
345 display.timerExec(COUNTER_UPDATE_DELAY, dgRunnable( &output, display )); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
346 } |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
347 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
348 private static String cellReference(int rowIndex, int columnIndex) { |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
349 String cellReference = Format("{}{}", (cast(char) ('A' + columnIndex)) |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
350 , (rowIndex + 1)); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
351 return cellReference; |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
352 } |
90
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 |
6086085e153d
Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 } |
99
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
355 |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
356 void main( String[] args ){ |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
357 Snippet006Spreadsheet.main(args); |
5d5bd660917f
build some databind snippets
Frank Benoit <benoit@tionex.de>
parents:
90
diff
changeset
|
358 } |