001 /*
002 * Copyright 2009 - 2010 JEuclid, http://jeuclid.sf.net
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 /* $Id $ */
018
019 package net.sourceforge.jeuclid.app.mathviewer;
020
021 // CHECKSTYLE:OFF
022 public class InsertTableDialog extends javax.swing.JDialog {
023 // CHECKSTYLE:OFF
024 private String mathMLText;
025
026 /** Creates new form InsertTableDialog */
027 public InsertTableDialog(final java.awt.Frame parent, final boolean modal) {
028 super(parent, modal);
029 this.initComponents();
030 }
031
032 /**
033 * This method is called from within the constructor to initialize the form.
034 * WARNING: Do NOT modify this code. The content of this method is always
035 * regenerated by the Form Editor.
036 */
037 @SuppressWarnings("unchecked")
038 // <editor-fold defaultstate="collapsed"
039 // desc="Generated Code">//GEN-BEGIN:initComponents
040 private void initComponents() {
041
042 this.buttonGroupType = new javax.swing.ButtonGroup();
043 this.tableRadioButton = new javax.swing.JRadioButton();
044 this.matrixRadioButton = new javax.swing.JRadioButton();
045 this.determinantRadioButton = new javax.swing.JRadioButton();
046 this.cancelButton = new javax.swing.JButton();
047 this.okButton = new javax.swing.JButton();
048 this.columnsLabel = new javax.swing.JLabel();
049 this.rowsSpinner = new javax.swing.JSpinner();
050 this.columnsSpinner = new javax.swing.JSpinner();
051 this.typeLabel = new javax.swing.JLabel();
052 this.rowsLabel = new javax.swing.JLabel();
053
054 this
055 .setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
056
057 this.buttonGroupType.add(this.tableRadioButton);
058 this.tableRadioButton.setText("Tabelle");
059
060 this.buttonGroupType.add(this.matrixRadioButton);
061 this.matrixRadioButton.setSelected(true);
062 this.matrixRadioButton.setText("Matrix");
063
064 this.buttonGroupType.add(this.determinantRadioButton);
065 this.determinantRadioButton.setText("Determinante");
066
067 this.cancelButton.setText("Abbrechen");
068 this.cancelButton
069 .addActionListener(new java.awt.event.ActionListener() {
070 public void actionPerformed(
071 final java.awt.event.ActionEvent evt) {
072 InsertTableDialog.this.cancelButtonActionPerformed(evt);
073 }
074 });
075
076 this.okButton.setText("OK");
077 this.okButton.addActionListener(new java.awt.event.ActionListener() {
078 public void actionPerformed(final java.awt.event.ActionEvent evt) {
079 InsertTableDialog.this.okButtonActionPerformed(evt);
080 }
081 });
082
083 this.columnsLabel.setText("Spalten");
084
085 this.rowsSpinner.setModel(new javax.swing.SpinnerNumberModel(3, 1, 99,
086 1));
087
088 this.columnsSpinner.setModel(new javax.swing.SpinnerNumberModel(3, 1,
089 99, 1));
090
091 this.typeLabel.setText("Typ");
092
093 this.rowsLabel.setText("Zeilen");
094
095 final javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this
096 .getContentPane());
097 this.getContentPane().setLayout(layout);
098 layout
099 .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 }// </editor-fold>//GEN-END:initComponents
237
238 private void cancelButtonActionPerformed(
239 final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cancelButtonActionPerformed
240 this.mathMLText = null;
241 this.setVisible(false);
242 }// GEN-LAST:event_cancelButtonActionPerformed
243
244 public String getMathMLText() {
245 return this.mathMLText;
246 }
247
248 private void okButtonActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_okButtonActionPerformed
249
250 this.updateMathMLText();
251 this.setVisible(false);
252 }// GEN-LAST:event_okButtonActionPerformed
253
254 private String buildText(final int lines, final int columns,
255 final String type) {
256 // String s = "<" + type + ">" + Helper.nl();
257 String s = "<mrow>" + Helper.nl() + "<mfenced" + type + ">"
258 + Helper.nl() + "<mtable>" + Helper.nl();
259
260 for (int i = 0; i < lines; ++i) {
261 // s += "<matrixrow>" + Helper.nl();
262 s += "<mtr>" + Helper.nl();
263 for (int j = 0; j < columns; ++j) {
264 s += "<mtd><mn>1</mn></mtd>" + Helper.nl();
265 // s+="\t<cn>1</cn>" + Helper.nl();
266 }
267 // s+= "</matrixrow>" + Helper.nl();
268 s += "</mtr>" + Helper.nl();
269 }
270 // s+="</" + type + ">" + Helper.nl();
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 // matrix
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 * @param args
294 * the command line arguments
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 // Variables declaration - do not modify//GEN-BEGIN:variables
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 // End of variables declaration//GEN-END:variables
325
326 }