From: Michael T H. <mic...@us...> - 2003-01-06 23:35:25
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/applet In directory sc8-pr-cvs1:/tmp/cvs-serv12440/src/org/openscience/jmol/applet Modified Files: JmolApplet.java Added Files: AppletCanvas.java Removed Files: DisplayPanel.java JmolSimpleBean.java Log Message: significant changes to scripting and applet --- NEW FILE: AppletCanvas.java --- /* * Copyright 2002 The Jmol Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. */ package org.openscience.jmol.applet; import org.openscience.jmol.Atom; import org.openscience.jmol.DisplayControl; import org.openscience.jmol.MouseManager; import org.openscience.jmol.render.ChemFrameRenderer; import org.openscience.jmol.render.MeasureRenderer; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Dimension; import java.awt.Image; import java.awt.Canvas; import java.awt.event.ComponentEvent; import java.awt.event.ComponentAdapter; class AppletCanvas extends Canvas { private DisplayControl control; private MouseManager mouseman; private Image bufferOffscreen; private Graphics graphicsOffscreen; private Dimension dimCurrent; private final Rectangle rectClip = new Rectangle(); public AppletCanvas(DisplayControl control) { this.control = control; addComponentListener(new MyComponentListener()); } public void setMouseManager(MouseManager mouseman) { this.mouseman = mouseman; } public void updateSize() { Dimension dimT = getSize(); System.out.println("updateSize"); if (dimT.equals(dimCurrent)) return; dimCurrent = dimT; if ((dimCurrent.width > 0) && (dimCurrent.height > 0)) { bufferOffscreen = allocateBuffer(); graphicsOffscreen = bufferOffscreen.getGraphics(); } else { dimCurrent = null; bufferOffscreen = null; if (graphicsOffscreen != null) { graphicsOffscreen.dispose(); graphicsOffscreen = null; } } control.setScreenDimension(dimCurrent); control.scaleFitToScreen(); } private Image allocateBuffer() { System.out.println("allocateBuffer"); return createImage(dimCurrent.width, dimCurrent.height); } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { if (bufferOffscreen == null) { System.out.println("bufferOffscreen==null"); return; } // transfer the clipping rectangle to our offscreen buffer // also, we will use rectClip later in the rendering process g.getClipBounds(rectClip); if (rectClip.width == 0 || rectClip.height == 0) { System.out.println("?Que?"); rectClip.setBounds(0, 0, dimCurrent.width, dimCurrent.height); } graphicsOffscreen.setClip(rectClip); renderBuffer(graphicsOffscreen); g.drawImage(bufferOffscreen, 0, 0, null); } ChemFrameRenderer frameRenderer = new ChemFrameRenderer(); MeasureRenderer measureRenderer = new MeasureRenderer(); void renderBuffer(Graphics g) { g.setColor(control.colorBackground); g.fillRect(rectClip.x, rectClip.y, rectClip.width, rectClip.height); if (control.getFrame() != null) { control.maybeEnableAntialiasing(g); frameRenderer.paint(g, rectClip, control); measureRenderer.paint(g, rectClip, control); Rectangle rect = mouseman.getRubberBand(); if (rect != null) { g.setColor(control.colorRubberband); g.drawRect(rect.x, rect.y, rect.width, rect.height); } } control.notifyRepainted(); } // Make sure AWT knows we are using a buffered image. public boolean isDoubleBuffered() { return true; } // Make sure AWT knows we repaint the entire canvas. public boolean isOpaque() { return true; } class MyComponentListener extends ComponentAdapter { public void componentResized(ComponentEvent e) { updateSize(); } public void componentShown(ComponentEvent e) { updateSize(); } } } Index: JmolApplet.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/applet/JmolApplet.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** JmolApplet.java 11 Dec 2002 10:37:18 -0000 1.11 --- JmolApplet.java 6 Jan 2003 23:34:52 -0000 1.12 *************** *** 20,27 **** package org.openscience.jmol.applet; ! import java.awt.event.MouseListener; ! import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.KeyEvent; import java.io.InputStream; import org.openscience.jmol.io.ReaderProgress; --- 20,36 ---- package org.openscience.jmol.applet; ! import org.openscience.jmol.DisplayControl; ! import org.openscience.jmol.MouseManager; ! import org.openscience.jmol.AtomTypeSet; ! import org.openscience.jmol.script.Eval; ! ! import java.applet.Applet; ! import java.awt.Canvas; ! import java.awt.Graphics; import java.awt.event.MouseEvent; + import java.awt.event.MouseAdapter; import java.awt.event.KeyEvent; + import java.awt.event.KeyAdapter; + import java.awt.event.ComponentListener; import java.io.InputStream; import org.openscience.jmol.io.ReaderProgress; *************** *** 35,40 **** * @author Bradley A. Smith (br...@ba...) */ ! public class JmolApplet extends java.applet.Applet ! implements MouseListener, KeyListener, StatusDisplay { private static String appletInfo = --- 44,48 ---- * @author Bradley A. Smith (br...@ba...) */ ! public class JmolApplet extends Applet implements StatusDisplay { private static String appletInfo = *************** *** 80,84 **** }; ! JmolSimpleBean myBean; int mode; int labelMode; --- 88,97 ---- }; ! AppletCanvas canvas; ! DisplayControl control; ! MouseManager mouseman; ! ! Eval eval; ! int mode; int labelMode; *************** *** 92,98 **** public void init() { double zoomFactor = 1; - myBean = new JmolSimpleBean(); myBean.setBondsShown(true); --- 105,141 ---- public void init() { + initWindows(); + initApplication(); + } + + public void initWindows() { + + control = new DisplayControl(); + canvas = new AppletCanvas(control); + + String vers = System.getProperty("java.version"); + control.setJvm12orGreater(vers.compareTo("1.2") >= 0); + control.setAwtComponent(canvas); + mouseman = new MouseManager(canvas, control); + canvas.setMouseManager(mouseman); + + canvas.addMouseListener(new MyMouseListener()); + canvas.addKeyListener(new MyKeyListener()); + + setLayout(new java.awt.BorderLayout()); + add(canvas, "Center"); + + eval = new Eval(control); + } + + public void initApplication() { + + control.setShowBonds(true); + control.setShowAtoms(true); + control.zoomToPercent(100); + control.setPercentVdwAtom(20); + /* double zoomFactor = 1; myBean.setBondsShown(true); *************** *** 112,116 **** } myBean.setZoomFactor(zoomFactor); ! zoomFactor = 1; zoom = getParameter("ATOMSIZE"); if (zoom != null) { --- 155,159 ---- } myBean.setZoomFactor(zoomFactor); ! zoomFactor = .2; zoom = getParameter("ATOMSIZE"); if (zoom != null) { *************** *** 126,129 **** --- 169,173 ---- myBean.setWireframeRotation(false); } + */ InputStream atis = null; *************** *** 144,151 **** } } ! myBean.setAtomPropertiesFromStream(atis); } catch (java.io.IOException ex) { System.err.println("Error loading atom types: " + ex); } String model = getParameter("MODEL"); if (model != null) { --- 188,197 ---- } } ! System.out.println("reading atom properties from stream"); ! setAtomPropertiesFromStream(atis); } catch (java.io.IOException ex) { System.err.println("Error loading atom types: " + ex); } + String model = getParameter("MODEL"); if (model != null) { *************** *** 180,184 **** cfr.addReaderListener(readerProgress); cfr.setBondsEnabled(bondsEnabled); ! myBean.setModel(cfr.read()); } else { setErrorMessage("Error: Unable to read input format"); --- 226,230 ---- cfr.addReaderListener(readerProgress); cfr.setBondsEnabled(bondsEnabled); ! control.setChemFile(cfr.read()); } else { setErrorMessage("Error: Unable to read input format"); *************** *** 188,193 **** } } ! myBean.addMouseListener(this); ! myBean.addKeyListener(this); String bg = getParameter("BCOLOUR"); if (bg != null) { --- 234,238 ---- } } ! /* String bg = getParameter("BCOLOUR"); if (bg != null) { *************** *** 215,220 **** } setRenderingStyle(); - setLayout(new java.awt.BorderLayout()); - add(myBean, "Center"); String pickmode = getParameter("PICKMODE"); --- 260,263 ---- *************** *** 227,230 **** --- 270,284 ---- myBean.setLabelRenderingStyle(atomLabels); } + */ + } + + public void setAtomPropertiesFromStream(InputStream is) { + try { + AtomTypeSet ats1 = new AtomTypeSet(); + ats1.load(is); + } catch (java.io.IOException e1) { + System.err.println("Error loading atom properties from Stream'" + + is.toString() + "': " + e1); + } } *************** *** 300,318 **** } void setRenderingStyle() { ! if (mode == WIREFRAME) { ! myBean.setAtomRenderingStyle("WIREFRAME"); ! myBean.setBondRenderingStyle("WIREFRAME"); ! } else if (mode == QUICKDRAW) { ! myBean.setAtomRenderingStyle("QUICKDRAW"); ! myBean.setBondRenderingStyle("QUICKDRAW"); ! } else if (mode == HALFSHADED) { ! myBean.setAtomRenderingStyle("SHADED"); ! myBean.setBondRenderingStyle("QUICKDRAW"); ! } else if (mode == SHADED) { ! myBean.setAtomRenderingStyle("SHADED"); ! myBean.setBondRenderingStyle("SHADED"); ! } } --- 354,379 ---- } + // FIXME -- modes should be the same so that map is not necessary + // map from applet modes to DisplayControl modes + static int[] mapModeAtomDraw = { + DisplayControl.WIREFRAME, + DisplayControl.QUICKDRAW, + DisplayControl.SHADING, + DisplayControl.SHADING}; + + static int[] mapModeBondDraw = { + DisplayControl.LINE, + DisplayControl.QUICKDRAW, + DisplayControl.QUICKDRAW, + DisplayControl.SHADING}; + void setRenderingStyle() { + control.setModeAtomDraw(mapModeAtomDraw[mode]); + control.setModeBondDraw(mapModeBondDraw[mode]); + } ! void setLabelStyle() { ! // no mapping is necessary in this case ! control.setModeLabel(labelMode); } *************** *** 428,506 **** ! /** ! * Invoked when the mouse has been clicked on a component. ! */ ! public void mouseClicked(MouseEvent e) { ! setStatusMessage(helpMessage); ! } ! ! /** ! * Invoked when the mouse enters a component. ! */ ! public void mouseEntered(MouseEvent e) { ! setStatusMessage(helpMessage); ! } ! ! /** ! * Invoked when the mouse exits a component. ! */ ! public void mouseExited(MouseEvent e) { ! } ! ! /** ! * Invoked when a mouse button has been pressed on a component. ! */ ! public void mousePressed(MouseEvent e) { ! } ! /** ! * Invoked when a mouse button has been released on a component. ! */ ! public void mouseReleased(MouseEvent e) { ! } ! ! /** ! * Invoked when a key has been pressed. ! */ ! public void keyPressed(KeyEvent e) { ! } ! /** ! * Invoked when a key has been released. ! */ ! public void keyReleased(KeyEvent e) { } ! public void keyTyped(KeyEvent e) { ! ! String keyChar = new Character(e.getKeyChar()).toString(); ! if (keyChar.equalsIgnoreCase("s")) { ! mode++; ! mode %= drawModeNames.length; ! setStatusMessage("JmolApplet: Changing rendering style to " ! + drawModeNames[mode]); ! setRenderingStyle(); ! } else if (keyChar.equalsIgnoreCase("l")) { ! labelMode++; ! labelMode %= 4; ! if (labelMode == 0) { ! setStatusMessage("JmolApplet: Changing label style to NONE"); ! myBean.setLabelRenderingStyle("NONE"); ! } else if (labelMode == 1) { ! setStatusMessage("JmolApplet: Changing label style to SYMBOLS"); ! myBean.setLabelRenderingStyle("SYMBOLS"); ! } else if (labelMode == 2) { ! setStatusMessage("JmolApplet: Changing label style to TYPES"); ! myBean.setLabelRenderingStyle("TYPES"); ! } else if (labelMode == 3) { ! setStatusMessage("JmolApplet: Changing label style to NUMBERS"); ! myBean.setLabelRenderingStyle("NUMBERS"); ! } else { ! setStatusMessage("JmolApplet: Changing label style to default"); ! myBean.setBondRenderingStyle("NONE"); } - } else if ((bondsEnabled) - && (keyChar.equalsIgnoreCase("b"))) { - myBean.toggleBonds(); } } --- 489,544 ---- ! class MyMouseListener extends MouseAdapter { ! public void mouseClicked(MouseEvent e) { ! setStatusMessage(helpMessage); ! } ! public void mouseEntered(MouseEvent e) { ! setStatusMessage(helpMessage); ! } } ! class MyKeyListener extends KeyAdapter { ! ! public void keyTyped(KeyEvent e) { ! ! switch(e.getKeyChar()) { ! case 's': ! case 'S': ! mode++; ! mode %= drawModeNames.length; ! setStatusMessage("JmolApplet: Changing rendering style to " ! + drawModeNames[mode]); ! setRenderingStyle(); ! break; ! case 'l': ! case 'L': ! labelMode++; ! labelMode %= 4; ! setLabelStyle(); ! break; ! case 'b': ! case 'B': ! if (bondsEnabled) ! control.setShowBonds(!control.showBonds); ! break; ! case 'p': ! case 'P': ! mouseman.setMode(MouseManager.PICK); ! break; ! case 't': ! case 'T': ! mouseman.setMode(MouseManager.XLATE); ! break; ! case 'r': ! case 'R': ! mouseman.setMode(MouseManager.ROTATE); ! break; ! case 'z': ! case 'Z': ! mouseman.setMode(MouseManager.ZOOM); ! break; } } } *************** *** 526,530 **** ReaderFactory.createReader(new java.io.StringReader(hugeXYZString)); cfr.setBondsEnabled(bondsEnabled); ! myBean.setModel(cfr.read()); } catch (java.io.IOException e) { e.printStackTrace(); --- 564,568 ---- ReaderFactory.createReader(new java.io.StringReader(hugeXYZString)); cfr.setBondsEnabled(bondsEnabled); ! // myBean.setModel(cfr.read()); } catch (java.io.IOException e) { e.printStackTrace(); *************** *** 543,547 **** ReaderFactory.createReader(new java.io.StringReader(hugeCMLString)); cfr.setBondsEnabled(bondsEnabled); ! myBean.setModel(cfr.read()); } catch (java.io.IOException e) { e.printStackTrace(); --- 581,585 ---- ReaderFactory.createReader(new java.io.StringReader(hugeCMLString)); cfr.setBondsEnabled(bondsEnabled); ! // myBean.setModel(cfr.read()); } catch (java.io.IOException e) { e.printStackTrace(); *************** *** 555,558 **** --- 593,597 ---- public void setModelToRenderFromURL(String modelURLString) { + System.out.println("setModelToRenderFromURL"); try { java.net.URL modelURL = null; *************** *** 567,571 **** .createReader(new java.io.InputStreamReader(modelURL.openStream())); cfr.setBondsEnabled(bondsEnabled); ! myBean.setModel(cfr.read()); } catch (java.io.IOException e) { e.printStackTrace(); --- 606,610 ---- .createReader(new java.io.InputStreamReader(modelURL.openStream())); cfr.setBondsEnabled(bondsEnabled); ! control.setChemFile(cfr.read()); } catch (java.io.IOException e) { e.printStackTrace(); *************** *** 579,583 **** */ public void setModelToRenderFromFile(String modelFile, String type) { ! setModelToRenderFromFile(modelFile, type); } --- 618,622 ---- */ public void setModelToRenderFromFile(String modelFile, String type) { ! // setModelToRenderFromFile(modelFile, type); } *************** *** 587,591 **** */ public void setAtomPropertiesFromFile(String propertiesFile) { ! myBean.setAtomPropertiesFromFile(propertiesFile); } --- 626,630 ---- */ public void setAtomPropertiesFromFile(String propertiesFile) { ! // myBean.setAtomPropertiesFromFile(propertiesFile); } *************** *** 595,599 **** */ public void setAtomPropertiesFromURL(String propertiesURL) { ! myBean.setAtomPropertiesFromURL(propertiesURL); } --- 634,638 ---- */ public void setAtomPropertiesFromURL(String propertiesURL) { ! // myBean.setAtomPropertiesFromURL(propertiesURL); } *************** *** 603,607 **** */ public void setBackgroundColour(String colourInHex) { ! myBean.setBackgroundColour(colourInHex); } --- 642,646 ---- */ public void setBackgroundColour(String colourInHex) { ! // myBean.setBackgroundColour(colourInHex); } *************** *** 611,615 **** */ public void setForegroundColour(String colourInHex) { ! myBean.setForegroundColour(colourInHex); } --- 650,654 ---- */ public void setForegroundColour(String colourInHex) { ! // myBean.setForegroundColour(colourInHex); } *************** *** 619,623 **** */ public void setAtomsShown(String value) { ! myBean.setAtomsShown(value); } --- 658,662 ---- */ public void setAtomsShown(String value) { ! // myBean.setAtomsShown(value); } *************** *** 627,631 **** */ public void setBondsShown(String value) { ! myBean.setBondsShown(value); } --- 666,670 ---- */ public void setBondsShown(String value) { ! // myBean.setBondsShown(value); } *************** *** 634,638 **** */ public void setAtomRenderingStyle(String style) { ! myBean.setAtomRenderingStyle(style); } --- 673,677 ---- */ public void setAtomRenderingStyle(String style) { ! // myBean.setAtomRenderingStyle(style); } *************** *** 648,652 **** */ public void setBondRenderingStyle(String style) { ! myBean.setBondRenderingStyle(style); } --- 687,691 ---- */ public void setBondRenderingStyle(String style) { ! // myBean.setBondRenderingStyle(style); } *************** *** 655,659 **** */ public String getBondRenderingStyleDescription() { ! return myBean.getBondRenderingStyleDescription(); } --- 694,699 ---- */ public String getBondRenderingStyleDescription() { ! // return myBean.getBondRenderingStyleDescription(); ! return "FOO"; } *************** *** 662,666 **** */ public void setLabelRenderingStyle(String style) { ! myBean.setLabelRenderingStyle(style); } --- 702,706 ---- */ public void setLabelRenderingStyle(String style) { ! // myBean.setLabelRenderingStyle(style); } *************** *** 669,673 **** */ public String getLabelRenderingStyleDescription() { ! return myBean.getLabelRenderingStyleDescription(); } --- 709,714 ---- */ public String getLabelRenderingStyleDescription() { ! // return myBean.getLabelRenderingStyleDescription(); ! return "FOO"; } *************** *** 677,683 **** */ public void setAutoWireframe(String doesIt) { ! myBean.setAutoWireframe(doesIt); } ! } --- 718,727 ---- */ public void setAutoWireframe(String doesIt) { ! // myBean.setAutoWireframe(doesIt); } ! public void scriptInline(String script) { ! if (eval.loadString(script)) ! eval.run(); ! } } --- DisplayPanel.java DELETED --- --- JmolSimpleBean.java DELETED --- |