Class JMSketch

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Panel
              extended by java.applet.Applet
                  extended by javax.swing.JApplet
                      extended by JMSketch
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, JMSketchIface, MAppletIface

public class JMSketch
extends javax.swing.JApplet
implements java.awt.event.MouseListener, java.beans.PropertyChangeListener, JMSketchIface

Swing version of the MarvinSketch Applet.

Since:
Marvin 2.0
Version:
5.2.3, 06/20/2009
Author:
Peter Csizmadia, Nora Mate, Zsolt Mohacsi, Istvan Fajth, Tamas Vertse
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JApplet
javax.swing.JApplet.AccessibleJApplet
 
Nested classes/interfaces inherited from class java.applet.Applet
java.applet.Applet.AccessibleApplet
 
Nested classes/interfaces inherited from class java.awt.Panel
java.awt.Panel.AccessibleAWTPanel
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JApplet
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JMSketch()
           
 
Method Summary
 void destroy()
          Disposes all the frames and removes references to the sketcher.
 java.lang.String evaluateChemicalTerms(java.lang.String expression)
          Evaluates a Chemical Terms expression on the molecule in MarvinSketch, and returns the result in string format.
 java.lang.String getAppletInfo()
          Returns a string containing the version and the author.
 java.lang.String getAtomAlias(int i)
          Gets atom alias.
 int getAtomCount()
          Returns the number of atoms.
 java.lang.String getAtomExtraLabel(int i)
          Gets extra atom label.
 boolean getAutoScale()
          Returns the autoscale property.
 java.lang.String getImageShowURL()
          Gets the show image URL.
 java.lang.String getMol(java.lang.String fmt)
          Gets the molecule in a text format.
 double getMolExactMass()
          Gets the exact molecule weight.
 java.lang.String getMolFormula()
          Gets the molecule formula.
 double getMolMass()
          Gets the molecule weight.
 java.lang.String getMolProperty(java.lang.String key)
          Gets an RDfile/SDfile property.
 int getMolPropertyCount()
          Gets the number of RDfile/SDfile properties.
 java.lang.String getMolPropertyKey(int i)
          Gets an RDfile/SDfile property key.
 java.lang.String getPiece(java.lang.String fmt)
          Gets the current molecule piece in the specified format.
 double getScale()
          Gets the magnification.
 java.lang.String getSelectedMol(java.lang.String fmt)
          Gets the selected molecule part in a text format.
 boolean hasValenceError()
          Determines if this molecule has a valence error on any of its atoms.
 void init()
          Initializes the applet.
 boolean isAtomSelected(int i)
          Returns true if atom is selected.
 boolean isChemicalTermsExpressionSyntaxError()
          Returns true, if the last Chemical Terms expression evaluated by the JMSketchIface.evaluateChemicalTerms(String) method is a syntactically not correct expression.
 boolean isEmpty()
          Returns true sketcher canvas is empty.
 void mouseClicked(java.awt.event.MouseEvent ev)
          Does nothing.
 void mouseEntered(java.awt.event.MouseEvent ev)
          Does nothing.
 void mouseExited(java.awt.event.MouseEvent ev)
          Does nothing.
 void mousePressed(java.awt.event.MouseEvent ev)
          Does nothing.
 void mouseReleased(java.awt.event.MouseEvent ev)
          Handles the viewer button press events.
 void postImage(java.lang.String fmt, java.lang.String where)
          Posts image to CGI script.
 void propertyChange(java.beans.PropertyChangeEvent ev)
          Invoke propertyChange(prop) JavaScript method on applet's page.
 void redo()
          Invokes the Redo command.
 void selectAllAtoms(boolean v)
          Select or unselect all atoms in the specified molecule.
 void selectAtom(int atom, boolean v)
          Select or unselect an atom in the specified molecule.
 void setAtomAlias(int i, java.lang.String alias)
          Sets atom alias.
 void setAtomExtraLabel(int i, java.lang.String label)
          Sets extra atom label.
 void setAutoScale(boolean as)
          Sets the autoscale property.
 void setMol(java.lang.String s)
          Starts loading a molecule into the sketcher in a separate thread.
 void setMol(java.lang.String s, java.lang.String opts)
          Starts loading a molecule into the sketcher in a separate thread.
 void setMolProperty(java.lang.String key, java.lang.String value)
          Sets an RDfile/SDfile property.
 void setParentApplet(javax.swing.JApplet parent)
          
 void setPiece(java.lang.String s)
          Sets the current piece.
 void setScale(double m)
          Sets the magnification.
 void start()
          Starts the applet.
 void stop()
          Hide the frames when stopped.
 void undo()
          Invokes the Undo command.
 
Methods inherited from class javax.swing.JApplet
addImpl, createRootPane, getAccessibleContext, getContentPane, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isRootPaneCheckingEnabled, paramString, remove, setContentPane, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.applet.Applet
getAppletContext, getAudioClip, getAudioClip, getCodeBase, getDocumentBase, getImage, getImage, getLocale, getParameter, getParameterInfo, isActive, newAudioClip, play, play, resize, resize, setStub, showStatus
 
Methods inherited from class java.awt.Panel
addNotify
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

JMSketch

public JMSketch()
Method Detail

init

public void init()
Initializes the applet.

Overrides:
init in class java.applet.Applet

start

public void start()
Starts the applet.

Overrides:
start in class java.applet.Applet

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent ev)
Invoke propertyChange(prop) JavaScript method on applet's page. Only for internal usage.

Specified by:
propertyChange in interface java.beans.PropertyChangeListener
Since:
Marvin 5.0 08/29/2007

stop

public void stop()
Hide the frames when stopped.

Overrides:
stop in class java.applet.Applet

destroy

public void destroy()
Disposes all the frames and removes references to the sketcher.

Overrides:
destroy in class java.applet.Applet

getAppletInfo

public java.lang.String getAppletInfo()
Returns a string containing the version and the author.

Overrides:
getAppletInfo in class java.applet.Applet
Returns:
the information

isEmpty

public boolean isEmpty()
Returns true sketcher canvas is empty.

Specified by:
isEmpty in interface JMSketchIface
Returns:
true if sketcher canvas is empty
Since:
Marvin 3.5.1

getSelectedMol

public java.lang.String getSelectedMol(java.lang.String fmt)
Gets the selected molecule part in a text format. Should be called after the molecule has been loaded. The format descriptor string can also contain export options. Format and options are separated by a colon, multiple options can be separated by commas. See the text formats and their options on the File Formats in Marvin page. Examples:
 s1 = msketch.getSelectedMol("mol");
 s2 = msketch.getSelectedMol("smiles:a-H"); // aromatize and remove Hydrogens
 

Specified by:
getSelectedMol in interface JMSketchIface
Parameters:
fmt - the format descriptor string
Returns:
string containing the molecule in a molecule file format
Since:
Marvin 4.0.2

getMol

public java.lang.String getMol(java.lang.String fmt)
Gets the molecule in a text format. Should be called after the molecule has been loaded. The format descriptor string can also contain export options. Format and options are separated by a colon, multiple options can be separated by commas. See the text formats and their options on the File Formats in Marvin page. Examples:
 s1 = msketch.getMol("mol");
 s2 = msketch.getMol("smiles:a-H"); // aromatize and remove Hydrogens
 

Specified by:
getMol in interface JMSketchIface
Parameters:
fmt - the format descriptor string
Returns:
string containing the molecule in a molecule file format

getMolProperty

public java.lang.String getMolProperty(java.lang.String key)
Gets an RDfile/SDfile property. Should be called after the molecule has been loaded.

Specified by:
getMolProperty in interface JMSketchIface
Parameters:
key - the property key
Returns:
the value of the property, or null if the key is not found
Since:
Marvin 3.4.1

setMolProperty

public void setMolProperty(java.lang.String key,
                           java.lang.String value)
Sets an RDfile/SDfile property. Setting null value removes the property. Should be called after the molecule has been loaded.

Specified by:
setMolProperty in interface JMSketchIface
Parameters:
key - the property name
value - the value or null
Since:
Marvin 3.4.1

getMolPropertyCount

public int getMolPropertyCount()
Gets the number of RDfile/SDfile properties. Should be called after the molecule has been loaded.

Specified by:
getMolPropertyCount in interface JMSketchIface
Returns:
the number of RDfile/SDfile properties
Since:
Marvin 3.5

getMolPropertyKey

public java.lang.String getMolPropertyKey(int i)
Gets an RDfile/SDfile property key. Should be called after the molecule has been loaded.

Specified by:
getMolPropertyKey in interface JMSketchIface
Parameters:
i - the property key index
Returns:
the property key
Since:
Marvin 3.5

getAtomCount

public int getAtomCount()
Returns the number of atoms. Should be called after the molecule has been loaded.

Specified by:
getAtomCount in interface JMSketchIface
Returns:
the number of atoms
Since:
Marvin 3.5.1

isAtomSelected

public boolean isAtomSelected(int i)
Returns true if atom is selected. Should be called after the molecule has been loaded.

Specified by:
isAtomSelected in interface JMSketchIface
Parameters:
i - the atom index
Returns:
true if atom is selected
Since:
Marvin 3.5.1

selectAllAtoms

public void selectAllAtoms(boolean v)
Select or unselect all atoms in the specified molecule.

Specified by:
selectAllAtoms in interface JMSketchIface
Parameters:
v - select (true) or unselect (false)
Since:
Marvin 5.0.3, 03/25/2008

selectAtom

public void selectAtom(int atom,
                       boolean v)
Select or unselect an atom in the specified molecule.

Specified by:
selectAtom in interface JMSketchIface
Parameters:
atom - atom index
v - select (true) or unselect (false)
Since:
Marvin 5.0.3, 03/25/2008

setAtomAlias

public void setAtomAlias(int i,
                         java.lang.String alias)
Sets atom alias. Should be called after the molecule has been loaded.

Specified by:
setAtomAlias in interface JMSketchIface
Parameters:
i - the atom index
alias - the alias
Since:
Marvin 3.5

getAtomAlias

public java.lang.String getAtomAlias(int i)
Gets atom alias. Should be called after the molecule has been loaded.

Specified by:
getAtomAlias in interface JMSketchIface
Parameters:
i - the atom index
Returns:
the atom alias
Since:
Marvin 3.5

setAtomExtraLabel

public void setAtomExtraLabel(int i,
                              java.lang.String label)
Sets extra atom label. Should be called after the molecule has been loaded.

Specified by:
setAtomExtraLabel in interface JMSketchIface
Parameters:
i - the atom index
label - the extra atom label
Since:
Marvin 3.5

getAtomExtraLabel

public java.lang.String getAtomExtraLabel(int i)
Gets extra atom label. Should be called after the molecule has been loaded.

Specified by:
getAtomExtraLabel in interface JMSketchIface
Parameters:
i - the atom index
Returns:
the extra atom label
Since:
Marvin 3.5

getMolMass

public double getMolMass()
Gets the molecule weight. Should be called after the molecule has been loaded.

Specified by:
getMolMass in interface JMSketchIface
Returns:
the molecule weight
Since:
Marvin 4.0.2

getMolExactMass

public double getMolExactMass()
Gets the exact molecule weight. Should be called after the molecule has been loaded.

Specified by:
getMolExactMass in interface JMSketchIface
Returns:
the exact molecule weight
Since:
Marvin 4.0.2

getMolFormula

public java.lang.String getMolFormula()
Gets the molecule formula. Should be called after the molecule has been loaded.

Specified by:
getMolFormula in interface JMSketchIface
Returns:
the molecule formula
Since:
Marvin 4.0.2

evaluateChemicalTerms

public java.lang.String evaluateChemicalTerms(java.lang.String expression)
Evaluates a Chemical Terms expression on the molecule in MarvinSketch, and returns the result in string format. Should be called after the molecule has been loaded.

Examples:
 s1 = MSketch.evaluateChemicalTerms("atomCount()");
 s2 = MSketch.evaluateChemicalTerms("logP() <= 5");
 
See the Chemical Terms Language Reference and the Chemical Terms Reference Tables for more.

Specified by:
evaluateChemicalTerms in interface JMSketchIface
Parameters:
expression - the Chemical Terms expression
Returns:
the result of the evaluation
Since:
Marvin 5.1

isChemicalTermsExpressionSyntaxError

public boolean isChemicalTermsExpressionSyntaxError()
Returns true, if the last Chemical Terms expression evaluated by the JMSketchIface.evaluateChemicalTerms(String) method is a syntactically not correct expression. Should be called after JMSketchIface.evaluateChemicalTerms(String).

Specified by:
isChemicalTermsExpressionSyntaxError in interface JMSketchIface
Returns:
true, if the last evaluated Chemical Terms expression is syntactically not correct
Since:
Marvin 5.1.2

setMol

public void setMol(java.lang.String s)
Starts loading a molecule into the sketcher in a separate thread.

Specified by:
setMol in interface JMSketchIface
Parameters:
s - molfile contents, URL or (Unix) filename

setMol

public void setMol(java.lang.String s,
                   java.lang.String opts)
Starts loading a molecule into the sketcher in a separate thread. The file format and/or import options can be specified if the second argument is in one of the following forms: "options", "format:", or "format:options". See the text formats and their options on the File Formats in Marvin page.

Specified by:
setMol in interface JMSketchIface
Parameters:
s - molfile contents, URL or (Unix) filename
opts - options or null
Since:
Marvin 3.3

getPiece

public java.lang.String getPiece(java.lang.String fmt)
Gets the current molecule piece in the specified format. Should be called after the molecule has been loaded.

Specified by:
getPiece in interface JMSketchIface
Parameters:
fmt - the format
Returns:
the molecule in a molecule file format
Since:
Marvin 2.2
See Also:
JMSketchIface.getMol(java.lang.String)

setPiece

public void setPiece(java.lang.String s)
Sets the current piece. This method makes it possible to implement the Periodic Table of elements and tables of template molecules as external JavaScript/HTML components.

Specified by:
setPiece in interface JMSketchIface
Parameters:
s - string containing the molecule in a molecule file format

postImage

public void postImage(java.lang.String fmt,
                      java.lang.String where)
Posts image to CGI script. This method is experimental. Do not use it yet!

Specified by:
postImage in interface JMSketchIface
Parameters:
fmt - image file format: "jpeg", "png" or "ppm"
Since:
Marvin 2.9.12

undo

public void undo()
Invokes the Undo command.

Specified by:
undo in interface JMSketchIface
Since:
Marvin 4.1.2

redo

public void redo()
Invokes the Redo command.

Specified by:
redo in interface JMSketchIface
Since:
Marvin 4.1.2

getImageShowURL

public java.lang.String getImageShowURL()
Gets the show image URL.

Specified by:
getImageShowURL in interface JMSketchIface
Returns:
the URL or null

setAutoScale

public void setAutoScale(boolean as)
Sets the autoscale property. If autoscale is true the molecule is sized to fit on the molecule panel.

Specified by:
setAutoScale in interface JMSketchIface
Parameters:
as - true to switch on, false to switch off autoscale
Since:
Marvin 2.9.3

getAutoScale

public boolean getAutoScale()
Returns the autoscale property.

Specified by:
getAutoScale in interface JMSketchIface
Returns:
true if autoscale is on, false if off
Since:
Marvin 2.9.3

getScale

public double getScale()
Gets the magnification.

Specified by:
getScale in interface JMSketchIface
Returns:
the scaling factor
Since:
Marvin 2.2

setScale

public void setScale(double m)
Sets the magnification. Changes the mag parameter at runtime.

Specified by:
setScale in interface JMSketchIface
Parameters:
m - the scaling factor

hasValenceError

public boolean hasValenceError()
Determines if this molecule has a valence error on any of its atoms.

Specified by:
hasValenceError in interface JMSketchIface
Returns:
true if there is an atom with valence error, false if there is no valence error
Since:
Marvin 4.1.3 11/13/2006

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent ev)
Does nothing. @param ev the event object

Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent ev)
Does nothing. @param ev the event object

Specified by:
mouseExited in interface java.awt.event.MouseListener

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent ev)
Does nothing. @param ev the event object

Specified by:
mouseClicked in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent ev)
Does nothing. @param ev the event object

Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent ev)
Handles the viewer button press events.

Specified by:
mouseReleased in interface java.awt.event.MouseListener
Parameters:
ev - the event object

setParentApplet

public void setParentApplet(javax.swing.JApplet parent)

Specified by:
setParentApplet in interface MAppletIface
Since:
5.1.6 (Not included in 5.2.0)