summaryrefslogtreecommitdiff
path: root/src/tesseract/menuitems/TesseractMenuItem.java
blob: cd3bf03a1b3ea73ec64cdfc1be39ad86ccc9139e (plain)
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
package tesseract.menuitems;

import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.vecmath.Vector3f;

import tesseract.World;

/**
 * Abstract class for menu items.
 * 
 * @author Jesse Morgan, Steve Bradshaw
 */
public abstract class TesseractMenuItem 
	extends JMenuItem implements ActionListener {

	/**
	 * Serial ID.
	 */
	private static final long serialVersionUID = 1839955501629795920L;
	
	/**
	 * A Default radius.
	 */
	private static final float DEFAULT_RADIUS = 0.1f;
	
	/**
	 * A Default position.
	 */
	private static final Vector3f DEFAULT_POSITION = new Vector3f(0,0,0);
	
	/**
	 * The reference to the world.
	 */
	protected World myWorld;
	
	/**
	 * The default button
	 */
	private JCheckBox my_default_button;
	
	/**
	 * A Parameter setting Jframe
	 */
	private JFrame my_param_frame;
	
	/**
	 * Constructor.
	 * 
	 * @param theWorld The world in which to add.
	 * @param theLabel The label for the menu item.
	 */
	public TesseractMenuItem(final World theWorld, final String theLabel) {
		super(theLabel);
		
		myWorld = theWorld;
		
		addActionListener(this);
	}
	
	/**
	 * Utility method to parse a string formatted as x,y,z into a vector3f.
	 * 
	 * @param input A string to parse.
	 * @return A vector3f.
	 */
	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 void createParameterMenu() {
		my_param_frame= new JFrame("Parameters");
		Toolkit tk = Toolkit.getDefaultToolkit();
	    Dimension screenSize = tk.getScreenSize();
	    int screenHeight = screenSize.height;
	    int screenWidth = screenSize.width;
	    my_param_frame.setSize(screenWidth / 2, screenHeight / 2);
	    my_param_frame.setLocation(screenWidth / 4, screenHeight / 4);
	    my_default_button = new JCheckBox("Default Shape");
	    my_param_frame.add(my_default_button);
	    my_param_frame.setAlwaysOnTop(true);
	    my_param_frame.pack();
	    my_param_frame.setVisible(isVisible());
	}
	
	protected JCheckBox getDefaultButton() {
		return my_default_button;
	}
	
	protected JFrame getParamFrame() {
		return my_param_frame;
	}

	/**
	 * @return the defaultRadius
	 */
	public static float getDefaultRadius() {
		return DEFAULT_RADIUS;
	}

	/**
	 * @return the defaultPosition
	 */
	public static Vector3f getDefaultPosition() {
		return DEFAULT_POSITION;
	}
}