Package com.actelion.research.gui
Class JStructureView
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- com.actelion.research.gui.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
-
-
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
-
-
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
-
-
-
-
Field Detail
-
mDropAdapter
protected MoleculeDropAdapter mDropAdapter
-
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 nulldisplayMol
- 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&ddragAction
-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 nulldisplayMol
- null if mol shall be displayeddragAction
-dropAction
-
-
-
Method Detail
-
setClipboardHandler
public void setClipboardHandler(IClipboardHandler h)
Call this in order to get clipboard support: setClipboardHandler(new ClipboardHandler());
-
getClipboardHandler
public IClipboardHandler getClipboardHandler()
-
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 classjavax.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 classjavax.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 interfaceStructureListener
- 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 nulldisplayMol
- 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.
-
getMolecule
public StereoMolecule getMolecule()
-
getDisplayMolecule
public StereoMolecule getDisplayMolecule()
-
getDepictor
public AbstractDepictor getDepictor()
-
addStructureListener
public void addStructureListener(StructureListener l)
-
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 interfacejava.awt.event.MouseListener
-
mouseEntered
public void mouseEntered(java.awt.event.MouseEvent e)
- Specified by:
mouseEntered
in interfacejava.awt.event.MouseListener
-
mouseExited
public void mouseExited(java.awt.event.MouseEvent e)
- Specified by:
mouseExited
in interfacejava.awt.event.MouseListener
-
mousePressed
public void mousePressed(java.awt.event.MouseEvent e)
- Specified by:
mousePressed
in interfacejava.awt.event.MouseListener
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent e)
- Specified by:
mouseReleased
in interfacejava.awt.event.MouseListener
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent e)
- Specified by:
mouseMoved
in interfacejava.awt.event.MouseMotionListener
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent e)
- Specified by:
mouseDragged
in interfacejava.awt.event.MouseMotionListener
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
- Specified by:
actionPerformed
in interfacejava.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()
-
-