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