public class CanvasPanel
extends JPanel
implements Scrollable, ActionListener
Modifier and Type | Field and Description |
---|---|
EditFrame |
ef
The enclosing editing frame.
|
private FocusAdapter |
focusAdapter |
private BufferedImage |
image |
JComboBox |
labelChooser
Popup menu used when a text label is constrained to a list of known
labels for that kind
|
private WindowAdapter |
nedWindowAdapter |
JDialog |
nodeEditingDialog |
private boolean |
nodeEditingDialogUndecorated |
(package private) KeyAdapter |
nodeEditingKeyAdapter
Implements copy/cut/paste for text
|
private Dimension |
preferredSize |
private int |
scalingAlgorithm |
private GraphObject |
userEditedGraphObject
indicates which GNode whose text the user is currently editing; null if
no editing.
|
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Constructor and Description |
---|
CanvasPanel(EditFrame outerFrame) |
Modifier and Type | Method and Description |
---|---|
void |
actionPerformed(ActionEvent e)
Only handles changes to text.
|
void |
adjustCanvasSize()
Figures out how much canvas and buffered image is needed, and if the
current ones aren't sufficient, makes them big enough.
|
boolean |
choicePossible(GraphObject go)
Determines whether a pull-down menu is possible for this object.
|
void |
closeTextEditors()
Hide the editing field, pop-up menu, re-set the editing menu and cursor.
|
JComboBox |
createLabelChooser(FontMetrics fontMetrics,
String label,
Color fore,
Color back)
Factory method to create a label chooser that will set up appearance, based on the parameters and userEditedGraphObject
|
private void |
createNodeEditingDialog() |
private JTextField |
createTextEditField(FontMetrics fontMetrics,
String label,
Color fore,
Color back)
set up the text labeling field .
|
protected void |
finalize()
Dispose of the canvas panel; should not be called directly.
|
private Dimension |
getEditingTextSize(FontMetrics fontMetrics,
String label)
Determines the width and height needed for the textediting activites.
|
Dimension |
getPreferredScrollableViewportSize() |
Dimension |
getPreferredSize() |
int |
getScrollableBlockIncrement(Rectangle visibleRect,
int orientation,
int direction) |
boolean |
getScrollableTracksViewportHeight() |
boolean |
getScrollableTracksViewportWidth() |
int |
getScrollableUnitIncrement(Rectangle visibleRect,
int orientation,
int direction) |
void |
keyReleased(KeyEvent e) |
void |
keyTyped(KeyEvent e) |
void |
paintComponent(Graphics g)
Renders everything on the canvas.
|
void |
reset()
In case the user stops in the middle of something.
|
void |
setup()
Sets up the textLabelEditField and labelChooser components.
|
void |
teardown() |
void |
userFinishedEditingText(String userEditedLabel)
Once the user leaves the edit field, take over and process the new
contents.
|
void |
userStartedEditingText(GraphObject go,
Point2D.Double p)
Sets up the text field for a user to edit.
|
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, 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, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
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
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, 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, getPeer, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public EditFrame ef
private int scalingAlgorithm
private boolean nodeEditingDialogUndecorated
private GraphObject userEditedGraphObject
public JComboBox labelChooser
public JDialog nodeEditingDialog
private Dimension preferredSize
private BufferedImage image
private FocusAdapter focusAdapter
private WindowAdapter nedWindowAdapter
KeyAdapter nodeEditingKeyAdapter
CanvasPanel(EditFrame outerFrame)
public void setup()
public void teardown()
private void createNodeEditingDialog()
private JTextField createTextEditField(FontMetrics fontMetrics, String label, Color fore, Color back)
public JComboBox createLabelChooser(FontMetrics fontMetrics, String label, Color fore, Color back)
fontMetrics
- label
- fore
- back
- userEditedGraphObject
private Dimension getEditingTextSize(FontMetrics fontMetrics, String label)
fontMetrics
- label
- protected void finalize() throws Throwable
finalize
in class Object
Throwable
public void actionPerformed(ActionEvent e)
actionPerformed
in interface ActionListener
public void adjustCanvasSize()
public void paintComponent(Graphics g)
paintComponent
in class JComponent
public void reset()
public boolean choicePossible(GraphObject go)
go
- Any graph objectpublic void userStartedEditingText(GraphObject go, Point2D.Double p)
go
- The object whose label the user is editing.p
- Where the edit field dialog is to appear on the canvas.userFinishedEditingText(java.lang.String)
public void userFinishedEditingText(String userEditedLabel)
userEditedLabel
- new label name; could have been obtained from a
choice list. null if user cancelled or otherwise didn't make a new label
name.userStartedEditingText(charger.obj.GraphObject, java.awt.geom.Point2D.Double)
,
actionPerformed(java.awt.event.ActionEvent)
public void closeTextEditors()
public Dimension getPreferredSize()
getPreferredSize
in class JComponent
public Dimension getPreferredScrollableViewportSize()
getPreferredScrollableViewportSize
in interface Scrollable
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
getScrollableBlockIncrement
in interface Scrollable
public boolean getScrollableTracksViewportHeight()
getScrollableTracksViewportHeight
in interface Scrollable
public boolean getScrollableTracksViewportWidth()
getScrollableTracksViewportWidth
in interface Scrollable
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
getScrollableUnitIncrement
in interface Scrollable
public void keyReleased(KeyEvent e)
public void keyTyped(KeyEvent e)