Class ContainerableListPanel<C extends Serializable,PO extends SelectableRow>

java.lang.Object
org.apache.wicket.Component
org.apache.wicket.MarkupContainer
org.apache.wicket.markup.html.WebMarkupContainer
org.apache.wicket.markup.html.panel.Panel
com.evolveum.midpoint.gui.api.component.BasePanel<C>
com.evolveum.midpoint.gui.impl.component.ContainerableListPanel<C,PO>
Type Parameters:
C - the container of displayed objects in table
PO - the type of the object processed by provider
All Implemented Interfaces:
Serializable, Iterable<org.apache.wicket.Component>, org.apache.wicket.event.IEventSink, org.apache.wicket.event.IEventSource, org.apache.wicket.feedback.IFeedbackContributor, org.apache.wicket.IConverterLocator, org.apache.wicket.IMetadataContext<Serializable,org.apache.wicket.Component>, org.apache.wicket.IQueueRegion, org.apache.wicket.markup.html.IHeaderContributor, org.apache.wicket.request.component.IRequestableComponent, org.apache.wicket.util.IHierarchical<org.apache.wicket.Component>, org.apache.wicket.util.io.IClusterable
Direct Known Subclasses:
AuditLogViewerPanel, CaseWorkItemsPanel, CertificationCasesPanel, CertificationWorkItemTable, MultivalueContainerListPanel, ObjectListPanel, ProcessedObjectsPanel, ReportObjectsListPanel

public abstract class ContainerableListPanel<C extends Serializable,PO extends SelectableRow> extends BasePanel<C>
Author:
skublik Abstract class for List panels with table.
See Also:
  • Constructor Details

    • ContainerableListPanel

      public ContainerableListPanel(String id, Class<C> defaultType)
      Parameters:
      defaultType - specifies type of the object that will be selected by default. It can be changed.
    • ContainerableListPanel

      public ContainerableListPanel(String id, Class<C> defaultType, ContainerPanelConfigurationType configurationType)
  • Method Details

    • onInitialize

      protected void onInitialize()
      Overrides:
      onInitialize in class org.apache.wicket.MarkupContainer
    • getSearchByNameParameterValue

      protected String getSearchByNameParameterValue()
    • setUseCollectionView

      public void setUseCollectionView(boolean useCollectionView)
      This is to avoid using the object collection in search defined in page as it's loaded automagically. E.g. on popup where we want to do complete different search - without useCollectionView qual false, search builder will load collection from underlying page no matter what.
      Parameters:
      useCollectionView -
    • isFulltextEnabled

      protected boolean isFulltextEnabled()
    • createAdditionalSearchContext

      protected SearchContext createAdditionalSearchContext()
    • isCollapsableTable

      protected boolean isCollapsableTable()
      Checks if the table is collapsible.
      Returns:
      true if the table is collapsible, false otherwise.
    • isListPanelVisible

      protected boolean isListPanelVisible()
    • createHeader

      protected org.apache.wicket.Component createHeader(String headerId)
    • getChartedHeaderDtoModel

      protected <T extends com.evolveum.wicket.chartjs.ChartConfiguration> org.apache.wicket.model.IModel<ChartedHeaderDto<T>> getChartedHeaderDtoModel()
    • initItemTable

      protected BoxedTablePanel<PO> initItemTable()
    • showTableAsCard

      protected boolean showTableAsCard()
    • initCollapsableItemTable

      protected RoleAnalysisCollapsableTablePanel<PO> initCollapsableItemTable()

      NOTE: This method is experimental and may be removed in the future.

      Initializes a collapsible table for displaying items.

      When using this method, ensure that specific IDs are used for the collapsible components, as defined in the RoleAnalysisCollapsableTablePanel class. These IDs are required for proper functionality of collapsible elements.

      An example of how to utilize this method is provided below:

      
       Component firstCollapseContainer = cellItem.findParent(Item.class).get(ID_FIRST_COLLAPSABLE_CONTAINER);
       Component secondCollapseContainer = cellItem.findParent(Item.class).get(ID_SECOND_COLLAPSABLE_CONTAINER);
      
       // Assuming there's a button in the table header with the ID "headerActionButton"
       AjaxButton headerActionButton = new AjaxButton("headerActionButton") {
           @Override
           public void onSubmit(AjaxRequestTarget target) {
               // Your action logic here
               target.appendJavaScript(getCollapseScript(firstCollapseContainer, secondCollapseContainer));
           }
       };
       add(headerActionButton);
       

      You can customize components further by overriding the newRowItem method, as shown below:

      
       @Override
       protected Item<SelectableBean<RoleAnalysisClusterType>> newRowItem(String id, int index,
       IModel<SelectableBean<RoleAnalysisClusterType>> model) {
           // Customization logic here
       }
       
      Returns:
      The initialized RoleAnalysisCollapsableTablePanel instance.
    • newRowItem

      protected org.apache.wicket.markup.repeater.Item<PO> newRowItem(String id, int index, org.apache.wicket.markup.repeater.Item<PO> item, @NotNull @NotNull org.apache.wicket.model.IModel<PO> rowModel)
    • customProcessNewRowItem

      protected void customProcessNewRowItem(org.apache.wicket.markup.repeater.Item<PO> item, org.apache.wicket.model.IModel<PO> model)
    • isPagingVisible

      protected boolean isPagingVisible()
    • getTableId

      protected abstract UserProfileStorage.TableId getTableId()
    • isHeaderVisible

      protected boolean isHeaderVisible()
    • isPreview

      protected boolean isPreview()
    • getPageStorage

      protected PageStorage getPageStorage(String storageKey)
    • getPageStorage

      public PageStorage getPageStorage()
    • createNewButtonDescription

      protected List<CompositedIconButtonDto> createNewButtonDescription()
    • isNewObjectButtonEnabled

      protected boolean isNewObjectButtonEnabled()
    • getTable

      public BoxedTablePanel<PO> getTable()
    • getTableComponent

      public org.apache.wicket.Component getTableComponent()
    • getType

      public Class<C> getType()
    • getDefaultType

      protected Class<C> getDefaultType()
    • enableSavePageSize

      protected boolean enableSavePageSize()
    • createActionsColumn

      protected org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String> createActionsColumn()
    • addBasicActions

      protected void addBasicActions(List<InlineMenuItem> menuItems)
      Method define basic menu action that is default for all subclasses and will be added on end of menu items list.
    • getInlineMenuCssClass

      protected String getInlineMenuCssClass()
    • isMenuItemVisible

      protected boolean isMenuItemVisible(org.apache.wicket.model.IModel<PO> rowModel)
    • shouldCheckForNameColumn

      protected boolean shouldCheckForNameColumn()
    • getViewColumnsTransformed

      protected List<org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String>> getViewColumnsTransformed(List<GuiObjectColumnType> customColumns)
    • getViewColumnsTransformed

      protected List<org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String>> getViewColumnsTransformed(List<GuiObjectColumnType> customColumns, boolean shouldCheckForNameColumn)
    • findPredefinedColumn

      protected AbstractGuiColumn<?,?> findPredefinedColumn(GuiObjectColumnType customColumn)
    • getColumnTypeConfigContext

      protected ColumnTypeConfigContext getColumnTypeConfigContext()
    • getContainerDefinitionForColumns

      protected ItemDefinition<?> getContainerDefinitionForColumns()
    • createCustomExportableColumn

      protected org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String> createCustomExportableColumn(org.apache.wicket.model.IModel<String> columnDisplayModel, GuiObjectColumnType customColumn, ExpressionType expression)
    • getSortProperty

      protected String getSortProperty(GuiObjectColumnType customColumn, ExpressionType expressionType)
    • notContainsNameColumn

      protected boolean notContainsNameColumn(@NotNull @NotNull List<org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String>> columns)
    • createCheckboxColumn

      protected org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String> createCheckboxColumn()
    • createIconColumn

      protected abstract org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String> createIconColumn()
    • createNameColumn

      protected org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String> createNameColumn(org.apache.wicket.model.IModel<String> displayModel, GuiObjectColumnType customColumn, ExpressionType expression)
    • createDefaultColumns

      protected List<org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn<PO,String>> createDefaultColumns()
    • createInlineMenu

      protected List<InlineMenuItem> createInlineMenu()
    • createProvider

      protected abstract ISelectableDataProvider<PO> createProvider()
    • getSelectedObjectsCount

      public int getSelectedObjectsCount()
    • getSelectedObjects

      public List<PO> getSelectedObjects()
    • getSelectedRealObjects

      public abstract List<C> getSelectedRealObjects()
    • getPreselectedObjectList

      protected List<C> getPreselectedObjectList()
    • initSearch

      protected SearchPanel initSearch(String headerId)
    • getAdditionalBoxCssClasses

      public String getAdditionalBoxCssClasses()
    • setAdditionalBoxCssClasses

      public void setAdditionalBoxCssClasses(String boxCssClasses)
    • createToolbarButtonsList

      protected List<org.apache.wicket.Component> createToolbarButtonsList(String idButton)
    • createDownloadButton

      protected CsvDownloadButtonPanel createDownloadButton(String buttonId)
    • getStorageKey

      protected String getStorageKey()
    • isRefreshEnabled

      protected boolean isRefreshEnabled()
    • getAutoRefreshInterval

      protected int getAutoRefreshInterval()
    • getObjectCollectionView

      public CompiledObjectCollectionView getObjectCollectionView()
    • getCollectionNameFromPageParameters

      protected String getCollectionNameFromPageParameters()
    • isCollectionViewPanelForWidget

      protected boolean isCollectionViewPanelForWidget()
    • isCollectionViewPanelForCompiledView

      protected boolean isCollectionViewPanelForCompiledView()
    • isCollectionViewPanel

      protected boolean isCollectionViewPanel()
    • defaultCollectionExists

      protected boolean defaultCollectionExists()
    • getDataProvider

      protected ISelectableDataProvider getDataProvider()
    • refreshTable

      public void refreshTable(org.apache.wicket.ajax.AjaxRequestTarget target)
    • resetTable

      public void resetTable(org.apache.wicket.ajax.AjaxRequestTarget target)
    • resetSearchModel

      public void resetSearchModel()
    • saveSearchModel

      protected void saveSearchModel(ObjectPaging paging)
    • clearCache

      public void clearCache()
    • createStringResource

      public org.apache.wicket.model.StringResourceModel createStringResource(String resourceKey, Object... objects)
      Overrides:
      createStringResource in class BasePanel<C extends Serializable>
    • addCustomActions

      protected void addCustomActions(@NotNull @NotNull List<InlineMenuItem> actionsList, SerializableSupplier<Collection<? extends C>> objectsSupplier)
    • addPerformed

      public void addPerformed(org.apache.wicket.ajax.AjaxRequestTarget target, List<C> selected)
    • getCurrentTablePaging

      public ObjectPaging getCurrentTablePaging()
    • hideFooterIfSinglePage

      protected boolean hideFooterIfSinglePage()
    • isDataTableVisible

      protected boolean isDataTableVisible()
    • setManualRefreshEnabled

      public void setManualRefreshEnabled(Boolean manualRefreshEnabled)
    • getSearchModel

      public org.apache.wicket.model.LoadableDetachableModel<Search<C>> getSearchModel()
    • createReportPerformed

      protected void createReportPerformed(org.apache.wicket.ajax.AjaxRequestTarget target)
    • getDefaultView

      protected GuiObjectListViewType getDefaultView()
    • setDefaultSorting

      protected void setDefaultSorting(ISelectableDataProvider<PO> provider)
    • getPanelConfiguration

      public ContainerPanelConfigurationType getPanelConfiguration()
    • isValidFormComponents

      public boolean isValidFormComponents(org.apache.wicket.ajax.AjaxRequestTarget target)
    • isValidFormComponentsOfRow

      public boolean isValidFormComponentsOfRow(org.apache.wicket.model.IModel<PO> rowModel, org.apache.wicket.ajax.AjaxRequestTarget target)
    • isValidFormComponents

      public boolean isValidFormComponents()
    • getNavigationParametersModel

      protected LoadableModel<org.apache.wicket.request.mapper.parameter.PageParameters> getNavigationParametersModel()
    • getInlineMenuItemCssClass

      protected String getInlineMenuItemCssClass()