/* A basic extension of the java.applet.Applet class */ import java.awt.*; import java.applet.*; import java.io.*; import java.net.*; import java.util.*; public class wireBrowser extends Applet implements Runnable { private Thread thread; private boolean isRunning = false; public void start() { if(thread == null) { thread = new Thread(this); } isRunning = true; thread.start(); } public void run() { while(isRunning) { if(getSpinOn()) { if(wireCanvas.getMode().equals("Roll")) { wireCanvas.roll(wireCanvas.getDx(),wireCanvas.getDy()); wireCanvas.renderAll(); } else if(wireCanvas.getMode().equals("Rotate")) { wireCanvas.rotate(wireCanvas.getDy()); wireCanvas.renderAll(); } } try { Thread.sleep(100); } catch(Exception e){} } } public void stop() { if((thread != null) && thread.isAlive()) { thread.stop(); } isRunning = false; thread = null; } public void init() { wireCanvas.setCenter(this.getSize().width/2,this.getSize().height/2); // This code is automatically generated by Visual Cafe when you add // components to the visual environment. It instantiates and initializes // the components. To modify the code, only use code syntax that matches // what Visual Cafe can generate, or Visual Cafe may be unable to back // parse your Java file into its visual environment. //{{INIT_CONTROLS setLayout(new BorderLayout(0,0)); setSize(702,410); controlPanel.setLayout(new GridLayout(12,1,0,0)); add(BorderLayout.WEST,controlPanel); controlPanel.setBounds(0,0,62,410); rollButton.setLabel("Roll"); controlPanel.add(rollButton); rollButton.setBounds(0,0,62,34); rotateButton.setLabel("Rotate"); controlPanel.add(rotateButton); rotateButton.setBounds(0,34,62,34); moveButton.setLabel("Move"); controlPanel.add(moveButton); moveButton.setBounds(0,68,62,34); moveZButton.setLabel("In & Out"); controlPanel.add(moveZButton); moveZButton.setBounds(0,102,62,34); resizeButton.setLabel("Resize"); controlPanel.add(resizeButton); resizeButton.setBounds(0,136,62,34); displayButton.setLabel("2D"); controlPanel.add(displayButton); displayButton.setBounds(0,170,62,34); controlPanel.add(nosyButton); nosyButton.setBounds(0,204,62,34); wireOnButton.setLabel("Wire On"); controlPanel.add(wireOnButton); wireOnButton.setBounds(0,238,62,34); spinOnButton.setLabel("Spin Off"); controlPanel.add(spinOnButton); spinOnButton.setBounds(0,272,62,34); linksOnButton.setLabel("Links Off"); controlPanel.add(linksOnButton); linksOnButton.setBounds(0,306,62,34); centerButton.setLabel("Center"); controlPanel.add(centerButton); centerButton.setBounds(0,340,62,34); aboutButton.setLabel("About"); controlPanel.add(aboutButton); aboutButton.setBounds(0,374,62,34); add(BorderLayout.EAST,wireCanvas); wireCanvas.setBackground(java.awt.Color.white); wireCanvas.setBounds(55,0,647,410); //}} //{{REGISTER_LISTENERS SymMouse aSymMouse = new SymMouse(); rollButton.addMouseListener(aSymMouse); rotateButton.addMouseListener(aSymMouse); moveButton.addMouseListener(aSymMouse); moveZButton.addMouseListener(aSymMouse); resizeButton.addMouseListener(aSymMouse); displayButton.addMouseListener(aSymMouse); nosyButton.addMouseListener(aSymMouse); wireOnButton.addMouseListener(aSymMouse); spinOnButton.addMouseListener(aSymMouse); linksOnButton.addMouseListener(aSymMouse); centerButton.addMouseListener(aSymMouse); aboutButton.addMouseListener(aSymMouse); wireCanvas.addMouseListener(aSymMouse); //}} this.readFile(this.getParameter("file")); try { StringTokenizer tokens = new StringTokenizer(this.getParameter("Background")," "); int red = Integer.parseInt(tokens.nextToken()); int green = Integer.parseInt(tokens.nextToken()); int blue = Integer.parseInt(tokens.nextToken()); if(red > -1 && red < 256 && green > -1 && green < 256 && blue > -1 && blue < 256) { wireCanvas.setBackground(new Color(red,green,blue)); } } catch(Exception e) { System.out.println("Missing Background"+e); } try { wireCanvas.setMode(this.getParameter("Mode")); } catch(Exception e) { System.out.println("Missing Mode"+e); } try { wireCanvas.setDisplay(this.getParameter("Display")); if(wireCanvas.getDisplay().equals("3D")) { displayButton.setLabel("3D"); nosyButton.setLabel("Parallax"); } else { displayButton.setLabel("2D"); nosyButton.setLabel(""); } } catch(Exception e) { System.out.println("Missing Display"+e); } try { wireCanvas.setWireOn(Boolean.valueOf(this.getParameter("WireOn")).booleanValue()); if(wireCanvas.getWireOn()) { wireOnButton.setLabel("Wire On"); } else { wireOnButton.setLabel("Wire Off"); } } catch(Exception e) { System.out.println("Missing WireOn"+e); } try { this.setSpinOn(Boolean.valueOf(this.getParameter("SpinOn")).booleanValue()); if(getSpinOn()) { spinOnButton.setLabel("Spin On"); } else { spinOnButton.setLabel("Spin Off"); } } catch(Exception e) { System.out.println("Missing SpinOn"+e); } try { wireCanvas.setLinksOn(Boolean.valueOf(this.getParameter("LinksOn")).booleanValue()); if(wireCanvas.getLinksOn()) { linksOnButton.setLabel("Links On"); } else { linksOnButton.setLabel("Links Off"); } } catch(Exception e) { System.out.println("Missing LinksOn"+e); } try { wireCanvas.setDx(Float.valueOf(this.getParameter("Dx")).floatValue()); } catch(Exception e) { System.out.println("Missing Dx"+e); } try { wireCanvas.setDy(Float.valueOf(this.getParameter("Dy")).floatValue()); } catch(Exception e) { System.out.println("Missing Dy"+e); } try { wireCanvas.setScale(Float.valueOf(this.getParameter("Scale")).floatValue()); } catch(Exception e) { System.out.println("Missing Scale"+e); } wireCanvas.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } //{{DECLARE_CONTROLS java.awt.Panel controlPanel = new java.awt.Panel(); java.awt.Button rollButton = new java.awt.Button(); java.awt.Button rotateButton = new java.awt.Button(); java.awt.Button moveButton = new java.awt.Button(); java.awt.Button moveZButton = new java.awt.Button(); java.awt.Button resizeButton = new java.awt.Button(); java.awt.Button displayButton = new java.awt.Button(); java.awt.Button nosyButton = new java.awt.Button(); java.awt.Button wireOnButton = new java.awt.Button(); java.awt.Button spinOnButton = new java.awt.Button(); java.awt.Button linksOnButton = new java.awt.Button(); java.awt.Button centerButton = new java.awt.Button(); java.awt.Button aboutButton = new java.awt.Button(); wire wireCanvas = new wire(); //}} //Event Classes------------------------------------------------------------------------------------ class SymMouse extends java.awt.event.MouseAdapter { public void mouseClicked(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == wireCanvas) wireCanvas_mouseClicked(event); } public void mouseReleased(java.awt.event.MouseEvent event) { Object object = event.getSource(); if (object == rollButton) rollButton_MouseReleased(event); else if (object == rotateButton) rotateButton_MouseReleased(event); else if (object == moveButton) moveButton_MouseReleased(event); else if (object == moveZButton) moveZButton_MouseReleased(event); else if (object == resizeButton) resizeButton_MouseReleased(event); else if (object == displayButton) displayButton_MouseReleased(event); else if (object == nosyButton) nosyButton_MouseReleased(event); else if (object == wireOnButton) wireOnButton_MouseReleased(event); else if (object == spinOnButton) spinOnButton_MouseReleased(event); else if (object == linksOnButton) linksOnButton_MouseReleased(event); else if (object == centerButton) centerButton_MouseReleased(event); else if (object == aboutButton) aboutButton_MouseReleased(event); } } //Get and Set Methods------------------------------------------------------------------------------ boolean spinOn = false; public void setSpinOn(boolean spinOn) { this.spinOn = spinOn; } public boolean getSpinOn() { return spinOn; } //Event Methods------------------------------------------------------------------------------------ void rollButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setMode("Roll"); } void rotateButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setMode("Rotate"); } void moveButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setMode("MoveXY"); } void moveZButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setMode("MoveZ"); } void resizeButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setMode("Resize"); } void displayButton_MouseReleased(java.awt.event.MouseEvent event) { if(wireCanvas.getDisplay().equals("2D")) { displayButton.setLabel("3D"); nosyButton.setLabel("Parallax"); wireCanvas.setDisplay("3D"); } else if(wireCanvas.getDisplay().equals("3D")) { displayButton.setLabel("Polar"); nosyButton.setLabel("Parallax"); wireCanvas.setDisplay("Polar"); } else { displayButton.setLabel("2D"); nosyButton.setLabel(""); wireCanvas.setDisplay("2D"); } wireCanvas.setMode("Roll"); } void nosyButton_MouseReleased(java.awt.event.MouseEvent event) { if(wireCanvas.getDisplay().equals("3D")|wireCanvas.getDisplay().equals("Polar")) { wireCanvas.setMode("Parallax"); } } void wireOnButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setWireOn(!wireCanvas.getWireOn()); if(wireCanvas.getWireOn()) { wireOnButton.setLabel("Wire On"); } else { wireOnButton.setLabel("Wire Off"); } wireCanvas.setMode("Roll"); } void spinOnButton_MouseReleased(java.awt.event.MouseEvent event) { setSpinOn(!getSpinOn()); if(getSpinOn()) { spinOnButton.setLabel("Spin On"); } else { spinOnButton.setLabel("Spin Off"); } } void linksOnButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.setLinksOn(!wireCanvas.getLinksOn()); if(wireCanvas.getLinksOn()) { linksOnButton.setLabel("Links On"); } else { linksOnButton.setLabel("Links Off"); } } void centerButton_MouseReleased(java.awt.event.MouseEvent event) { wireCanvas.center(); } URL aboutURL; void aboutButton_MouseReleased(java.awt.event.MouseEvent event) { try { aboutURL = new URL("http://organic.chemistry.utep.edu"); } catch(MalformedURLException e) { System.out.println("Could not connect to URL"); } if(aboutURL != null) { getAppletContext().showDocument(aboutURL,"_blank"); } } void wireCanvas_mouseClicked(java.awt.event.MouseEvent event) { Point point = new Point(event.getX(),event.getY()); if(wireCanvas.getLinksOn()) { Surface surface = wireCanvas.identifySurface(point); URL url = null; if(surface != null && surface.url != null && !surface.url.equals("")) { if(surface.url.substring(0,7).equals("http://")) { try { url = new URL(surface.url); } catch(MalformedURLException e) { System.out.println("Could not connect to URL"); } if(url != null) { getAppletContext().showDocument(url,"_blank"); } } else if(surface.url.substring(0,5).equals("_self")) { try { url = new URL(surface.url.substring(5)); } catch(MalformedURLException e) { System.out.println("Could not connect to URL"); } if(url != null) { getAppletContext().showDocument(url,"_self"); } } else { wireCanvas.clear(); this.readFile(surface.url); } } } } void readFile(String file) { String urlString = getCodeBase().toString(); char URLSeparator = '/'; urlString = urlString.substring(0,urlString.lastIndexOf(URLSeparator))+URLSeparator+file; try { URL url = new URL(urlString); InputStream in = url.openStream(); BufferedReader data = new BufferedReader(new InputStreamReader(in)); wireCanvas.readURL(data); } catch(MalformedURLException e) { System.out.println("Cannot connect."); } catch(IOException e) { System.out.println("Not found."); } } }