org.crosswire.common.swing
Class AltFixedSplitPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JSplitPane
                  extended by org.crosswire.common.swing.AltFixedSplitPane
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible

public class AltFixedSplitPane
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.

See Bug Parade: 4265389 for a description of the ComponentOrientation problem.

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.BaselineResizeBehavior, 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
AltFixedSplitPane()
          Constructor for FixedSplitPane
AltFixedSplitPane(boolean visibleDividerBorder)
          Constructor for FixedSplitPane that has no divider shadow and starts out with an empty border.
AltFixedSplitPane(int arg0)
          Constructor for FixedSplitPane
AltFixedSplitPane(int arg0, boolean arg1)
          Constructor for FixedSplitPane
AltFixedSplitPane(int arg0, boolean arg1, Component arg2, Component arg3)
          Constructor for FixedSplitPane
AltFixedSplitPane(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 setComponentOrientation(ComponentOrientation o)
           
 void setDividerLocation(double newProportionalLoc)
          Sets the divider location as a percentage of the JSplitPane's size.
 void setLeftComponent(Component comp)
           
 void setResizeWeight(double newResizeWeight)
          Sets the divider location as a percentage of the JSplitPane's size.
 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, 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, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, 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

AltFixedSplitPane

public AltFixedSplitPane()
Constructor for FixedSplitPane


AltFixedSplitPane

public AltFixedSplitPane(boolean visibleDividerBorder)
Constructor for FixedSplitPane that has no divider shadow and starts out with an empty border.


AltFixedSplitPane

public AltFixedSplitPane(int arg0)
Constructor for FixedSplitPane


AltFixedSplitPane

public AltFixedSplitPane(int arg0,
                         boolean arg1)
Constructor for FixedSplitPane


AltFixedSplitPane

public AltFixedSplitPane(int arg0,
                         Component arg1,
                         Component arg2)
Constructor for FixedSplitPane


AltFixedSplitPane

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

Method Detail

setComponentOrientation

public void setComponentOrientation(ComponentOrientation o)
Overrides:
setComponentOrientation in class Component

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

setResizeWeight

public void setResizeWeight(double newResizeWeight)
Sets the divider location as a percentage of the JSplitPane's size.

Overrides:
setResizeWeight 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

Copyright ยจ 2003-2013