See: Description
| Interface | Description |
|---|---|
| Dockable |
Interface describing a component (AWT/Swing) that can be managed by the
DockingDesktop.
|
| DockableContainer |
A DockableContainer is the base interface of GUI components used to
display
Dockable components. |
| DockableDragSource |
An interface implemented by visual components used for drag and drop operations
on a DockableContainer.
|
| DockableResolver |
An interface used to find a dockable (when read from an input stream like XML)
when the only information given is its DockKey id.
|
| DockDropReceiver |
An interface implemented by components that can accept docking action with mouse drag and drop.
|
| FloatingDockableContainer |
The interface describing a Floating window used to display one or more dockables
|
| SingleDockableContainer |
A SingleDockableContainer is a DockableContainer that can display
a single
Dockable component. |
| TabbedDockableContainer |
Interface describing a container that can be used to display more than
one Dockable in a Tabbed Pane fashion.
|
| Class | Description |
|---|---|
| AnchorConstraints |
A constraint used to specify how a dockable is tied (anchored) to its containing parent .
|
| AnchorManager |
A helper class used to specify and enforce constraints within a container
(DockingPanel or CompoundDockingPanel).
|
| AutoHideBorderLayout |
A Layout Manager for auto-hide borders.
|
| AutoHideButton |
The button used to show Dockables in auto-hide borders.
|
| AutoHideButtonPanel |
A Swing panel used as a toolbar for autohide buttons.
|
| AutoHideExpandPanel |
A component used to show the currently expanded view.
|
| AutoHidePolicy |
This class holds preferences on default autohiding behaviour.
|
| BorderSplitter |
An utility class used to delegate the border drag/drop scanning for docking (
since the same code is used in many DockDropReceivers).
|
| CompoundDockable |
Describes a Dockable that can contain sub-dockables.
|
| CompoundDockingPanel |
A specialized container used to nest dockables inside that sub-part of the
desktop.
|
| DefaultDockableContainerFactory |
Default implementation of the DockableContainerFactory.
|
| DetachedDockView |
A DockView suitable for detached dockables (in their own window).
|
| DockableActionCustomizer |
An objet that can provide actions relative to a dockable.
|
| DockableContainerFactory |
An abstract factory used by the
DockingDesktop to create instance
of Dockable containers. |
| DockablePanel |
A basic implementation of Dockable.
|
| DockableState |
General information about the current state of a dockable component.
|
| DockableStoreButton |
A Button that can be used to store a dockable (for example to allow moving a dockable
between two workspaces).
|
| DockGroup |
This class describes a logical group of Dockables.
|
| DockingBorderLayout |
A layout adapted to autohide panels.
|
| DockingConstants |
Constants used by the DockingDesktop to position Dockables.
|
| DockingConstants.Hide |
Typesafe enumeration describing an auto-hide operation on the DockingDesktop.
|
| DockingConstants.Split |
Typesafe enumeration describing a split operation on the DockingDesktop.
|
| DockingContext |
A context that can be shared by multiple docking desktops.
|
| DockingDesktop |
The DockingDesktop is the main class of the VLDocking Framework.
|
| DockingPanel |
This class is responsible for the containment of a Dockable component.
|
| DockingPreferences |
This is the centralized settings repository for managing docking look and feel.
|
| DockingSelectorDialog |
A Helper class providing information about the visibility of user components.
|
| DockingUtilities |
Utility class implementing search/replace algorithms used by the framework.
|
| DockKey |
Provides a unique identification for a Dockable and runtime properties, like icon, name,
tooltip, preferred audohide-zone...
|
| DockTabbedPane |
A JTabbedPane customized for integration with the docking framework.
|
| DockView |
DefaultImplementation of the SingleDockableContainer.
|
| DockViewAsTab |
This component is used to display single dockables like if they were in a tabbed pane.
|
| DockViewTitleBar |
A title bar, associated to a DockView (container of a single user component).
|
| FloatingDialog |
The floating jdialog for floatable dockables.
|
| MaximizedDockView |
A dockView suitable for maximized dockables
|
| MaximizedDockViewAsTab |
A maximized view to use with the TabFactory.
|
| RelativeDockablePosition |
This class is an immutable object used to remember the relative positionning
of docked components.
|
| ShadowBorder |
A border using a shadow on right-bottom sides.
|
| SplitContainer |
A Specialized JSplitPane which accepts drag and drop of DockableContainer.
|
| TabbedContainerActions |
An utility class providing default implementation of usefull actions for pop-up
menus in tab container selectors.
|
| TabbedDockView |
A DockView that can be nested into a TabbedDockableContainer
|
| TabFactory |
A factory that replaces DockViews (with title headers) by tabbed panes with a single tab.
|

This javadoc is targetted to :
You will find in this documentation references of those targets, indicating you if you have to read such document or not, depending on your goals (developping a "User Application" or extending the API).
The VL Docking Framework is a set of Swing Components that is used to enhance any Swing Application by providing Docking capabilities to user components :
A user component can be any Swing JComponent (usualy a JPanel or a JScrollPane).
Docking functions are built upon the following classes :
DockingDesktop : the root container of a docking-enabled application
Dockable : an interface implemented (usually) by components that need
docking capabilities.
DockableContainers : specialized containers with drag and drop extensions
(come in two flavors, SingleDockableContainer and TabbedDockabeContainer).
DockKey : a JavaBeans object fully describing the dockable (use for save/load, and for
DockableContainers customization) : name, icon, tooltip, docking features.
DockingDesktop class. There is usually only one DockingDesktop associated to a Window.
For developpers used to JInternalFrame API, the DockingDesktop is equivalent
to the JDesktopPane : a layered pane capable of managing and displaying
multiple components, with overlapping when needed.
The desktop is composed of :
Dockable.
The central zone contains a DockableContainer that can be
recursively splitted in two (horizontally or vertically) to add
more DockableContainers. Each split acts
as a JSplitPane, and can be resized by the end-user or with the API.
Dockable interface Dockable is implemented by dockable component providers or, simply
by components that want to benefit of the docking features.
If you already have a working application (without docking) and want to use the docking framework, take your GUI major components, have them implement the Dockable interface (only 2 methods) and you will be able to add them to the docking desktop.
Alternatively, you can use DockablePanel which is a JPanel container implementing Dockable.
DockableContainer, SingleDockableContainer and
TabbedDockableContainer interfaces.DockKey classA DockKey is used in 3 situations :
DockingDesktop needs a unique key to identify a dockable
(for read/write operations)
DockableContainer displaying a Dockable wants
information about the dockable : a name, an icon, ...
So keep in mind that each dockable must have a unique DockKey (it's a kind of primary key) and that the key, as a javabean, is used to decorate the dockable container.
Listeners : most DockKey properties are bound, and changing their value will have an immediate effect on the DockingDesktop : for example, you can change the icon property of a key and it will be propagated to the DockableContainer's title bar of its dockable.

import com.vlsolutions.swing.docking.*;
import javax.swing.*;
import java.awt.*;
public class DemoFrame extends JFrame {
// our docking desktop
DockingDesktop desk = new DockingDesktop();
public DemoFrame(){
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
getContentPane().add(desk);
// first, create 4 dockable buttons (inner class below)
DockableButton button1 = new DockableButton("Dockable 1");
DockableButton button2 = new DockableButton("Dockable 2");
DockableButton button3 = new DockableButton("Dockable 3");
DockableButton button4 = new DockableButton("Dockable 4");
// first button at center
desk.addDockable(button1);
// second and third button splitted vertically on the left of center
// first parameter is the "reference", second is the added dockable
desk.split(button1, button2, DockingConstants.SPLIT_LEFT);
desk.split(button2, button3, DockingConstants.SPLIT_BOTTOM);
// add the fourth button as a tab on the 3rd :
desk.createTab(button3, button4, 1);
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
setSize(800,600);
validate();
setVisible(true); // realize on the event dispatch thread
}
});
}
public static void main(String [] args){
new DemoFrame();
}
// our basic dockable object
class DockableButton extends JButton implements Dockable {
DockKey key;
public DockableButton(String label){
super(label);
this.key = new DockKey(label); // most simple dockkey constructor
setPreferredSize(new Dimension(200,200));
}
public DockKey getDockKey() {
return key;
}
public Component getComponent() {
return this;
}
}
}
But of course, there's more in the docking framework than this. For example you can also :
The subset of classes of this package needed to understand and use the Docking Framework is limited to the following classes :
This API has been developed with extension in mind.
To Fully understand its principles, you will have to browse the entire javadoc and read the API extension tutorial on www.vlsolutions.com.
© Copyright 2004-2007 VLSolutions. All Rights Reserved.
www.vlsolutions.com : Java Components - Smart Client Applications