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 InsertPolynomDialog extends javax.swing.JDialog {
023        // CHECKSTYLE:OFF
024        /**
025         * Current mathML text.
026         */
027        private String mathMLText;
028    
029        /** Creates new form InsertTableDialog */
030        public InsertPolynomDialog(final java.awt.Frame parent, final boolean modal) {
031            super(parent, modal);
032            this.initComponents();
033        }
034    
035        /**
036         * This method is called from within the constructor to initialize the form.
037         * WARNING: Do NOT modify this code. The content of this method is always
038         * regenerated by the Form Editor.
039         */
040        @SuppressWarnings("unchecked")
041        // <editor-fold defaultstate="collapsed"
042        // desc="Generated Code">//GEN-BEGIN:initComponents
043        private void initComponents() {
044    
045            this.cancelButton = new javax.swing.JButton();
046            this.okButton = new javax.swing.JButton();
047            this.degreeSpinner = new javax.swing.JSpinner();
048            this.degreeLabel = new javax.swing.JLabel();
049    
050            this
051                    .setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
052    
053            this.cancelButton.setText("Abbrechen");
054            this.cancelButton
055                    .addActionListener(new java.awt.event.ActionListener() {
056                        public void actionPerformed(
057                                final java.awt.event.ActionEvent evt) {
058                            InsertPolynomDialog.this
059                                    .cancelButtonActionPerformed(evt);
060                        }
061                    });
062    
063            this.okButton.setText("OK");
064            this.okButton.addActionListener(new java.awt.event.ActionListener() {
065                public void actionPerformed(final java.awt.event.ActionEvent evt) {
066                    InsertPolynomDialog.this.okButtonActionPerformed(evt);
067                }
068            });
069    
070            this.degreeSpinner.setModel(new javax.swing.SpinnerNumberModel(3, 0,
071                    25, 1));
072    
073            this.degreeLabel.setText("Grad");
074    
075            final javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this
076                    .getContentPane());
077            this.getContentPane().setLayout(layout);
078            layout
079                    .setHorizontalGroup(layout
080                            .createParallelGroup(
081                                    javax.swing.GroupLayout.Alignment.LEADING)
082                            .addGroup(
083                                    layout
084                                            .createSequentialGroup()
085                                            .addGap(24, 24, 24)
086                                            .addGroup(
087                                                    layout
088                                                            .createParallelGroup(
089                                                                    javax.swing.GroupLayout.Alignment.LEADING)
090                                                            .addGroup(
091                                                                    layout
092                                                                            .createSequentialGroup()
093                                                                            .addGap(
094                                                                                    10,
095                                                                                    10,
096                                                                                    10)
097                                                                            .addComponent(
098                                                                                    this.okButton,
099                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
100                                                                                    93,
101                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
102                                                                            .addGap(
103                                                                                    18,
104                                                                                    18,
105                                                                                    18)
106                                                                            .addComponent(
107                                                                                    this.cancelButton))
108                                                            .addGroup(
109                                                                    layout
110                                                                            .createSequentialGroup()
111                                                                            .addGap(
112                                                                                    11,
113                                                                                    11,
114                                                                                    11)
115                                                                            .addComponent(
116                                                                                    this.degreeLabel)
117                                                                            .addPreferredGap(
118                                                                                    javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
119                                                                            .addComponent(
120                                                                                    this.degreeSpinner,
121                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
122                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
123                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)))
124                                            .addGap(41, 41, 41)));
125            layout
126                    .setVerticalGroup(layout
127                            .createParallelGroup(
128                                    javax.swing.GroupLayout.Alignment.LEADING)
129                            .addGroup(
130                                    layout
131                                            .createSequentialGroup()
132                                            .addGap(25, 25, 25)
133                                            .addGroup(
134                                                    layout
135                                                            .createParallelGroup(
136                                                                    javax.swing.GroupLayout.Alignment.BASELINE)
137                                                            .addComponent(
138                                                                    this.degreeLabel)
139                                                            .addComponent(
140                                                                    this.degreeSpinner,
141                                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
142                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
143                                                                    javax.swing.GroupLayout.PREFERRED_SIZE))
144                                            .addGap(18, 18, 18)
145                                            .addGroup(
146                                                    layout
147                                                            .createParallelGroup(
148                                                                    javax.swing.GroupLayout.Alignment.BASELINE)
149                                                            .addComponent(
150                                                                    this.cancelButton)
151                                                            .addComponent(
152                                                                    this.okButton))
153                                            .addContainerGap(
154                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
155                                                    Short.MAX_VALUE)));
156    
157            this.pack();
158        }// </editor-fold>//GEN-END:initComponents
159    
160        private void cancelButtonActionPerformed(
161                final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cancelButtonActionPerformed
162            this.mathMLText = null;
163            this.setVisible(false);
164        }// GEN-LAST:event_cancelButtonActionPerformed
165    
166        public String getMathMLText() {
167            return this.mathMLText;
168        }
169    
170        private void okButtonActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_okButtonActionPerformed
171    
172            this.updateMathMLText();
173            this.setVisible(false);
174        }// GEN-LAST:event_okButtonActionPerformed
175    
176        private void updateMathMLText() {
177            final int degree = (Integer) this.degreeSpinner.getValue();
178    
179            String s = "";
180            char c = 'a';
181            for (int i = degree; i >= 0; --i) {
182                s += "<mi>" + c + "</mi>" + Helper.nl();
183    
184                if (i > 0) {
185                    if (i != 1) {
186                        s += "<msup><mi>x</mi><mn>" + i + "</mn></msup>"
187                                + Helper.nl();
188                    } else {
189                        s += "<mi>x</mi>" + Helper.nl();
190                    }
191                    s += "<mo>+</mo>" + Helper.nl();
192                }
193                c++;
194            }
195            this.mathMLText = s;
196        }
197    
198        /**
199         * @param args
200         *            the command line arguments
201         */
202        public static void main(final String args[]) {
203            java.awt.EventQueue.invokeLater(new Runnable() {
204                public void run() {
205                    final InsertPolynomDialog dialog = new InsertPolynomDialog(
206                            new javax.swing.JFrame(), true);
207                    dialog.addWindowListener(new java.awt.event.WindowAdapter() {
208                        @Override
209                        public void windowClosing(final java.awt.event.WindowEvent e) {
210                            System.exit(0);
211                        }
212                    });
213                    dialog.setVisible(true);
214                }
215            });
216        }
217    
218        // Variables declaration - do not modify//GEN-BEGIN:variables
219        private javax.swing.JButton cancelButton;
220        private javax.swing.JLabel degreeLabel;
221        private javax.swing.JSpinner degreeSpinner;
222        private javax.swing.JButton okButton;
223        // End of variables declaration//GEN-END:variables
224    
225    }