Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.crosswire.common.swing
Class FixedSplitPane

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.JSplitPane
                      org.crosswire.common.swing.FixedSplitPane

All Implemented Interfaces:
  ImageObserver, MenuContainer, Serializable, Accessible

    public class FixedSplitPane

extends JSplitPane

This is a hack to fix the setDividerLocation problem and other layout problems.

See Bug Parade 4101306, 4485465 for a description of the WIDE divider problem.

Bug Reports on JSplitpane setDividerLocation
4101306, 4125713, 4148530

From the javadoc for setDividerLocation(double): -------------------------------------------

This method is implemented in terms of setDividerLocation(int). This method immediately changes the size of the receiver based on its current size. If the receiver is not correctly realized and on screen, this method will have no effect (new divider location will become (current size * proportionalLocation) which is 0).
-------------------------------------------
So, as you can see the JSplitPane MUST be visible invoking this method otherwise it will not have the desired effect.

Another, Bug Report 4786896 notes that if the preferred sizes of the two components plus the divider of the split pane adds up to more than the preferred size of the JSplitPane, then JSplitPane will use the minimum size of the components.

Since the preferred way of managing the sizes of containers is not with pixel counts, the solution here is to set the preferred size to zero.

Author:
  DM Smith [dmsmith555 at yahoo dot com]
See Also:
  `for license details. The copyright to this program is held by it's authors.`, Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class javax.swing.JSplitPane
`JSplitPane.AccessibleJSplitPane`

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.BltBufferStrategy, Component.FlipBufferStrategy`

Field Summary
`private static Dimension` | `DOT`
`private static Border` | `EMPTY_BORDER` An Empty Border
`private boolean` | `firstValidate`
`private boolean` | `hasProportionalLocation`
`static String` | `PROPERTYNAME_VISIBLE_DIVIDER_BORDER` Property for border visibility
`private double` | `proportionalLocation`
`private static long` | `serialVersionUID` Serialization ID
`private boolean` | `visibleDividerBorder` Hint for whether Divider border should be visible.

Fields inherited from class javax.swing.JSplitPane
`BOTTOM, CONTINUOUS_LAYOUT_PROPERTY, continuousLayout, DIVIDER, DIVIDER_LOCATION_PROPERTY, DIVIDER_SIZE_PROPERTY, dividerSize, HORIZONTAL_SPLIT, LAST_DIVIDER_LOCATION_PROPERTY, lastDividerLocation, LEFT, leftComponent, ONE_TOUCH_EXPANDABLE_PROPERTY, oneTouchExpandable, orientation, ORIENTATION_PROPERTY, RESIZE_WEIGHT_PROPERTY, RIGHT, rightComponent, TOP, 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
`FixedSplitPane()` Constructor for FixedSplitPane
`FixedSplitPane(boolean visibleDividerBorder)` Constructor for FixedSplitPane that has no divider shadow and starts out with an empty border.
`FixedSplitPane(int arg0)` Constructor for FixedSplitPane
`FixedSplitPane(int arg0, boolean arg1)` Constructor for FixedSplitPane
`FixedSplitPane(int arg0, boolean arg1, Component arg2, Component arg3)` Constructor for FixedSplitPane
`FixedSplitPane(int arg0, Component arg1, Component arg2)` Constructor for FixedSplitPane

Method Summary
`protected void` | `addImpl(Component comp, Object constraints, int index)`
`boolean` | `isVisibleDividerBorder()` Whether visible borders are hinted
`void` | `setBottomComponent(Component comp)`
`void` | `setDividerLocation(double newProportionalLoc)` Sets the divider location as a percentage of the JSplitPane's size.
`void` | `setLeftComponent(Component comp)`
`void` | `setRightComponent(Component comp)`
`void` | `setTopComponent(Component comp)`
`void` | `setVisibleDividerBorder(boolean newVisibility)` Set a hint whether the border should be visible or not.
`void` | `updateUI()`
`void` | `validate()` Validates this container and all of its subcomponents.

Methods inherited from class javax.swing.JSplitPane
`getAccessibleContext, getBottomComponent, getDividerLocation, getDividerSize, getLastDividerLocation, getLeftComponent, getMaximumDividerLocation, getMinimumDividerLocation, getOrientation, getResizeWeight, getRightComponent, getTopComponent, getUI, getUIClassID, isContinuousLayout, isOneTouchExpandable, isValidateRoot, paintChildren, paramString, remove, remove, removeAll, resetToPreferredSizes, setContinuousLayout, setDividerLocation, setDividerSize, setLastDividerLocation, setOneTouchExpandable, setOrientation, setResizeWeight, setUI`

Methods inherited from class javax.swing.JComponent
`addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintComponent, paintImmediately, paintImmediately, 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`

Methods inherited from class java.awt.Container
`add, add, add, add, add, addContainerListener, 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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, 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

### DOT

    private static final Dimension DOT

### firstValidate

    private boolean firstValidate

### hasProportionalLocation

    private boolean hasProportionalLocation

### proportionalLocation

    private double proportionalLocation

### PROPERTYNAME_VISIBLE_DIVIDER_BORDER

    public static final String PROPERTYNAME_VISIBLE_DIVIDER_BORDER

  Property for border visibility

  See Also:
    Constant Field Values

### EMPTY_BORDER

    private static final Border EMPTY_BORDER

  An Empty Border

### visibleDividerBorder

    private boolean visibleDividerBorder

  Hint for whether Divider border should be visible.

### serialVersionUID

    private static final long serialVersionUID

  Serialization ID

  See Also:
    Constant Field Values

Constructor Detail

### FixedSplitPane

    public FixedSplitPane()

  Constructor for FixedSplitPane

### FixedSplitPane

    public FixedSplitPane(boolean visibleDividerBorder)

  Constructor for FixedSplitPane that has no divider shadow and starts out with an empty border.

### FixedSplitPane

    public FixedSplitPane(int arg0)

  Constructor for FixedSplitPane

### FixedSplitPane

    public FixedSplitPane(int arg0,
                          boolean arg1)

  Constructor for FixedSplitPane

### FixedSplitPane

    public FixedSplitPane(int arg0,
                          Component arg1,
                          Component arg2)

  Constructor for FixedSplitPane

### FixedSplitPane

    public FixedSplitPane(int arg0,
                          boolean arg1,
                          Component arg2,
                          Component arg3)

  Constructor for FixedSplitPane

Method Detail

### addImpl

    protected void addImpl(Component comp,
                           Object constraints,
                           int index)

  Overrides:
    `addImpl` in class `JSplitPane`

### setBottomComponent

    public void setBottomComponent(Component comp)

  Overrides:
    `setBottomComponent` in class `JSplitPane`

### setLeftComponent

    public void setLeftComponent(Component comp)

  Overrides:
    `setLeftComponent` in class `JSplitPane`

### setRightComponent

    public void setRightComponent(Component comp)

  Overrides:
    `setRightComponent` in class `JSplitPane`

### setTopComponent

    public void setTopComponent(Component comp)

  Overrides:
    `setTopComponent` in class `JSplitPane`

### validate

    public void validate()

  Validates this container and all of its subcomponents. The first time this method is called, the initial divider position is set.

  Overrides:
    `validate` in class `Container`

### setDividerLocation

    public void setDividerLocation(double newProportionalLoc)

  Sets the divider location as a percentage of the JSplitPane's size.

  Overrides:
    `setDividerLocation` in class `JSplitPane`

### isVisibleDividerBorder

    public boolean isVisibleDividerBorder()

  Whether visible borders are hinted

  Returns:
    the divider border visiblity hint

### setVisibleDividerBorder

    public void setVisibleDividerBorder(boolean newVisibility)

  Set a hint whether the border should be visible or not. Look and feels may ignore this.

  Parameters:
    `newVisibility` -

### updateUI

    public void updateUI()

  Overrides:
    `updateUI` in class `JSplitPane`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Copyright ? 2003-2006
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD