-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathControlPanel.java
142 lines (134 loc) · 4.37 KB
/
ControlPanel.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
//---------------------- ControlPanel.java -------------------------
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
/**
* ControlPanel.java:
* A panel of sliders and other controls for the application.
*
* @author Matthew Plumlee
* modified by rdb
*
* CS416 Spring 2008
* Last editted:
* 03/16/14 rdb: make checkstyle-compatible
*/
public class ControlPanel extends JPanel
{
//---------------- instance variables ---------------------------
private TreeApp _app;
//------------------- constructor -------------------------------
/**
* Container parent of the control panel is passed as an argument
* and a reference to the application class.
*
* @param app TreeApp app to get informed of interaction
*/
public ControlPanel( TreeApp app )
{
super( new GridLayout( 0, 1 ) );
_app = app;
//create sliders
add( new DataSizeSlider() );
add( new NodeWidthSlider() );
//create misc check boxes and quit button
JPanel buttonRow = new JPanel();
buttonRow.add( new SeedSpinner() );
//buttonRow.add( new QuitButton(), BorderLayout.EAST );
add( buttonRow );
}
//+++++++++++++++++++++++ SeedSpinner class ++++++++++++++++++++
/**
* Private inner class to update spinner for recursive depth.
*/
private class SeedSpinner extends LabeledSpinner
{
//---------------- constructor --------------------------------
/**
* No argument constructor.
*/
public SeedSpinner()
{
super( "Random seed", -1, _app.maxSeed, _app.rngSeed );
}
//------------------------- valueChanged( int ) ---------------
/**
* Event listener.
* @param newValue int new value for the spinner.
*/
public void valueChanged( int newValue )
{
_app.rngSeed = newValue;
}
}
//+++++++++++++++++++++++ DataSizeSlider class ++++++++++++++++++++
/**
* Private inner class to update child size ratio with a slider.
*/
private class DataSizeSlider extends LabeledSlider
implements ChangeListener
{
//---------------- constructor --------------------------------
/**
* No arg constructor.
*/
public DataSizeSlider()
{
super( "Data size", _app.minDataSize, _app.maxDataSize,
_app.defaultDataSize );
JSlider slider = getJSlider();
slider.setMajorTickSpacing( 5 );
slider.setMinorTickSpacing( 1 );
addChangeListener( this ); // class is its own listener
}
//------------------- stateChanged( ... ) --------------------
/**
* listener method.
* @param e ChangeEvent event object
*/
public void stateChanged( ChangeEvent e )
{
_app.dataSize = ( (JSlider)e.getSource() ).getValue();
}
}
//+++++++++++++++++++++++ NodeWidthSlider class ++++++++++++++++++++
/**
* Private inner class to update the child size ratio with a slider.
*/
private class NodeWidthSlider extends LabeledSlider
implements ChangeListener
{
//---------------- constructor --------------------------------
/**
* No arg constructor.
*/
public NodeWidthSlider()
{
super( "Node width", _app.minNodeWidth, _app.maxNodeWidth,
_app.defaultNodeWidth );
JSlider slider = getJSlider();
slider.setMajorTickSpacing( 5 );
slider.setMinorTickSpacing( 1 );
addChangeListener( this ); // it is its own listener
}
//------------------- stateChanged( ... ) --------------------
/**
* Event listener method.
* @param e ChangeEvent
*/
public void stateChanged( ChangeEvent e )
{
_app.setNodeWidth( ( (JSlider)e.getSource() ).getValue() );
}
}
//--------------------- main --------------------------------------
/**
* Convenience main; invokes app main.
* @param args String[] Command line arguments.
*/
public static void main( String[] args )
{
TreeRecursion.main( args );
}
}