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 (FilteredTable) | | | | | | | | | |____________________________________________________| | 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:
-
EntityTableModel- Serialized Form
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumSpecifies how column selection is presented.static final classContains configuration settings for aEntityTablePanelwhich must be set before the panel is initialized.static enumSpecifies how attribute selection is presented for editing the selected records.static enumThe keyboard shortcuts available forEntityTablePanels.static enumSpecifies the refresh button visibility.static enumThe standard controls available in a table panelNested 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(is.codion.swing.framework.model.SwingEntityTableModel tableModel) Initializes a new EntityTablePanel instanceEntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel, EntityEditPanel editPanel) Initializes a new EntityTablePanel instanceEntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel, EntityEditPanel editPanel, Consumer<EntityTablePanel.Config> configuration) Initializes a new EntityTablePanel instanceEntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel, Consumer<EntityTablePanel.Config> configuration) Initializes a new EntityTablePanel instance -
Method Summary
Modifier and TypeMethodDescriptionvoidaddPopupMenuControls(is.codion.swing.common.ui.control.Controls additionalPopupMenuControls) voidaddToolBarControls(is.codion.swing.common.ui.control.Controls additionalToolBarControls) final is.codion.swing.common.ui.component.table.FilteredTableConditionPanel<is.codion.framework.domain.entity.attribute.Attribute<?>>final is.codion.common.state.Stateprotected final booleanfinal is.codion.common.value.Value<is.codion.swing.common.ui.control.Control>control(EntityTablePanel.TableControl tableControl) Returns aValuecontaining the control associated withcontrolCode, an emptyValueif no such control is available.protected is.codion.swing.common.ui.control.ControlscreatePopupMenuControls(List<is.codion.swing.common.ui.control.Controls> additionalPopupMenuControls) Creates a Controls instance containing the controls to include in the table popup menu.protected is.codion.swing.common.ui.control.ControlsBy default this method returns aControlsinstance containing theControlassociated withEntityTablePanel.TableControl.PRINT.protected TableCellEditorcreateTableCellEditor(is.codion.framework.domain.entity.attribute.Attribute<?> attribute) Creates a TableCellEditor for the given attribute, returns null if no editor is available, such as for non-editable attributes.protected TableCellRenderercreateTableCellRenderer(is.codion.framework.domain.entity.attribute.Attribute<?> attribute) Creates a TableCellRenderer to use for the given attribute in this EntityTablePanelprotected JToolBarCreates the table toolbar, by default based oncreateToolBarControls(List)protected is.codion.swing.common.ui.control.ControlscreateToolBarControls(List<is.codion.swing.common.ui.control.Controls> additionalToolBarControls) 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(is.codion.framework.domain.entity.attribute.Attribute<T> attribute) Override to customize the edit dialog used when multiple entities are edited.final 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(is.codion.framework.domain.entity.attribute.Attribute<?> attributeToEdit) Retrieves a new value via input dialog and performs an update on the selected entities assigning the value to the attributefinal is.codion.common.state.Statefinal 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, 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 voidonReferentialIntegrityException(is.codion.common.db.exception.ReferentialIntegrityException exception) Called when aReferentialIntegrityExceptionoccurs during a delete operation on the selected entities.protected voidonValidationException(is.codion.framework.domain.entity.exception.ValidationException exception) Displays the exception message.final voidAllows the user to select one of the available search condition panelsfinal voidAllows the user to select one of the available filter condition panelsprotected voidOverride to setup any custom controls.protected voidfinal is.codion.common.state.Statefinal is.codion.swing.common.ui.component.table.FilteredTable<is.codion.framework.domain.entity.Entity,is.codion.framework.domain.entity.attribute.Attribute<?>> table()final <T extends is.codion.swing.framework.model.SwingEntityTableModel>
Tfinal voidToggles the condition panel through the states hidden, visible and advancedfinal voidToggles the filter panel through the states hidden, visible and advancedfinal StringtoString()final voidDisplays a dialog containing tables of entities depending on the selected entities via non-soft foreign keysMethods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods 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
public EntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel) Initializes a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instance
-
EntityTablePanel
public EntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel, Consumer<EntityTablePanel.Config> configuration) Initializes a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instanceconfiguration- provides access to the table panel configuration
-
EntityTablePanel
public EntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel, EntityEditPanel editPanel) Initializes a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instanceeditPanel- the edit panel
-
EntityTablePanel
public EntityTablePanel(is.codion.swing.framework.model.SwingEntityTableModel tableModel, EntityEditPanel editPanel, Consumer<EntityTablePanel.Config> configuration) Initializes a new EntityTablePanel instance- Parameters:
tableModel- the SwingEntityTableModel instanceeditPanel- the edit panelconfiguration- provides access to the table panel configuration
-
-
Method Details
-
table
public final is.codion.swing.common.ui.component.table.FilteredTable<is.codion.framework.domain.entity.Entity,is.codion.framework.domain.entity.attribute.Attribute<?>> table()- Returns:
- the table
-
tableModel
public final <T extends is.codion.swing.framework.model.SwingEntityTableModel> T tableModel()- Type Parameters:
T- the table model type- Returns:
- the EntityTableModel used by this EntityTablePanel
-
conditionPanel
public final is.codion.swing.common.ui.component.table.FilteredTableConditionPanel<is.codion.framework.domain.entity.attribute.Attribute<?>> conditionPanel()- Returns:
- the condition panel
- Throws:
IllegalStateException- in case no condition panel is available
-
conditionPanelVisible
public final is.codion.common.state.State conditionPanelVisible()- Returns:
- the state controlling whether the condition panel is visible
-
filterPanelVisible
public final is.codion.common.state.State filterPanelVisible()- Returns:
- the state controlling whether the filter panel is visible
-
summaryPanelVisible
public final is.codion.common.state.State summaryPanelVisible()- Returns:
- the state controlling whether the summary panel is visible
-
toggleConditionPanel
public final void toggleConditionPanel()Toggles the condition panel through the states hidden, visible and advanced -
toggleFilterPanel
public final void toggleFilterPanel()Toggles the filter panel through the states hidden, visible and advanced -
selectConditionPanel
public final void selectConditionPanel()Allows the user to select one of the available search condition panels -
selectFilterPanel
public final void selectFilterPanel()Allows the user to select one of the available filter condition panels -
addPopupMenuControls
public void addPopupMenuControls(is.codion.swing.common.ui.control.Controls additionalPopupMenuControls) - Parameters:
additionalPopupMenuControls- a set of controls to add to the table popup menu- Throws:
IllegalStateException- in case this panel has already been initialized
-
addToolBarControls
public void addToolBarControls(is.codion.swing.common.ui.control.Controls additionalToolBarControls) - 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
public final is.codion.common.value.Value<is.codion.swing.common.ui.control.Control> control(EntityTablePanel.TableControl tableControl) Returns aValuecontaining the control associated withcontrolCode, an emptyValueif no such control is available. Note that standard controls are populated during initialization, so until then, these values may be empty.- Parameters:
tableControl- the table control code- Returns:
- the
Valuecontaining the control associated withcontrolCode
-
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 -
editSelected
public final void editSelected(is.codion.framework.domain.entity.attribute.Attribute<?> attributeToEdit) 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
-
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 setup 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() -
createToolBarControls
protected is.codion.swing.common.ui.control.Controls createToolBarControls(List<is.codion.swing.common.ui.control.Controls> additionalToolBarControls) -
createPopupMenuControls
protected is.codion.swing.common.ui.control.Controls createPopupMenuControls(List<is.codion.swing.common.ui.control.Controls> additionalPopupMenuControls) Creates a Controls instance containing the controls to include in the table popup menu. Returning null or an empty Controls instance indicates that no popup menu should be included.- Parameters:
additionalPopupMenuControls- any additional controls to include in the popup menu- Returns:
- Controls on which to base the table popup menu, null or an empty Controls instance if no popup menu should be included
-
createPrintMenuControls
protected is.codion.swing.common.ui.control.Controls createPrintMenuControls()By default this method returns aControlsinstance containing theControlassociated withEntityTablePanel.TableControl.PRINT. If noControlhas been assigned to that control key, an emptyControlsinstance is returned. Override to add print actions, which will then appear in the table popup menu.- Returns:
- the print controls to display in the table popup menu
-
createTableCellRenderer
protected TableCellRenderer createTableCellRenderer(is.codion.framework.domain.entity.attribute.Attribute<?> attribute) Creates a TableCellRenderer to use for the given attribute in this EntityTablePanel- Parameters:
attribute- the attribute- Returns:
- the TableCellRenderer for the given attribute
-
createTableCellEditor
protected TableCellEditor createTableCellEditor(is.codion.framework.domain.entity.attribute.Attribute<?> attribute) Creates a TableCellEditor for the given attribute, returns null if no editor is available, such as for non-editable attributes.- Parameters:
attribute- the attribute- Returns:
- a TableCellEditor for the given attribute, null in case none is available
- See Also:
-
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:
-
createToolBar
Creates the table toolbar, by default based oncreateToolBarControls(List)- Returns:
- the toolbar, null if none should be included
-
onException
Propagates the exception toonValidationException(ValidationException)oronReferentialIntegrityException(ReferentialIntegrityException)depending on type, otherwise displays the exception.- Parameters:
exception- the exception to handle- See Also:
-
onReferentialIntegrityException
protected void onReferentialIntegrityException(is.codion.common.db.exception.ReferentialIntegrityException exception) 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, otherwiseonException(Exception)is called.- Parameters:
exception- the exception- See Also:
-
onValidationException
protected void onValidationException(is.codion.framework.domain.entity.exception.ValidationException exception) Displays the exception message.- Parameters:
exception- the exception
-
editDialogBuilder
protected <T> EntityDialogs.EditAttributeDialogBuilder<T> editDialogBuilder(is.codion.framework.domain.entity.attribute.Attribute<T> attribute) 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
-
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:
-