## devisor2.grid.GUI.dialogs
Class DockableDialog

    java.lang.Object
      java.awt.Component
          java.awt.Container
              java.awt.Window
                  java.awt.Dialog
                      javax.swing.JDialog
                          devisor2.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.