/*
 * TuneVariablePanel.java
 *
 * Created on 15. März 2005, 14:15
 */

package org.rosuda.JClaR;

import javax.swing.SpinnerNumberModel;

/**
 *
 * @author  Tobias Wichtrey
 */
public abstract class TuneVariablePanel extends javax.swing.JPanel {
    
    SpinnerNumberModel snmFrom;
    SpinnerNumberModel snmTo;
    SpinnerNumberModel snmSteps;
    SpinnerNumberModel snmFix;
    
    /** Creates new form TuneVariablePanel */
    TuneVariablePanel() {
        initFields();
        initComponents();
    }
    
    final void setVariableName(final String name){
        lblVariable.setText(name + ":");
    }

    final boolean getTune(){
        return jrbTune.isSelected();
    }

    abstract void initFields();
    
    /** 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.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        buttonGroup1 = new javax.swing.ButtonGroup();
        jSlider1 = new javax.swing.JSlider();
        lblVariable = new javax.swing.JLabel();
        jrbFix = new javax.swing.JRadioButton();
        spinFix = new javax.swing.JSpinner();
        jrbTune = new javax.swing.JRadioButton();
        lblFrom = new javax.swing.JLabel();
        spinFrom = new javax.swing.JSpinner();
        lblTo = new javax.swing.JLabel();
        spinTo = new javax.swing.JSpinner();
        lblSteps = new javax.swing.JLabel();
        spinSteps = new javax.swing.JSpinner();

        lblVariable.setText("Variable:");
        add(lblVariable);

        buttonGroup1.add(jrbFix);
        jrbFix.setSelected(true);
        jrbFix.setText("fix");
        add(jrbFix);

        spinFix.setModel(snmFix);
        spinFix.setMaximumSize(new java.awt.Dimension(100, 100));
        spinFix.setPreferredSize(new java.awt.Dimension(75, 20));
        add(spinFix);

        buttonGroup1.add(jrbTune);
        jrbTune.setText("tune");
        jrbTune.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jrbTuneStateChanged(evt);
            }
        });

        add(jrbTune);

        lblFrom.setText("from");
        lblFrom.setEnabled(false);
        add(lblFrom);

        spinFrom.setModel(snmFrom);
        spinFrom.setEnabled(false);
        spinFrom.setMinimumSize(new java.awt.Dimension(65, 20));
        spinFrom.setPreferredSize(new java.awt.Dimension(75, 20));
        add(spinFrom);

        lblTo.setText("to");
        lblTo.setEnabled(false);
        add(lblTo);

        spinTo.setModel(snmTo);
        spinTo.setEnabled(false);
        spinTo.setPreferredSize(new java.awt.Dimension(75, 20));
        add(spinTo);

        lblSteps.setText("steps");
        lblSteps.setEnabled(false);
        add(lblSteps);

        spinSteps.setModel(snmSteps);
        spinSteps.setEnabled(false);
        spinSteps.setMinimumSize(new java.awt.Dimension(65, 20));
        spinSteps.setPreferredSize(new java.awt.Dimension(75, 20));
        add(spinSteps);

    }
    // </editor-fold>//GEN-END:initComponents

    private final void jrbTuneStateChanged(final javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jrbTuneStateChanged
        final boolean tune = jrbTune.isSelected();
        lblSteps.setEnabled(tune);
        lblFrom.setEnabled(tune);
        lblTo.setEnabled(tune);
        spinSteps.setEnabled(tune);
        spinFrom.setEnabled(tune);
        spinTo.setEnabled(tune);
        
        spinFix.setEnabled(!tune);
    }//GEN-LAST:event_jrbTuneStateChanged
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JSlider jSlider1;
    private javax.swing.JRadioButton jrbFix;
    private javax.swing.JRadioButton jrbTune;
    private javax.swing.JLabel lblFrom;
    private javax.swing.JLabel lblSteps;
    private javax.swing.JLabel lblTo;
    private javax.swing.JLabel lblVariable;
    private javax.swing.JSpinner spinFix;
    private javax.swing.JSpinner spinFrom;
    private javax.swing.JSpinner spinSteps;
    private javax.swing.JSpinner spinTo;
    // End of variables declaration//GEN-END:variables
    
}
