|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JList
org.jdesktop.swingx.JXList
public class JXList
Enhanced List component with support for general SwingX sorting/filtering, rendering, highlighting, rollover and search functionality. List specific enhancements include ?? PENDING JW ...
list.setFilterEnabled(true);
list.setComparator(myComparator);
list.setSortOrder(SortOrder.DESCENDING);
list.toggleSortOder();
list.resetSortOrder();
Rows can be filtered from a JXList using a Filter class and a
FilterPipeline. One assigns a FilterPipeline to the table using
setFilters(FilterPipeline)
. Filtering hides, but does not delete nor
permanently remove rows from a JXList.
JXList provides api to access items of the underlying model in view coordinates and to convert from/to model coordinates. Note: List sorting/filtering is disabled by default because it has side-effects which might break "normal" expectations when using a JList: if enabled all row coordinates (including those returned by the selection) are in view coordinates. Furthermore, the model returned from getModel() is a wrapper around the actual data. Note: SwingX sorting/filtering is incompatible with core sorting/filtering in JDK 6+. Will be replaced by core functionality after switching the target jdk version from 5 to 6.
JXList list = new JXList(new Contributors());
// implement a custom string representation, concated from first-, lastName
StringValue sv = new StringValue() {
public String getString(Object value) {
if (value instanceof Contributor) {
Contributor contributor = (Contributor) value;
return contributor.lastName() + ", " + contributor.firstName();
}
return StringValues.TO_STRING(value);
}
};
list.setCellRenderer(new DefaultListRenderer(sv);
// highlight condition: gold merits
HighlightPredicate predicate = new HighlightPredicate() {
public boolean isHighlighted(Component renderer,
ComponentAdapter adapter) {
if (!(value instanceof Contributor)) return false;
return ((Contributor) value).hasGold();
}
};
// highlight with foreground color
list.addHighlighter(new PainterHighlighter(predicate, goldStarPainter);
Note: to support the highlighting this implementation wraps the
ListCellRenderer set by client code with a DelegatingRenderer which applies
the Highlighter after delegating the default configuration to the wrappee. As
a side-effect, getCellRenderer does return the wrapper instead of the custom
renderer. To access the latter, client code must call getWrappedCellRenderer.
JXList list = new JXList();
list.setRolloverEnabled(true);
list.setCellRenderer(new DefaultListRenderer());
list.addHighlighter(new ColorHighlighter(HighlightPredicate.ROLLOVER_ROW,
null, Color.RED);
JXList provides api to vend a renderer-controlled String representation of cell content. This allows the Searchable and Highlighters to use WYSIWYM (What-You-See-Is-What-You-Match), that is pattern matching against the actual string as seen by the user.
Nested Class Summary | |
---|---|
class |
JXList.DelegatingRenderer
A decorator for the original ListCellRenderer. |
Nested classes/interfaces inherited from class javax.swing.JList |
---|
javax.swing.JList.DropLocation |
Nested classes/interfaces inherited from class javax.swing.JComponent |
---|
javax.swing.JComponent.AccessibleJComponent |
Nested classes/interfaces inherited from class java.awt.Component |
---|
java.awt.Component.BaselineResizeBehavior |
Field Summary | |
---|---|
static java.lang.String |
EXECUTE_BUTTON_ACTIONCOMMAND
|
Fields inherited from class javax.swing.JList |
---|
HORIZONTAL_WRAP, VERTICAL, VERTICAL_WRAP |
Fields inherited from class javax.swing.JComponent |
---|
TOOL_TIP_TEXT_KEY, 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 | |
---|---|
JXList()
Constructs a JXList with an empty model and filters disabled. |
|
JXList(boolean filterEnabled)
Constructs a JXList with an empty model and
filterEnabled property. |
|
JXList(javax.swing.ListModel dataModel)
Constructs a JXList that displays the elements in the
specified, non-null model and filters disabled. |
|
JXList(javax.swing.ListModel dataModel,
boolean filterEnabled)
Constructs a JXList with the specified model and
filterEnabled property. |
|
JXList(java.lang.Object[] listData)
Constructs a JXList that displays the elements in
the specified array and filters disabled. |
|
JXList(java.lang.Object[] listData,
boolean filterEnabled)
Constructs a JXList that displays the elements in
the specified array and filterEnabled property. |
|
JXList(java.util.Vector<?> listData)
Constructs a JXList that displays the elements in
the specified Vector and filtes disabled. |
|
JXList(java.util.Vector<?> listData,
boolean filterEnabled)
Constructs a JXList that displays the elements in
the specified Vector and filtersEnabled property. |
Method Summary | |
---|---|
void |
addHighlighter(Highlighter highlighter)
Appends a Highlighter to the end of the list of used
Highlighter s. |
int |
convertIndexToModel(int viewIndex)
Convert row index from view coordinates to model coordinates accounting for the presence of sorters and filters. |
int |
convertIndexToView(int modelIndex)
Convert index from model coordinates to view coordinates accounting for the presence of sorters and filters. |
javax.swing.ListCellRenderer |
getCellRenderer()
Overridden to return the delegating renderer which is wrapped around the original to support highlighting. |
java.util.Comparator<?> |
getComparator()
|
java.lang.Object |
getElementAt(int viewIndex)
returns the element at the given index. |
int |
getElementCount()
Returns the number of elements in this list in view coordinates. |
FilterPipeline |
getFilters()
Returns the FilterPipeline assigned to this list, or null if filtering not enabled. |
Highlighter[] |
getHighlighters()
Returns the Highlighter s used by this table. |
Searchable |
getSearchable()
Returns a Searchable for this component, guaranteed to be not null. |
SortOrder |
getSortOrder()
Returns the SortOrder. |
java.lang.String |
getStringAt(int row)
Returns the string representation of the cell value at the given position. |
javax.swing.ListCellRenderer |
getWrappedCellRenderer()
Returns the renderer installed by client code or the default if none has been set. |
javax.swing.ListModel |
getWrappedModel()
returns the underlying model. |
boolean |
isFilterEnabled()
|
boolean |
isRolloverEnabled()
Returns a boolean indicating whether or not rollover support is enabled. |
void |
removeHighlighter(Highlighter highlighter)
Removes the given Highlighter. |
void |
resetSortOrder()
Removes the interactive sorter. |
void |
setCellRenderer(javax.swing.ListCellRenderer renderer)
Overridden to wrap the given renderer in a DelegatingRenderer to support highlighting. |
void |
setComparator(java.util.Comparator<?> comparator)
Sets the comparator used. |
void |
setFilterEnabled(boolean enabled)
Enables/disables filtering support. |
void |
setFilters(FilterPipeline pipeline)
Sets the FilterPipeline for filtering the items of this list, maybe null to remove all previously applied filters. |
void |
setHighlighters(Highlighter... highlighters)
Sets the Highlighter s to the table, replacing any old settings. |
void |
setModel(javax.swing.ListModel model)
Sets the underlying data model. |
void |
setRolloverEnabled(boolean rolloverEnabled)
Sets the property to enable/disable rollover support. |
void |
setSearchable(Searchable searchable)
Sets the Searchable for this component. |
void |
setSelectionModel(javax.swing.ListSelectionModel newModel)
Overridden to update selectionMapper |
void |
setSortOrder(SortOrder sortOrder)
Sorts the list using SortOrder. |
void |
toggleSortOrder()
Toggles the sort order of the items. |
void |
updateUI()
Overridden to update renderer and Highlighters. |
Methods inherited from class javax.swing.JList |
---|
addListSelectionListener, addSelectionInterval, clearSelection, ensureIndexIsVisible, getAccessibleContext, getAnchorSelectionIndex, getCellBounds, getDragEnabled, getDropLocation, getDropMode, getFirstVisibleIndex, getFixedCellHeight, getFixedCellWidth, getLastVisibleIndex, getLayoutOrientation, getLeadSelectionIndex, getListSelectionListeners, getMaxSelectionIndex, getMinSelectionIndex, getModel, getNextMatch, getPreferredScrollableViewportSize, getPrototypeCellValue, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedIndex, getSelectedIndices, getSelectedValue, getSelectedValues, getSelectionBackground, getSelectionForeground, getSelectionMode, getSelectionModel, getToolTipText, getUI, getUIClassID, getValueIsAdjusting, getVisibleRowCount, indexToLocation, isSelectedIndex, isSelectionEmpty, locationToIndex, removeListSelectionListener, removeSelectionInterval, setDragEnabled, setDropMode, setFixedCellHeight, setFixedCellWidth, setLayoutOrientation, setListData, setListData, setPrototypeCellValue, setSelectedIndex, setSelectedIndices, setSelectedValue, setSelectionBackground, setSelectionForeground, setSelectionInterval, setSelectionMode, setUI, setValueIsAdjusting, setVisibleRowCount |
Methods inherited from class javax.swing.JComponent |
---|
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, 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, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate |
Methods inherited from class java.awt.Component |
---|
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, 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 |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String EXECUTE_BUTTON_ACTIONCOMMAND
Constructor Detail |
---|
public JXList()
JXList
with an empty model and filters disabled.
public JXList(javax.swing.ListModel dataModel)
JXList
that displays the elements in the
specified, non-null
model and filters disabled.
dataModel
- the data model for this list
java.lang.IllegalArgumentException
- if dataModel
is null
public JXList(java.lang.Object[] listData)
JXList
that displays the elements in
the specified array and filters disabled.
listData
- the array of Objects to be loaded into the data model
java.lang.IllegalArgumentException
- if listData
is null
public JXList(java.util.Vector<?> listData)
JXList
that displays the elements in
the specified Vector
and filtes disabled.
listData
- the Vector
to be loaded into the
data model
java.lang.IllegalArgumentException
- if listData
is null
public JXList(boolean filterEnabled)
JXList
with an empty model and
filterEnabled property.
filterEnabled
- boolean
to determine if
filtering/sorting is enabledpublic JXList(javax.swing.ListModel dataModel, boolean filterEnabled)
JXList
with the specified model and
filterEnabled property.
dataModel
- the data model for this listfilterEnabled
- boolean
to determine if
filtering/sorting is enabled
java.lang.IllegalArgumentException
- if dataModel
is null
public JXList(java.lang.Object[] listData, boolean filterEnabled)
JXList
that displays the elements in
the specified array and filterEnabled property.
listData
- the array of Objects to be loaded into the data modelfilterEnabled
- boolean
to determine if filtering/sorting
is enabled
java.lang.IllegalArgumentException
- if listData
is null
public JXList(java.util.Vector<?> listData, boolean filterEnabled)
JXList
that displays the elements in
the specified Vector
and filtersEnabled property.
listData
- the Vector
to be loaded into the
data modelfilterEnabled
- boolean
to determine if filtering/sorting
is enabled
java.lang.IllegalArgumentException
- if listData
is null
Method Detail |
---|
public Searchable getSearchable()
setSearchable(Searchable)
,
ListSearchable
public void setSearchable(Searchable searchable)
searchable
- the Searchable to use for this component, may be null to indicate
using the list's default searchable.getSearchable()
public void setRolloverEnabled(boolean rolloverEnabled)
This can be enabled to show "live" rollover behaviour, f.i. the cursor over a cell rendered by a JXHyperlink.
Default value is disabled.
rolloverEnabled
- a boolean indicating whether or not the rollover
functionality should be enabled.isRolloverEnabled()
,
getLinkController()
,
createRolloverProducer()
,
RolloverRenderer
public boolean isRolloverEnabled()
setRolloverEnabled(boolean)
public void resetSortOrder()
public void toggleSortOrder()
The exact behaviour is defined by the SortController's toggleSortOrder implementation. Typically a unsorted column is sorted in ascending order, a sorted column's order is reversed.
PENDING: where to get the comparator from?
public void setSortOrder(SortOrder sortOrder)
sortOrder
- the sort order to use. If null or SortOrder.UNSORTED,
this method has the same effect as resetSortOrder();public SortOrder getSortOrder()
public java.util.Comparator<?> getComparator()
setComparator(Comparator)
public void setComparator(java.util.Comparator<?> comparator)
comparator
- the comparator to use.public java.lang.Object getElementAt(int viewIndex)
viewIndex
- the index in view coordinates
java.lang.IndexOutOfBoundsException
- if viewIndex < 0 or viewIndex >=
getElementCount()public int getElementCount()
public int convertIndexToModel(int viewIndex)
viewIndex
- index in view coordinates
java.lang.IndexOutOfBoundsException
- if viewIndex < 0 or viewIndex >= getElementCount()public int convertIndexToView(int modelIndex)
modelIndex
- index in model coordinates
public javax.swing.ListModel getWrappedModel()
public void setFilterEnabled(boolean enabled)
enabled
-
java.lang.IllegalStateException
- if trying to disable again.public boolean isFilterEnabled()
setFilterEnabled(boolean)
public void setSelectionModel(javax.swing.ListSelectionModel newModel)
Overridden to update selectionMapper
setSelectionModel
in class javax.swing.JList
public void setModel(javax.swing.ListModel model)
Sets the underlying data model. Note that if isFilterEnabled you must call getWrappedModel to access the model given here. In this case getModel returns a wrapper around the data!
setModel
in class javax.swing.JList
model
- the data model for this list.public FilterPipeline getFilters()
FilterPipeline
assigned to this list, or
null if !isFiltersEnabled().public void setFilters(FilterPipeline pipeline)
pipeline
- the FilterPipeline
to use, null removes
all filters.
java.lang.IllegalStateException
- if !isFilterEnabled()public void setHighlighters(Highlighter... highlighters)
Highlighter
s to the table, replacing any old settings.
None of the given Highlighters must be null.This is a bound property.
Note: as of version #1.257 the null constraint is enforced strictly. To remove all highlighters use this method without param.
highlighters
- zero or more not null highlighters to use for renderer decoration.
java.lang.NullPointerException
- if array is null or array contains null values.getHighlighters()
,
addHighlighter(Highlighter)
,
removeHighlighter(Highlighter)
public Highlighter[] getHighlighters()
Highlighter
s used by this table.
Maybe empty, but guarantees to be never null.
setHighlighters(Highlighter[])
public void addHighlighter(Highlighter highlighter)
Highlighter
to the end of the list of used
Highlighter
s. The argument must not be null.
highlighter
- the Highlighter
to add, must not be null.
java.lang.NullPointerException
- if Highlighter
is null.removeHighlighter(Highlighter)
,
setHighlighters(Highlighter[])
public void removeHighlighter(Highlighter highlighter)
Does nothing if the Highlighter is not contained.
highlighter
- the Highlighter to remove.addHighlighter(Highlighter)
,
setHighlighters(Highlighter...)
public java.lang.String getStringAt(int row)
row
- the row index of the cell in view coordinates
public javax.swing.ListCellRenderer getCellRenderer()
Overridden to return the delegating renderer which is wrapped around the original to support highlighting. The returned renderer is of type DelegatingRenderer and guaranteed to not-null
getCellRenderer
in class javax.swing.JList
setCellRenderer(ListCellRenderer)
,
JXList.DelegatingRenderer
public javax.swing.ListCellRenderer getWrappedCellRenderer()
setCellRenderer(ListCellRenderer)
public void setCellRenderer(javax.swing.ListCellRenderer renderer)
Overridden to wrap the given renderer in a DelegatingRenderer to support highlighting.
Note: the wrapping implies that the renderer returned from the getCellRenderer
is not the renderer as given here, but the wrapper. To access the original,
use getWrappedCellRenderer
.
setCellRenderer
in class javax.swing.JList
getWrappedCellRenderer()
,
getCellRenderer()
public void updateUI()
Overridden to update renderer and Highlighters.
updateUI
in class javax.swing.JList
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |