Class DockingWindow

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.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:
    Serialized Form
    • Constructor Detail

      • DockingWindow

        protected DockingWindow​(WindowItem windowItem)
    • Method Detail

      • getIcon

        public abstract javax.swing.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
      • 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
      • 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
      • 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
      • 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.

      • undock

        public FloatingWindow undock​(java.awt.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
      • 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
      • 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
      • 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​(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
      • 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:
        minimize()
      • 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:
        maximize()
      • 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:
        close(), closeWithAbort()
      • 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:
        restore()
      • 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:
        undock(Point)
      • 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:
        dock()
      • 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
      • getTitle

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

        public java.lang.String toString()
        Overrides:
        toString in class java.awt.Component
      • 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
      • 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__
      • 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​(java.io.ObjectInputStream in,
                                           RootWindow rootWindow,
                                           int version)
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • writeLocations

        protected void writeLocations​(java.io.ObjectOutputStream out)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • beginOptimize

        protected static void beginOptimize​(DockingWindow window)
      • endOptimize

        protected static void endOptimize()
      • optimizeAfter

        protected static void optimizeAfter​(DockingWindow window,
                                            java.lang.Runnable runnable)
      • needsTitleWindow

        protected boolean needsTitleWindow()
      • showsWindowTitle

        protected boolean showsWindowTitle()
      • optimizeWindowLayout

        protected void optimizeWindowLayout()
      • getLocationWindow

        protected DockingWindow getLocationWindow()
      • fireTitleChanged

        protected void fireTitleChanged()
      • removeChildWindow

        protected final void removeChildWindow​(DockingWindow window)
      • removeWindow

        protected final void removeWindow​(DockingWindow window)
      • detach

        protected final void detach()
      • clearFocus

        protected void clearFocus​(View view)
      • acceptsSplitWith

        protected boolean acceptsSplitWith​(DockingWindow window)
      • acceptSplitDrop

        protected DropAction acceptSplitDrop​(java.awt.Point p,
                                             DockingWindow window,
                                             int splitDistance)
      • oldRead

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

        protected abstract PropertyMap getPropertyObject()
      • createPropertyObject

        protected abstract PropertyMap createPropertyObject()
      • setFocused

        protected void setFocused​(boolean focused)
      • getEdgeDepth

        protected int getEdgeDepth​(Direction dir)
      • 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​(java.io.ObjectOutputStream out,
                             WriteContext context,
                             ViewWriter viewWriter)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • cleanUpModel

        protected void cleanUpModel()