Warning: Can't use blame annotator:
svn blame failed on trunk/src/tmcsim/simulationmanager/model/CMSDiversionSliderBox.java: ("Can't find a temporary directory: Internal error", 20014)

source: tmcsimulator/trunk/src/tmcsim/simulationmanager/model/CMSDiversionSliderBox.java @ 2

Revision 2, 3.8 KB checked in by jdalbey, 10 years ago (diff)

Initial Import of project files

RevLine 
1package tmcsim.simulationmanager.model;
2
3import java.awt.Dimension;
4import java.text.NumberFormat;
5import java.util.Hashtable;
6
7import javax.swing.Box;
8import javax.swing.BoxLayout;
9import javax.swing.JFormattedTextField;
10import javax.swing.JLabel;
11import javax.swing.JSlider;
12import javax.swing.event.ChangeEvent;
13import javax.swing.event.ChangeListener;
14import javax.swing.text.NumberFormatter;
15
16import tmcsim.cadmodels.CMSDiversion;
17
18/**
19 * The CMSDiversionSliderBox is a GUI component that is used to create
20 * the diversion slider that allows the user to select a diversion percentage.
21 * This object represents a single possible diversion for a CMS.
22 *
23 * @author Matthew Cechini
24 * @version
25 */
26@SuppressWarnings("serial")
27public class CMSDiversionSliderBox extends Box implements ChangeListener {
28
29    /** CMSDiversion object with data for this diversion slider. */
30    private CMSDiversion diversionObject;
31
32    /** Slider to allow user to adjust the diversion percentage. */
33    private JSlider diversionSlider;
34
35    /** Formatted Text Field to display current percentage. */
36    private JFormattedTextField textField;
37
38    /** Maximum allowed diversion percentage. */
39    private int maxDiversion;
40
41    /** Label table for diversion slider. */
42    private Hashtable<Integer, JLabel> diversionLabelTable = null;
43
44   
45    /**
46     * Constructor.  Initialize GUI components.  Create the diversion
47     * slider with a maximum value equal to the maximum diversion
48     * percentage in the parameter CMSDiversion object.
49     *
50     * @param newDivObj CMS diversion data to be displayed.
51     */
52    public CMSDiversionSliderBox(CMSDiversion newDivObj) {
53        super(BoxLayout.Y_AXIS);
54        setAlignmentX(Box.CENTER_ALIGNMENT);
55
56        diversionObject = newDivObj;
57        maxDiversion    = diversionObject.maxDiversionPercent.intValue();
58
59        diversionLabelTable = new Hashtable<Integer, JLabel>();
60        diversionLabelTable.put(new Integer(0), new JLabel("0%"));
61        diversionLabelTable.put(new Integer(maxDiversion), 
62                new JLabel(String.valueOf(maxDiversion) + "%"));
63
64        NumberFormat numberFormat = NumberFormat.getPercentInstance();
65        NumberFormatter formatter = new NumberFormatter(numberFormat);
66        formatter.setMinimum(new Integer(0));
67        formatter.setMaximum(new Integer(maxDiversion));
68
69        textField = new JFormattedTextField(formatter);
70        textField.setValue(new Integer(0));
71        textField.setColumns(5);
72        textField.setAlignmentX(Box.CENTER_ALIGNMENT);
73        textField.setMaximumSize(new Dimension(50, 25));
74        textField.setMinimumSize(new Dimension(40, 25));
75
76        diversionSlider = new JSlider(JSlider.VERTICAL, 0, maxDiversion, 0);
77        diversionSlider.addChangeListener(this);
78        diversionSlider.setAlignmentX(Box.CENTER_ALIGNMENT);
79        diversionSlider.setPaintTicks(true);
80        diversionSlider.setPaintLabels(true);
81        diversionSlider.setMinorTickSpacing(10);
82        diversionSlider.setLabelTable(diversionLabelTable);
83        diversionSlider.setValue(diversionObject.getCurrDiv());
84
85        add(textField);
86        add(diversionSlider);
87    }
88
89    /**
90     * Set the CMSDiversion object's diversion percentage to the
91     * new value on the slider.
92     */
93    public void apply() {
94        diversionObject.setCurrDiv(diversionSlider.getValue());
95    }
96
97    /**
98     * ChangeListener method.  When the slider changes, update the
99     * formatted text field with the new percentage.
100     */
101    public void stateChanged(ChangeEvent e) {
102
103        float newDiv = diversionSlider.getValue();
104       
105        if (!diversionSlider.getValueIsAdjusting()) {
106            textField.setValue(new Float(newDiv / 100f));
107        } else {
108            textField.setText(String.valueOf((int) newDiv) + "%");
109        }
110    }
111}
Note: See TracBrowser for help on using the repository browser.