java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
is.codion.swing.framework.ui.EntityTablePanel
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,Accessible
The EntityTablePanel is a UI class based on the EntityTableModel class.
It consists of a JTable as well as filtering/searching and summary panels.
The default layout is as follows
____________________________________________________ | conditionPanel | |____________________________________________________| | | | | | | | | | entityTable (FilterTable) | | | | | | | | | |____________________________________________________| | summaryPanel | |____________________________________________________| | southPanel | |____________________________________________________|The condition and summary panels can be hidden Note that
initialize() must be called to initialize this panel before displaying it.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classContains configuration settings for aEntityTablePanelwhich must be set before the panel is initialized.static final classThe Controls available in aEntityTablePanelstatic enumSpecifies the refresh button visibility.static enumSpecifies how a selection is presented.Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
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_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionEntityTablePanel(SwingEntityTableModel tableModel) Instantiates a new EntityTablePanel instanceEntityTablePanel(SwingEntityTableModel tableModel, EntityEditPanel editPanel) Instantiates a new EntityTablePanel instanceEntityTablePanel(SwingEntityTableModel tableModel, EntityEditPanel editPanel, Consumer<EntityTablePanel.Config> config) Instantiates a new EntityTablePanel instanceEntityTablePanel(SwingEntityTableModel tableModel, Consumer<EntityTablePanel.Config> config) Instantiates a new EntityTablePanel instance -
Method Summary
Modifier and TypeMethodDescriptionfinal voidaddPopupMenuControls(Controls additionalPopupMenuControls) final voidaddToolBarControls(Controls additionalToolBarControls) voidapplyPreferences(Preferences preferences) Applies any user preferences previously written viawritePreferences(Preferences)final TableConditionPanel<Attribute<?>> protected final voidconfigurePopupMenu(Consumer<Controls.Layout> popupMenuLayout) Configures the popup menu controls layout.
Note that theControls.Layoutinstance has pre-configured defaults, which must be cleared in order to start with an empty configuration.protected final voidconfigureToolBar(Consumer<Controls.Layout> toolBarLayout) Configures the toolbar controls layout.
Note that theControls.Layoutinstance has pre-configured defaults, which must be cleared in order to start with an empty configuration.protected final booleancontrol(ControlKey<T> controlKey) final booleanDeletes the entities selected in the underlying table model without asking for confirmation.final booleanDeletes the entities selected in the underlying table model after asking for confirmation using the confirmer specified viaEntityTablePanel.Config.deleteConfirmer(Confirmer)protected final voiddisplayException(Exception exception) Displays the exception in a dialog, with the dialog owner as the current focus owner or this panel if none is available.protected <T> EntityDialogs.EditAttributeDialogBuilder<T> editDialogBuilder(Attribute<T> attribute) Override to customize the edit dialog used when multiple entities are edited.protected final EntityEditPanelfinal voidDisplays a selection dialog for selecting an attribute to edit and retrieves a new value via input dialog and performs an update on the selected entities assigning the value to the attributefinal voideditSelected(Attribute<?> attributeToEdit) Retrieves a new value via input dialog and performs an update on the selected entities assigning the value to the attributefinal EntityTablePanelInitializes the UI, while presenting a wait cursor to the user.protected JPanelInitializes the south panel, override and return null for no south panel.protected voidlayoutPanel(JComponent tableComponent, @Nullable JPanel southPanel) This method simply addstablePanelat location BorderLayout.CENTER and, if non-null, the givensouthPanelto theBorderLayout.SOUTHlocation.protected voidonException(Exception exception) Propagates the exception toonValidationException(ValidationException)oronReferentialIntegrityException(ReferentialIntegrityException)depending on type, otherwise displays the exception.protected voidCalled when aReferentialIntegrityExceptionoccurs during a delete operation on the selected entities.protected voidonValidationException(ValidationException exception) Displays the exception message.protected StringReturns the key used to identify user preferences for this table panel, that is column positions, widths and such.protected voidOverride to set up any custom controls.protected voidSets up the keyboard shortcuts.final Statefinal FilterTable<Entity, Attribute<?>> table()final SwingEntityTableModelfinal StringtoString()voidupdateUI()final voidDisplays a dialog containing tables of entities depending on the selected entities via non-soft foreign keysvoidwritePreferences(Preferences preferences) Writes user preferences.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUIMethods 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, 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, updateMethods 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, validateTreeMethods 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, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
EntityTablePanel
Instantiates a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instance
-
EntityTablePanel
Instantiates a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instanceconfig- provides access to the table panel configuration
-
EntityTablePanel
Instantiates a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instanceeditPanel- the edit panel
-
EntityTablePanel
public EntityTablePanel(SwingEntityTableModel tableModel, EntityEditPanel editPanel, Consumer<EntityTablePanel.Config> config) Instantiates a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instanceeditPanel- the edit panelconfig- provides access to the table panel configuration
-
-
Method Details
-
updateUI
public void updateUI() -
table
- Returns:
- the table
- Throws:
IllegalStateException- in case this method is called during configuration
-
tableModel
- Returns:
- the EntityTableModel used by this EntityTablePanel
-
condition
- Returns:
- the condition panel
- Throws:
IllegalStateException- in case a condition panel is not available- See Also:
-
summaryPanelVisible
- Returns:
- the
Statecontrolling whether the summary panel is visible
-
addPopupMenuControls
- Parameters:
additionalPopupMenuControls- a set of controls to add to the table popup menu- Throws:
IllegalStateException- in case this panel has already been initialized
-
addToolBarControls
- Parameters:
additionalToolBarControls- a set of controls to add to the table toolbar menu- Throws:
IllegalStateException- in case this panel has already been initialized
-
toString
-
control
Returns aValuecontaining the control associated withcontrolKey, an emptyValueif no such control is available.- Type Parameters:
T- the control type- Parameters:
controlKey- the control key- Returns:
- the
Valuecontaining the control associated withcontrolKey
-
editSelected
public final void editSelected()Displays a selection dialog for selecting an attribute to edit and retrieves a new value via input dialog and performs an update on the selected entities assigning the value to the attribute- See Also:
-
editSelected
Retrieves a new value via input dialog and performs an update on the selected entities assigning the value to the attribute- Parameters:
attributeToEdit- the attribute which value to edit- See Also:
-
viewDependencies
public final void viewDependencies()Displays a dialog containing tables of entities depending on the selected entities via non-soft foreign keys -
deleteSelectedWithConfirmation
public final boolean deleteSelectedWithConfirmation()Deletes the entities selected in the underlying table model after asking for confirmation using the confirmer specified viaEntityTablePanel.Config.deleteConfirmer(Confirmer)- Returns:
- true if the delete operation was successful
- See Also:
-
deleteSelected
public final boolean deleteSelected()Deletes the entities selected in the underlying table model without asking for confirmation.- Returns:
- true if the delete operation was successful
-
writePreferences
Writes user preferences.Remember to call
super.writePreferences(preferences)when overriding.- Parameters:
preferences- the preferences instance to write to- See Also:
-
applyPreferences
Applies any user preferences previously written viawritePreferences(Preferences)Remember to call
super.applyPreferences(preferences)when overriding.- Parameters:
preferences- the preferences instance containing the preferences to apply
-
initialize
Initializes the UI, while presenting a wait cursor to the user. Note that calling this method more than once has no effect.- Returns:
- this EntityTablePanel instance
-
setupControls
protected void setupControls()Override to set up any custom controls. This default implementation is empty. This method is called after all standard controls have been initialized.- See Also:
-
initializeSouthPanel
Initializes the south panel, override and return null for no south panel. Not called if the south panel has been disabled viaEntityTablePanel.Config.includeSouthPanel(boolean).- Returns:
- the south panel, or null if no south panel should be included
- See Also:
-
setupKeyboardActions
protected void setupKeyboardActions()Sets up the keyboard shortcuts.- See Also:
-
configureToolBar
Configures the toolbar controls layout.
Note that theControls.Layoutinstance has pre-configured defaults, which must be cleared in order to start with an empty configuration.Defaults:configureToolBar(layout -> layout.clear() .control(ControlKeys.REFRESH) .separator() .control(createCustomControl()) .separator() .defaults())ControlKeys#TOGGLE_SUMMARY_PANELControlKeys#TOGGLE_CONDITION_VIEWControlKeys#TOGGLE_FILTER_VIEW- Separator
ControlKeys#ADD(If an EditPanel is available)ControlKeys#EDIT(If an EditPanel is available)ControlKeys#DELETE- Separator
ControlKeys#EDIT_ATTRIBUTE- Separator
ControlKeys#PRINT- Separator
ControlKeys#ADDITIONAL_TOOLBAR_CONTROLS
- Parameters:
toolBarLayout- provides access to the toolbar configuration- See Also:
-
configurePopupMenu
Configures the popup menu controls layout.
Note that theControls.Layoutinstance has pre-configured defaults, which must be cleared in order to start with an empty configuration.Defaults:configurePopupMenu(layout -> layout.clear() .control(ControlKeys.REFRESH) .separator() .control(createCustomControl()) .separator() .defaults())ControlKeys#REFRESHControlKeys#CLEAR- Separator
ControlKeys#ADD(If an EditPanel is available)ControlKeys#EDIT(If an EditPanel is available)ControlKeys#DELETE- Separator
ControlKeys#EDIT_ATTRIBUTEorControlKeys#EDIT_ATTRIBUTE_CONTROLS- Separator
ControlKeys#VIEW_DEPENDENCIES- Separator
ControlKeys#ADDITIONAL_POPUP_MENU_CONTROLS- Separator
ControlKeys#PRINT_CONTROLS- Separator
ControlKeys#COLUMN_CONTROLS- Separator
ControlKeys#SINGLE_SELECTION- Separator
ControlKeys#CONDITION_CONTROLS- Separator
ControlKeys#FILTER_CONTROLS- Separator
ControlKeys#COPY_CONTROLS
- Parameters:
popupMenuLayout- provides access to the popup menu layout- See Also:
-
editPanel
- Returns:
- the edit panel
- Throws:
IllegalStateException- in case no edit panel is available
-
layoutPanel
This method simply addstablePanelat location BorderLayout.CENTER and, if non-null, the givensouthPanelto theBorderLayout.SOUTHlocation. By overriding this method you can override the default layout.- Parameters:
tableComponent- the component containing the table, condition and summary panelsouthPanel- the south toolbar panel, null if not required- See Also:
-
onException
Propagates the exception toonValidationException(ValidationException)oronReferentialIntegrityException(ReferentialIntegrityException)depending on type, otherwise displays the exception.- Parameters:
exception- the exception to handle- See Also:
-
onReferentialIntegrityException
Called when aReferentialIntegrityExceptionoccurs during a delete operation on the selected entities. If the referential error handling isReferentialIntegrityErrorHandling.DISPLAY_DEPENDENCIES, the dependencies of the entities involved are displayed to the user, otherwisedisplayException(Exception)is called.- Parameters:
exception- the exception- See Also:
-
onValidationException
Displays the exception message.- Parameters:
exception- the exception
-
editDialogBuilder
Override to customize the edit dialog used when multiple entities are edited.- Type Parameters:
T- the attribute type- Parameters:
attribute- the attribute to edit- Returns:
- a edit dialog builder
-
preferencesKey
Returns the key used to identify user preferences for this table panel, that is column positions, widths and such. The default implementation is:Override in case this key is not unique within the application.return tableModel().getClass().getSimpleName() + "-" + tableModel().entityType();- Returns:
- the key used to identify user preferences for this table panel
-
displayException
Displays the exception in a dialog, with the dialog owner as the current focus owner or this panel if none is available.- Parameters:
exception- the exception to display
-
confirmDelete
protected final boolean confirmDelete()- Returns:
- true if confirmed
- See Also:
-