org.jhotdraw.contrib
Class MDIDesktopPane

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JLayeredPane
                  extended byjavax.swing.JDesktopPane
                      extended byorg.jhotdraw.contrib.MDIDesktopPane
All Implemented Interfaces:
javax.accessibility.Accessible, Desktop, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class MDIDesktopPane
extends javax.swing.JDesktopPane
implements Desktop

An extension of JDesktopPane that supports often used MDI functionality. This class also handles setting scroll bars for when windows move too far to the left or bottom, providing the MDIDesktopPane is in a ScrollPane. Note by dnoyeb: I dont know why the container does not fire frame close events when the frames are removed from the container with remove as opposed to simply closed with the "x". so if you say removeAll from container you wont be notified. No biggie.

Version:
<$CURRENT_VERSION$>
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JDesktopPane
javax.swing.JDesktopPane.AccessibleJDesktopPane
 
Nested classes inherited from class javax.swing.JLayeredPane
javax.swing.JLayeredPane.AccessibleJLayeredPane
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
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  javax.swing.event.InternalFrameListener internalFrameListener
           
 
Fields inherited from class javax.swing.JDesktopPane
LIVE_DRAG_MODE, OUTLINE_DRAG_MODE
 
Fields inherited from class javax.swing.JLayeredPane
DEFAULT_LAYER, DRAG_LAYER, FRAME_CONTENT_LAYER, LAYER_PROPERTY, MODAL_LAYER, PALETTE_LAYER, POPUP_LAYER
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface org.jhotdraw.contrib.Desktop
PRIMARY, SECONDARY, TERTIARY
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
MDIDesktopPane(DrawApplication newDrawApplication)
           
 
Method Summary
 void addDesktopListener(DesktopListener dpl)
           
 void addToDesktop(DrawingView dv, int location)
          This must match the signature of the superclass it is overriding or the method invocation may not resolve to this method unless it is called on a reference of specifically MDIDesktopPane type.
 void arrangeFramesHorizontally()
          Arranges the frames as efficiently as possibly with preference for keeping horizontal size maximal.
 void arrangeFramesVertically()
          Arranges the frames as efficiently as possibly with preference for keeping vertical size maximal.
 void cascadeFrames()
          Cascade all internal frames
protected  java.awt.Component createContents(DrawingView dv)
           
protected  DesktopEventService createDesktopEventService()
           
protected  void fireDrawingViewAddedEvent(DrawingView dv)
           
protected  void fireDrawingViewRemovedEvent(DrawingView dv)
           
protected  void fireDrawingViewSelectedEvent(DrawingView oldView, DrawingView newView)
           
 DrawingView getActiveDrawingView()
          For those absent minded components that were not paying attention to the listener events.
 DrawingView[] getAllFromDesktop(int location)
           
protected  DesktopEventService getDesktopEventService()
           
protected  DrawApplication getDrawApplication()
           
 void removeAllFromDesktop(int location)
           
 void removeDesktopListener(DesktopListener dpl)
           
 void removeFromDesktop(DrawingView dv, int location)
           
protected  void setActiveDrawingView(DrawingView newSelectedView)
           
 void setAllSize(java.awt.Dimension d)
          Sets all component size properties ( maximum, minimum, preferred) to the given dimension.
 void setAllSize(int width, int height)
          Sets all component size properties ( maximum, minimum, preferred) to the given width and height.
 void tileFrames()
          Deprecated. use tileFramesHorizontally() instead
 void tileFramesHorizontally()
           
 void tileFramesVertically()
           
 void updateTitle(java.lang.String newDrawingTitle)
           
 
Methods inherited from class javax.swing.JDesktopPane
getAccessibleContext, getAllFrames, getAllFramesInLayer, getDesktopManager, getDragMode, getSelectedFrame, getUI, getUIClassID, isOpaque, paramString, setDesktopManager, setDragMode, setSelectedFrame, setUI, updateUI
 
Methods inherited from class javax.swing.JLayeredPane
addImpl, getComponentCountInLayer, getComponentsInLayer, getComponentToLayer, getIndexOf, getLayer, getLayer, getLayeredPaneAbove, getObjectForLayer, getPosition, highestLayer, insertIndexForLayer, isOptimizedDrawingEnabled, lowestLayer, moveToBack, moveToFront, paint, putLayer, remove, setLayer, setLayer, setPosition
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

internalFrameListener

protected javax.swing.event.InternalFrameListener internalFrameListener
Constructor Detail

MDIDesktopPane

public MDIDesktopPane(DrawApplication newDrawApplication)
Method Detail

fireDrawingViewAddedEvent

protected void fireDrawingViewAddedEvent(DrawingView dv)

fireDrawingViewRemovedEvent

protected void fireDrawingViewRemovedEvent(DrawingView dv)

fireDrawingViewSelectedEvent

protected void fireDrawingViewSelectedEvent(DrawingView oldView,
                                            DrawingView newView)

createContents

protected java.awt.Component createContents(DrawingView dv)

getActiveDrawingView

public DrawingView getActiveDrawingView()
Description copied from interface: Desktop
For those absent minded components that were not paying attention to the listener events.

Specified by:
getActiveDrawingView in interface Desktop

setActiveDrawingView

protected void setActiveDrawingView(DrawingView newSelectedView)

updateTitle

public void updateTitle(java.lang.String newDrawingTitle)
Specified by:
updateTitle in interface Desktop

addToDesktop

public void addToDesktop(DrawingView dv,
                         int location)
This must match the signature of the superclass it is overriding or the method invocation may not resolve to this method unless it is called on a reference of specifically MDIDesktopPane type. So this must be Component add(Component comp) in order to override its super class and Component add(JInternalFrame frame) will not properly override the super- class, but instead overload it. Note be sure to call this method and not add() when you want to add to the desktop. This allows complex desktops to be created. For instance, you can add split panes and scroll panes and such as normal with the add() method but then to get to the actual desktop you would still call this method.

Specified by:
addToDesktop in interface Desktop

removeFromDesktop

public void removeFromDesktop(DrawingView dv,
                              int location)
Specified by:
removeFromDesktop in interface Desktop

removeAllFromDesktop

public void removeAllFromDesktop(int location)
Specified by:
removeAllFromDesktop in interface Desktop

getAllFromDesktop

public DrawingView[] getAllFromDesktop(int location)
Specified by:
getAllFromDesktop in interface Desktop

getDesktopEventService

protected DesktopEventService getDesktopEventService()

createDesktopEventService

protected DesktopEventService createDesktopEventService()

addDesktopListener

public void addDesktopListener(DesktopListener dpl)
Specified by:
addDesktopListener in interface Desktop

removeDesktopListener

public void removeDesktopListener(DesktopListener dpl)
Specified by:
removeDesktopListener in interface Desktop

cascadeFrames

public void cascadeFrames()
Cascade all internal frames


tileFrames

public void tileFrames()
Deprecated. use tileFramesHorizontally() instead

Tile all internal frames


tileFramesHorizontally

public void tileFramesHorizontally()

tileFramesVertically

public void tileFramesVertically()

arrangeFramesVertically

public void arrangeFramesVertically()
Arranges the frames as efficiently as possibly with preference for keeping vertical size maximal.


arrangeFramesHorizontally

public void arrangeFramesHorizontally()
Arranges the frames as efficiently as possibly with preference for keeping horizontal size maximal.


setAllSize

public void setAllSize(java.awt.Dimension d)
Sets all component size properties ( maximum, minimum, preferred) to the given dimension.


setAllSize

public void setAllSize(int width,
                       int height)
Sets all component size properties ( maximum, minimum, preferred) to the given width and height.


getDrawApplication

protected DrawApplication getDrawApplication()