/* Research Project: Graphical Database for Category Theory J. Bradbury, Dr. R. Rosebrugh, I. Rutherford Mount Allison University 2001 File: AngleControlPanel.java (author: Larry Barowski, Auburn University, 9/3/96) Description: An AngleControl, along with a label that allows the user to manipulate the 3D viewpoint. Also includes buttons for viewing a category in the XY plane, YZ plane, XZ plane. */ //import statements import java.awt.Panel; import java.awt.Button; import java.awt.Event; import java.awt.Label; import java.awt.*; import java.awt.event.*; import javax.swing.*; class AngleControlPanel extends LPanel { public static int ANGLE = 38793; public static int DONE = 38794; private AngleControl angle_; public AngleControlPanel(int width, int height) { super(); ActionListener acl = new ActionListener() { public void actionPerformed(ActionEvent e) { action(e, e.getActionCommand()); } }; constraints.insets.top = constraints.insets.bottom = 0; addLabel("Viewing Angles", 0, 0, 1.0, 0.0, 0, 0); constraints.insets.top = constraints.insets.bottom = 0; angle_ = new AngleControl(width, height); addComponent(angle_, 0, 0, 1.0, 1.0, 3, 0); constraints.insets.top = constraints.insets.bottom = 0; addLabel("Plane:", 1, -1, 0.0, 0.0, 0, 0); addButton("XY", 1, 0, 1.0, 0.0, 0, 0, acl); addButton("XZ", 1, 0, 1.0, 0.0, 0, 0, acl); addButton("YZ", 0, 0, 1.0, 0.0, 0, 0, acl); finish(); } public boolean handleEvent(Event event) { if(event.target instanceof AngleControl) { if(event.id == AngleControl.ANGLE) { DPoint angles = (DPoint)event.arg; postEvent(new Event((Object)this, ANGLE, new DPoint(angles.x, angles.y))); } else if(event.id == AngleControl.DONE) { DPoint angles = (DPoint)event.arg; postEvent(new Event((Object)this, DONE, new DPoint(angles.x, angles.y))); } } return super.handleEvent(event); } public boolean action(ActionEvent event, String what) { if(event.getSource() instanceof JButton) { if(((String)what).equals("XY")) { angle_.setAngles(0.0, Math.PI / 2.0); postEvent(new Event((Object)this, DONE, new DPoint(0.0, Math.PI / 2.0))); } else if(((String)what).equals("XZ")) { angle_.setAngles(0.0, 0.0); postEvent(new Event((Object)this, DONE, new DPoint(0.0, 0.0))); } else if(((String)what).equals("YZ")) { angle_.setAngles(Math.PI / 2.0, 0.0); postEvent(new Event((Object)this, DONE, new DPoint(Math.PI / 2.0, 0.0))); } } return true; } }