From: <ni...@us...> - 2008-10-25 17:56:29
|
Revision: 10144 http://jmol.svn.sourceforge.net/jmol/?rev=10144&view=rev Author: nicove Date: 2008-10-25 17:56:25 +0000 (Sat, 25 Oct 2008) Log Message: ----------- Refactoring examples Added Paths: ----------- trunk/Jmol/examples/basic/org/ trunk/Jmol/examples/basic/org/jmol/ trunk/Jmol/examples/basic/org/jmol/Export.java trunk/Jmol/examples/basic/org/jmol/Integration.java trunk/Jmol/examples/basic/org/jmol/JmolTable.java Removed Paths: ------------- trunk/Jmol/examples/basic/Export.java trunk/Jmol/examples/basic/Integration.java trunk/Jmol/examples/basic/JmolTable.java Property Changed: ---------------- trunk/Jmol/examples/basic/ Property changes on: trunk/Jmol/examples/basic ___________________________________________________________________ Modified: svn:ignore - *.class + *.class Deleted: trunk/Jmol/examples/basic/Export.java =================================================================== --- trunk/Jmol/examples/basic/Export.java 2008-10-25 17:33:17 UTC (rev 10143) +++ trunk/Jmol/examples/basic/Export.java 2008-10-25 17:56:25 UTC (rev 10144) @@ -1,219 +0,0 @@ -/* $RCSfile$ - * $Author: Maria Brandl$ - * $10.10.2005$ - * $Revision$ - * - * Copyright (C) 2000-2006 The Jmol Development Team - * - * Contact: jmo...@li... - * - * 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. - * - * - * JmolExportExample.java - * event tracking in a Jmol-application following - * Bob Hanson's concept - * compiled with: javac -classpath `pwd`:/where/ever/jmol-10.2.0/Jmol.jar JmolExportExample.java - * ran with: java -classpath `pwd`:/where/ever/jmol-10.2.0/Jmol.jar JmolExportExample - * */ - -import java.util.Hashtable; - -import javax.swing.JFrame; -import javax.swing.JTextField; - -import org.jmol.api.JmolStatusListener; -import org.jmol.api.JmolViewer; -import org.jmol.viewer.JmolConstants; -import org.openscience.jmol.app.Jmol; - -public class Export { - - public static void main(String args[]) { - // build TextField (monitor) to track atom info - JFrame monitorFrame = new JFrame(); - JTextField monitor = new JTextField("Please load a molecule and click on atoms"); - monitorFrame.getContentPane().add(monitor); - monitorFrame.pack(); - - // build Jmol - JFrame baseframe = new JFrame(); - Jmol jmolPanel = Jmol.getJmol(baseframe,300, 300, ""); - JmolViewer viewer = jmolPanel.viewer; - - // build and register event listener (implementation of JmolStatusListener) - // point "monitor"-variable in event listener to "monitor" - MyStatusListener myStatusListener = new MyStatusListener(); - myStatusListener.monitor = monitor; - viewer.setJmolStatusListener(myStatusListener); - - // showing monitor frame on top of Jmol - monitorFrame.setVisible(true); - } -} - -class MyStatusListener implements JmolStatusListener { - // JTextField monitor used to broadcast atom tracking out of Jmol - public JTextField monitor; - - public boolean notifyEnabled(int type) { - // indicate here any callbacks you will be working with. - // some of these flags are not tested. See org.jmol.viewer.StatusManager.java - switch (type) { - case JmolConstants.CALLBACK_ANIMFRAME: - case JmolConstants.CALLBACK_ECHO: - case JmolConstants.CALLBACK_LOADSTRUCT: - case JmolConstants.CALLBACK_MEASURE: - case JmolConstants.CALLBACK_MESSAGE: - case JmolConstants.CALLBACK_PICK: - case JmolConstants.CALLBACK_SYNC: - case JmolConstants.CALLBACK_SCRIPT: - case JmolConstants.CALLBACK_HOVER: - case JmolConstants.CALLBACK_MINIMIZATION: - case JmolConstants.CALLBACK_RESIZE: - } - return false; - } - - public void notifyCallback(int type, Object[] data) { - // this method as of 11.5.23 gets all the callback notifications for - // any embedding application or for the applet. - // see org.jmol.applet.Jmol.java and org.jmol.openscience.app.Jmol.java - - // data is an object set up by org.jmol.viewer.StatusManager - // see that class for details. - // data[0] is always blank -- for inserting htmlName - // data[1] is either String (main message) or int[] (animFrameCallback only) - // data[2] is optional supplemental information such as status info - // or sometimes an Integer value - // data[3] is more optional supplemental information, either a String or Integer - // etc. - - switch (type) { - case JmolConstants.CALLBACK_ANIMFRAME: - break; - case JmolConstants.CALLBACK_ECHO: - sendConsoleEcho((String) data[1]); - break; - case JmolConstants.CALLBACK_HOVER: - break; - case JmolConstants.CALLBACK_LOADSTRUCT: - String strInfo = (String) data[1]; - System.out.println(strInfo); - monitor.setText(strInfo); - break; - case JmolConstants.CALLBACK_MEASURE: - break; - case JmolConstants.CALLBACK_MESSAGE: - sendConsoleMessage((String) data[1]); - break; - case JmolConstants.CALLBACK_MINIMIZATION: - break; - case JmolConstants.CALLBACK_PICK: - //for example: - notifyAtomPicked(((Integer) data[2]).intValue(), (String) data[1]); - break; - case JmolConstants.CALLBACK_RESIZE: - break; - case JmolConstants.CALLBACK_SCRIPT: - break; - case JmolConstants.CALLBACK_SYNC: - break; - } - } - - private void notifyAtomPicked(int atomIndex, String strInfo) { - System.out.println(strInfo); - monitor.setText(strInfo); - } - - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#handlePopupMenu(int, int) - */ - public void handlePopupMenu(int x, int y) { - System.out.println(""); - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#showUrl(java.lang.String) - */ - public void showUrl(String url) { - System.out.println(url); - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#showConsole(boolean) - */ - public void showConsole(boolean showConsole) { - System.out.println("Status of Console " + showConsole); - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#createImage(java.lang.String, java.lang.String, int) - */ - public void createImage(String file, String type, int quality) { - // - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#functionXY(java.lang.String, int, int) - */ - public float[][] functionXY(String functionName, int x, int y) { - return null; - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#sendConsoleEcho(java.lang.String) - */ - private void sendConsoleEcho(String strEcho) { - // - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#sendConsoleMessage(java.lang.String) - */ - private void sendConsoleMessage(String strStatus) { - // - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#setCallbackFunction(java.lang.String, java.lang.String) - */ - public void setCallbackFunction(String callbackType, String callbackFunction) { - // - } - - /* (non-Javadoc) - * @see org.jmol.api.JmolStatusListener#eval(java.lang.String) - */ - public String eval(String strEval) { - return null; - } - - - public Hashtable getRegistryInfo() { - return null; - } - - public String createImage(String file, String type, Object text_or_bytes, int quality) { - return null; - } - - public String dialogAsk(String type, String data) { - return null; - } -} Deleted: trunk/Jmol/examples/basic/Integration.java =================================================================== --- trunk/Jmol/examples/basic/Integration.java 2008-10-25 17:33:17 UTC (rev 10143) +++ trunk/Jmol/examples/basic/Integration.java 2008-10-25 17:56:25 UTC (rev 10144) @@ -1,112 +0,0 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ - * - * Copyright (C) 2000-2005 The Jmol Development Team - * - * Contact: jmo...@li... - * - * 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. - */ - -import java.awt.Container; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Rectangle; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; - -import javax.swing.JFrame; -import javax.swing.JPanel; - -import org.jmol.adapter.smarter.SmarterJmolAdapter; -import org.jmol.api.JmolAdapter; -import org.jmol.api.JmolSimpleViewer; -import org.jmol.util.Logger; - -/** - * A example of integrating the Jmol viewer into a java application. - * - * <p>I compiled/ran this code directly in the examples directory by doing: - * <pre> - * javac -classpath ../Jmol.jar Integration.java - * java -cp .:../Jmol.jar Integration - * </pre> - * - * @author Miguel <mi...@jm...> - */ - -public class Integration { - - public static void main(String[] argv) { - JFrame frame = new JFrame("Hello"); - frame.addWindowListener(new ApplicationCloser()); - Container contentPane = frame.getContentPane(); - JmolPanel jmolPanel = new JmolPanel(); - contentPane.add(jmolPanel); - frame.setSize(300, 300); - frame.setVisible(true); - - JmolSimpleViewer viewer = jmolPanel.getViewer(); - // this initial ZAP command is REQUIRED in Jmol 11.4. - viewer.evalString("zap"); - // viewer.openFile("../samples/caffeine.xyz"); - viewer.openFile("http://chemapps.stolaf.edu/jmol/docs/examples-11/data/caffeine.xyz"); - //viewer.openStringInline(strXyzHOH); - viewer.evalString(strScript); - String strError = viewer.getOpenFileError(); - if (strError != null) - Logger.error(strError); - } - - final static String strXyzHOH = - "3\n" + - "water\n" + - "O 0.0 0.0 0.0\n" + - "H 0.76923955 -0.59357141 0.0\n" + - "H -0.76923955 -0.59357141 0.0\n"; - - final static String strScript = "delay; move 360 0 0 0 0 0 0 0 4;"; - - static class ApplicationCloser extends WindowAdapter { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - } - - static class JmolPanel extends JPanel { - JmolSimpleViewer viewer; - JmolAdapter adapter; - JmolPanel() { - adapter = new SmarterJmolAdapter(); - viewer = JmolSimpleViewer.allocateSimpleViewer(this, adapter); - } - - public JmolSimpleViewer getViewer() { - return viewer; - } - - final Dimension currentSize = new Dimension(); - final Rectangle rectClip = new Rectangle(); - - public void paint(Graphics g) { - getSize(currentSize); - g.getClipBounds(rectClip); - viewer.renderScreenImage(g, currentSize, rectClip); - } - } -} Deleted: trunk/Jmol/examples/basic/JmolTable.java =================================================================== --- trunk/Jmol/examples/basic/JmolTable.java 2008-10-25 17:33:17 UTC (rev 10143) +++ trunk/Jmol/examples/basic/JmolTable.java 2008-10-25 17:56:25 UTC (rev 10144) @@ -1,250 +0,0 @@ -/* $RCSfile$ - * $Author$ - * $Date$ - * $Revision$ - * - * Copyright (C) 2004-2005 The Jmol Development Team - * - * Contact: jmo...@li... - * - * 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. - */ - -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Rectangle; - -import javax.swing.AbstractCellEditor; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.TableColumnModelEvent; -import javax.swing.event.TableColumnModelListener; -import javax.swing.table.AbstractTableModel; -import javax.swing.table.TableCellEditor; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumn; - -import org.jmol.api.JmolAdapter; -import org.jmol.api.JmolViewer; -import org.jmol.adapter.smarter.SmarterJmolAdapter; -import org.jmol.util.Logger; - -/** - * A example of integrating the Jmol viewer into a JTable. - * - * <p>This code can be compiled and run by doing: - * <pre> - * javac -classpath ../Jmol.jar JmolTable.java - * java -cp .:../Jmol.jar JmolTable FILE1 FILE2 FILE3 .... - * </pre> - * - * @author Rajarshi Guha - */ - -public class JmolTable { - - static int STRUCTURE_COL = 0; - - public static void main(String[] args) { - - int nobject = args.length; - int ncol = 2; - - Object[][] data = new Object[nobject][ncol]; - for (int i = 0; i < nobject; i++) { - data[i][0] = new JmolPanel(); - JmolViewer v = (JmolViewer)((JmolPanel)data[i][0]).getViewer(); - v.openFile(args[i]); - String strError = v.getOpenFileError(); - if (strError != null) { - Logger.error(strError); - } - - data[i][1] = args[i]; - } - String[] colNames = { "Structure", "Filename" }; - - showMolecules(colNames, data, nobject); - } - - public static void showMolecules(String[] colNames, Object[][] data, int nmol) { - - // set up the toplevel frame - JFrame frame = new JFrame("Structure Viewer"); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // create a JTable with an AbstractTableModel - JTable mtable = new JTable( new JmolPanelJTableModel(data, colNames) ); - mtable.setShowGrid(true); - - // add a TableolumnModelListener so we can catch column - // resizes and change row heights accordingly - mtable.getColumnModel().addColumnModelListener( new JmolColumnModelListener(mtable) ); - - - // allow cell selections - mtable.setCellSelectionEnabled(true); - - // disable movement of columns. This is needed since we - // set the CellRenderer and CellEditor for a specific column - mtable.getTableHeader().setReorderingAllowed(false); - - - // set up scroll bar - JScrollPane scrollpane = new JScrollPane(mtable); - mtable.setPreferredScrollableViewportSize(new Dimension(500, 70)); - frame.getContentPane().add(scrollpane); - - // set the TableCellRenderer for the structure column - // we also set up a TableCellEditor so that events on a JmolPanel - // cell get forwarded to the actual JmolPanel - TableColumn col = mtable.getColumnModel().getColumn( STRUCTURE_COL); - col.setCellRenderer( new JmolPanelCellRenderer() ); - col.setCellEditor( new JmolPanelCellEditor() ); - - // start the show! - frame.pack(); - frame.setSize(300, 300); - frame.setVisible(true); - } - - static class JmolColumnModelListener implements TableColumnModelListener { - JTable table; - public JmolColumnModelListener(JTable t) { - this.table = t; - } - public void columnAdded(TableColumnModelEvent e) { - } - public void columnRemoved(TableColumnModelEvent e) { - } - public void columnMoved(TableColumnModelEvent e) { - } - public void columnMarginChanged(ChangeEvent e) { - int colwidth = this.table.getColumnModel().getColumn(STRUCTURE_COL).getWidth(); - for (int i = 0; i < this.table.getRowCount(); i++) { - this.table.setRowHeight(i, colwidth); - } - - } - public void columnSelectionChanged(ListSelectionEvent e) { - } - } - - static class JmolPanelJTableModel extends AbstractTableModel { - private Object[][] rows; - private String[] columns; - - public JmolPanelJTableModel(Object[][] objs, String[] cols) { - rows = objs; - columns = cols; - } - - public String getColumnName(int column) { - return columns[column]; - } - - public int getRowCount() { - return rows.length; - } - - public int getColumnCount() { - return columns.length; - } - - public Object getValueAt(int row, int column) { - return rows[row][column]; - } - - public boolean isCellEditable(int row, int column) { - if (column == STRUCTURE_COL) { - return true; - } - return false; - } - - public Class getColumnClass(int column) { - return getValueAt(0, column).getClass(); - } - } - - - - static class JmolPanelCellRenderer extends JmolPanel implements TableCellRenderer{ - public Component getTableCellRendererComponent( - JTable table, Object value, boolean isSelected, - boolean hasFocus, int rowIndex, int vColIndex ) { - return (JmolPanel)value; - } - - // The following methods override the defaults for performance reasons - public void validate() {} - public void revalidate() {} - protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {} - public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {} - } - - static class JmolPanelCellEditor extends AbstractCellEditor implements TableCellEditor{ - - public Component getTableCellEditorComponent( - JTable table, Object value, boolean isSelected, - int row, int column) { - return (JmolPanel)value; - } - public Object getCellEditorValue() { - return new Object(); - } - public boolean isCellEditable(int row, int column) { - if (column == STRUCTURE_COL) { - return true; - } - return false; - } - public boolean stopCellEditing() { - return true; - } - } - - -} - - -class JmolPanel extends JPanel { - JmolViewer viewer; - JmolAdapter adapter; - JmolPanel() { - adapter = new SmarterJmolAdapter(); - viewer = JmolViewer.allocateViewer(this, adapter); - } - - public JmolViewer getViewer() { - return viewer; - } - final Dimension currentSize = new Dimension(); - public void paint(Graphics g) { - viewer.setScreenDimension(getSize(currentSize)); - Rectangle rectClip = new Rectangle(); - g.getClipBounds(rectClip); - viewer.renderScreenImage(g, currentSize, rectClip); - } - -} - - Copied: trunk/Jmol/examples/basic/org/jmol/Export.java (from rev 10141, trunk/Jmol/examples/basic/Export.java) =================================================================== --- trunk/Jmol/examples/basic/org/jmol/Export.java (rev 0) +++ trunk/Jmol/examples/basic/org/jmol/Export.java 2008-10-25 17:56:25 UTC (rev 10144) @@ -0,0 +1,220 @@ +package org.jmol; +/* $RCSfile$ + * $Author: Maria Brandl$ + * $10.10.2005$ + * $Revision$ + * + * Copyright (C) 2000-2006 The Jmol Development Team + * + * Contact: jmo...@li... + * + * 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. + * + * + * JmolExportExample.java + * event tracking in a Jmol-application following + * Bob Hanson's concept + * compiled with: javac -classpath `pwd`:/where/ever/jmol-10.2.0/Jmol.jar JmolExportExample.java + * ran with: java -classpath `pwd`:/where/ever/jmol-10.2.0/Jmol.jar JmolExportExample + * */ + +import java.util.Hashtable; + +import javax.swing.JFrame; +import javax.swing.JTextField; + +import org.jmol.api.JmolStatusListener; +import org.jmol.api.JmolViewer; +import org.jmol.viewer.JmolConstants; +import org.openscience.jmol.app.Jmol; + +public class Export { + + public static void main(String args[]) { + // build TextField (monitor) to track atom info + JFrame monitorFrame = new JFrame(); + JTextField monitor = new JTextField("Please load a molecule and click on atoms"); + monitorFrame.getContentPane().add(monitor); + monitorFrame.pack(); + + // build Jmol + JFrame baseframe = new JFrame(); + Jmol jmolPanel = Jmol.getJmol(baseframe,300, 300, ""); + JmolViewer viewer = jmolPanel.viewer; + + // build and register event listener (implementation of JmolStatusListener) + // point "monitor"-variable in event listener to "monitor" + MyStatusListener myStatusListener = new MyStatusListener(); + myStatusListener.monitor = monitor; + viewer.setJmolStatusListener(myStatusListener); + + // showing monitor frame on top of Jmol + monitorFrame.setVisible(true); + } +} + +class MyStatusListener implements JmolStatusListener { + // JTextField monitor used to broadcast atom tracking out of Jmol + public JTextField monitor; + + public boolean notifyEnabled(int type) { + // indicate here any callbacks you will be working with. + // some of these flags are not tested. See org.jmol.viewer.StatusManager.java + switch (type) { + case JmolConstants.CALLBACK_ANIMFRAME: + case JmolConstants.CALLBACK_ECHO: + case JmolConstants.CALLBACK_LOADSTRUCT: + case JmolConstants.CALLBACK_MEASURE: + case JmolConstants.CALLBACK_MESSAGE: + case JmolConstants.CALLBACK_PICK: + case JmolConstants.CALLBACK_SYNC: + case JmolConstants.CALLBACK_SCRIPT: + case JmolConstants.CALLBACK_HOVER: + case JmolConstants.CALLBACK_MINIMIZATION: + case JmolConstants.CALLBACK_RESIZE: + } + return false; + } + + public void notifyCallback(int type, Object[] data) { + // this method as of 11.5.23 gets all the callback notifications for + // any embedding application or for the applet. + // see org.jmol.applet.Jmol.java and org.jmol.openscience.app.Jmol.java + + // data is an object set up by org.jmol.viewer.StatusManager + // see that class for details. + // data[0] is always blank -- for inserting htmlName + // data[1] is either String (main message) or int[] (animFrameCallback only) + // data[2] is optional supplemental information such as status info + // or sometimes an Integer value + // data[3] is more optional supplemental information, either a String or Integer + // etc. + + switch (type) { + case JmolConstants.CALLBACK_ANIMFRAME: + break; + case JmolConstants.CALLBACK_ECHO: + sendConsoleEcho((String) data[1]); + break; + case JmolConstants.CALLBACK_HOVER: + break; + case JmolConstants.CALLBACK_LOADSTRUCT: + String strInfo = (String) data[1]; + System.out.println(strInfo); + monitor.setText(strInfo); + break; + case JmolConstants.CALLBACK_MEASURE: + break; + case JmolConstants.CALLBACK_MESSAGE: + sendConsoleMessage((String) data[1]); + break; + case JmolConstants.CALLBACK_MINIMIZATION: + break; + case JmolConstants.CALLBACK_PICK: + //for example: + notifyAtomPicked(((Integer) data[2]).intValue(), (String) data[1]); + break; + case JmolConstants.CALLBACK_RESIZE: + break; + case JmolConstants.CALLBACK_SCRIPT: + break; + case JmolConstants.CALLBACK_SYNC: + break; + } + } + + private void notifyAtomPicked(int atomIndex, String strInfo) { + System.out.println(strInfo); + monitor.setText(strInfo); + } + + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#handlePopupMenu(int, int) + */ + public void handlePopupMenu(int x, int y) { + System.out.println(""); + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#showUrl(java.lang.String) + */ + public void showUrl(String url) { + System.out.println(url); + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#showConsole(boolean) + */ + public void showConsole(boolean showConsole) { + System.out.println("Status of Console " + showConsole); + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#createImage(java.lang.String, java.lang.String, int) + */ + public void createImage(String file, String type, int quality) { + // + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#functionXY(java.lang.String, int, int) + */ + public float[][] functionXY(String functionName, int x, int y) { + return null; + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#sendConsoleEcho(java.lang.String) + */ + private void sendConsoleEcho(String strEcho) { + // + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#sendConsoleMessage(java.lang.String) + */ + private void sendConsoleMessage(String strStatus) { + // + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#setCallbackFunction(java.lang.String, java.lang.String) + */ + public void setCallbackFunction(String callbackType, String callbackFunction) { + // + } + + /* (non-Javadoc) + * @see org.jmol.api.JmolStatusListener#eval(java.lang.String) + */ + public String eval(String strEval) { + return null; + } + + + public Hashtable getRegistryInfo() { + return null; + } + + public String createImage(String file, String type, Object text_or_bytes, int quality) { + return null; + } + + public String dialogAsk(String type, String data) { + return null; + } +} Copied: trunk/Jmol/examples/basic/org/jmol/Integration.java (from rev 10141, trunk/Jmol/examples/basic/Integration.java) =================================================================== --- trunk/Jmol/examples/basic/org/jmol/Integration.java (rev 0) +++ trunk/Jmol/examples/basic/org/jmol/Integration.java 2008-10-25 17:56:25 UTC (rev 10144) @@ -0,0 +1,113 @@ +package org.jmol; +/* $RCSfile$ + * $Author$ + * $Date$ + * $Revision$ + * + * Copyright (C) 2000-2005 The Jmol Development Team + * + * Contact: jmo...@li... + * + * 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. + */ + +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Rectangle; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; + +import javax.swing.JFrame; +import javax.swing.JPanel; + +import org.jmol.adapter.smarter.SmarterJmolAdapter; +import org.jmol.api.JmolAdapter; +import org.jmol.api.JmolSimpleViewer; +import org.jmol.util.Logger; + +/** + * A example of integrating the Jmol viewer into a java application. + * + * <p>I compiled/ran this code directly in the examples directory by doing: + * <pre> + * javac -classpath ../Jmol.jar Integration.java + * java -cp .:../Jmol.jar Integration + * </pre> + * + * @author Miguel <mi...@jm...> + */ + +public class Integration { + + public static void main(String[] argv) { + JFrame frame = new JFrame("Hello"); + frame.addWindowListener(new ApplicationCloser()); + Container contentPane = frame.getContentPane(); + JmolPanel jmolPanel = new JmolPanel(); + contentPane.add(jmolPanel); + frame.setSize(300, 300); + frame.setVisible(true); + + JmolSimpleViewer viewer = jmolPanel.getViewer(); + // this initial ZAP command is REQUIRED in Jmol 11.4. + viewer.evalString("zap"); + // viewer.openFile("../samples/caffeine.xyz"); + viewer.openFile("http://chemapps.stolaf.edu/jmol/docs/examples-11/data/caffeine.xyz"); + //viewer.openStringInline(strXyzHOH); + viewer.evalString(strScript); + String strError = viewer.getOpenFileError(); + if (strError != null) + Logger.error(strError); + } + + final static String strXyzHOH = + "3\n" + + "water\n" + + "O 0.0 0.0 0.0\n" + + "H 0.76923955 -0.59357141 0.0\n" + + "H -0.76923955 -0.59357141 0.0\n"; + + final static String strScript = "delay; move 360 0 0 0 0 0 0 0 4;"; + + static class ApplicationCloser extends WindowAdapter { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + } + + static class JmolPanel extends JPanel { + JmolSimpleViewer viewer; + JmolAdapter adapter; + JmolPanel() { + adapter = new SmarterJmolAdapter(); + viewer = JmolSimpleViewer.allocateSimpleViewer(this, adapter); + } + + public JmolSimpleViewer getViewer() { + return viewer; + } + + final Dimension currentSize = new Dimension(); + final Rectangle rectClip = new Rectangle(); + + public void paint(Graphics g) { + getSize(currentSize); + g.getClipBounds(rectClip); + viewer.renderScreenImage(g, currentSize, rectClip); + } + } +} Property changes on: trunk/Jmol/examples/basic/org/jmol/Integration.java ___________________________________________________________________ Added: svn:eol-style + native Copied: trunk/Jmol/examples/basic/org/jmol/JmolTable.java (from rev 10141, trunk/Jmol/examples/basic/JmolTable.java) =================================================================== --- trunk/Jmol/examples/basic/org/jmol/JmolTable.java (rev 0) +++ trunk/Jmol/examples/basic/org/jmol/JmolTable.java 2008-10-25 17:56:25 UTC (rev 10144) @@ -0,0 +1,251 @@ +package org.jmol; +/* $RCSfile$ + * $Author$ + * $Date$ + * $Revision$ + * + * Copyright (C) 2004-2005 The Jmol Development Team + * + * Contact: jmo...@li... + * + * 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. + */ + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Rectangle; + +import javax.swing.AbstractCellEditor; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.TableColumnModelEvent; +import javax.swing.event.TableColumnModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.jmol.api.JmolAdapter; +import org.jmol.api.JmolViewer; +import org.jmol.adapter.smarter.SmarterJmolAdapter; +import org.jmol.util.Logger; + +/** + * A example of integrating the Jmol viewer into a JTable. + * + * <p>This code can be compiled and run by doing: + * <pre> + * javac -classpath ../Jmol.jar JmolTable.java + * java -cp .:../Jmol.jar JmolTable FILE1 FILE2 FILE3 .... + * </pre> + * + * @author Rajarshi Guha + */ + +public class JmolTable { + + static int STRUCTURE_COL = 0; + + public static void main(String[] args) { + + int nobject = args.length; + int ncol = 2; + + Object[][] data = new Object[nobject][ncol]; + for (int i = 0; i < nobject; i++) { + data[i][0] = new JmolPanel(); + JmolViewer v = (JmolViewer)((JmolPanel)data[i][0]).getViewer(); + v.openFile(args[i]); + String strError = v.getOpenFileError(); + if (strError != null) { + Logger.error(strError); + } + + data[i][1] = args[i]; + } + String[] colNames = { "Structure", "Filename" }; + + showMolecules(colNames, data, nobject); + } + + public static void showMolecules(String[] colNames, Object[][] data, int nmol) { + + // set up the toplevel frame + JFrame frame = new JFrame("Structure Viewer"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // create a JTable with an AbstractTableModel + JTable mtable = new JTable( new JmolPanelJTableModel(data, colNames) ); + mtable.setShowGrid(true); + + // add a TableolumnModelListener so we can catch column + // resizes and change row heights accordingly + mtable.getColumnModel().addColumnModelListener( new JmolColumnModelListener(mtable) ); + + + // allow cell selections + mtable.setCellSelectionEnabled(true); + + // disable movement of columns. This is needed since we + // set the CellRenderer and CellEditor for a specific column + mtable.getTableHeader().setReorderingAllowed(false); + + + // set up scroll bar + JScrollPane scrollpane = new JScrollPane(mtable); + mtable.setPreferredScrollableViewportSize(new Dimension(500, 70)); + frame.getContentPane().add(scrollpane); + + // set the TableCellRenderer for the structure column + // we also set up a TableCellEditor so that events on a JmolPanel + // cell get forwarded to the actual JmolPanel + TableColumn col = mtable.getColumnModel().getColumn( STRUCTURE_COL); + col.setCellRenderer( new JmolPanelCellRenderer() ); + col.setCellEditor( new JmolPanelCellEditor() ); + + // start the show! + frame.pack(); + frame.setSize(300, 300); + frame.setVisible(true); + } + + static class JmolColumnModelListener implements TableColumnModelListener { + JTable table; + public JmolColumnModelListener(JTable t) { + this.table = t; + } + public void columnAdded(TableColumnModelEvent e) { + } + public void columnRemoved(TableColumnModelEvent e) { + } + public void columnMoved(TableColumnModelEvent e) { + } + public void columnMarginChanged(ChangeEvent e) { + int colwidth = this.table.getColumnModel().getColumn(STRUCTURE_COL).getWidth(); + for (int i = 0; i < this.table.getRowCount(); i++) { + this.table.setRowHeight(i, colwidth); + } + + } + public void columnSelectionChanged(ListSelectionEvent e) { + } + } + + static class JmolPanelJTableModel extends AbstractTableModel { + private Object[][] rows; + private String[] columns; + + public JmolPanelJTableModel(Object[][] objs, String[] cols) { + rows = objs; + columns = cols; + } + + public String getColumnName(int column) { + return columns[column]; + } + + public int getRowCount() { + return rows.length; + } + + public int getColumnCount() { + return columns.length; + } + + public Object getValueAt(int row, int column) { + return rows[row][column]; + } + + public boolean isCellEditable(int row, int column) { + if (column == STRUCTURE_COL) { + return true; + } + return false; + } + + public Class getColumnClass(int column) { + return getValueAt(0, column).getClass(); + } + } + + + + static class JmolPanelCellRenderer extends JmolPanel implements TableCellRenderer{ + public Component getTableCellRendererComponent( + JTable table, Object value, boolean isSelected, + boolean hasFocus, int rowIndex, int vColIndex ) { + return (JmolPanel)value; + } + + // The following methods override the defaults for performance reasons + public void validate() {} + public void revalidate() {} + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {} + public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {} + } + + static class JmolPanelCellEditor extends AbstractCellEditor implements TableCellEditor{ + + public Component getTableCellEditorComponent( + JTable table, Object value, boolean isSelected, + int row, int column) { + return (JmolPanel)value; + } + public Object getCellEditorValue() { + return new Object(); + } + public boolean isCellEditable(int row, int column) { + if (column == STRUCTURE_COL) { + return true; + } + return false; + } + public boolean stopCellEditing() { + return true; + } + } + + +} + + +class JmolPanel extends JPanel { + JmolViewer viewer; + JmolAdapter adapter; + JmolPanel() { + adapter = new SmarterJmolAdapter(); + viewer = JmolViewer.allocateViewer(this, adapter); + } + + public JmolViewer getViewer() { + return viewer; + } + final Dimension currentSize = new Dimension(); + public void paint(Graphics g) { + viewer.setScreenDimension(getSize(currentSize)); + Rectangle rectClip = new Rectangle(); + g.getClipBounds(rectClip); + viewer.renderScreenImage(g, currentSize, rectClip); + } + +} + + Property changes on: trunk/Jmol/examples/basic/org/jmol/JmolTable.java ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2009-08-13 10:48:08
|
Revision: 11315 http://jmol.svn.sourceforge.net/jmol/?rev=11315&view=rev Author: hansonr Date: 2009-08-13 10:48:01 +0000 (Thu, 13 Aug 2009) Log Message: ----------- examples fix for 11.8 Modified Paths: -------------- trunk/Jmol/examples/basic/CDKIntegration.java trunk/Jmol/examples/basic/org/jmol/Export.java trunk/Jmol/examples/basic/org/jmol/Integration.java trunk/Jmol/examples/basic/org/jmol/JmolTable.java Modified: trunk/Jmol/examples/basic/CDKIntegration.java =================================================================== --- trunk/Jmol/examples/basic/CDKIntegration.java 2009-08-13 10:36:15 UTC (rev 11314) +++ trunk/Jmol/examples/basic/CDKIntegration.java 2009-08-13 10:48:01 UTC (rev 11315) @@ -33,7 +33,7 @@ import javax.swing.JFrame; import javax.swing.JPanel; -import org.jmol.adapter.cdk.CdkJmolAdapter; +import org.jmol.adapter.cdk.CdkJmolAdapter; // doesn't exist import org.jmol.api.JmolAdapter; import org.jmol.api.JmolViewer; Modified: trunk/Jmol/examples/basic/org/jmol/Export.java =================================================================== --- trunk/Jmol/examples/basic/org/jmol/Export.java 2009-08-13 10:36:15 UTC (rev 11314) +++ trunk/Jmol/examples/basic/org/jmol/Export.java 2009-08-13 10:48:01 UTC (rev 11315) @@ -122,7 +122,7 @@ case JmolConstants.CALLBACK_MEASURE: break; case JmolConstants.CALLBACK_MESSAGE: - sendConsoleMessage((String) data[1]); + sendConsoleMessage(data == null ? null : (String) data[1]); break; case JmolConstants.CALLBACK_MINIMIZATION: break; Modified: trunk/Jmol/examples/basic/org/jmol/Integration.java =================================================================== --- trunk/Jmol/examples/basic/org/jmol/Integration.java 2009-08-13 10:36:15 UTC (rev 11314) +++ trunk/Jmol/examples/basic/org/jmol/Integration.java 2009-08-13 10:48:01 UTC (rev 11315) @@ -63,8 +63,8 @@ frame.setVisible(true); JmolSimpleViewer viewer = jmolPanel.getViewer(); - // this initial ZAP command is REQUIRED in Jmol 11.4. - viewer.evalString("zap"); + // this initial ZAP command was required in Jmol 11.4. + // viewer.evalString("zap"); // viewer.openFile("../samples/caffeine.xyz"); String strError = viewer.openFile("http://chemapps.stolaf.edu/jmol/docs/examples-11/data/caffeine.xyz"); Modified: trunk/Jmol/examples/basic/org/jmol/JmolTable.java =================================================================== --- trunk/Jmol/examples/basic/org/jmol/JmolTable.java 2009-08-13 10:36:15 UTC (rev 11314) +++ trunk/Jmol/examples/basic/org/jmol/JmolTable.java 2009-08-13 10:48:01 UTC (rev 11315) @@ -66,9 +66,11 @@ public static void main(String[] args) { + if (args.length == 0) + args = new String[] {"caffeine.xyz", "C6H6.smol" }; int nobject = args.length; int ncol = 2; - + Object[][] data = new Object[nobject][ncol]; for (int i = 0; i < nobject; i++) { data[i][0] = new JmolPanel(); @@ -231,6 +233,7 @@ JmolPanel() { adapter = new SmarterJmolAdapter(); viewer = JmolViewer.allocateViewer(this, adapter); + viewer.scriptWait("frank off;set defaultDirectory 'http://chemapps.stolaf.edu/jmol/docs/examples-11/data/'"); } public JmolViewer getViewer() { @@ -238,6 +241,7 @@ } final Dimension currentSize = new Dimension(); public void paint(Graphics g) { + System.out.println("JmolTable paint " + viewer + "\n" + g); viewer.setScreenDimension(getSize(currentSize)); Rectangle rectClip = new Rectangle(); g.getClipBounds(rectClip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |