Package ucar.ui.prefs
Class BeanTable<T>
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- ucar.ui.prefs.BeanTable<T>
-
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
public class BeanTable<T> extends JPanel
A JTable that uses JavaBeans to store the data. The columns of the JTable are the Properties of the Javabean, found through introspection. The properties may be editable if they have type primitive or String. and you list the editable properties in a static method editableProperties() in the bean, eg :static public String editableProperties() { return "ID serverName active writeDirectory"; }
or as an instance method with a no parameter constructorMyClass() {} public String editableProperties() { return "ID serverName active writeDirectory"; }
You may hide properties by listing them in a static method hiddenProperties() in the bean, eg :static public String hiddenProperties() { return "hideThisProperty DDDirectory"; }
* or as an instance method with a no parameter constructorMyClass() {} public String hiddenProperties() { return "ID serverName active writeDirectory"; }
The data can be made persistent through a PreferencesExt store. The width and order of the columns is persistent. The javabean class may add or delete properties, and the stored data will be reasonably intact.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BeanTable.PropertyCol
Should be private.protected class
BeanTable.TableBeanModel
Does the reflection on the bean objectsprotected class
BeanTable.TableBeanModelInfo
-
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
-
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
Fields Modifier and Type Field Description protected Class<T>
beanClass
protected ArrayList<T>
beans
protected boolean
debug
protected boolean
debugBean
protected boolean
debugSelected
protected boolean
debugStore
protected T
innerbean
protected JTable
jtable
protected BeanTable.TableBeanModel
model
protected JScrollPane
scrollPane
protected PreferencesExt
store
-
Fields inherited from class javax.swing.JComponent
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
accessibleContext, 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
Constructors Constructor Description BeanTable(Class<T> bc, PreferencesExt pstore, boolean canAddDelete)
BeanTable(Class<T> bc, PreferencesExt pstore, boolean canAddDelete, String header, String tooltip, T bean)
Constructor.BeanTable(Class<T> bc, PreferencesExt pstore, String header, String tooltip, BeanInfo info)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addBean(T bean)
void
addBeans(List<T> newBeans)
void
addListSelectionListener(ListSelectionListener l)
Add listener: ListSelectionEvent sent when a new row is selectedvoid
clearBeans()
void
clearSelectedCells()
Set the currently selected cells (0, false or null).void
clearSelection()
void
fireBeanDataChanged(T bean)
Notifies the TableModel that the data in the specified bean has changed.List<T>
getBeans()
JTable
getJTable()
T
getSelectedBean()
Get the currently selected bean, or null if none selected.List<T>
getSelectedBeans()
Get the currently selected beans.ArrayList<Object>
getSelectedCells()
Get the currently selected cells.String
getToolTipText(MouseEvent event)
void
refresh()
void
removeListSelectionListener(ListSelectionListener l)
Remove listenerprotected void
restoreState()
Restore state from PreferencesExtvoid
saveState(boolean saveData)
Save state to the PreferencesExt.void
setBeans(List<T> beans)
void
setColumnSelectionAllowed(boolean b)
Set the ColumnSelection is allowed (default false)void
setFontSize(int size)
void
setHeader(String header)
void
setProperty(String propertyName, String displayName, String toolTipText)
void
setPropertyEditable(String propertyName, boolean isHidden)
void
setPropertyHidden(String propertyName, boolean isHidden)
void
setSelectedBean(T bean)
Set which row is selected.void
setSelectedBeans(List<T> want)
Set which rows are selected.void
setSelectionMode(int mode)
Set the selection mode on the JTable-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
innerbean
protected T innerbean
-
store
protected PreferencesExt store
-
jtable
protected JTable jtable
-
scrollPane
protected JScrollPane scrollPane
-
model
protected BeanTable.TableBeanModel model
-
debug
protected boolean debug
-
debugStore
protected boolean debugStore
-
debugBean
protected boolean debugBean
-
debugSelected
protected boolean debugSelected
-
-
Constructor Detail
-
BeanTable
public BeanTable(Class<T> bc, PreferencesExt pstore, boolean canAddDelete)
-
BeanTable
public BeanTable(Class<T> bc, PreferencesExt pstore, String header, String tooltip, BeanInfo info)
-
BeanTable
public BeanTable(Class<T> bc, PreferencesExt pstore, boolean canAddDelete, String header, String tooltip, T bean)
Constructor.- Parameters:
bc
- JavaBean classpstore
- store data in this PreferencesExt store.canAddDelete
- allow changes to the jtable - adds a New and Delete button to bottom panelheader
- optional header labeltooltip
- optional tooltip labelbean
- needed for inner classes to call reflected methods on
-
-
Method Detail
-
setHeader
public void setHeader(String header)
-
getToolTipText
public String getToolTipText(MouseEvent event)
- Overrides:
getToolTipText
in classJComponent
-
setPropertyEditable
public void setPropertyEditable(String propertyName, boolean isHidden)
-
setPropertyHidden
public void setPropertyHidden(String propertyName, boolean isHidden)
-
addListSelectionListener
public void addListSelectionListener(ListSelectionListener l)
Add listener: ListSelectionEvent sent when a new row is selected
-
removeListSelectionListener
public void removeListSelectionListener(ListSelectionListener l)
Remove listener
-
getSelectedBean
@Nullable public T getSelectedBean()
Get the currently selected bean, or null if none selected.- Returns:
- the currently selected bean, or null if none selected
-
getSelectedBeans
public List<T> getSelectedBeans()
Get the currently selected beans. Use this for multiple selection- Returns:
- ArrayList of currently selected beans (wont be null).
- See Also:
setSelectionMode(int)
-
getSelectedCells
public ArrayList<Object> getSelectedCells()
Get the currently selected cells. Use this for multiple row selection, when columnSelection is on- Returns:
- ArrayList of currently selected cells (wont be null).
-
clearSelectedCells
public void clearSelectedCells()
Set the currently selected cells (0, false or null). Use this for multiple row selection, when columnSelection is on
-
addBean
public void addBean(T bean)
-
clearBeans
public void clearBeans()
-
getJTable
public JTable getJTable()
-
setFontSize
public void setFontSize(int size)
-
setSelectionMode
public void setSelectionMode(int mode)
Set the selection mode on the JTable- Parameters:
mode
- : JTable.setSelectionMode- See Also:
JTable.setSelectionMode(int)
-
setSelectedBean
public void setSelectedBean(T bean)
Set which row is selected.- Parameters:
bean
- select this one; must be in the list.
-
clearSelection
public void clearSelection()
-
setSelectedBeans
public void setSelectedBeans(List<T> want)
Set which rows are selected. must also call setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);- Parameters:
want
- select these
-
refresh
public void refresh()
-
setColumnSelectionAllowed
public void setColumnSelectionAllowed(boolean b)
Set the ColumnSelection is allowed (default false)- Parameters:
b
- allowed or not
-
saveState
public void saveState(boolean saveData)
Save state to the PreferencesExt.
-
fireBeanDataChanged
public void fireBeanDataChanged(T bean)
Notifies the TableModel that the data in the specified bean has changed. The TableModel will then fire an event of its own, which its listeners will hear (usually a JTable).- Parameters:
bean
- a bean that has changed.
-
restoreState
protected void restoreState()
Restore state from PreferencesExt
-
-