diff options
Diffstat (limited to 'src/tesseract/newmenu')
-rw-r--r-- | src/tesseract/newmenu/MenuItem.java | 121 | ||||
-rw-r--r-- | src/tesseract/newmenu/NewIcosahedronMenuItem.java | 90 |
2 files changed, 202 insertions, 9 deletions
diff --git a/src/tesseract/newmenu/MenuItem.java b/src/tesseract/newmenu/MenuItem.java index b9e07e2..6a33f5f 100644 --- a/src/tesseract/newmenu/MenuItem.java +++ b/src/tesseract/newmenu/MenuItem.java @@ -1,37 +1,71 @@ package tesseract.newmenu;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
+import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
+import javax.vecmath.Vector3f;
+
+import tesseract.World;
abstract public class MenuItem extends JMenuItem implements ActionListener{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4191575308469669044L;
+ protected static final Vector3f DEFAULT_POSITION = new Vector3f(0, 0, 0);
private JFrame myFrame;
private JPanel myPanel;
private JTextField[] myFields;
- private HashMap <String, String> myParameters;
- private HashMap <String, JTextField> myReadData;
+ private Map <String, Object> myParameters;
+ protected Map <String, JTextField> myReadData;
+ protected World myWorld;
+ /**
+ * A Parameter setting JFrame
+ */
+ private JFrame my_param_frame;
+
+ /**
+ * The button that get all inputs for shape
+ */
+ private JButton my_enter_button;
+ /**
+ * The default button
+ */
+ private JCheckBox my_default_button;
+
- public MenuItem (HashMap <String, String> theParams) {
+ public MenuItem() {};
+ public MenuItem (Map <String, Object> theParams, World theWorld) {
myFrame = new JFrame();
myPanel = new JPanel(new GridLayout(myParameters.keySet().size(), 2));
- myParameters = (HashMap<String, String>) theParams;
+ myParameters = theParams;
myFields = new JTextField[myParameters.keySet().size()];
myReadData = new HashMap <String, JTextField>();
- makePanel();
+ myWorld = theWorld;
+ myParameters.put("Positon", new Vector3f());
+ myParameters.put("Mass", new Float(0f));
+ addActionListener(this);
}
- private void makePanel() {
+ public void makePanel() {
Set<String> varNames = myParameters.keySet();
int i = 0;
for (String s : varNames) {
@@ -41,11 +75,80 @@ abstract public class MenuItem extends JMenuItem implements ActionListener{ i++;
}
}
+
+protected void createParameterMenu() {
+
+ my_param_frame = new JFrame("Parameters");
+ my_param_frame.setBackground(Color.GRAY);
+ my_param_frame.setLayout(new BorderLayout());
+
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ Dimension screenSize = tk.getScreenSize();
+ int screenHeight = screenSize.height;
+ int screenWidth = screenSize.width;
+ my_param_frame.setSize(screenWidth / 4, screenHeight / 4);
+ my_param_frame.setLocation(screenWidth / 4, screenHeight / 4);
+ /*
+ my_position_input = new JTextField(10);
+ my_position_input.setText("0,0,0");
+ my_radius_input = new JTextField(10);
+ my_radius_input.setText(".1");
+ my_mass_input = new JTextField(10);
+ my_mass_input.setText("1");
+ */
+ //JLabel blank = new JLabel("");
+ //JLabel position_label = new JLabel("Enter Position: ");
+ //JLabel radius_label = new JLabel("Enter Radius: ");
+ //JLabel mass_label = new JLabel("Enter Mass: ");
+
+ my_enter_button = new JButton("ENTER");
+
+ my_default_button = new JCheckBox("Default Shape ");
+
+ my_param_frame.add(my_default_button, BorderLayout.NORTH);
+ my_param_frame.add(myPanel, BorderLayout.CENTER);
+ my_param_frame.add(my_enter_button, BorderLayout.SOUTH);
+
+ my_param_frame.setAlwaysOnTop(true);
+ my_param_frame.pack();
+ my_param_frame.setVisible(isVisible());
+ }
- @Override
- public void actionPerformed(ActionEvent arg0) {
- // TODO Auto-generated method stub
+ public JCheckBox getDefaultButton() {
+ return my_default_button;
+ }
+
+ public JButton getEnterButton() {
+ return my_enter_button;
+ }
+
+ public JFrame getParamFrame() {
+ return my_param_frame;
+ }
+
+ /**
+ * Utility method to parse a string formatted as x,y,z into a vector3f.
+ *
+ * @param input A string to parse.
+ * @return A vector3f.
+ * @author Jesse Morgan, Steve Bradshaw
+ */
+ protected Vector3f parseVector(final String input) {
+ String[] split = input.split(",");
+ float x = Float.parseFloat(split[0]);
+ float y = Float.parseFloat(split[1]);
+ float z = Float.parseFloat(split[2]);
+
+ return new Vector3f(x, y, z);
+ }
+
+ protected Vector3f getPosition() {
+ return (Vector3f) myParameters.get("Position");
+ }
+
+ protected float getMass() {
+ return ((Float) myParameters.get("Mass")).floatValue();
}
}
diff --git a/src/tesseract/newmenu/NewIcosahedronMenuItem.java b/src/tesseract/newmenu/NewIcosahedronMenuItem.java new file mode 100644 index 0000000..4214aa7 --- /dev/null +++ b/src/tesseract/newmenu/NewIcosahedronMenuItem.java @@ -0,0 +1,90 @@ +package tesseract.newmenu;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JFrame;
+import javax.vecmath.Vector3f;
+
+import tesseract.World;
+import tesseract.objects.Icosahedron;
+
+public class NewIcosahedronMenuItem extends MenuItem {
+ private static final float DEFAULT_MASS = 2f;
+ private static final long serialVersionUID = 1936364496102891064L;
+ private static Map <String, Object> myParams = new HashMap<String, Object>();
+
+
+ public NewIcosahedronMenuItem (World theWorld) {
+ super (myParams, theWorld);
+ buildParams();
+ }
+
+ private void buildParams() {
+ myParams.put("Scale", new Float(0f));
+ this.makePanel();
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final JCheckBox defaultButton = getDefaultButton();
+ final JFrame params = getParamFrame();
+ final JButton enterButton = getEnterButton();
+
+ defaultButton.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ if (defaultButton.isSelected()) {
+ myWorld.addObject(new Icosahedron(MenuItem.DEFAULT_POSITION,
+ DEFAULT_MASS, Icosahedron.DEFAULT_SCALE));
+ params.dispose();
+ }
+ }
+ });
+ enterButton.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent event) {
+ Set<String> itr = myParams.keySet();
+ //List<Object> cParams = new LinkedList<Object>();
+ for (String s : itr) {
+ Object o = myParams.get(s);
+ String p = myReadData.get(s).getText();
+ if (o.getClass().equals(new Float(0f).getClass())) {
+ myParams.put(s, new Float(Float.parseFloat(p)));
+ } else if (o.getClass().equals(new Vector3f().getClass())) {
+ myParams.put(s, parseVector(p));
+ }
+
+ }
+ /*
+ String string = getPositionField().getText();
+ Vector3f pos = parseVector(string);
+ setPosition(pos);
+
+ String string2 = getRadiusField().getText();
+ float radius = Float.parseFloat(string2);
+ setRadius(radius);
+
+ String string3 = getMassField().getText();
+ float mass = Float.parseFloat(string3);
+ setMass(mass);
+ */
+ if (event.getSource() == enterButton) {
+ myWorld.addObject(new Icosahedron(getPosition(), getMass(), getScale()));
+ params.dispose();
+ }
+ }
+ });
+
+ }
+
+ private float getScale() {
+ return ((Float) myParams.get("Scale")).floatValue();
+ }
+
+}
|