bibliothek.gui.dock.station.screen.window
Class AbstractScreenDockWindow

java.lang.Object
  extended by bibliothek.gui.dock.station.screen.window.DisplayerScreenDockWindow
      extended by bibliothek.gui.dock.station.screen.window.AbstractScreenDockWindow
All Implemented Interfaces:
ScreenDockWindow
Direct Known Subclasses:
InternalDockDialog, ScreenDockDialog, ScreenDockFrame

public abstract class AbstractScreenDockWindow
extends DisplayerScreenDockWindow

This abstract implementation of ScreenDockWindow uses a DockableDisplayer to show the Dockable. It can operate with any window. Clients need to call init(Component, Container, WindowConfiguration, boolean) to put this object onto some Container.

Author:
Benjamin Sigg

Nested Class Summary
 
Nested classes/interfaces inherited from class bibliothek.gui.dock.station.screen.window.DisplayerScreenDockWindow
DisplayerScreenDockWindow.Background
 
Constructor Summary
protected AbstractScreenDockWindow(ScreenDockStation station, WindowConfiguration configuration)
          Creates a new window.
  AbstractScreenDockWindow(ScreenDockStation station, WindowConfiguration configuration, Component window, Container contentParent)
          Creates a new window.
 
Method Summary
 void checkWindowBounds()
          Ensures the correctness of the boundaries of this window.
 void checkWindowBoundsAsync()
          Adds an event into the EDT that calls checkWindowBounds() at a later time, the boundaries will only be checked if this window is visible.
protected  void convertPointToScreen(Point point, Component component)
          Converts point which is relative to component to a point on the screen.
protected  SecureContainer createContent(WindowConfiguration configuration)
          Creates the component that will be used as content-pane.
protected  WindowMover createTitleMover()
          Creates a new WindowMover which is used to move this window if the DockTitle is dragged by the mouse.
 void destroy()
          Informs this window that it is no longer used by the station and will never be used again.
 Component getComponent()
          Gets the root Component of this window.
 DockableDisplayer getDisplayer()
          Gets the displayer which is shown on this dialog.
protected  Container getDisplayerParent()
          Gets the container on which the displayer is shown.
 Insets getDockableInsets()
          Makes a guess how big the insets of the Dockable compared to the whole dialog are.
protected  Icon getTitleIcon()
          Gets the icon which should be used in the title.
protected  String getTitleText()
          Gets the text which should be used in the title.
 Rectangle getWindowBounds()
          Gets the boundaries of the window.
protected  Component getWindowComponent()
          Gets the component on which ScreenDockWindow#setWindowBounds(java.awt.Rectangle, boolean) is applied.
protected  void init(Component window, Container contentParent, WindowConfiguration configuration, boolean borderAllowed)
          Initializes this window.
 void invalidate()
          Invalidates the layout of this window.
 boolean isVisible()
          Tells whether this window is visible or not.
protected  void setBackground(BackgroundAlgorithm background)
          Sets the algorithm that paints the background of this window.
 void setController(DockController controller)
          Sets the controller in whose realm this window will be used.
protected  void setCursor(Cursor cursor)
          Sets the current cursor of this window
 void setDockable(Dockable dockable)
          Sets the Dockable which should be shown on this window.
 void setPaintCombining(CombinerTarget target)
          Sets whether this window should paint some additional markings which indicate that a Dockable is about to be dropped onto it.
Subclasses should use ScreenDockStation.getPaint() to get an algorithm that paints.
 void setPaintRemoval(boolean removal)
          Informs this window that a drag and drop operation is in progress, and that the child of this window may be removed in the near future.
protected  void setShape(Window window, ScreenWindowShape shape)
          Sets the algorithm which is responsible for updating the shape of this window.
 void setTitleIcon(Icon titleIcon)
          Explicitly sets the icon of the title.
 void setTitleText(String titleText)
          Explicitly sets the text of the title.
 void setVisible(boolean visible)
          Changes the visibility state of this window.
 void setWindowBounds(Rectangle bounds)
          Sets the bounds the window is supposed to have.
 void setWindowBounds(Rectangle bounds, ScreenDockWindowBorder.Position position)
          Sets the boundaries of this window.
protected  void showDisplayer(DockableDisplayer displayer)
          Forces the subclass of this window to show displayer.
protected  void updateTitleIcon()
          Called when the icon of the title should be updated.
protected  void updateTitleText()
          Called when the text of the title should be updated.
 void validate()
          Forces this window to update the boundaries of its children.
 
Methods inherited from class bibliothek.gui.dock.station.screen.window.DisplayerScreenDockWindow
addScreenDockWindowListener, contains, discardDisplayer, fireFullscreenChanged, fireShapeChanged, fireVisibilityChanged, fireWindowClosing, getConfiguration, getController, getDockable, getDockableDisplayer, getMinimumWindowSize, getNormalBounds, getOffsetDrop, getOffsetMove, getStation, getTitleCenter, inCombineArea, init, inTitleArea, isFullscreen, isMoveOnTitleGrab, isShowTitle, listeners, removeScreenDockWindowListener, setFullscreen, setFullscreenStrategy, setNormalBounds, setShowTitle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface bibliothek.gui.dock.station.screen.ScreenDockWindow
setPreventFocusStealing, toFront
 

Constructor Detail

AbstractScreenDockWindow

protected AbstractScreenDockWindow(ScreenDockStation station,
                                   WindowConfiguration configuration)
Creates a new window. Subclasses must call init(Component, Container, WindowConfiguration, boolean) when using this constructor.

Parameters:
station - the owner of this window
configuration - the configuration to apply during creation of this window

AbstractScreenDockWindow

public AbstractScreenDockWindow(ScreenDockStation station,
                                WindowConfiguration configuration,
                                Component window,
                                Container contentParent)
Creates a new window.

Parameters:
station - the owner of this window
configuration - the configuration to apply during creation of this window
window - the root component of this window
contentParent - the container onto which the contents of this window will be put
See Also:
init(Component, Container, WindowConfiguration, boolean)
Method Detail

init

protected void init(Component window,
                    Container contentParent,
                    WindowConfiguration configuration,
                    boolean borderAllowed)
Initializes this window.

Parameters:
window - the component which represents the window. This component will be used when calling methods like #setWindowBounds(Rectangle, boolean). It is the root of this whole window.
contentParent - the container which will be used as parent for the contents of this window. This method will change the LayoutManager and add a child to contentParent. This component can be the same as window.
borderAllowed - If true and if WindowConfiguration.isResizeable(), then a new border is installed for the displayer parent, and some MouseListeners are installed. When the mouse is over the border it will change the cursor and the user can resize or move the window. If false nothing happens and the resizing system has to be implemented by the subclass.

createTitleMover

protected WindowMover createTitleMover()
Description copied from class: DisplayerScreenDockWindow
Creates a new WindowMover which is used to move this window if the DockTitle is dragged by the mouse. This method is only called if WindowConfiguration.isMoveOnTitleGrab() returns true.

Overrides:
createTitleMover in class DisplayerScreenDockWindow
Returns:
the new mover, can be null

setController

public void setController(DockController controller)
Description copied from interface: ScreenDockWindow
Sets the controller in whose realm this window will be used. This method will be called after the controller of the owning ScreenDockStation was set, so AbstractDockStation.getController() will always return the same value as controller. This also implies that any method of the station called from this method already uses the new controller.

Specified by:
setController in interface ScreenDockWindow
Overrides:
setController in class DisplayerScreenDockWindow
Parameters:
controller - the new controller, can be null

setShape

protected void setShape(Window window,
                        ScreenWindowShape shape)
Sets the algorithm which is responsible for updating the shape of this window. The algorithm remains active until destroy() is called.
Note: This method does nothing if Workarounds.supportsTransparency(Window) returns false.

Parameters:
window - the Window representing this, it should be getWindowComponent()
shape - the algorithm defining the new shape

getWindowComponent

protected Component getWindowComponent()
Description copied from class: DisplayerScreenDockWindow
Gets the component on which ScreenDockWindow#setWindowBounds(java.awt.Rectangle, boolean) is applied.

Specified by:
getWindowComponent in class DisplayerScreenDockWindow
Returns:
the base component

setBackground

protected void setBackground(BackgroundAlgorithm background)
Description copied from class: DisplayerScreenDockWindow
Sets the algorithm that paints the background of this window.

Specified by:
setBackground in class DisplayerScreenDockWindow
Parameters:
background - the algorithm, may be null

setDockable

public void setDockable(Dockable dockable)
Description copied from interface: ScreenDockWindow
Sets the Dockable which should be shown on this window.

Specified by:
setDockable in interface ScreenDockWindow
Overrides:
setDockable in class DisplayerScreenDockWindow
Parameters:
dockable - the new element, can be null to remove an old Dockable

showDisplayer

protected void showDisplayer(DockableDisplayer displayer)
Description copied from class: DisplayerScreenDockWindow
Forces the subclass of this window to show displayer. Only one displayer should be shown at any time. A new displayer replaces an old one.

Specified by:
showDisplayer in class DisplayerScreenDockWindow
Parameters:
displayer - the displayer to show or null to remove the current displayer

setTitleIcon

public void setTitleIcon(Icon titleIcon)
Explicitly sets the icon of the title.

Parameters:
titleIcon - the new icon or null to use the Dockables icon.

getTitleIcon

protected Icon getTitleIcon()
Gets the icon which should be used in the title.

Returns:
the icon

updateTitleIcon

protected void updateTitleIcon()
Called when the icon of the title should be updated.

See Also:
getTitleIcon()

setTitleText

public void setTitleText(String titleText)
Explicitly sets the text of the title.

Parameters:
titleText - the new text or null to use the Dockables title text.

getTitleText

protected String getTitleText()
Gets the text which should be used in the title.

Returns:
the text, might be null

updateTitleText

protected void updateTitleText()
Called when the text of the title should be updated.

See Also:
getTitleText()

getWindowBounds

public Rectangle getWindowBounds()
Description copied from interface: ScreenDockWindow
Gets the boundaries of the window.

Returns:
the boundaries

getComponent

public Component getComponent()
Description copied from interface: ScreenDockWindow
Gets the root Component of this window.

Returns:
the root component

setPaintCombining

public void setPaintCombining(CombinerTarget target)
Description copied from interface: ScreenDockWindow
Sets whether this window should paint some additional markings which indicate that a Dockable is about to be dropped onto it.
Subclasses should use ScreenDockStation.getPaint() to get an algorithm that paints.

Parameters:
target - if null then nothing should be painted, otherwise the method CombinerTarget.paint(java.awt.Graphics, java.awt.Component, bibliothek.gui.dock.station.StationPaint, Rectangle, Rectangle) should be called

setPaintRemoval

public void setPaintRemoval(boolean removal)
Description copied from interface: ScreenDockWindow
Informs this window that a drag and drop operation is in progress, and that the child of this window may be removed in the near future.

Parameters:
removal - whether the operation is in progress

setVisible

public void setVisible(boolean visible)
Description copied from interface: ScreenDockWindow
Changes the visibility state of this window.

Parameters:
visible - the new state

isVisible

public boolean isVisible()
Description copied from interface: ScreenDockWindow
Tells whether this window is visible or not.

Returns:
the visibility state

setWindowBounds

public void setWindowBounds(Rectangle bounds,
                            ScreenDockWindowBorder.Position position)
Sets the boundaries of this window. If the boundaries are not valid, then this method tries to ensure that the edge or side opposite to position gets at the intended position. This is a convenient method for resizing the window when the mouse is draggint the edge or side at position.

Parameters:
bounds - the new bounds
position - the opposite of the edge or side that is fixed

setWindowBounds

public void setWindowBounds(Rectangle bounds)
Description copied from interface: ScreenDockWindow
Sets the bounds the window is supposed to have. This method should use ScreenDockStation.getBoundaryRestriction() to check the validity of the new bounds.

Parameters:
bounds - the new location and size

checkWindowBoundsAsync

public void checkWindowBoundsAsync()
Adds an event into the EDT that calls checkWindowBounds() at a later time, the boundaries will only be checked if this window is visible.


checkWindowBounds

public void checkWindowBounds()
Description copied from interface: ScreenDockWindow
Ensures the correctness of the boundaries of this window. This method should use ScreenDockStation.getBoundaryRestriction() to do so.


invalidate

public void invalidate()
Invalidates the layout of this window.

See Also:
Component.invalidate()

validate

public void validate()
Description copied from interface: ScreenDockWindow
Forces this window to update the boundaries of its children.


setCursor

protected void setCursor(Cursor cursor)
Sets the current cursor of this window

Parameters:
cursor - the cursor
See Also:
Component.setCursor(Cursor)

convertPointToScreen

protected void convertPointToScreen(Point point,
                                    Component component)
Converts point which is relative to component to a point on the screen.

Parameters:
point - the point to modify
component - specifies the coordinate system
See Also:
SwingUtilities.convertPointToScreen(Point, Component)

getDockableInsets

public Insets getDockableInsets()
Makes a guess how big the insets of the Dockable compared to the whole dialog are.

Returns:
the insets, only a guess

createContent

protected SecureContainer createContent(WindowConfiguration configuration)
Creates the component that will be used as content-pane. This method is invoked by the constructor.

Parameters:
configuration - the configuration of this window
Returns:
the new content pane

getDisplayerParent

protected Container getDisplayerParent()
Gets the container on which the displayer is shown.

Returns:
the parent of the displayer

getDisplayer

public DockableDisplayer getDisplayer()
Gets the displayer which is shown on this dialog.

Returns:
The displayer, may be null
See Also:
showDisplayer(DockableDisplayer)

destroy

public void destroy()
Description copied from interface: ScreenDockWindow
Informs this window that it is no longer used by the station and will never be used again.