/*
Copyright 2006 by Daniel Kuebrich
Licensed under the Academic Free License version 3.0
See the file "LICENSE" for more information
*/
// Class DrawUI
package sim.app.lsystem;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import sim.util.gui.*;
// This file contains the "Draw" pane of the Console
public class DrawUI extends JPanel
{
private static final long serialVersionUID = 7502392279728858809L;
// components
JButton buttonSet = new JButton("Set");
JTextField distField = new JTextField("2", 2);
JTextField angleField = new JTextField("90", 4);
/*
// unnecessary -- now in the Display2D Options
JTextField xField = new JTextField("50", 4);
JTextField yField = new JTextField("50", 4);
*/
// references to sim with ui, sim state
LSystemWithUI lsui;
LSystem ls;
public DrawUI(LSystemWithUI nLsui)
{
lsui = nLsui;
ls = (LSystem)lsui.state;
try
{
init();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void init()
{
// buttonSet sets the current drawing settings
buttonSet.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// set draw parameters
ls.l.segsize = Double.valueOf(distField.getText()).doubleValue();
ls.l.angle = Double.valueOf(angleField.getText()).doubleValue()*Math.PI/180;
//ls.l.x = Double.valueOf(xField.getText()).doubleValue();
//ls.l.y = Double.valueOf(yField.getText()).doubleValue();
// reset current stats
ls.l.theta = -Math.PI/2;
}
});
///// OK
// now build the actual UI
this.setLayout(new BorderLayout());
// sim.display.LabelledList is a convenient way to draw lists of the format
// text component
// text component
LabelledList list = new LabelledList()
{
private static final long serialVersionUID = -1043920050611225098L;
Insets insets = new Insets(5, 5, 5, 5);
public Insets getInsets()
{
return insets;
}
};
// so, the draw info:
list.addLabelled("Distance: ", distField);
list.addLabelled("Angle: ", angleField);
// list.addLabelled("Start at:", new JLabel());
// list.addLabelled("x: ", xField);
// list.addLabelled("y: ", yField);
Box b = new Box(BoxLayout.X_AXIS)
{
private static final long serialVersionUID = 1868200221063009327L;
Insets insets = new Insets(5, 5, 5, 5);
public Insets getInsets()
{
return insets;
}
};
b.add(buttonSet);
b.add(Box.createGlue());
list.addLabelled("",b);
// add stuff to this
this.add(list, BorderLayout.CENTER);
setVisible(true);
}
}