From 5bb2f0f1fdcf7b6c7a0289d76a207409f1c79fc7 Mon Sep 17 00:00:00 2001 From: Phillip Date: Fri, 18 Feb 2011 01:50:33 +0000 Subject: --- src/tesseract/newmenu/MenuItem.java | 121 ++++++++++++++++++++-- src/tesseract/newmenu/NewIcosahedronMenuItem.java | 90 ++++++++++++++++ 2 files changed, 202 insertions(+), 9 deletions(-) create mode 100644 src/tesseract/newmenu/NewIcosahedronMenuItem.java (limited to 'src/tesseract') 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 myParameters; - private HashMap myReadData; + private Map myParameters; + protected Map 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 theParams) { + public MenuItem() {}; + public MenuItem (Map theParams, World theWorld) { myFrame = new JFrame(); myPanel = new JPanel(new GridLayout(myParameters.keySet().size(), 2)); - myParameters = (HashMap) theParams; + myParameters = theParams; myFields = new JTextField[myParameters.keySet().size()]; myReadData = new HashMap (); - makePanel(); + myWorld = theWorld; + myParameters.put("Positon", new Vector3f()); + myParameters.put("Mass", new Float(0f)); + addActionListener(this); } - private void makePanel() { + public void makePanel() { Set 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 myParams = new HashMap(); + + + 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 itr = myParams.keySet(); + //List cParams = new LinkedList(); + 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(); + } + +} -- cgit v1.2.3