public CombinerTarget prepare(final CombinerSource source, boolean force) { DockableDisplayer displayer = source.getOldDisplayer(); if (displayer != null) { DisplayerCombinerTarget operation = displayer.prepareCombination(source, force); if (operation != null) { return new DisplayerTarget(operation); } } if (!force) { return null; } return new CombinerTarget() { public void paint( Graphics g, Component component, StationPaint paint, Rectangle stationBounds, Rectangle dockableBounds) { paint.drawInsertion(g, source.getParent(), stationBounds, dockableBounds); } public DisplayerCombinerTarget getDisplayerCombination() { return null; } }; }
@Override protected void showDisplayer(DockableDisplayer displayer) { if (this.displayer != displayer) { if (this.displayer != null) { getDisplayerParent().remove(this.displayer.getComponent()); } this.displayer = displayer; if (displayer != null) { getDisplayerParent().add(displayer.getComponent()); } } validate(); }
/** * Makes a guess how big the insets of the {@link Dockable} compared to the whole dialog are. * * @return the insets, only a guess */ public Insets getDockableInsets() { Container parent = getDisplayerParent(); Insets parentInsets = parent.getInsets(); if (parentInsets == null) parentInsets = new Insets(0, 0, 0, 0); Point zero = new Point(0, 0); zero = SwingUtilities.convertPoint(parent, zero, window); parentInsets.left += zero.x; parentInsets.top += zero.y; parentInsets.right += window.getWidth() - parent.getWidth() - zero.x; parentInsets.bottom += window.getHeight() - parent.getHeight() - zero.y; if (displayer == null) return parentInsets; Insets insets = displayer.getDockableInsets(); parentInsets.top += insets.top; parentInsets.bottom += insets.bottom; parentInsets.left += insets.left; parentInsets.right += insets.right; return parentInsets; }