Class JStructureView

  • All Implemented Interfaces:
    StructureListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener
    Direct Known Subclasses:
    JEditableStructureView

    public class JStructureView
    extends javax.swing.JComponent
    implements java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, StructureListener
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • 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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int mAllowedDragAction  
      protected int mAllowedDropAction  
      protected MoleculeDropAdapter mDropAdapter  
      • Fields inherited from class javax.swing.JComponent

        listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
      • Fields inherited from class java.awt.Component

        accessibleContext, 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

      Constructors 
      Constructor Description
      JStructureView()  
      JStructureView​(int dragAction, int dropAction)  
      JStructureView​(StereoMolecule mol)
      This creates a standard structure view where the displayed molecule is used for D&D and clipboard transfer after removing atom colors and bond highlights.
      JStructureView​(StereoMolecule mol, int dragAction, int dropAction)
      This creates a standard structure view where the displayed molecule is used for D&D and clipboard transfer after removing atom colors and bond highlights.
      JStructureView​(StereoMolecule mol, StereoMolecule displayMol)
      This creates a structure view that distinguishes between displayed molecule and the one being used for D&D and clipboard transfer.
      JStructureView​(StereoMolecule mol, StereoMolecule displayMol, int dragAction, int dropAction)
      This creates a structure view that distinguishes between displayed molecule and the one being used for D&D and clipboard transfer.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent e)  
      void addStructureListener​(StructureListener l)  
      boolean canDrop()  
      IClipboardHandler getClipboardHandler()  
      AbstractDepictor getDepictor()  
      int getDisplayMode()  
      StereoMolecule getDisplayMolecule()  
      StereoMolecule getMolecule()  
      protected java.awt.datatransfer.Transferable getMoleculeTransferable​(java.awt.Point pt)  
      boolean isEditable()  
      void mouseClicked​(java.awt.event.MouseEvent e)  
      void mouseDragged​(java.awt.event.MouseEvent e)  
      void mouseEntered​(java.awt.event.MouseEvent e)  
      void mouseExited​(java.awt.event.MouseEvent e)  
      void mouseMoved​(java.awt.event.MouseEvent e)  
      void mousePressed​(java.awt.event.MouseEvent e)  
      void mouseReleased​(java.awt.event.MouseEvent e)  
      protected void onDragEnter()  
      protected void onDragExit()  
      protected void onDragOver()  
      protected void onDrop()  
      void paintComponent​(java.awt.Graphics g)  
      void removeStructureListener​(StructureListener l)  
      void setAllowFragmentStatusChangeOnPasteOrDrop​(boolean allow)
      When fragment status change on drop is allowed then dropping a fragment (molecule) on a molecule (fragment) inverts the status of the view's chemical object.
      void setAtomHighlightColors​(int[] argb)
      If you want this tructure view to also draw an atom background with specific colors for every atom, then you need to call this method before or just after one of the structureChanged() calls.
      void setAtomText​(java.lang.String[] atomText)
      Defines additional atom text to be displayed in top right position of some/all atom labels.
      void setChiralDrawPosition​(int p)  
      void setClipboardHandler​(IClipboardHandler h)
      Call this in order to get clipboard support: setClipboardHandler(new ClipboardHandler());
      void setDisableBorder​(boolean b)  
      void setDisplayMode​(int mode)
      Sets the display mode for the Depictor.
      void setEditable​(boolean b)  
      void setEnabled​(boolean enable)  
      void setIDCode​(java.lang.String idcode)  
      void setIDCode​(java.lang.String idcode, java.lang.String coordinates)  
      protected void showWarningMessage​(java.lang.String msg)  
      void structureChanged()
      Should only be called if JStructureView's internal Molecule is changed from outside as: theStructureView.getMolecule().setFragment(false); The caller is responsible to update displayMol also, if it is different from the molecule.
      void structureChanged​(StereoMolecule mol)
      Updates the molecule used for display, drag & drop and clipboard transfer.
      void structureChanged​(StereoMolecule mol, StereoMolecule displayMol)
      Updates both molecules used for display and for drag & drop/clipboard transfer.
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • mAllowedDragAction

        protected int mAllowedDragAction
      • mAllowedDropAction

        protected int mAllowedDropAction
    • Constructor Detail

      • JStructureView

        public JStructureView()
      • JStructureView

        public JStructureView​(StereoMolecule mol)
        This creates a standard structure view where the displayed molecule is used for D&D and clipboard transfer after removing atom colors and bond highlights. The default will support copy/paste and drag&drop from this view only, but dropping anything onto this view doesn't have an effect. Call setEditable(true) to allow changes through drag&drop and pasting.
        Parameters:
        mol - used for display, clipboard copy and d&d
      • JStructureView

        public JStructureView​(StereoMolecule mol,
                              StereoMolecule displayMol)
        This creates a structure view that distinguishes between displayed molecule and the one being used for D&D and clipboard transfer. Use this if the displayed molecule is structurally different, e.g. uses custom atom labels or additional illustrative atoms or bonds, which shall not be copied. Custom atom colors or highlighted bonds don't require a displayMol. The default will support copy/paste and drag&drop from this view only, but dropping anything onto this view doesn't have an effect. Call setEditable(true) to allow changes through drag&drop and pasting.
        Parameters:
        mol - used for clipboard copy and d&d; used for display if displayMol is null
        displayMol - null if mol shall be displayed
      • JStructureView

        public JStructureView​(int dragAction,
                              int dropAction)
      • JStructureView

        public JStructureView​(StereoMolecule mol,
                              int dragAction,
                              int dropAction)
        This creates a standard structure view where the displayed molecule is used for D&D and clipboard transfer after removing atom colors and bond highlights. The default will support copy/paste and drag&drop from this view only, but dropping anything onto this view doesn't have an effect. Call setEditable(true) to allow changes through drag&drop and pasting.
        Parameters:
        mol - used for display, clipboard copy and d&d
        dragAction -
        dropAction -
      • JStructureView

        public JStructureView​(StereoMolecule mol,
                              StereoMolecule displayMol,
                              int dragAction,
                              int dropAction)
        This creates a structure view that distinguishes between displayed molecule and the one being used for D&D and clipboard transfer. Use this if the displayed molecule is structurally different, e.g. uses custom atom labels or additional illustrative atoms or bonds, which shall not be copied. Custom atom colors or highlighted bonds don't require a displayMol. The default will support copy/paste and drag&drop from this view only, but dropping anything onto this view doesn't have an effect. Call setEditable(true) to allow changes through drag&drop and pasting.
        Parameters:
        mol - used for clipboard copy and d&d; used for display if displayMol is null
        displayMol - null if mol shall be displayed
        dragAction -
        dropAction -
    • Method Detail

      • setClipboardHandler

        public void setClipboardHandler​(IClipboardHandler h)
        Call this in order to get clipboard support: setClipboardHandler(new ClipboardHandler());
      • getDisplayMode

        public int getDisplayMode()
      • setDisplayMode

        public void setDisplayMode​(int mode)
        Sets the display mode for the Depictor. The default is AbstractDepictor.cDModeHiliteAllQueryFeatures.
        Parameters:
        mode -
      • setDisableBorder

        public void setDisableBorder​(boolean b)
      • setAtomText

        public void setAtomText​(java.lang.String[] atomText)
        Defines additional atom text to be displayed in top right position of some/all atom labels. If the atom is charged, then the atom text is drawn right of the atom charge. If using atom text make sure to update it accordingly, if atom indexes change due to molecule changes. Atom text is not supported for MODE_REACTION, MODE_MULTIPLE_FRAGMENTS or MODE_MARKUSH_STRUCTURE.
        Parameters:
        atomText - null or String array matching atom indexes (may contain null entries)
      • setEnabled

        public void setEnabled​(boolean enable)
        Overrides:
        setEnabled in class javax.swing.JComponent
      • isEditable

        public boolean isEditable()
      • setEditable

        public void setEditable​(boolean b)
      • setAllowFragmentStatusChangeOnPasteOrDrop

        public void setAllowFragmentStatusChangeOnPasteOrDrop​(boolean allow)
        When fragment status change on drop is allowed then dropping a fragment (molecule) on a molecule (fragment) inverts the status of the view's chemical object. As default status changes are prohibited.
        Parameters:
        allow -
      • setAtomHighlightColors

        public void setAtomHighlightColors​(int[] argb)
        If you want this tructure view to also draw an atom background with specific colors for every atom, then you need to call this method before or just after one of the structureChanged() calls.
        Parameters:
        argb - values with a==0 are not considered (may be null)
      • canDrop

        public boolean canDrop()
      • paintComponent

        public void paintComponent​(java.awt.Graphics g)
        Overrides:
        paintComponent in class javax.swing.JComponent
      • setIDCode

        public void setIDCode​(java.lang.String idcode)
      • setIDCode

        public void setIDCode​(java.lang.String idcode,
                              java.lang.String coordinates)
      • structureChanged

        public void structureChanged​(StereoMolecule mol)
        Updates the molecule used for display, drag & drop and clipboard transfer. Also triggers a repaint().
        Specified by:
        structureChanged in interface StructureListener
        Parameters:
        mol - new molecule used for display, clipboard copy and d&d; may be null
      • structureChanged

        public void structureChanged​(StereoMolecule mol,
                                     StereoMolecule displayMol)
        Updates both molecules used for display and for drag & drop/clipboard transfer. Also triggers a repaint().
        Parameters:
        mol - new molecule used for display; may be null
        displayMol - new molecule used for clipboard copy and d&d, may be null
      • structureChanged

        public void structureChanged()
        Should only be called if JStructureView's internal Molecule is changed from outside as: theStructureView.getMolecule().setFragment(false); The caller is responsible to update displayMol also, if it is different from the molecule.
      • removeStructureListener

        public void removeStructureListener​(StructureListener l)
      • setChiralDrawPosition

        public void setChiralDrawPosition​(int p)
      • mouseClicked

        public void mouseClicked​(java.awt.event.MouseEvent e)
        Specified by:
        mouseClicked in interface java.awt.event.MouseListener
      • mouseEntered

        public void mouseEntered​(java.awt.event.MouseEvent e)
        Specified by:
        mouseEntered in interface java.awt.event.MouseListener
      • mouseExited

        public void mouseExited​(java.awt.event.MouseEvent e)
        Specified by:
        mouseExited in interface java.awt.event.MouseListener
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent e)
        Specified by:
        mousePressed in interface java.awt.event.MouseListener
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent e)
        Specified by:
        mouseReleased in interface java.awt.event.MouseListener
      • mouseMoved

        public void mouseMoved​(java.awt.event.MouseEvent e)
        Specified by:
        mouseMoved in interface java.awt.event.MouseMotionListener
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent e)
        Specified by:
        mouseDragged in interface java.awt.event.MouseMotionListener
      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent e)
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
      • showWarningMessage

        protected void showWarningMessage​(java.lang.String msg)
      • getMoleculeTransferable

        protected java.awt.datatransfer.Transferable getMoleculeTransferable​(java.awt.Point pt)
      • onDragEnter

        protected void onDragEnter()
      • onDragExit

        protected void onDragExit()
      • onDragOver

        protected void onDragOver()
      • onDrop

        protected void onDrop()