20 package net.sf.gridarta.gui.utils.borderpanel;
22 import java.awt.BorderLayout;
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.awt.Dimension;
26 import java.awt.event.HierarchyEvent;
27 import java.awt.event.HierarchyListener;
28 import java.beans.PropertyChangeEvent;
29 import java.beans.PropertyChangeListener;
30 import javax.swing.JSplitPane;
31 import org.jetbrains.annotations.NotNull;
32 import org.jetbrains.annotations.Nullable;
127 setLayout(
new BorderLayout());
130 splitPane.addPropertyChangeListener(
new PropertyChangeListener() {
133 public void propertyChange(
final PropertyChangeEvent evt) {
140 if (evt.getPropertyName() == JSplitPane.DIVIDER_LOCATION_PROPERTY) {
141 final Object value = evt.getNewValue();
142 if (value instanceof Integer) {
143 final int newSize = (Integer) value;
146 if (optionalComponent !=
null) {
147 borderSplitPaneListener.sizeChanged(optionalComponent, splitPaneSize);
157 splitPane2.addPropertyChangeListener(
new PropertyChangeListener() {
160 public void propertyChange(
final PropertyChangeEvent evt) {
167 if (evt.getPropertyName() == JSplitPane.DIVIDER_LOCATION_PROPERTY) {
168 final Object value = evt.getNewValue();
169 if (value instanceof Integer) {
170 final int newSize = (Integer) value;
172 borderSplitPaneListener.size2Changed(newSize);
180 final HierarchyListener hierarchyListener =
new HierarchyListener() {
183 public void hierarchyChanged(
final HierarchyEvent e) {
184 if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0L && isShowing()) {
185 removeHierarchyListener(
this);
197 addHierarchyListener(hierarchyListener);
223 private void setOptionalComponent(@Nullable
final Component optionalComponent,
final boolean alternativeLocation,
final int size,
final boolean force) {
224 final int index = alternativeLocation ? 1 : 0;
231 final Component centerComponent;
232 final boolean setSize2;
265 add(centerComponent, BorderLayout.CENTER);
274 if (optionalComponent ==
null) {
275 if (otherComponent ==
null) {
278 final Dimension preferredSizeTmp = otherComponent.getPreferredSize();
283 if (otherComponent ==
null) {
286 final Dimension preferredSizeTmp = otherComponent.getPreferredSize();
337 preferredSize.height =
size;
339 preferredSize.width =
size;
348 result = Math.max(0, splitPaneSize -
size);
360 if (optionalComponent !=
null) {
361 final Dimension preferredSize = optionalComponent.getPreferredSize();
362 if (preferredSize !=
null) {
363 return preferredSize;
369 if (optionalComponent !=
null) {
370 return optionalComponent.getSize();
383 if (optionalComponent !=
null) {
384 optionalComponent.setPreferredSize(preferredSize);