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 classBeanTable.PropertyColShould be private.protected classBeanTable.TableBeanModelDoes the reflection on the bean objectsprotected classBeanTable.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>beanClassprotected ArrayList<T>beansprotected booleandebugprotected booleandebugBeanprotected booleandebugSelectedprotected booleandebugStoreprotected Tinnerbeanprotected JTablejtableprotected BeanTable.TableBeanModelmodelprotected JScrollPanescrollPaneprotected PreferencesExtstore-
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 voidaddBean(T bean)voidaddBeans(List<T> newBeans)voidaddListSelectionListener(ListSelectionListener l)Add listener: ListSelectionEvent sent when a new row is selectedvoidclearBeans()voidclearSelectedCells()Set the currently selected cells (0, false or null).voidclearSelection()voidfireBeanDataChanged(T bean)Notifies the TableModel that the data in the specified bean has changed.List<T>getBeans()JTablegetJTable()TgetSelectedBean()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.StringgetToolTipText(MouseEvent event)voidrefresh()voidremoveListSelectionListener(ListSelectionListener l)Remove listenerprotected voidrestoreState()Restore state from PreferencesExtvoidsaveState(boolean saveData)Save state to the PreferencesExt.voidsetBeans(List<T> beans)voidsetColumnSelectionAllowed(boolean b)Set the ColumnSelection is allowed (default false)voidsetFontSize(int size)voidsetHeader(String header)voidsetProperty(String propertyName, String displayName, String toolTipText)voidsetPropertyEditable(String propertyName, boolean isHidden)voidsetPropertyHidden(String propertyName, boolean isHidden)voidsetSelectedBean(T bean)Set which row is selected.voidsetSelectedBeans(List<T> want)Set which rows are selected.voidsetSelectionMode(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:
getToolTipTextin 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
-
-