Revision: 20315 http://sourceforge.net/p/jmol/code/20315 Author: hansonr Date: 2015-02-22 21:14:41 +0000 (Sun, 22 Feb 2015) Log Message: ----------- Jmol.___JmolVersion="14.3.12_2015.02.22b"
bug fix: JavaScript -2.format("%8.3") gives 2.000 not -2.000 Modified Paths: -------------- trunk/Jmol/src/javajs/api/GenericPlatform.java trunk/Jmol/src/javajs/util/DF.java trunk/Jmol/src/org/jmol/api/JmolAppConsoleInterface.java trunk/Jmol/src/org/jmol/awt/Image.java trunk/Jmol/src/org/jmol/awt/Platform.java trunk/Jmol/src/org/jmol/awtjs2d/Image.java trunk/Jmol/src/org/jmol/awtjs2d/Mouse.java trunk/Jmol/src/org/jmol/awtjs2d/Platform.java trunk/Jmol/src/org/jmol/console/AppletConsole.java trunk/Jmol/src/org/jmol/console/GenericConsole.java trunk/Jmol/src/org/jmol/console/JmolConsole.java trunk/Jmol/src/org/jmol/consolejs/AppletConsole.java trunk/Jmol/src/org/jmol/util/GenericApplet.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/StatusManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/console/AppConsole.java Added Paths: ----------- trunk/Jmol/src/org/jmol/api/JmolImageDialog.java trunk/Jmol/src/org/jmol/console/ImageDialog.java Removed Paths: ------------- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/ImageDialog.java Modified: trunk/Jmol/src/javajs/api/GenericPlatform.java =================================================================== --- trunk/Jmol/src/javajs/api/GenericPlatform.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/javajs/api/GenericPlatform.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -2,7 +2,11 @@ import java.net.URL; +import java.util.Map; +import org.jmol.api.JmolImageDialog; +import org.jmol.viewer.Viewer; + import javajs.awt.Font; import javajs.util.P3; @@ -133,4 +137,7 @@ String getLocalUrl(String fileName); + JmolImageDialog getImageDialog(String title, + Map<String, JmolImageDialog> imageMap); + } Modified: trunk/Jmol/src/javajs/util/DF.java =================================================================== --- trunk/Jmol/src/javajs/util/DF.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/javajs/util/DF.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -92,12 +92,14 @@ if (decimalDigits >= formattingStrings.length) decimalDigits = formattingStrings.length - 1; String s1 = ("" + value).toUpperCase(); + int pt = s1.indexOf("."); + if (pt < 0) // specifically JavaScript "-2" not "-2.0" + return s1 + formattingStrings[decimalDigits].substring(1); boolean isNeg = s1.startsWith("-"); - if (isNeg) + if (isNeg) { s1 = s1.substring(1); - int pt = s1.indexOf("."); - if (pt < 0) - return s1 + formattingStrings[decimalDigits].substring(1); + pt--; + } int pt1 = s1.indexOf("E-"); if (pt1 > 0) { n = PT.parseInt(s1.substring(pt1 + 1)); Modified: trunk/Jmol/src/org/jmol/api/JmolAppConsoleInterface.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolAppConsoleInterface.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/api/JmolAppConsoleInterface.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -20,5 +20,9 @@ public String getText(); + public Object newJMenu(String key); + public Object newJMenuItem(String key); + + } Added: trunk/Jmol/src/org/jmol/api/JmolImageDialog.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolImageDialog.java (rev 0) +++ trunk/Jmol/src/org/jmol/api/JmolImageDialog.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -0,0 +1,9 @@ +package org.jmol.api; + +public interface JmolImageDialog { + + void closeMe(); + + void setImage(Object image); + +} Property changes on: trunk/Jmol/src/org/jmol/api/JmolImageDialog.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Modified: trunk/Jmol/src/org/jmol/awt/Image.java =================================================================== --- trunk/Jmol/src/org/jmol/awt/Image.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/awt/Image.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -42,6 +42,7 @@ import java.awt.image.Raster; import java.awt.image.SinglePixelPackedSampleModel; import java.net.URL; +import java.util.Map; import javajs.api.PlatformViewer; import javajs.img.BMPDecoder; @@ -51,6 +52,8 @@ import javax.swing.JPanel; import org.jmol.api.Interface; +import org.jmol.api.JmolImageDialog; +import org.jmol.console.ImageDialog; import org.jmol.viewer.Viewer; /** @@ -260,4 +263,10 @@ ((java.awt.Graphics) graphicForText).dispose(); } + public static JmolImageDialog getImageDialog(PlatformViewer vwr, + String title, + Map<String, JmolImageDialog> imageMap) { + return new ImageDialog((Viewer) vwr, title, imageMap); + } + } Modified: trunk/Jmol/src/org/jmol/awt/Platform.java =================================================================== --- trunk/Jmol/src/org/jmol/awt/Platform.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/awt/Platform.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -9,6 +9,7 @@ import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; import javax.swing.JDialog; @@ -16,6 +17,8 @@ import netscape.javascript.JSObject; import org.jmol.api.Interface; +import org.jmol.api.JmolImageDialog; +import org.jmol.viewer.Viewer; import javajs.api.GenericPlatform; import javajs.api.GenericFileInterface; @@ -315,5 +318,11 @@ return AwtFile.getLocalUrl(newFile(fileName)); } + @Override + public JmolImageDialog getImageDialog(String title, + Map<String, JmolImageDialog> imageMap) { + return Image.getImageDialog(vwr, title, imageMap); + } + } Modified: trunk/Jmol/src/org/jmol/awtjs2d/Image.java =================================================================== --- trunk/Jmol/src/org/jmol/awtjs2d/Image.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/awtjs2d/Image.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -25,6 +25,11 @@ package org.jmol.awtjs2d; +import java.util.Map; + +import org.jmol.api.JmolImageDialog; +import org.jmol.viewer.Viewer; + import javajs.awt.Font; /** @@ -185,4 +190,19 @@ return null; } } + + public static JmolImageDialog getImageDialog(Viewer vwr, + String title, + Map<String, JmolImageDialog> imageMap) { + //TODO + + /** + * @j2sNative + * + * return null; + */ + { + return null; + } + } } Modified: trunk/Jmol/src/org/jmol/awtjs2d/Mouse.java =================================================================== --- trunk/Jmol/src/org/jmol/awtjs2d/Mouse.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/awtjs2d/Mouse.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -33,7 +33,6 @@ import javajs.J2SRequireImport; import javajs.api.EventManager; import javajs.api.GenericMouseInterface; -import javajs.api.PlatformViewer; import javajs.awt.event.Event; import javajs.util.PT; import javajs.util.V3; @@ -58,9 +57,9 @@ * @param vwr * @param display */ - public Mouse(double privateKey, PlatformViewer vwr, Object display) { + public Mouse(double privateKey, Viewer vwr, Object display) { //this.privateKey = privateKey; could be used for clipboard access - this.vwr = (Viewer) vwr; + this.vwr = vwr; manager = this.vwr.acm; } Modified: trunk/Jmol/src/org/jmol/awtjs2d/Platform.java =================================================================== --- trunk/Jmol/src/org/jmol/awtjs2d/Platform.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/awtjs2d/Platform.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -2,8 +2,10 @@ import java.io.BufferedInputStream; import java.net.URL; +import java.util.Map; import org.jmol.api.Interface; +import org.jmol.api.JmolImageDialog; import org.jmol.viewer.Viewer; import javajs.api.GenericPlatform; @@ -85,7 +87,7 @@ @Override public GenericMouseInterface getMouseManager(double privateKey, Object display) { - return new Mouse(privateKey, vwr, display); + return new Mouse(privateKey, (Viewer) vwr, display); } // /// Display @@ -457,5 +459,11 @@ return null; } + @Override + public JmolImageDialog getImageDialog(String title, + Map<String, JmolImageDialog> imageMap) { + return Image.getImageDialog((Viewer) vwr, title, imageMap); + } + } Modified: trunk/Jmol/src/org/jmol/console/AppletConsole.java =================================================================== --- trunk/Jmol/src/org/jmol/console/AppletConsole.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/console/AppletConsole.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -91,10 +91,10 @@ public void start(Viewer vwr) { setViewer(vwr); Component display = (Component) vwr.display; - this.vwrFrame = (display instanceof JFrame ? (JFrame) display : null); + vwrFrame = (display instanceof JFrame ? (JFrame) display : null); JFrame jf = new JFrame(); jf.setSize(600, 400); - this.externalContainer = jf; + externalContainer = jf; setLabels(); JTextArea ta = (JTextArea) input; ta.setLineWrap(true); @@ -263,5 +263,4 @@ } } } - } Modified: trunk/Jmol/src/org/jmol/console/GenericConsole.java =================================================================== --- trunk/Jmol/src/org/jmol/console/GenericConsole.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/console/GenericConsole.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -49,9 +49,16 @@ protected void setViewer(Viewer vwr) { this.vwr = vwr; + if (labels == null) { + Map<String, String> l = new Hashtable<String, String>(); + l.put("title", GT._("Jmol Script Console") + " " + Viewer.getJmolVersion()); + setupLabels(l); + labels = l; + } + } - protected Map<String, String> labels; + protected static Map<String, String> labels; protected Map<String, Object> menuMap = new Hashtable<String, Object>(); protected JmolAbstractButton editButton, runButton, historyButton, stateButton; protected JmolAbstractButton clearOutButton, clearInButton, loadButton; @@ -71,14 +78,22 @@ protected JmolAbstractButton addButton(JmolAbstractButton b, String label) { b.addConsoleListener(this); menuMap.put(label, b); - return b; + return b; } protected JmolAbstractButton getLabel1() { return null; } - protected void setupLabels() { + protected void setupLabels(Map<String, String> labels) { + // these three are for ImageDialog + labels.put("saveas", GT._("&Save As...")); + labels.put("file", GT._("&File")); + labels.put("close", GT._("&Close")); + setupLabels0(labels); + } + + protected void setupLabels0(Map<String, String> labels) { labels.put("help", GT._("&Help")); labels.put("search", GT._("&Search...")); labels.put("commands", GT._("&Commands")); @@ -112,12 +127,7 @@ GT.setDoTranslate(doTranslate); } - protected String getLabel(String key) { - if (labels == null) { - labels = new Hashtable<String, String>(); - labels.put("title", GT._("Jmol Script Console") + " " + Viewer.getJmolVersion()); - setupLabels(); - } + public static String getLabel(String key) { return labels.get(key); } @@ -275,7 +285,8 @@ char mnemonic = getMnemonic(label); if (mnemonic != ' ') ((JmolAbstractButton) button).setMnemonic(mnemonic); - menuMap.put(key, button); + if (menuMap != null) + menuMap.put(key, button); } ///////////// JmolCallbackListener interface @@ -519,5 +530,4 @@ } - } Copied: trunk/Jmol/src/org/jmol/console/ImageDialog.java (from rev 20311, trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/ImageDialog.java) =================================================================== --- trunk/Jmol/src/org/jmol/console/ImageDialog.java (rev 0) +++ trunk/Jmol/src/org/jmol/console/ImageDialog.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -0,0 +1,207 @@ +/* $RCSfile$ + * $Author: hansonr $ + * $Date: 2014-03-20 17:22:16 -0500 (Thu, 20 Mar 2014) $ + * $Revision: 19476 $ + * + * Copyright (C) 2002-2005 The Jmol Development Team + * + * Contact: jmol-develop...@lists.sf.net + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jmol.console; + + +import javajs.util.PT; + +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; + +import java.awt.BorderLayout; +import java.awt.Canvas; +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; +import java.awt.Image; +import java.util.Hashtable; +import java.util.Map; + +import org.jmol.api.JmolAppConsoleInterface; +import org.jmol.api.JmolImageDialog; +import org.jmol.awt.Platform; +import org.jmol.viewer.Viewer; + +public class ImageDialog extends JDialog implements JmolImageDialog, WindowListener, ActionListener { + + + private JMenuBar menubar; + + protected Image image; + + protected Viewer vwr; + protected Canvas canvas; + private String title; + private Map<String, JmolImageDialog> imageMap; + + private JmolAppConsoleInterface console; + + public ImageDialog(Viewer vwr, String title, Map<String, JmolImageDialog> imageMap){ + super(Platform.getWindow((Container) vwr.display) instanceof JFrame ? (JFrame) Platform.getWindow((Container) vwr.display) : null, title, false); + this.vwr = vwr; + console = vwr.getConsole(); + addWindowListener(this); + this.title = title; + this.imageMap = imageMap; + imageMap.put(title, this); + JPanel wrapper = new JPanel(new BorderLayout()); + wrapper.setBackground(new Color(255,0,0)); + canvas = new ImageCanvas(); + wrapper.add(canvas, BorderLayout.CENTER); + JPanel container = new JPanel(); + container.setLayout(new BorderLayout()); + menubar = new JMenuBar(); + // see app.jmolpanel.jmol.Properties.Jmol-reseources.properties + menubar.add(createMenu()); + setJMenuBar(menubar); + container.add(wrapper, BorderLayout.CENTER); + getContentPane().add(container); + pack(); + setLocation(100, 100); + setVisible(true); + } + + private JMenu createMenu() { + + // Get list of items from resource file: + String[] itemKeys = PT.getTokens("saveas close"); + // Get label associated with this menu: + vwr.getConsole(); + JMenu menu = (JMenu) console.newJMenu("file"); + // Loop over the items in this menu: + for (int i = 0; i < itemKeys.length; i++) { + String item = itemKeys[i]; + JMenuItem mi = createMenuItem(item); + menu.add(mi); + } + menu.setVisible(true); + return menu; + } + + private JMenuItem createMenuItem(String cmd) { + JMenuItem mi = (JMenuItem) console.newJMenuItem(cmd); + mi.setActionCommand(cmd); + mi.addActionListener(this); + mi.setVisible(true); + return mi; + } + + @Override + public void actionPerformed(ActionEvent e) { + String cmd = e.getActionCommand(); + if (cmd.equals("close")) { + closeMe(); + } else if (cmd.equals("saveas")) { + saveAs(); + } + } + + private void saveAs() { + (new Thread(new Runnable() { + @Override + public void run() { + Map<String, Object>params = new Hashtable<String, Object>(); + String fname = vwr.dialogAsk("Save Image", "jmol.png", params); + if (fname == null) + return; + String type = "PNG"; + int pt = fname.lastIndexOf("."); + if (pt > 0) + type = fname.substring(pt + 1).toUpperCase(); + params.put("fileName", fname); + params.put("type", type); + params.put("image", image); + vwr.showString(vwr.processWriteOrCapture(params), false); + } + }) { + }).start(); + } + + @Override + public void closeMe() { + imageMap.remove(title); + dispose(); + } + + @Override + public void setImage(Object oimage) { + if (oimage == null) { + closeMe(); + return; + } + this.image = (Image) oimage; + int w = image.getWidth(null); + int h = image.getHeight(null); + setTitle(title.substring(title.lastIndexOf("/") + 1) + " [" + w + " x " + h + + "]"); + Dimension d = new Dimension(w, h); + canvas.setSize(d); + //canvas.setBackground(new Color(55,0,0)); + //setPreferredSize(d); + pack(); + repaint(); + } + + + class ImageCanvas extends Canvas { + @Override + public void paint(Graphics g) { + g.drawImage(image, 0, 0, null); + } + } + + @Override + public void windowClosed(WindowEvent e) { + } + + @Override + public void windowOpened(WindowEvent e) { + } + @Override + public void windowClosing(WindowEvent e) { + closeMe(); + } + @Override + public void windowIconified(WindowEvent e) { + } + @Override + public void windowDeiconified(WindowEvent e) { + } + @Override + public void windowActivated(WindowEvent e) { + } + @Override + public void windowDeactivated(WindowEvent e) { + } + +} Modified: trunk/Jmol/src/org/jmol/console/JmolConsole.java =================================================================== --- trunk/Jmol/src/org/jmol/console/JmolConsole.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/console/JmolConsole.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -227,4 +227,17 @@ public void windowOpened(WindowEvent we) { } + + @Override + public Object newJMenu(String key) { + return new KeyJMenu(key, getLabel(key), null); + } + + @Override + public Object newJMenuItem(String key) { + return new KeyJMenuItem(key, getLabel(key), null); + } + + + } Modified: trunk/Jmol/src/org/jmol/consolejs/AppletConsole.java =================================================================== --- trunk/Jmol/src/org/jmol/consolejs/AppletConsole.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/consolejs/AppletConsole.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -135,4 +135,15 @@ return null; } + @Override + public Object newJMenu(String key) { + return null; + } + + @Override + public Object newJMenuItem(String key) { + return null; + } + + } Modified: trunk/Jmol/src/org/jmol/util/GenericApplet.java =================================================================== --- trunk/Jmol/src/org/jmol/util/GenericApplet.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/util/GenericApplet.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -90,7 +90,7 @@ abstract protected void doShowDocument(URL url); abstract protected void doShowStatus(String errorMsg); - + protected void init(Object applet) { callbacks = new Hashtable<CBK, String>(); if (htRegistry == null) Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2015-02-22 21:14:41 UTC (rev 20315) @@ -15,18 +15,37 @@ TODO: remove HTML5 dependency on synchronous file loading (check SCRIPT command for problems) TODO: implement SHOW IMAGE in JavaScript/Browser -Jmol.___JmolVersion="14.3.12_2015.02.22" +Jmol.___JmolVersion="14.3.12_2015.02.22b" +bug fix: JavaScript -2.format("%8.3") gives 2.000 not -2.000 + +new feature: +JmolVersion="14.3.12_2015.02.22" + bug fix: minimizer treats hydrogen bonds as covalent single bonds new feature: Windows BMP image reading - + -- reads 24-bit (full color) as well as 16-, 8-, 4-, 2-, and 1-bit color palette modes + -- 14-byte and 40-byte headers only + -- does not read compressed modes + new feature: (application only) show IMAGE -- pops up a frame with the current image + -- allows "Save As..." new feature: (application only) show IMAGE "filename" -- pops up a frame with the image loaded from a file + -- allows "Save As..." +new feature: (application only) show IMAGE NONE + -- closes all image windows + +new feature: (application only) write IMAGE + -- same as SHOW IMAGE + +new feature: (application only) write IMAGE 500 500 + -- similar to SHOW IMAGE; allows customization of width and height + code: javajs.img.bMPDecoder code: org.openscience.jmol.app.jmolpanel.ImageDialog Modified: trunk/Jmol/src/org/jmol/viewer/StatusManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/viewer/StatusManager.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -41,6 +41,7 @@ import org.jmol.api.JmolAppConsoleInterface; import org.jmol.api.JmolCallbackListener; import org.jmol.api.JmolDialogInterface; +import org.jmol.api.JmolImageDialog; import org.jmol.api.JmolStatusListener; import org.jmol.c.CBK; import org.jmol.java.BS; @@ -353,11 +354,37 @@ new Object[] {sJmol, strInfo, Integer.valueOf(-1), id, Float.valueOf(pt.x), Float.valueOf(pt.y), Float.valueOf(pt.z) }); } + private Map<String, JmolImageDialog> imageMap; + synchronized void showImage(String title, Object image) { String sJmol = jmolScriptCallback(CBK.IMAGE); if (notifyEnabled(CBK.IMAGE)) - cbl.notifyCallback(CBK.IMAGE, - new Object[] {sJmol, title, image }); + cbl.notifyCallback(CBK.IMAGE, new Object[] { sJmol, title, image }); + if (title.equalsIgnoreCase("none")) { + if (imageMap == null) + return; + Lst<String> lst = new Lst<String>(); + for (String key : imageMap.keySet()) + lst.addLast(key); + for (int i = lst.size(); --i >= 0;) + imageMap.get(lst.get(i)).closeMe(); + return; + } + if (imageMap == null) + imageMap = new Hashtable<String, JmolImageDialog>(); + JmolImageDialog d = imageMap.get(title); + System.out.println("statusma1n " + d + " " + image); + if (d == null && image != null) + d = vwr.apiPlatform.getImageDialog(title, imageMap); + System.out.println("statusman2 " + d + " " + image); + if (d == null) + return; + if (image == null) + d.closeMe(); + else + d.setImage(image); + System.out.println("statusman done"); + } synchronized void setFileLoadStatus(String fullPathName, String fileName, Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -4822,13 +4822,18 @@ // Eval try { if (appConsole == null && showConsole) - getProperty("DATA_API", "getAppConsole", Boolean.TRUE); + getConsole(); appConsole.setVisible(true); } catch (Throwable e) { // no console for this client... maybe no Swing } } + public JmolAppConsoleInterface getConsole() { + getProperty("DATA_API", "getAppConsole", Boolean.TRUE); + return appConsole; + } + @Override public Object getParameter(String key) { return getP(key); @@ -7981,7 +7986,7 @@ */ void loadImageData(Object image, String nameOrError, String echoName, ScriptContext sc) { - if (image == null) + if (image == null && !"\1none".equalsIgnoreCase(echoName)) scriptEcho(nameOrError); if (echoName == null) { setBackgroundImage((image == null ? null : nameOrError), image); Deleted: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/ImageDialog.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/ImageDialog.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/ImageDialog.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -1,213 +0,0 @@ -/* $RCSfile$ - * $Author: hansonr $ - * $Date: 2014-03-20 17:22:16 -0500 (Thu, 20 Mar 2014) $ - * $Revision: 19476 $ - * - * Copyright (C) 2002-2005 The Jmol Development Team - * - * Contact: jmol-develop...@lists.sf.net - * - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - */ -package org.openscience.jmol.app.jmolpanel; - - -import javajs.util.PT; - -import javax.swing.ImageIcon; -import javax.swing.JDialog; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.SwingConstants; - -import java.awt.BorderLayout; -import java.awt.Canvas; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowEvent; -import java.awt.event.WindowListener; -import java.awt.Image; -import java.util.Hashtable; -import java.util.Map; - -import org.jmol.viewer.Viewer; - -class ImageDialog extends JDialog implements WindowListener, ActionListener { - - - private JMenuBar menubar; - - protected Image image; - - protected Viewer vwr; - protected Canvas canvas; - private String title; - private Map<String, ImageDialog> imageMap; - - ImageDialog(JmolPanel jmol, Viewer vwr, String title, Map<String, ImageDialog> imageMap) { - super(jmol.frame, title, false); - this.vwr = vwr; - addWindowListener(this); - this.title = title; - this.imageMap = imageMap; - imageMap.put(title, this); - JPanel wrapper = new JPanel(new BorderLayout()); - wrapper.setBackground(new Color(255,0,0)); - canvas = new ImageCanvas(); - wrapper.add(canvas, BorderLayout.CENTER); - JPanel container = new JPanel(); - container.setLayout(new BorderLayout()); - menubar = new JMenuBar(); - // see app.jmolpanel.jmol.Properties.Jmol-reseources.properties - menubar.add(createMenu(jmol.guimap, "idfileMenu")); - setJMenuBar(menubar); - container.add(wrapper, BorderLayout.CENTER); - getContentPane().add(container); - pack(); - setLocation(100, 100); - setVisible(true); - } - - private JMenu createMenu(GuiMap guimap, String key) { - - // Get list of items from resource file: - String[] itemKeys = PT.getTokens(JmolResourceHandler.getStringX(key)); - // Get label associated with this menu: - JMenu menu = guimap.newJMenu(key); - ImageIcon f = JmolResourceHandler.getIconX(key + "Image"); - if (f != null) { - menu.setHorizontalTextPosition(SwingConstants.RIGHT); - menu.setIcon(f); - } - - // Loop over the items in this menu: - for (int i = 0; i < itemKeys.length; i++) { - String item = itemKeys[i]; - if (item.equals("-")) { - menu.addSeparator(); - } else if (item.endsWith("Menu")) { - menu.add(createMenu(guimap, item)); - } else { - JMenuItem mi = createMenuItem(guimap, item); - menu.add(mi); - } - } - menu.setVisible(true); - return menu; - } - - private JMenuItem createMenuItem(GuiMap guimap, String cmd) { - - JMenuItem mi = guimap.newJMenuItem(cmd); - ImageIcon f = JmolResourceHandler.getIconX(cmd + "Image"); - if (f != null) { - mi.setHorizontalTextPosition(SwingConstants.RIGHT); - mi.setIcon(f); - } - mi.setActionCommand(cmd); - mi.addActionListener(this); - mi.setVisible(true); - return mi; - } - - @Override - public void actionPerformed(ActionEvent e) { - String cmd = e.getActionCommand(); - if (cmd.equals("close")) { - closeMe(); - } else if (cmd.equals("saveas")) { - saveAs(); - } - } - - private void saveAs() { - (new Thread(new Runnable() { - @Override - public void run() { - Map<String, Object>params = new Hashtable<String, Object>(); - String fname = vwr.dialogAsk("Save Image", "jmol.png", params); - if (fname == null) - return; - String type = "PNG"; - int pt = fname.lastIndexOf("."); - if (pt > 0) - type = fname.substring(pt + 1).toUpperCase(); - params.put("fileName", fname); - params.put("type", type); - params.put("image", image); - vwr.showString(vwr.processWriteOrCapture(params), false); - } - }) { - }).start(); - } - - private void closeMe() { - imageMap.remove(title); - dispose(); - } - - public void setImage(Image image) { - if (image != null) { - this.image = image; - int w = image.getWidth(null); - int h = image.getHeight(null); - setTitle(title.substring(title.lastIndexOf("/") + 1) + " [" + w + " x " + h + "]"); - Dimension d = new Dimension(w, h); - canvas.setSize(d); - //canvas.setBackground(new Color(55,0,0)); - //setPreferredSize(d); - pack(); - } - repaint(); - } - - - class ImageCanvas extends Canvas { - @Override - public void paint(Graphics g) { - g.drawImage(image, 0, 0, null); - } - } - - @Override - public void windowClosed(WindowEvent e) { - } - - @Override - public void windowOpened(WindowEvent e) { - } - @Override - public void windowClosing(WindowEvent e) { - closeMe(); - } - @Override - public void windowIconified(WindowEvent e) { - } - @Override - public void windowDeiconified(WindowEvent e) { - } - @Override - public void windowActivated(WindowEvent e) { - } - @Override - public void windowDeactivated(WindowEvent e) { - } - -} Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/JmolPanel.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -125,7 +125,7 @@ protected NBODialog nboDialog; protected RecentFilesDialog recentFiles; protected AtomSetChooser atomSetChooser; - protected JFrame frame; + public JFrame frame; protected SplashInterface splash; protected JFrame consoleframe; protected JsonNioServer service; @@ -133,7 +133,7 @@ protected int qualityPNG = -1; protected String imageType; - protected GuiMap guimap = new GuiMap(); + public GuiMap guimap = new GuiMap(); private ExecuteScriptAction executeScriptAction; private PreferencesDialog preferencesDialog; private StatusListener myStatusListener; Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/StatusListener.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -26,11 +26,14 @@ import org.jmol.api.JSVInterface; import org.jmol.api.JmolAppConsoleInterface; import org.jmol.api.JmolCallbackListener; +import org.jmol.api.JmolImageDialog; import org.jmol.api.JmolStatusListener; import org.jmol.api.JmolSyncInterface; import org.jmol.c.CBK; +import org.jmol.console.ImageDialog; import org.jmol.dialog.Dialog; import javajs.awt.Dimension; +import javajs.util.Lst; import javajs.util.PT; import org.jmol.util.Logger; @@ -126,9 +129,6 @@ .toString()); Map<String, Object> info; switch (type) { - case IMAGE: - notifyImageCreated(strInfo, (Image) data[2]); - return; case LOADSTRUCT: notifyFileLoaded(strInfo, (String) data[2], (String) data[3], (String) data[4], (Boolean) data[8]); @@ -210,6 +210,7 @@ case DRAGDROP: case ERROR: case HOVER: + case IMAGE: case MINIMIZATION: case RESIZE: case EVAL: @@ -228,15 +229,6 @@ appConsole.notifyCallback(type, data); } - private Map<String, ImageDialog> imageMap; - private void notifyImageCreated(String title, Image image) { - if (imageMap == null) - imageMap = new Hashtable<String, ImageDialog>(); - ImageDialog d = imageMap.get(title); - if (d == null) - d = new ImageDialog(jmol, vwr, title, imageMap); - d.setImage(image); - } /** * @param atomIndex Modified: trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/console/AppConsole.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/console/AppConsole.java 2015-02-22 20:53:08 UTC (rev 20314) +++ trunk/Jmol/src/org/openscience/jmol/app/jmolpanel/console/AppConsole.java 2015-02-22 21:14:41 UTC (rev 20315) @@ -33,6 +33,7 @@ import java.awt.event.ActionEvent; import java.net.URL; import java.util.List; +import java.util.Map; import javajs.util.PT; @@ -159,7 +160,7 @@ } @Override - protected void setupLabels() { + protected void setupLabels0(Map<String, String> labels) { labels.put("Check", GT._("Check")); labels.put("Clear", GT._("Clear")); labels.put("Close", GT._("Close")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits