1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sourceforge.jeuclid.app.mathviewer;
20
21
22 public class InsertTableDialog extends javax.swing.JDialog {
23
24 private String mathMLText;
25
26
27 public InsertTableDialog(final java.awt.Frame parent, final boolean modal) {
28 super(parent, modal);
29 this.initComponents();
30 }
31
32
33
34
35
36
37 @SuppressWarnings("unchecked")
38
39
40 private void initComponents() {
41
42 this.buttonGroupType = new javax.swing.ButtonGroup();
43 this.tableRadioButton = new javax.swing.JRadioButton();
44 this.matrixRadioButton = new javax.swing.JRadioButton();
45 this.determinantRadioButton = new javax.swing.JRadioButton();
46 this.cancelButton = new javax.swing.JButton();
47 this.okButton = new javax.swing.JButton();
48 this.columnsLabel = new javax.swing.JLabel();
49 this.rowsSpinner = new javax.swing.JSpinner();
50 this.columnsSpinner = new javax.swing.JSpinner();
51 this.typeLabel = new javax.swing.JLabel();
52 this.rowsLabel = new javax.swing.JLabel();
53
54 this
55 .setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
56
57 this.buttonGroupType.add(this.tableRadioButton);
58 this.tableRadioButton.setText("Tabelle");
59
60 this.buttonGroupType.add(this.matrixRadioButton);
61 this.matrixRadioButton.setSelected(true);
62 this.matrixRadioButton.setText("Matrix");
63
64 this.buttonGroupType.add(this.determinantRadioButton);
65 this.determinantRadioButton.setText("Determinante");
66
67 this.cancelButton.setText("Abbrechen");
68 this.cancelButton
69 .addActionListener(new java.awt.event.ActionListener() {
70 public void actionPerformed(
71 final java.awt.event.ActionEvent evt) {
72 InsertTableDialog.this.cancelButtonActionPerformed(evt);
73 }
74 });
75
76 this.okButton.setText("OK");
77 this.okButton.addActionListener(new java.awt.event.ActionListener() {
78 public void actionPerformed(final java.awt.event.ActionEvent evt) {
79 InsertTableDialog.this.okButtonActionPerformed(evt);
80 }
81 });
82
83 this.columnsLabel.setText("Spalten");
84
85 this.rowsSpinner.setModel(new javax.swing.SpinnerNumberModel(3, 1, 99,
86 1));
87
88 this.columnsSpinner.setModel(new javax.swing.SpinnerNumberModel(3, 1,
89 99, 1));
90
91 this.typeLabel.setText("Typ");
92
93 this.rowsLabel.setText("Zeilen");
94
95 final javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this
96 .getContentPane());
97 this.getContentPane().setLayout(layout);
98 layout
99 .setHorizontalGroup(layout
100 .createParallelGroup(
101 javax.swing.GroupLayout.Alignment.LEADING)
102 .addGroup(
103 layout
104 .createSequentialGroup()
105 .addGroup(
106 layout
107 .createParallelGroup(
108 javax.swing.GroupLayout.Alignment.LEADING)
109 .addGroup(
110 layout
111 .createSequentialGroup()
112 .addGap(
113 24,
114 24,
115 24)
116 .addComponent(
117 this.typeLabel)
118 .addGap(
119 18,
120 18,
121 18)
122 .addGroup(
123 layout
124 .createParallelGroup(
125 javax.swing.GroupLayout.Alignment.LEADING)
126 .addComponent(
127 this.tableRadioButton)
128 .addComponent(
129 this.matrixRadioButton)
130 .addComponent(
131 this.determinantRadioButton)))
132 .addGroup(
133 layout
134 .createSequentialGroup()
135 .addGap(
136 24,
137 24,
138 24)
139 .addComponent(
140 this.rowsLabel)
141 .addGap(
142 14,
143 14,
144 14)
145 .addComponent(
146 this.rowsSpinner,
147 javax.swing.GroupLayout.PREFERRED_SIZE,
148 javax.swing.GroupLayout.DEFAULT_SIZE,
149 javax.swing.GroupLayout.PREFERRED_SIZE)
150 .addGap(
151 18,
152 18,
153 18)
154 .addComponent(
155 this.columnsLabel)
156 .addPreferredGap(
157 javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
158 .addComponent(
159 this.columnsSpinner,
160 javax.swing.GroupLayout.PREFERRED_SIZE,
161 javax.swing.GroupLayout.DEFAULT_SIZE,
162 javax.swing.GroupLayout.PREFERRED_SIZE))
163 .addGroup(
164 layout
165 .createSequentialGroup()
166 .addGap(
167 39,
168 39,
169 39)
170 .addComponent(
171 this.okButton,
172 javax.swing.GroupLayout.PREFERRED_SIZE,
173 93,
174 javax.swing.GroupLayout.PREFERRED_SIZE)
175 .addPreferredGap(
176 javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
177 .addComponent(
178 this.cancelButton)))
179 .addContainerGap(44, Short.MAX_VALUE)));
180 layout
181 .setVerticalGroup(layout
182 .createParallelGroup(
183 javax.swing.GroupLayout.Alignment.LEADING)
184 .addGroup(
185 layout
186 .createSequentialGroup()
187 .addGap(25, 25, 25)
188 .addGroup(
189 layout
190 .createParallelGroup(
191 javax.swing.GroupLayout.Alignment.BASELINE)
192 .addComponent(
193 this.rowsLabel)
194 .addComponent(
195 this.columnsLabel)
196 .addComponent(
197 this.rowsSpinner,
198 javax.swing.GroupLayout.PREFERRED_SIZE,
199 javax.swing.GroupLayout.DEFAULT_SIZE,
200 javax.swing.GroupLayout.PREFERRED_SIZE)
201 .addComponent(
202 this.columnsSpinner,
203 javax.swing.GroupLayout.PREFERRED_SIZE,
204 javax.swing.GroupLayout.DEFAULT_SIZE,
205 javax.swing.GroupLayout.PREFERRED_SIZE))
206 .addGap(18, 18, 18)
207 .addGroup(
208 layout
209 .createParallelGroup(
210 javax.swing.GroupLayout.Alignment.BASELINE)
211 .addComponent(
212 this.typeLabel)
213 .addComponent(
214 this.matrixRadioButton))
215 .addPreferredGap(
216 javax.swing.LayoutStyle.ComponentPlacement.RELATED)
217 .addComponent(this.tableRadioButton)
218 .addPreferredGap(
219 javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
220 .addComponent(
221 this.determinantRadioButton)
222 .addGap(18, 18, 18)
223 .addGroup(
224 layout
225 .createParallelGroup(
226 javax.swing.GroupLayout.Alignment.BASELINE)
227 .addComponent(
228 this.cancelButton)
229 .addComponent(
230 this.okButton))
231 .addContainerGap(
232 javax.swing.GroupLayout.DEFAULT_SIZE,
233 Short.MAX_VALUE)));
234
235 this.pack();
236 }
237
238 private void cancelButtonActionPerformed(
239 final java.awt.event.ActionEvent evt) {
240 this.mathMLText = null;
241 this.setVisible(false);
242 }
243
244 public String getMathMLText() {
245 return this.mathMLText;
246 }
247
248 private void okButtonActionPerformed(final java.awt.event.ActionEvent evt) {
249
250 this.updateMathMLText();
251 this.setVisible(false);
252 }
253
254 private String buildText(final int lines, final int columns,
255 final String type) {
256
257 String s = "<mrow>" + Helper.nl() + "<mfenced" + type + ">"
258 + Helper.nl() + "<mtable>" + Helper.nl();
259
260 for (int i = 0; i < lines; ++i) {
261
262 s += "<mtr>" + Helper.nl();
263 for (int j = 0; j < columns; ++j) {
264 s += "<mtd><mn>1</mn></mtd>" + Helper.nl();
265
266 }
267
268 s += "</mtr>" + Helper.nl();
269 }
270
271 s += "</mtable>" + Helper.nl() + "</mfenced>" + Helper.nl() + "</mrow>"
272 + Helper.nl();
273 return s;
274 }
275
276 private void updateMathMLText() {
277 final int m = (Integer) this.rowsSpinner.getValue();
278 final int n = (Integer) this.columnsSpinner.getValue();
279
280
281 if (this.matrixRadioButton.isSelected()) {
282 this.mathMLText = this.buildText(m, n, "");
283 } else if (this.determinantRadioButton.isSelected()) {
284 this.mathMLText = this.buildText(m, n, " open=\"|\" close=\"|\"");
285 } else if (this.tableRadioButton.isSelected()) {
286 this.mathMLText = this.buildText(m, n, " open=\"\" close=\"\"");
287 } else {
288 this.mathMLText = null;
289 }
290 }
291
292
293
294
295
296 public static void main(final String args[]) {
297 java.awt.EventQueue.invokeLater(new Runnable() {
298 public void run() {
299 final InsertTableDialog dialog = new InsertTableDialog(
300 new javax.swing.JFrame(), true);
301 dialog.addWindowListener(new java.awt.event.WindowAdapter() {
302 @Override
303 public void windowClosing(final java.awt.event.WindowEvent e) {
304 System.exit(0);
305 }
306 });
307 dialog.setVisible(true);
308 }
309 });
310 }
311
312
313 private javax.swing.ButtonGroup buttonGroupType;
314 private javax.swing.JButton cancelButton;
315 private javax.swing.JLabel columnsLabel;
316 private javax.swing.JSpinner columnsSpinner;
317 private javax.swing.JRadioButton determinantRadioButton;
318 private javax.swing.JRadioButton matrixRadioButton;
319 private javax.swing.JButton okButton;
320 private javax.swing.JLabel rowsLabel;
321 private javax.swing.JSpinner rowsSpinner;
322 private javax.swing.JRadioButton tableRadioButton;
323 private javax.swing.JLabel typeLabel;
324
325
326 }