/* * TestForm.java * * Created on June 14, 2001, 5:38 PM */ package org.freehep.j3d.plot.demo; import org.freehep.j3d.plot.*; import java.awt.Toolkit; import java.text.NumberFormat; import java.text.ParseException; import java.util.Locale; /** * * @author tonyj */ public class LegoControlPanel extends javax.swing.JPanel { /** Creates new form TestForm */ public LegoControlPanel(LegoPlot plot) { this.lego = plot; this.plot = plot; initComponents(); savedSparsThreshold = lego.getSparsifyThreshold(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents buttonGroup1 = new javax.swing.ButtonGroup(); PlotTypePanel = new javax.swing.JPanel(); jRadioButton1 = new javax.swing.JRadioButton(); jRadioButton2 = new javax.swing.JRadioButton(); jRadioButton3 = new javax.swing.JRadioButton(); OptionPanel = new javax.swing.JPanel(); jCheckBox1 = new javax.swing.JCheckBox(); jCheckBox2 = new javax.swing.JCheckBox(); AnimationPanel = new javax.swing.JPanel(); jCheckBox3 = new javax.swing.JCheckBox(); jCheckBox4 = new javax.swing.JCheckBox(); jPanel5 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); jTextField4 = new javax.swing.JTextField(); AxisLabelPanel = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); setLayout(new java.awt.BorderLayout()); PlotTypePanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 5, 0)); PlotTypePanel.setBorder(new javax.swing.border.TitledBorder("Plot Type")); jRadioButton1.setSelected(lego.getDrawBlocks()); jRadioButton1.setText("Lego Plot"); buttonGroup1.add(jRadioButton1); jRadioButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jRadioButton1ActionPerformed(evt); } }); PlotTypePanel.add(jRadioButton1); jRadioButton2.setToolTipText("a lego with vertical lines instead of boxes"); jRadioButton2.setSelected(!lego.getDrawBlocks()); jRadioButton2.setText("Line Plot"); buttonGroup1.add(jRadioButton2); jRadioButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jRadioButton2ActionPerformed(evt); } }); PlotTypePanel.add(jRadioButton2); jRadioButton3.setText("Surface Plot"); buttonGroup1.add(jRadioButton3); jRadioButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jRadioButton3ActionPerformed(evt); } }); PlotTypePanel.add(jRadioButton3); add(PlotTypePanel, java.awt.BorderLayout.NORTH); OptionPanel.setLayout(new javax.swing.BoxLayout(OptionPanel, javax.swing.BoxLayout.Y_AXIS)); OptionPanel.setBorder(new javax.swing.border.TitledBorder("Options")); jCheckBox1.setSelected(lego.getLogZscaling()); jCheckBox1.setText("Log Z Axis"); jCheckBox1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox1ActionPerformed(evt); } }); OptionPanel.add(jCheckBox1); jCheckBox2.setToolTipText("Perspective or Parallel projection"); jCheckBox2.setSelected(!lego.getParallelProjection()); jCheckBox2.setText("Perspective"); jCheckBox2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { JCheckBox2ActionPerformed(evt); } }); OptionPanel.add(jCheckBox2); add(OptionPanel, java.awt.BorderLayout.WEST); AnimationPanel.setLayout(new javax.swing.BoxLayout(AnimationPanel, javax.swing.BoxLayout.Y_AXIS)); AnimationPanel.setBorder(new javax.swing.border.TitledBorder("Animation")); jCheckBox3.setSelected(lego.getLinesWhileAnim()); jCheckBox3.setText("Lines while animating"); jCheckBox3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox3ActionPerformed(evt); } }); AnimationPanel.add(jCheckBox3); jCheckBox4.setSelected(true); jCheckBox4.setText("Sparsification"); jCheckBox4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jCheckBox4ActionPerformed(evt); } }); AnimationPanel.add(jCheckBox4); jPanel5.setAlignmentX(0.0F); jLabel4.setText("Threshold"); jLabel4.setToolTipText("Suggested # wire bins to draw when sparsifying"); jLabel4.setForeground(java.awt.Color.black); jPanel5.add(jLabel4); jTextField4.setColumns(8); jTextField4.setText(String.valueOf(lego.getSparsifyThreshold())); jTextField4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField4ActionPerformed(evt); } }); jPanel5.add(jTextField4); AnimationPanel.add(jPanel5); add(AnimationPanel, java.awt.BorderLayout.CENTER); AxisLabelPanel.setLayout(new java.awt.GridBagLayout()); java.awt.GridBagConstraints gridBagConstraints1; AxisLabelPanel.setBorder(new javax.swing.border.TitledBorder("Axis Labels")); jLabel1.setText("X"); jLabel1.setForeground(java.awt.Color.black); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.ipadx = 5; AxisLabelPanel.add(jLabel1, gridBagConstraints1); jTextField1.setToolTipText("Type a new X Axis Label & press Enter"); jTextField1.setColumns(20); jTextField1.setText(lego.getXAxisLabel()); jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField1ActionPerformed(evt); } }); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridwidth = java.awt.GridBagConstraints.REMAINDER; AxisLabelPanel.add(jTextField1, gridBagConstraints1); jLabel2.setText("Y"); jLabel2.setForeground(java.awt.Color.black); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.ipadx = 5; AxisLabelPanel.add(jLabel2, gridBagConstraints1); jTextField2.setToolTipText("Type a new Y Axis Label & press Enter"); jTextField2.setColumns(20); jTextField2.setText(lego.getYAxisLabel()); jTextField2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField2ActionPerformed(evt); } }); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridwidth = java.awt.GridBagConstraints.REMAINDER; AxisLabelPanel.add(jTextField2, gridBagConstraints1); jLabel3.setText("Z"); jLabel3.setForeground(java.awt.Color.black); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.ipadx = 5; AxisLabelPanel.add(jLabel3, gridBagConstraints1); jTextField3.setToolTipText("Type a new Z Axis Label & press Enter"); jTextField3.setColumns(20); jTextField3.setText(lego.getZAxisLabel()); jTextField3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextField3ActionPerformed(evt); } }); gridBagConstraints1 = new java.awt.GridBagConstraints(); AxisLabelPanel.add(jTextField3, gridBagConstraints1); add(AxisLabelPanel, java.awt.BorderLayout.SOUTH); }//GEN-END:initComponents private void jRadioButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton3ActionPerformed // Add your handling code here: // User has selected Surface Plot if (jRadioButton3.isSelected()) { try { surf = DemoGUI.getSurfacePlot(); plot = surf; surf.setLogZscaling(jCheckBox1.isSelected()); surf.setParallelProjection(!jCheckBox2.isSelected()); surf.setXAxisLabel(jTextField1.getText()); surf.setYAxisLabel(jTextField2.getText()); surf.setZAxisLabel(jTextField3.getText()); jCheckBox3.setEnabled(false); jCheckBox4.setEnabled(false); jLabel4.setEnabled(false); jTextField4.setEnabled(false); } catch (Exception e) { } } }//GEN-LAST:event_jRadioButton3ActionPerformed private void jCheckBox4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox4ActionPerformed // Add your handling code here: if (jCheckBox4.isSelected()) { jTextField4.setEnabled(true); jLabel4.setEnabled(true); try { int i = java.lang.Integer.getInteger(jTextField4.getText()).intValue(); lego.setSparsifyThreshold(i == Integer.MAX_VALUE ? savedSparsThreshold : i); } catch (Exception e) { jTextField4.setText("600"); lego.setSparsifyThreshold(600); } } else { jTextField4.setEnabled(false); jLabel4.setEnabled(false); savedSparsThreshold = lego.getSparsifyThreshold(); lego.setSparsifyThreshold(Integer.MAX_VALUE); } }//GEN-LAST:event_jCheckBox4ActionPerformed private void JCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JCheckBox2ActionPerformed // Add your handling code here: plot.setParallelProjection(!jCheckBox2.isSelected()); }//GEN-LAST:event_JCheckBox2ActionPerformed private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField3ActionPerformed // Add your handling code here: if (plot instanceof SurfacePlot) surf.setZAxisLabel(jTextField3.getText()); else lego.setZAxisLabel(jTextField3.getText()); }//GEN-LAST:event_jTextField3ActionPerformed private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField2ActionPerformed // Add your handling code here: if (plot instanceof SurfacePlot) surf.setYAxisLabel(jTextField2.getText()); else lego.setYAxisLabel(jTextField2.getText()); }//GEN-LAST:event_jTextField2ActionPerformed private void jCheckBox3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox3ActionPerformed // Add your handling code here: lego.setLinesWhileAnim(jCheckBox3.isSelected()); if (!jCheckBox3.isSelected()) { jCheckBox4.setEnabled(false); jLabel4.setEnabled(false); jTextField4.setEnabled(false); } else { jTextField4.setEnabled(true); jLabel4.setEnabled(true); int i = lego.getSparsifyThreshold(); jTextField4.setText(java.lang.Integer.toString(i == Integer.MAX_VALUE ? savedSparsThreshold : i)); jCheckBox4.setSelected(true); } }//GEN-LAST:event_jCheckBox3ActionPerformed private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed if (plot instanceof SurfacePlot) surf.setLogZscaling(jCheckBox1.isSelected()); else lego.setLogZscaling(jCheckBox1.isSelected()); }//GEN-LAST:event_jCheckBox1ActionPerformed private void jTextField4ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jTextField4ActionPerformed {//GEN-HEADEREND:event_jTextField4ActionPerformed // Add your handling code here: Toolkit toolkit = Toolkit.getDefaultToolkit(); NumberFormat integerFormatter = NumberFormat.getNumberInstance(Locale.US); integerFormatter.setParseIntegerOnly(true); int retVal = 600; try { retVal = integerFormatter.parse(jTextField4.getText()).intValue(); } catch (ParseException e) { // System.out.println("in jTextField4ActionPerformed: parse exception"); toolkit.beep(); jTextField4.setText("600"); } jTextField4.setText(java.lang.Integer.toString(retVal)); lego.setSparsifyThreshold(retVal); // System.out.println("in jTextField4ActionPerformed: retval="+retVal); }//GEN-LAST:event_jTextField4ActionPerformed private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jTextField1ActionPerformed {//GEN-HEADEREND:event_jTextField1ActionPerformed // Add your handling code here: if (plot instanceof SurfacePlot) surf.setXAxisLabel(jTextField1.getText()); else lego.setXAxisLabel(jTextField1.getText()); }//GEN-LAST:event_jTextField1ActionPerformed private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jRadioButton2ActionPerformed {//GEN-HEADEREND:event_jRadioButton2ActionPerformed // Add your handling code here: // System.out.println("in jRadioButton2ActionPerformed"); if (jRadioButton2.isSelected()) { // Line Plot (Radio Button) lego.setDrawBlocks(false); // Tell plot to draw wire lines setPlotToLego(); // Ensure lego/line plot is in the canvas jCheckBox3.setEnabled(false); // Disable "Lines while animating" check box in GUI } }//GEN-LAST:event_jRadioButton2ActionPerformed private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jRadioButton1ActionPerformed {//GEN-HEADEREND:event_jRadioButton1ActionPerformed // Add your handling code here: // System.out.println("in jRadioButton1ActionPerformed"); if (jRadioButton1.isSelected()) { // Lego Plot (radio button) lego.setDrawBlocks(true); // Tell lego to draw blocks jCheckBox3.setEnabled(true); // Enable "Lines while animating" check box setPlotToLego(); // Ensure lego/line plot is in the canvas } }//GEN-LAST:event_jRadioButton1ActionPerformed // Ensure that lego/line plot is now in the canvas, // Update it with the GUI's current settings, & ensure the animation panel is enabled private void setPlotToLego() { if (plot instanceof SurfacePlot) { lego.setLogZscaling(jCheckBox1.isSelected()); lego.setParallelProjection(!jCheckBox2.isSelected()); lego.setXAxisLabel(jTextField1.getText()); lego.setYAxisLabel(jTextField2.getText()); lego.setZAxisLabel(jTextField3.getText()); plot = DemoGUI.getLegoPlot(); // Set the canvas to lego plot // System.out.println("setting plot to Lego"); jCheckBox3.setEnabled(true); jCheckBox4.setEnabled(true); jLabel4.setEnabled(true); jTextField4.setEnabled(true); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JPanel PlotTypePanel; private javax.swing.JRadioButton jRadioButton1; private javax.swing.JRadioButton jRadioButton2; private javax.swing.JRadioButton jRadioButton3; private javax.swing.JPanel OptionPanel; private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox2; private javax.swing.JPanel AnimationPanel; private javax.swing.JCheckBox jCheckBox3; private javax.swing.JCheckBox jCheckBox4; private javax.swing.JPanel jPanel5; private javax.swing.JLabel jLabel4; private javax.swing.JTextField jTextField4; private javax.swing.JPanel AxisLabelPanel; private javax.swing.JLabel jLabel1; private javax.swing.JTextField jTextField1; private javax.swing.JLabel jLabel2; private javax.swing.JTextField jTextField2; private javax.swing.JLabel jLabel3; private javax.swing.JTextField jTextField3; // End of variables declaration//GEN-END:variables private LegoPlot lego; private SurfacePlot surf; private Plot3D plot; private int savedSparsThreshold; }