A Visualizer shows a Dockable in a special state. The special state is usually DockableState.MAXIMIZED or DockableState.MINIMIZED.
We call a visualizer that shows a dockable in the state MAXIMIZED a maximizer. We call a visualizer that shows a dockable in the state MINIMIZED a minimizer.
Visualizers have to be registered in the dock model with a key:
dockModel.addVisualizer("minimizer", minimizePanel, frame);
A very simple minimizer is LineMinimizer.
It shows the minimized dockables in a line at the bottom of a panel.
The maximizer that is usually used is a SingleMaximizer.
It shows one maximized dockable in a panel.
The externalizer that is usually used is a FloatExternalizer.
In this example there is a minimizer around the root dock. Around the minimizer is a maximizer.
// Create an externalizer. FloatExternalizer externalizer = new FloatExternalizer(frame); dockModel.addVisualizer("externalizer", externalizer, frame); // Create a minimizer. LineMinimizer minimizePanel = new LineMinimizer(splitDock); dockModel.addVisualizer("minimizer", minimizePanel, frame); // Create a maximizer. SingleMaximizer maximizePanel = new SingleMaximizer(minimizePanel); dockModel.addVisualizer("maximizer", maximizePanel, frame); ... // Minimize dockables. minimizer.visualizeDockable(dockable5); minimizer.visualizeDockable(dockable6); minimizer.visualizeDockable(dockable7); minimizer.visualizeDockable(dockable8); // Externalize dockable. //externalizer.visualizeDockable(dockable9); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Point location = new Point((screenSize.width - 200) / 2, (screenSize.height - 200) / 2); externalizer.externalizeDockable(dockable9, location);
A more complicated minimizer is DockingMinimizer. It shows the minimized dockables in lines at the borders of a border dock. The minimized dockables can move in their lines, be dragged to other lines, or even be made floating.
In this example there is a maximizer around the root dock. Around the maximizer is a docking minimizer. The minimizer uses a border dock in mode MODE_MINIMIZE_BAR. This dock is a root dock and has to be registered in the dock model as root dock:
// Create a maximizer and add it to the dock model. SingleMaximizer maximizePanel = new SingleMaximizer(splitDock); dockModel.addVisualizer("maximizePanel", maximizePanel, frame); // Create a docking minimizer. BorderDock borderDock = new BorderDock(new ToolBarDockFactory()); borderDock.setMode(BorderDock.MODE_MINIMIZE_BAR); borderDock.setCenterComponent(maximizePanel); BorderDocker borderDocker = new BorderDocker(); borderDocker.setBorderDock(borderDock); DockingMinimizer minimizer = new DockingMinimizer(borderDocker); // Add the minimizer to the dock model, add also the border dock used by the minimizer to the dock model. dockModel.addVisualizer("minimizePanel", minimizer, frame); dockModel.addRootDock("minimizerBorderDock", borderDock, frame); // Add the border dock of the minimizer to this panel. this.add(borderDock, BorderLayout.CENTER); // Minimize dockables 5, 6, 7, and 8. minimizer.visualizeDockable(dockable5); minimizer.visualizeDockable(dockable6); minimizer.visualizeDockable(dockable7); minimizer.visualizeDockable(dockable8);
If you want to minimize your dockables in a different way, you have to create your own visualizer implementation. This is shown in WindowMinimizerExample. The minimizer shows its minimized components in a dialog.
When a dockable is maximized, a maximize header is displayed above the dockable. When a dockable is minimized, the dockable is represented by a minimize header. The SwComponentFactory is responsible for creating those headers:
... // Set our custom component factory that creates headers for minimized dockables with an image. DockingManager.setComponentFactory(new CustomComponentFactory()); ... /** * The header of a minimized dockable will be an image of the dockable component. */ private class CustomComponentFactory extends DefaultSwComponentFactory { // Overwritten methods. public SelectableHeader createMinimizeHeader(Dockable dockable, int position) { return new ImageMinimzeHeader(dockable, position); } }
VisualizersExample | Shows the usage of a minimizer, maximizer, and externalizer. |
DockingMinimizerExample | Shows the usage of a docking minimizer. |
ImageDockingMinimizerExample | Shows the usage of a docking minimizer with images. |
WindowMinimizerExample | Shows the creation of a new minimizer. |
ExternalizerExample | Shows the usage of an externalizer. |