javax.swing

Class JSplitPane

Implemented Interfaces:
Accessible, ImageObserver, MenuContainer, Serializable

public class JSplitPane
extends JComponent
implements Accessible

This class implements JSplitPane. It is used to divide two components. By dragging the SplitPane's divider, the user can resize the two components. Note that the divider cannot resize a component to smaller than it's minimum size.
See Also:
Serialized Form

Nested Class Summary

protected class
JSplitPane.AccessibleJSplitPane
Provides the accessibility features for the JSplitPane component.

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

static String
BOTTOM
The constraints string used to add components to the bottom.
static String
CONTINUOUS_LAYOUT_PROPERTY
The property fired when the continuousLayout property changes.
static String
DIVIDER
The property fired when the divider property changes.
static String
DIVIDER_LOCATION_PROPERTY
The property fired when the divider location property changes.
static String
DIVIDER_SIZE_PROPERTY
The property fired when the divider size property changes.
static int
HORIZONTAL_SPLIT
The value of the orientation when the components are split horizontally.
static String
LAST_DIVIDER_LOCATION_PROPERTY
The property fired when the last divider location property changes.
static String
LEFT
The constraints string used to add components to the left.
static String
ONE_TOUCH_EXPANDABLE_PROPERTY
The property fired when the one touch expandable property changes.
static String
ORIENTATION_PROPERTY
The property fired when the orientation property changes.
static String
RESIZE_WEIGHT_PROPERTY
The property fired when the resize weight property changes.
static String
RIGHT
The constraints string used to add components to the right.
static String
TOP
The constraints string used to add components to the top.
static int
VERTICAL_SPLIT
The value of the orientation when the components are split vertically.
protected boolean
continuousLayout
Whether the JSplitPane uses continuous layout.
protected int
dividerSize
The size of the divider.
protected int
lastDividerLocation
The last location of the divider given by the UI.
protected Component
leftComponent
The component on the top or left.
protected boolean
oneTouchExpandable
Whether the JSplitPane uses one touch expandable buttons.
protected int
orientation
The orientation of the JSplitPane.
protected Component
rightComponent
The component on the right or bottom.

Fields inherited from class javax.swing.JComponent

TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW, accessibleContext, listenerList, ui

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

JSplitPane()
Creates a new JSplitPane object using HORIZONTAL_SPLIT and a nonContinuousLayout mode.
JSplitPane(int newOrientation)
Creates a new JSplitPane object using a nonContinuousLayout mode and the given orientation.
JSplitPane(int newOrientation, boolean newContinuousLayout)
Creates a new JSplitPane object with the given layout mode and orientation.
JSplitPane(int newOrientation, boolean newContinuousLayout, Component newLeftComponent, Component newRightComponent)
Creates a new JSplitPane object with the given orientation, layout mode, and left and right components.
JSplitPane(int newOrientation, Component newLeftComponent, Component newRightComponent)
Creates a new JSplitPane object using nonContinuousLayout mode, the given orientation and left and right components.

Method Summary

protected void
addImpl(Component comp, Object constraints, int index)
This method adds a component to the JSplitPane.
AccessibleContext
getAccessibleContext()
Returns the object that provides accessibility features for this JSplitPane component.
Component
getBottomComponent()
This method returns the bottom component.
int
getDividerLocation()
This method returns the location of the divider.
int
getDividerSize()
This method returns the size of the divider.
int
getLastDividerLocation()
This method returns the last divider location.
Component
getLeftComponent()
This method returns the left component.
int
getMaximumDividerLocation()
This method returns the maximum divider location.
int
getMinimumDividerLocation()
This method returns the minimum divider location.
int
getOrientation()
This method returns the orientation that the JSplitPane is using.
double
getResizeWeight()
This method returns the current resize weight.
Component
getRightComponent()
This method returns the right component.
Component
getTopComponent()
This method returns the top component.
SplitPaneUI
getUI()
This method returns the UI.
String
getUIClassID()
This method returns a string identifier to determine which UI class it needs.
boolean
isContinuousLayout()
This method returns true if the JSplitPane is using a continuousLayout.
boolean
isOneTouchExpandable()
This method returns true if the divider has one touch expandable buttons.
boolean
isValidateRoot()
This method returns true.
protected void
paintChildren(Graphics g)
This method overrides JComponent's paintChildren so the UI can be messaged when the children have finished painting.
protected String
paramString()
Returns an implementation-dependent string describing the attributes of this JSplitPane.
void
remove(int index)
This method removes the component at the given index.
void
remove(Component component)
This method removes the given component from the JSplitPane.
void
removeAll()
This method removes all components from the JSplitPane.
void
resetToPreferredSizes()
This method resets all children of the JSplitPane to their preferred sizes.
void
setBottomComponent(Component comp)
This method sets the bottom component.
void
setContinuousLayout(boolean newContinuousLayout)
This method sets the layout mode for the JSplitPane.
void
setDividerLocation(double proportionalLocation)
This method sets the location of the divider.
void
setDividerLocation(int location)
This method sets the location of the divider.
void
setDividerSize(int newSize)
This method sets the size of the divider.
void
setLastDividerLocation(int newLastLocation)
This method sets the last location of the divider.
void
setLeftComponent(Component comp)
This method sets the left component.
void
setOneTouchExpandable(boolean newValue)
This method sets whether the divider has one touch expandable buttons.
void
setOrientation(int orientation)
Sets the orientation for the JSplitPane and sends a PropertyChangeEvent (with the property name ORIENTATION_PROPERTY) to all registered listeners.
void
setResizeWeight(double value)
This method determines how extra space will be distributed among the left and right components.
void
setRightComponent(Component comp)
This method sets the right component.
void
setTopComponent(Component comp)
This method sets the top component.
void
setUI(SplitPaneUI ui)
This method sets the UI used by the JSplitPane.
void
updateUI()
This method resets the UI to the one specified by the current Look and Feel.

Methods inherited from class javax.swing.JComponent

addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, extends EventListener> T[] getListeners, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, 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, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI

Methods inherited from class java.awt.Container

add, add, add, add, add, addContainerListener, addImpl, addNotify, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, extends EventListener> T[] getListeners, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponentZOrder, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusDownCycle, update, validate, validateTree

Methods inherited from class java.awt.Component

action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, extends EventListener> T[] getListeners, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getAlignmentX, getAlignmentY, getBackground, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFocusable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paint, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFocusable, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, update, validate

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

BOTTOM

public static final String BOTTOM
The constraints string used to add components to the bottom.
Field Value:
"bottom"

CONTINUOUS_LAYOUT_PROPERTY

public static final String CONTINUOUS_LAYOUT_PROPERTY
The property fired when the continuousLayout property changes.
Field Value:
"continuousLayout"

DIVIDER

public static final String DIVIDER
The property fired when the divider property changes.
Field Value:
"divider"

DIVIDER_LOCATION_PROPERTY

public static final String DIVIDER_LOCATION_PROPERTY
The property fired when the divider location property changes.
Field Value:
"dividerLocation"

DIVIDER_SIZE_PROPERTY

public static final String DIVIDER_SIZE_PROPERTY
The property fired when the divider size property changes.
Field Value:
"dividerSize"

HORIZONTAL_SPLIT

public static final int HORIZONTAL_SPLIT
The value of the orientation when the components are split horizontally.
Field Value:
1

LAST_DIVIDER_LOCATION_PROPERTY

public static final String LAST_DIVIDER_LOCATION_PROPERTY
The property fired when the last divider location property changes.
Field Value:
"lastDividerLocation"

LEFT

public static final String LEFT
The constraints string used to add components to the left.
Field Value:
"left"

ONE_TOUCH_EXPANDABLE_PROPERTY

public static final String ONE_TOUCH_EXPANDABLE_PROPERTY
The property fired when the one touch expandable property changes.
Field Value:
"oneTouchExpandable"

ORIENTATION_PROPERTY

public static final String ORIENTATION_PROPERTY
The property fired when the orientation property changes.
Field Value:
"orientation"

RESIZE_WEIGHT_PROPERTY

public static final String RESIZE_WEIGHT_PROPERTY
The property fired when the resize weight property changes.
Field Value:
"resizeWeight"

RIGHT

public static final String RIGHT
The constraints string used to add components to the right.
Field Value:
"right"

TOP

public static final String TOP
The constraints string used to add components to the top.
Field Value:
"top"

VERTICAL_SPLIT

public static final int VERTICAL_SPLIT
The value of the orientation when the components are split vertically.
Field Value:
0

continuousLayout

protected boolean continuousLayout
Whether the JSplitPane uses continuous layout.

dividerSize

protected int dividerSize
The size of the divider.

lastDividerLocation

protected int lastDividerLocation
The last location of the divider given by the UI.

leftComponent

protected Component leftComponent
The component on the top or left.

oneTouchExpandable

protected boolean oneTouchExpandable
Whether the JSplitPane uses one touch expandable buttons.

orientation

protected int orientation
The orientation of the JSplitPane.

rightComponent

protected Component rightComponent
The component on the right or bottom.

Constructor Details

JSplitPane

public JSplitPane()
Creates a new JSplitPane object using HORIZONTAL_SPLIT and a nonContinuousLayout mode.

JSplitPane

public JSplitPane(int newOrientation)
Creates a new JSplitPane object using a nonContinuousLayout mode and the given orientation.
Parameters:
newOrientation - The orientation to use.

JSplitPane

public JSplitPane(int newOrientation,
                  boolean newContinuousLayout)
Creates a new JSplitPane object with the given layout mode and orientation.
Parameters:
newOrientation - The orientation to use.
newContinuousLayout - The layout mode to use.

JSplitPane

public JSplitPane(int newOrientation,
                  boolean newContinuousLayout,
                  Component newLeftComponent,
                  Component newRightComponent)
Creates a new JSplitPane object with the given orientation, layout mode, and left and right components.
Parameters:
newOrientation - The orientation to use.
newContinuousLayout - The layout mode to use.
newLeftComponent - The left component.
newRightComponent - The right component.
Throws:
IllegalArgumentException - DOCUMENT ME!

JSplitPane

public JSplitPane(int newOrientation,
                  Component newLeftComponent,
                  Component newRightComponent)
Creates a new JSplitPane object using nonContinuousLayout mode, the given orientation and left and right components.
Parameters:
newOrientation - The orientation to use.
newLeftComponent - The left component.
newRightComponent - The right component.

Method Details

addImpl

protected void addImpl(Component comp,
                       Object constraints,
                       int index)
This method adds a component to the JSplitPane. The constraints object is a string that identifies where this component should go. If the constraints is not a known one, it will throw an IllegalArgumentException. The valid constraints are LEFT, TOP, RIGHT, BOTTOM and DIVIDER.
Overrides:
addImpl in interface Container
Parameters:
comp - The component to add.
constraints - The constraints string to use.
index - Where to place to component in the list of components.
Throws:
IllegalArgumentException - When the constraints is not a known identifier.

getAccessibleContext

public AccessibleContext getAccessibleContext()
Returns the object that provides accessibility features for this JSplitPane component.
Specified by:
getAccessibleContext in interface Accessible
Overrides:
getAccessibleContext in interface JComponent
Returns:
The accessible context (an instance of JSplitPane.AccessibleJSplitPane).

getBottomComponent

public Component getBottomComponent()
This method returns the bottom component.
Returns:
The bottom component.

getDividerLocation

public int getDividerLocation()
This method returns the location of the divider. This method is passed to the UI.
Returns:
The location of the divider.

getDividerSize

public int getDividerSize()
This method returns the size of the divider.
Returns:
The size of the divider.

getLastDividerLocation

public int getLastDividerLocation()
This method returns the last divider location.
Returns:
The last divider location.

getLeftComponent

public Component getLeftComponent()
This method returns the left component.
Returns:
The left component.

getMaximumDividerLocation

public int getMaximumDividerLocation()
This method returns the maximum divider location. This method is passed to the UI.
Returns:
DOCUMENT ME!

getMinimumDividerLocation

public int getMinimumDividerLocation()
This method returns the minimum divider location. This method is passed to the UI.
Returns:
The minimum divider location.

getOrientation

public int getOrientation()
This method returns the orientation that the JSplitPane is using.
Returns:
The current orientation.

getResizeWeight

public double getResizeWeight()
This method returns the current resize weight.
Returns:
The current resize weight.

getRightComponent

public Component getRightComponent()
This method returns the right component.
Returns:
The right component.

getTopComponent

public Component getTopComponent()
This method returns the top component.
Returns:
The top component.

getUI

public SplitPaneUI getUI()
This method returns the UI.
Returns:
The UI.

getUIClassID

public String getUIClassID()
This method returns a string identifier to determine which UI class it needs.
Overrides:
getUIClassID in interface JComponent
Returns:
A string that identifies it's UI class.

isContinuousLayout

public boolean isContinuousLayout()
This method returns true if the JSplitPane is using a continuousLayout.
Returns:
True if using a continuousLayout.

isOneTouchExpandable

public boolean isOneTouchExpandable()
This method returns true if the divider has one touch expandable buttons.
Returns:
True if one touch expandable is used.

isValidateRoot

public boolean isValidateRoot()
This method returns true.
Overrides:
isValidateRoot in interface JComponent
Returns:
true.

paintChildren

protected void paintChildren(Graphics g)
This method overrides JComponent's paintChildren so the UI can be messaged when the children have finished painting.
Overrides:
paintChildren in interface JComponent
Parameters:
g - The Graphics object to paint with.

paramString

protected String paramString()
Returns an implementation-dependent string describing the attributes of this JSplitPane.
Overrides:
paramString in interface JComponent
Returns:
A string describing the attributes of this JSplitPane (never null).

remove

public void remove(int index)
This method removes the component at the given index.
Overrides:
remove in interface Container
Parameters:
index - The index of the component to remove.

remove

public void remove(Component component)
This method removes the given component from the JSplitPane.
Overrides:
remove in interface Container
Parameters:
component - The Component to remove.

removeAll

public void removeAll()
This method removes all components from the JSplitPane.
Overrides:
removeAll in interface Container

resetToPreferredSizes

public void resetToPreferredSizes()
This method resets all children of the JSplitPane to their preferred sizes.

setBottomComponent

public void setBottomComponent(Component comp)
This method sets the bottom component.
Parameters:
comp - The Component to be placed at the bottom.

setContinuousLayout

public void setContinuousLayout(boolean newContinuousLayout)
This method sets the layout mode for the JSplitPane.
Parameters:
newContinuousLayout - Whether the JSplitPane is in continuousLayout mode.

setDividerLocation

public void setDividerLocation(double proportionalLocation)
This method sets the location of the divider. A value of 0 sets the divider to the farthest left. A value of 1 sets the divider to the farthest right.
Parameters:
proportionalLocation - A double that describes the location of the divider.
Throws:
IllegalArgumentException - if proportionalLocation is not in the range from 0.0 to 1.0 inclusive.

setDividerLocation

public void setDividerLocation(int location)
This method sets the location of the divider.
Parameters:
location - The location of the divider. The negative value forces to compute the new location from the preferred sizes of the split pane components.

setDividerSize

public void setDividerSize(int newSize)
This method sets the size of the divider.
Parameters:
newSize - The size of the divider.

setLastDividerLocation

public void setLastDividerLocation(int newLastLocation)
This method sets the last location of the divider.
Parameters:
newLastLocation - The last location of the divider.

setLeftComponent

public void setLeftComponent(Component comp)
This method sets the left component.
Parameters:
comp - The left component.

setOneTouchExpandable

public void setOneTouchExpandable(boolean newValue)
This method sets whether the divider has one touch expandable buttons. The one touch expandable buttons can expand the size of either component to the maximum allowed size.
Parameters:
newValue - Whether the divider will have one touch expandable buttons.

setOrientation

public void setOrientation(int orientation)
Sets the orientation for the JSplitPane and sends a PropertyChangeEvent (with the property name ORIENTATION_PROPERTY) to all registered listeners.
Parameters:
orientation - the orientation (either HORIZONTAL_SPLIT or VERTICAL_SPLIT).
Throws:
IllegalArgumentException - if orientation is not one of the listed values.

setResizeWeight

public void setResizeWeight(double value)
This method determines how extra space will be distributed among the left and right components. A value of 0 will allocate all extra space to the right component. A value of 1 indicates that all extra space will go to the left component. A value in between 1 and 0 will split the space accordingly.
Parameters:
value - The resize weight.

setRightComponent

public void setRightComponent(Component comp)
This method sets the right component.
Parameters:
comp - The right component.

setTopComponent

public void setTopComponent(Component comp)
This method sets the top component.
Parameters:
comp - The top component.

setUI

public void setUI(SplitPaneUI ui)
This method sets the UI used by the JSplitPane.
Parameters:
ui - The UI to use.

updateUI

public void updateUI()
This method resets the UI to the one specified by the current Look and Feel.
Overrides:
updateUI in interface JComponent

JSplitPane.java -- Copyright (C) 2004, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.