devisor2.grid.GUI.dialogs
Class DockableDialog

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Window
              extended byjava.awt.Dialog
                  extended byjavax.swing.JDialog
                      extended bydevisor2.grid.GUI.dialogs.DockableDialog
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants
Direct Known Subclasses:
BoundaryNodeDialog, ChangeBoundaryDialog, CircleDialog, EdgeStatusDialog, LineDialog, LoadBalancingDialog, MacroDialog, MergeBoundariesDialog, MirrorDialog, MultipleBNDialog, ParallelBlockDialog, PerimeterDialog, QuadDialog, RefineDialog, RotateDialog, ScaleDialog, TriDialog

public abstract class DockableDialog
extends javax.swing.JDialog

This class is the abstract superclass for our non-modal dockable dialog.

When first displayed, instances of this class' subclasses appear at a fixed position. They are attached to the MainFrame, meaning that whenever the MainFrame is moved or resized, they are moved accordingly so that their relative position remains the same. If necessary, the dialog can also be undocked when it is moved away from the MainFrame separately by more than the margin specified in the dockMargin class variable. In undocked state, the dialog does not follow the MainFrame's movements but is completely independent. To dock the dialog again, it has to be moved towards the MainFrame, as soon as the margin is less than the dockMargin, its position is snapped towards the next docking position. The middle of the dialog's canvas is considered Event Point.

The whole docking information is made persistent, that means every time the dialog is shown, the last docking state is restored from the Options class. If the dialog has been docked before, it appears at its earlier position, if it was undocked, it appears at its initial position.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JDialog
javax.swing.JDialog.AccessibleJDialog
 
Nested classes inherited from class java.awt.Dialog
java.awt.Dialog.AccessibleAWTDialog
 
Nested classes inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  ControlCenter cc
          reference to the ControlCenter
protected  boolean docked
          flag to determine the dialogs docking state
protected  int dockMargin
          the docking margin (in pixels)
static int GAP
          constant for the gap between docked dialog and MainFrame
protected  devisor2.grid.GUI.dialogs.DockableDialog.DockableDialogMoveListener listener
          the listener responsible for trailing the dialog's movements
protected  java.awt.Point origin
          the location on screen
protected  MainFrame parent
          reference to the MainFrame of the application
protected  int region
          the region in which to dock
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DockableDialog(MainFrame parent)
          creates a new Dialog
 
Method Summary
 void addMoveListener()
          adds the move listener
protected  void calcDockable()
          calculates the dockableArea of the MainFrame and sets the docked flag - the dockable area is calculated by adding the dockMargin value to all four sides of the MainFrame, both on the inside and outside - this partitions the area around the MainFrame's edges into four regions, 1=LEFT, 2=RIGHT, 3=TOP.
protected  java.awt.Point calcPosition()
          This method repositions the dialog according to the following rules: if docked: - in the left region, the dialog's top right corner is aligned with the parent's top left corner if the origin is above the parent's top border, with the bottom left corner if below, otherwise the dialog is just snapped rightwards.
 int getDockMargin()
          returns the dockMargin
abstract  java.awt.Point getInitialPosition()
          returns the initial Position of the dialog
 java.awt.Point getPositionOnScreen()
          returns the position on the screen
 boolean isDocked()
          returns if the dialog is docked
abstract  void refreshGUI()
          this method can be used to update the GUI of the dialog dynamically.
 void removeMoveListener()
          removes the move listener
 void rePosition()
          repositions the dialog
 void setDocked(boolean dock)
          sets the docked variable
 void setDockMargin(int delta)
          sets the dockMargin
 void setPositionOnScreen(java.awt.Point newPosition)
          sets the location on the screen
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Dialog
addNotify, dispose, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setResizable, setTitle, setUndecorated, show
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, finalize, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, removeNotify, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, 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, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parent

protected MainFrame parent
reference to the MainFrame of the application


cc

protected ControlCenter cc
reference to the ControlCenter


docked

protected boolean docked
flag to determine the dialogs docking state


dockMargin

protected int dockMargin
the docking margin (in pixels)


region

protected int region
the region in which to dock


GAP

public static final int GAP
constant for the gap between docked dialog and MainFrame

See Also:
Constant Field Values

origin

protected java.awt.Point origin
the location on screen


listener

protected devisor2.grid.GUI.dialogs.DockableDialog.DockableDialogMoveListener listener
the listener responsible for trailing the dialog's movements

Constructor Detail

DockableDialog

public DockableDialog(MainFrame parent)
creates a new Dialog

Parameters:
parent - - the mainframe connects the dialog to the rest of the application.
Method Detail

removeMoveListener

public void removeMoveListener()
removes the move listener


addMoveListener

public void addMoveListener()
adds the move listener


rePosition

public void rePosition()
repositions the dialog


isDocked

public boolean isDocked()
returns if the dialog is docked


setDocked

public void setDocked(boolean dock)
sets the docked variable


getInitialPosition

public abstract java.awt.Point getInitialPosition()
returns the initial Position of the dialog


setDockMargin

public void setDockMargin(int delta)
sets the dockMargin


getDockMargin

public int getDockMargin()
returns the dockMargin


setPositionOnScreen

public void setPositionOnScreen(java.awt.Point newPosition)
sets the location on the screen


getPositionOnScreen

public java.awt.Point getPositionOnScreen()
returns the position on the screen


refreshGUI

public abstract void refreshGUI()
this method can be used to update the GUI of the dialog dynamically. it is called by the DialogManager e.g. when some comboboxes containing boundary information need to be refreshed


calcDockable

protected void calcDockable()
calculates the dockableArea of the MainFrame and sets the docked flag - the dockable area is calculated by adding the dockMargin value to all four sides of the MainFrame, both on the inside and outside - this partitions the area around the MainFrame's edges into four regions, 1=LEFT, 2=RIGHT, 3=TOP. 4=BOTTOM - if the dialog is outside any of these regions, the docked flag is set to false, otherwise to true


calcPosition

protected java.awt.Point calcPosition()
This method repositions the dialog according to the following rules: if docked: - in the left region, the dialog's top right corner is aligned with the parent's top left corner if the origin is above the parent's top border, with the bottom left corner if below, otherwise the dialog is just snapped rightwards. - in the top region, the dialog's bottom edge is just snapped downwards to the parent's top edge - in the right region, the dialog's top left corner is aligned with the parent's top right corner if the origin is above the parent's top border, with the bottom right corner if below, otherwise the dialog is just snapped leftwards. - in the bottom region, the dialog's top edge is just snapped upwards to the parent's bottom edge - in any case, the dialog is moved ifwards if neccessary so that it does not disappear over the screen edge.