schmitzm.swing
Class MultiSplitPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by schmitzm.swing.MultiSplitPane
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable

public class MultiSplitPane
extends JComponent


Diese Klasse wurde urspruenglich 2002/2003 von Martin Schmitz fuer die ADAGIOS-Java-Library (Universitaet Bonn) erstellt, 2009 in das SCHMITZM-Projekt uebernommen und teilweise erweitert.
Ein MultiSplitPane ist eine Menge von horizontal oder vertikal angeordneten Containern.
Die Groesse dieser Container kann durch den Benutzer manuell veraendert werden, in dem er die Trennlinien ("Dividers") zwischen den Containern verschiebt.
Das MultiSplitPane ist implementiert als eine baumartige Verschachtelung von JSplitPane-Objekten, in denen immer genau zwei Komponenten hinterlegt werden koennen.
Aus diesem Grund kann die Darstellung der Randbereiche recht unregelmaessig erscheinen. Deshalb ist es sinnvoll, den Rand entweder komplett auszuschalten (setInnerBorder(null)), oder einen unsichtbaren Rand zu verwenden (setInnerBorder( new EmptyBorder(..) ). Dies gilt vor allem, wenn man ein MultiSplitPane mit vielen Containern verwendet (mehr als 6 oder 7).

Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
JSplitPane, JComponent, setInnerBorder(Border), EmptyBorder, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
static int HORIZONTAL_SPLIT
           
static int VERTICAL_SPLIT
           
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
MultiSplitPane(int compCount)
          Erzeugt ein neues MultiSplitPane.
MultiSplitPane(int compCount, int orientation)
          Erzeugt ein neues MultiSplitPane.
 
Method Summary
protected  void checkOrientation(int orientation)
          Checkt, ob die angegebene Orientierung gueltig ist.
 Container getContainer(int i)
          Liefert den Inhalt eine Teil-Panes.
 int getContainerCount()
          Liefert die Anzahl an Komponenten, in die das SplitPane aufgeteilt ist.
 int getDividerSize()
          Liefert die Groesse des Dividers (in Pixeln).
 Border getInnerBorder()
          Liefert die Border des MultiSplitPane
 int getOrientation()
          Liefert die Orientierung in der die Container des MultiSplitPanes angeordnet sind.
 double[] getResizeWeight()
          Liefert die Gewichte aller Containers, mit deren Anteil diese bei einer Platzvergroesserung beruecksichtigt werden.
 double getResizeWeight(int i)
          Liefert das gesetzte Gewicht eines Containers, mit dessen Anteil dieser bei einer Platzvergroesserung beruecksichtigt wird.
 void setContainer(int i, Container cont)
          Setzt den Inhalt eine Teil-Panes.
 void setDividerSize(int size)
          Setzt die Groesse der Divider-Balken.
 void setInnerBorder(Border border)
          Setzt die Border fuer alle Container.
 void setOrientation(int orientation)
          Aendert die Orientierung des SplitPanes.
 void setResizeWeigth(double[] weight)
          Setzt die Container-Gewichtungen, mit deren Anteil diese bei einer Platzvergroesserung beruecksichtigt werden.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

HORIZONTAL_SPLIT

public static final int HORIZONTAL_SPLIT
See Also:
Constant Field Values

VERTICAL_SPLIT

public static final int VERTICAL_SPLIT
See Also:
Constant Field Values
Constructor Detail

MultiSplitPane

public MultiSplitPane(int compCount)
Erzeugt ein neues MultiSplitPane. Dieses muss aus mindestens 2 Containern bestehen. Diese werden horizontal angeordnet.

Parameters:
compCount - Anzahl an Containern im MultiSplitPane
Throws:
IllegalArgumentException - falls die Container-Anzahl < 2 ist.

MultiSplitPane

public MultiSplitPane(int compCount,
                      int orientation)
Erzeugt ein neues MultiSplitPane. Dieses muss aus mindestens 2 Containern bestehen. Moegliche Orientierungen:

Parameters:
compCount - Anzahl an Containern im MultiSplitPane
orientation - Orientierung des MultiSplitPane
Throws:
IllegalArgumentException - falls die Orientierung ungueltig ist oder die Container-Anzahl < 2 ist.
Method Detail

getContainerCount

public int getContainerCount()
Liefert die Anzahl an Komponenten, in die das SplitPane aufgeteilt ist.


getContainer

public Container getContainer(int i)
Liefert den Inhalt eine Teil-Panes.

Parameters:
i - Index des Teil-Panes (von links/oben nach rechts/unten)
Throws:
ArrayIndexOutOfBoundsException - falls ein ungueltiger Index angegeben wird

setContainer

public void setContainer(int i,
                         Container cont)
Setzt den Inhalt eine Teil-Panes.

Parameters:
i - Index des Teil-Panes (von links/oben nach rechts/unten)
cont - neuer Inhalt des Teil-Panes
Throws:
ArrayIndexOutOfBoundsException - falls ein ungueltiger Index angegeben wird

getOrientation

public int getOrientation()
Liefert die Orientierung in der die Container des MultiSplitPanes angeordnet sind.

See Also:
setOrientation(int)

setOrientation

public void setOrientation(int orientation)
Aendert die Orientierung des SplitPanes. Moegliche Orientierungen:

Parameters:
orientation - neue Orientierung
Throws:
IllegalArgumentException - falls die Orientierung ungueltig ist
See Also:
getOrientation()

checkOrientation

protected void checkOrientation(int orientation)
Checkt, ob die angegebene Orientierung gueltig ist. Andernfalls wird eine Exception geworfen.

Parameters:
orientation - Orientierung
Throws:
IllegalArgumentException - falls die Orientierung ungueltig ist

getDividerSize

public int getDividerSize()
Liefert die Groesse des Dividers (in Pixeln).


setDividerSize

public void setDividerSize(int size)
Setzt die Groesse der Divider-Balken. Die Darstellung des "laestigen" einpixligen Strichs laesst sich zwar verhindern, indem man die Divider-Groesse auf 0 setzt, leider sind dann aber auch die Groessen der einzelnen Container nicht mehr veraenderbar!!

Parameters:
size - Groesse in Pixeln
See Also:
getDividerSize()

getResizeWeight

public double getResizeWeight(int i)
Liefert das gesetzte Gewicht eines Containers, mit dessen Anteil dieser bei einer Platzvergroesserung beruecksichtigt wird.

Parameters:
i - Index des Teil-Panes (von links/oben nach rechts/unten)
Throws:
ArrayIndexOutOfBoundsException - falls ein ungueltiger Index angegeben wird
See Also:
setResizeWeigth(double[])

getResizeWeight

public double[] getResizeWeight()
Liefert die Gewichte aller Containers, mit deren Anteil diese bei einer Platzvergroesserung beruecksichtigt werden.

See Also:
getResizeWeight(int), setResizeWeigth(double[])

setResizeWeigth

public void setResizeWeigth(double[] weight)
Setzt die Container-Gewichtungen, mit deren Anteil diese bei einer Platzvergroesserung beruecksichtigt werden. Bei der Angabe der Gewichte sind folgende Punkte zu beachten:

Parameters:
weight - neue Gewichte
Throws:
IllegalArgumentException - falls eine der obigen Bedingungen verletzt ist.

getInnerBorder

public Border getInnerBorder()
Liefert die Border des MultiSplitPane


setInnerBorder

public void setInnerBorder(Border border)
Setzt die Border fuer alle Container.