Class DockingWindow

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
AbstractTabWindow, FloatingWindow, RootWindow, SplitWindow, View

public abstract class DockingWindow extends BasePanel
This is the base class for all types of docking windows. The windows are structured in a tree, typically with a RootWindow at the root. Each DockingWindow has a window parent and a number of child windows.

Warning: the non-public methods in this class can be changed in non-compatible ways in future versions.

See Also:
  • Constructor Details

    • DockingWindow

      protected DockingWindow(WindowItem windowItem)
  • Method Details

    • getIcon

      public abstract Icon getIcon()
      Returns the icon for this window.
      Returns:
      the icon
    • getChildWindow

      public abstract DockingWindow getChildWindow(int index)
      Returns the child window with index index.
      Parameters:
      index - the child window index
      Returns:
      the child window
    • getChildWindowCount

      public abstract int getChildWindowCount()
      Returns the number of child windows.
      Returns:
      the number of child windows
    • doReplace

      protected abstract void doReplace(DockingWindow oldWindow, DockingWindow newWindow)
    • doRemoveWindow

      protected abstract void doRemoveWindow(DockingWindow window)
    • update

      protected abstract void update()
    • init

      protected void init()
    • addWindowItem

      protected void addWindowItem(DockingWindow w, int index)
    • updateWindowItem

      protected void updateWindowItem(DockingWindow w)
    • updateWindowItems

      protected final void updateWindowItems()
    • setPreferredMinimizeDirection

      public void setPreferredMinimizeDirection(Direction direction)

      Sets the preferred minimize direction of this window. If the WindowBar in this direction is enabled this window will be placed on that bar when minimize() is called.

      Note that a window will "remember" the last WindowBar it was added to so the preferred minimize direction is changed when the window is added to another WindowBar.

      Parameters:
      direction - the preferred minimize direction of this window, null (which is default value) means use the closest, enabled WindowBar
      Since:
      IDW 1.3.0
    • getPreferredMinimizeDirection

      public Direction getPreferredMinimizeDirection()

      Gets the preferred minimize direction of this window. See setPreferredMinimizeDirection(net.infonode.util.Direction) for more information.

      Returns:
      the preferred minimize direction of this window, null if the closest WindowBar is used
      Since:
      IDW 1.3.0
    • isUndocked

      public boolean isUndocked()
    • addTabMouseButtonListener

      public void addTabMouseButtonListener(MouseButtonListener listenerDocking)

      Adds a listener that receives mouse button events for window tabs. The listener will be called when a mouse button is pressed, clicked or released on a window tab of this window or a descendant of this window.

      The listeners are called in the reverse order they were added, so the last added listener will be called first. When all the listeners of this window has been called, the event is propagated up to the window parent of this window, if there is one.

      The MouseEventsource is the docking window connected to the tab in which the mouse event occured. The event point is the mouse coordinate where the event occured relative to the window.

      Parameters:
      listenerDocking - the listener
      Since:
      IDW 1.3.0
    • removeTabMouseButtonListener

      public void removeTabMouseButtonListener(MouseButtonListener listenerDocking)
      Removes a mouse button listener that has been previously added using the addTabMouseButtonListener(MouseButtonListener).
      Parameters:
      listenerDocking - the listener
      Since:
      IDW 1.3.0
    • addListener

      public void addListener(DockingWindowListener listener)
      Adds a listener which will reveive events for this window and all child windows.
      Parameters:
      listener - the listener
      Since:
      IDW 1.1.0
    • removeListener

      public void removeListener(DockingWindowListener listener)
      Removes a previously added listener.
      Parameters:
      listener - the listener
      Since:
      IDW 1.1.0
    • getWindowParent

      public DockingWindow getWindowParent()
      Returns the window parent of this window.
      Returns:
      the window parent of this window
    • split

      public SplitWindow split(DockingWindow splitWithWindow, Direction direction, float dividerLocation)
      Splits this window in the given direction. If this window is a View which is contained in a TabWindow with a single tab, the TabWindow will splitted instead of this View.
      Parameters:
      splitWithWindow - the splitWithWindow which to split with
      direction - the split direction
      dividerLocation - the relative split divider location (0 - 1)
      Returns:
      the resulting split window
    • startDrag

      public DockingWindowDragger startDrag(RootWindow dropTarget)
      Starts a drag and drop operation for this window.
      Parameters:
      dropTarget - the RootWindow in which the window can be dropped
      Returns:
      an DockingWindowDragger object which controls the drag and drop operation
      Since:
      IDW 1.3.0
    • getWindowProperties

      public DockingWindowProperties getWindowProperties()
      Returns the properties for this window.
      Returns:
      the properties for this window
    • getRootWindow

      public RootWindow getRootWindow()
      Returns the RootWindow which contains this window, null if there is none.
      Returns:
      the RootWindow, null if there is none
    • restoreWithAbort

      public void restoreWithAbort() throws OperationAbortedException
      Same as restore(), but the DockingWindowListener.windowRestoring(DockingWindow) method of the window listeners will be called before restoring the window, giving them the possibility to abort the restore operation.
      Throws:
      OperationAbortedException - if the restore operation was aborted by a window listener
      Since:
      IDW 1.4.0
      See Also:
    • restore

      public void restore()
      Restores this window to the location before it was minimized, maximized or closed. If the window can't be restored to the exact same location, a good approximation is performed. It's not guaranteed that the window is shown anywhere after this method has returned.
    • close

      public void close()

      Removes this window from it's window parent. If the window parent is a split window or a tab window with one child, it will be removed as well.

      The location of this window is saved and the window can be restored to that location using the restore() method.

      This method will call the DockingWindowListener.windowClosed(DockingWindow) method of all the listeners of this window and all window ancestors. The listeners of child windows will not be notified, for example closing a tab window containing views will not notify the listeners of views in that tab window.

    • closeWithAbort

      public void closeWithAbort() throws OperationAbortedException
      Same as close(), but the DockingWindowListener.windowClosing(DockingWindow) method of the window listeners will be called before closing the window, giving them the possibility to abort the close operation.
      Throws:
      OperationAbortedException - if the close operation was aborted by a window listener
      Since:
      IDW 1.1.0
      See Also:
    • undock

      public FloatingWindow undock(Point location)

      Undocks this window from it's window parent i.e. creates a FloatingWindow containing this window.

      The window can be docked again by calling dock().

      This method will call the DockingWindowListener.windowUndocked(DockingWindow) method of all the listeners of this window and all window ancestors. The listeners of child windows will not be notified, for example undocking a tab window containing views will not notify the listeners of views in that tab window.

      Parameters:
      location - floating window location in screen coordinates
      Returns:
      the floating window containing the undocked window
      Since:
      IDW 1.4.0
    • undockWithAbort

      public FloatingWindow undockWithAbort(Point location) throws OperationAbortedException
      Same as undock(Point), but the DockingWindowListener.windowUndocking(DockingWindow) method of the window listeners will be called before undocking the window, giving them the possibility to abort the undock operation.
      Parameters:
      location - floating window location in screen coordinates
      Returns:
      the floating window containing the undocked window
      Throws:
      OperationAbortedException - if the undock operation was aborted by a window listener
      Since:
      IDW 1.4.0
      See Also:
    • dock

      public void dock()

      Docks the window to the RootWindow to the location it had before it was undocked.

      If the window can't be docked to the exact same location, a good approximation is performed. It's not guaranteed that the window is shown anywhere after this method has returned.

      This method will call the DockingWindowListener.windowDocked(DockingWindow) method of all the listeners of this window and all window ancestors. The listeners of child windows will not be notified, for example docking a tab window containing views will not notify the listeners of views in that tab window.

      Since:
      IDW 1.4.0
    • dockWithAbort

      public void dockWithAbort() throws OperationAbortedException
      Same as dock(), but the DockingWindowListener.windowDocking(DockingWindow) method of the window listeners will be called before docking the window, giving them the possibility to abort the dock operation.
      Throws:
      OperationAbortedException - if the dock operation was aborted by a window listener
      Since:
      IDW 1.4.0
      See Also:
    • getChildWindowIndex

      public int getChildWindowIndex(DockingWindow window)
      Returns the index of a child windows.
      Parameters:
      window - the child window
      Returns:
      the index of the child window, -1 if the window is not a child of this window
    • getPopupMenuFactory

      public WindowPopupMenuFactory getPopupMenuFactory()
      Returns the popup menu factory for this window. If it's null the window parent popup menu factory will be used when the mouse popup trigger is activated on this window.
      Returns:
      the popup menu factory for this window, null if there is none
    • setPopupMenuFactory

      public void setPopupMenuFactory(WindowPopupMenuFactory popupMenuFactory)
      Sets the popup menu factory for this window. If it's not null a popup menu will be created and shown when the mouse popup trigger is activated on this window.
      Parameters:
      popupMenuFactory - the popup menu factory, null if no popup menu should be shown
    • isMinimized

      public boolean isMinimized()
      Returns true if this window is minimized, ie located in a WindowBar.
      Returns:
      true if this window is minimized
    • getLastFocusedChildWindow

      public DockingWindow getLastFocusedChildWindow()
      Returns the child window that last contained focus.
      Returns:
      the child window that last contained focus, null if no child window has contained focus or the child has been removed from this window
    • maximize

      public final void maximize()
      Maximizes this window in its root window or in its floating window. If this window has no root window nothing happens. This method takes the window component and displays it at the top in the root window or in the floating window. It does NOT modify the window tree structure, ie the window parent remains the unchanged.

      The location of this window is saved and the window can be restored to that location using the restore() method.

      Since:
      IDW 1.1.0
    • maximizeWithAbort

      public void maximizeWithAbort() throws OperationAbortedException
      Same as maximize(), but the DockingWindowListener.windowMaximized(DockingWindow) method of the window listeners will be called before maximizing the window, giving them the possibility to abort the maximize operation.
      Throws:
      OperationAbortedException - if the maximize operation was aborted by a window listener
      Since:
      IDW 1.4.0
      See Also:
    • isMaximized

      public boolean isMaximized()
      Returns true if this window has a root window and is maximized in that root window or in a floating window.
      Returns:
      true if this window has a root window and is maximized in that root window or in a floating window
      Since:
      IDW 1.1.0
    • minimize

      public void minimize()
      Minimizes this window. The window is minimized to the WindowBar in the preferred minimize direction, see setPreferredMinimizeDirection(net.infonode.util.Direction) and getPreferredMinimizeDirection(). If the WindowBar in that direction is not enabled, or the direction is null, thiw window is placed on the closest enabled WindowBar. If no suitable WindowBar was found or this window already is minimized, no action is performed.

      The location of this window is saved and the window can be restored to that location using the restore() method.

    • minimize

      public void minimize(Direction direction)
      Minimizes this window to a WindowBarlocated in direction. If no suitable WindowBarwas found or this window already is minimized, no action is performed.

      The location of this window is saved and the window can be restored to that location using the restore() method.

      Parameters:
      direction - the direction in which the window bar to be minimized to is located
    • minimizeWithAbort

      public void minimizeWithAbort() throws OperationAbortedException
      Same as minimize(), but the DockingWindowListener.windowMinimizing(DockingWindow) method of the window listeners will be called before minimizing the window, giving them the possibility to abort the minimize operation.
      Throws:
      OperationAbortedException - if the minimize operation was aborted by a window listener
      Since:
      IDW 1.4.0
      See Also:
    • minimizeWithAbort

      public void minimizeWithAbort(Direction direction) throws OperationAbortedException
      Same as minimize(Direction), but the DockingWindowListener.windowMinimizing(DockingWindow) method of the window listeners will be called before minimizing the window, giving them the possibility to abort the minimize operation.
      Throws:
      OperationAbortedException - if the minimize operation was aborted by a window listener
      Since:
      IDW 1.4.0
      See Also:
    • isMinimizable

      public boolean isMinimizable()
      Returns true if this window can be minimized by the user.
      Returns:
      true if this window can be minimized
      See Also:
    • isMaximizable

      public boolean isMaximizable()
      Returns true if this window can be maximized by the user.
      Returns:
      true if this window can be maximized
      Since:
      IDW 1.2.0
      See Also:
    • isClosable

      public boolean isClosable()
      Returns true if this window can be closed by the user.
      Returns:
      true if this window can be closed
      Since:
      IDW 1.2.0
      See Also:
    • isRestorable

      public boolean isRestorable()
      Returns true if this window can be restored by the user.
      Returns:
      true if this window can be restored
      Since:
      IDW 1.2.0
      See Also:
    • isUndockable

      public boolean isUndockable()
      Returns true if this window can be undocked to a floating window.
      Returns:
      true if this window can be undocked
      Since:
      IDW 1.4.0
      See Also:
    • isDockable

      public boolean isDockable()
      Returns true if this window can be docked to the root window from a floating window.
      Returns:
      true if this window can be docked
      Since:
      IDW 1.4.0
      See Also:
    • replaceChildWindow

      public void replaceChildWindow(DockingWindow oldWindow, DockingWindow newWindow)
      Replaces a child window with another window.
      Parameters:
      oldWindow - the child window to replaceChildWindow
      newWindow - the window to replaceChildWindow it with
    • internalReplaceChildWindow

      protected DockingWindow internalReplaceChildWindow(DockingWindow oldWindow, DockingWindow newWindow)
    • getTitle

      public String getTitle()
      Returns the title of this window.
      Returns:
      the window title
    • toString

      public String toString()
      Overrides:
      toString in class Component
    • storeAncestors

      protected WindowAncestors storeAncestors()
    • notifyListeners

      protected void notifyListeners(WindowAncestors ancestors)
    • isShowingInRootWindow

      protected boolean isShowingInRootWindow()
    • isChildShowingInRootWindow

      protected boolean isChildShowingInRootWindow(DockingWindow child)
    • makeVisible

      public void makeVisible()
      Makes this window visible. This causes the tabs of all TabWindow parents containing this window to be selected.
      Since:
      IDW 1.1.0
    • restoreFocus

      public void restoreFocus()
      Requests that the last focused child window becomes visible and that focus is restored to the last focused component in that window. If no child window has had focus or the child window has been removed from this window, focus is transferred to a child component of this window.
      Since:
      IDW 1.1.0
    • getPreferredFocusChild

      protected DockingWindow getPreferredFocusChild()
    • getOptimizedWindow

      protected DockingWindow getOptimizedWindow()
      Returns the result after removing unnecessary tab windows which contains only one tab.
      Returns:
      the result after removing unnecessary tab windows which contains only one tab
    • getBestFittedWindow

      protected DockingWindow getBestFittedWindow(DockingWindow parentWindow)
    • internalClose

      protected void internalClose()
    • showChildWindow

      protected void showChildWindow(DockingWindow window)
    • insideTab

      protected boolean insideTab()
      Returns:
      true if this window is inside a tab __exclude__
    • childInsideTab

      protected boolean childInsideTab()
      Returns:
      true if the child windows are inside tabs __exclude__
    • getAncestors

      protected DockingWindow[] getAncestors()
    • fireWindowShown

      protected void fireWindowShown(DockingWindow window)
    • fireViewFocusChanged

      protected void fireViewFocusChanged(View previouslyFocusedView, View focusedView)
    • fireWindowHidden

      protected void fireWindowHidden(DockingWindow window)
    • setLastMinimizedDirection

      protected void setLastMinimizedDirection(Direction direction)
    • clearChildrenFocus

      protected void clearChildrenFocus(DockingWindow child, View view)
    • childRemoved

      protected void childRemoved(DockingWindow child)
    • updateButtonVisibility

      protected void updateButtonVisibility()
    • readLocations

      protected final void readLocations(ObjectInputStream in, RootWindow rootWindow, int version) throws IOException
      Throws:
      IOException
    • writeLocations

      protected void writeLocations(ObjectOutputStream out) throws IOException
      Throws:
      IOException
    • beginOptimize

      protected static void beginOptimize(DockingWindow window)
    • endOptimize

      protected static void endOptimize()
    • optimizeAfter

      protected static void optimizeAfter(DockingWindow window, Runnable runnable)
    • needsTitleWindow

      protected boolean needsTitleWindow()
    • showsWindowTitle

      protected boolean showsWindowTitle()
    • optimizeWindowLayout

      protected void optimizeWindowLayout()
    • getLocationWindow

      protected DockingWindow getLocationWindow()
    • fireTitleChanged

      protected void fireTitleChanged()
    • getContentWindow

      protected DockingWindow getContentWindow(DockingWindow parent)
    • removeChildWindow

      protected final void removeChildWindow(DockingWindow window)
    • removeWindow

      protected final void removeWindow(DockingWindow window)
    • detach

      protected final void detach()
    • addWindow

      protected final DockingWindow addWindow(DockingWindow window)
    • rootChanged

      protected void rootChanged(RootWindow oldRoot, RootWindow newRoot)
    • clearFocus

      protected void clearFocus(View view)
    • acceptsSplitWith

      protected boolean acceptsSplitWith(DockingWindow window)
    • doAcceptDrop

      protected DropAction doAcceptDrop(Point p, DockingWindow window)
    • acceptSplitDrop

      protected DropAction acceptSplitDrop(Point p, DockingWindow window, int splitDistance)
    • split

      protected DropAction split(DockingWindow window, Direction splitDir)
    • beforeDrop

      protected void beforeDrop(DockingWindow target) throws OperationAbortedException
      Throws:
      OperationAbortedException
    • createTabWindow

      protected DropAction createTabWindow(DockingWindow window)
    • acceptInteriorDrop

      protected DropAction acceptInteriorDrop(Point p, DockingWindow window)
    • hasParent

      protected boolean hasParent(DockingWindow w)
    • oldRead

      protected DockingWindow oldRead(ObjectInputStream in, ReadContext context) throws IOException
      Throws:
      IOException
    • getPropertyObject

      protected abstract PropertyMap getPropertyObject()
    • createPropertyObject

      protected abstract PropertyMap createPropertyObject()
    • setFocused

      protected void setFocused(boolean focused)
    • getEdgeDepth

      protected int getEdgeDepth(Direction dir)
    • getChildEdgeDepth

      protected int getChildEdgeDepth(DockingWindow window, Direction dir)
    • acceptChildDrop

      protected DropAction acceptChildDrop(Point p, DockingWindow window)
    • getWindowItem

      protected WindowItem getWindowItem()
    • getUpdateModel

      protected boolean getUpdateModel()
    • beginUpdateModel

      protected static void beginUpdateModel()
    • endUpdateModel

      protected static void endUpdateModel()
    • updateWindowItem

      protected void updateWindowItem(RootWindow rootWindow)
    • afterWindowRemoved

      protected void afterWindowRemoved(DockingWindow window)
    • write

      protected void write(ObjectOutputStream out, WriteContext context, ViewWriter viewWriter) throws IOException
      Throws:
      IOException
    • cleanUpModel

      protected void cleanUpModel()