diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/HistoryPageTabVisibleBehavior.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/HistoryPageTabVisibleBehavior.java index c1b86b8db61..bb5d67e0712 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/HistoryPageTabVisibleBehavior.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/HistoryPageTabVisibleBehavior.java @@ -14,7 +14,7 @@ /** * Created by honchar. */ -public class HistoryPageTabVisibleBehavior extends FocusTabVisibleBehavior{ +public class HistoryPageTabVisibleBehavior extends ObjectTabVisibleBehavior { private static final long serialVersionUID = 1L; private boolean visibleOnHistoryPage = false; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/FocusTabVisibleBehavior.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ObjectTabVisibleBehavior.java similarity index 94% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/FocusTabVisibleBehavior.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ObjectTabVisibleBehavior.java index d24a95fdcf4..6b0f295f6ad 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/FocusTabVisibleBehavior.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ObjectTabVisibleBehavior.java @@ -37,16 +37,16 @@ /** * Created by Viliam Repan (lazyman). */ -public class FocusTabVisibleBehavior extends VisibleEnableBehaviour { +public class ObjectTabVisibleBehavior extends VisibleEnableBehaviour { private static final long serialVersionUID = 1L; - private static final String OPERATION_LOAD_GUI_CONFIGURATION = FocusTabVisibleBehavior.class.getName() + ".loadGuiConfiguration"; + private static final String OPERATION_LOAD_GUI_CONFIGURATION = ObjectTabVisibleBehavior.class.getName() + ".loadGuiConfiguration"; private IModel> objectModel; private String uiAuthorizationUrl; private PageBase pageBase; - public FocusTabVisibleBehavior(IModel> objectModel, String uiAuthorizationUrl, PageBase pageBase) { + public ObjectTabVisibleBehavior(IModel> objectModel, String uiAuthorizationUrl, PageBase pageBase) { this.objectModel = objectModel; this.uiAuthorizationUrl = uiAuthorizationUrl; this.pageBase = pageBase; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractRoleMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractRoleMainPanel.java index f636a01c5d3..4a26cd7b5cd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractRoleMainPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractRoleMainPanel.java @@ -28,7 +28,6 @@ import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; import com.evolveum.midpoint.gui.api.prism.ShadowWrapper; -import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.query.ObjectQuery; @@ -48,7 +47,6 @@ import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; import com.evolveum.midpoint.web.page.admin.roles.AbstractRoleMemberPanel; import com.evolveum.midpoint.web.page.admin.roles.AvailableRelationDto; -import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto; import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus; import com.evolveum.midpoint.web.page.self.PageAssignmentShoppingCart; import com.evolveum.midpoint.web.security.GuiAuthorizationConstants; @@ -60,7 +58,6 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ServiceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; /** diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeMainPanel.java index 9c8e514981d..0cd6c754bd6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeMainPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeMainPanel.java @@ -11,7 +11,7 @@ import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; -import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior; +import com.evolveum.midpoint.gui.api.util.ObjectTabVisibleBehavior; import com.evolveum.midpoint.gui.api.util.HistoryPageTabVisibleBehavior; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil; @@ -92,11 +92,11 @@ public PrismObject getObject() { }; } - protected FocusTabVisibleBehavior getTabVisibility(String authUrl, boolean isVisibleOnHistoryPage, PageAdminObjectDetails parentPage){ + protected ObjectTabVisibleBehavior getTabVisibility(String authUrl, boolean isVisibleOnHistoryPage, PageAdminObjectDetails parentPage){ if (isFocusHistoryPage()){ return new HistoryPageTabVisibleBehavior(unwrapModel(), authUrl, isVisibleOnHistoryPage, parentPage); } else { - return new FocusTabVisibleBehavior(unwrapModel(), authUrl, parentPage); + return new ObjectTabVisibleBehavior(unwrapModel(), authUrl, parentPage); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java index 67b0533cc02..70ba2ea4133 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java @@ -1,9 +1,11 @@ package com.evolveum.midpoint.web.page.admin.server; import com.evolveum.midpoint.gui.api.GuiStyleConstants; +import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; +import com.evolveum.midpoint.gui.api.util.ObjectTabVisibleBehavior; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.gui.impl.prism.ItemEditabilityHandler; import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; @@ -317,7 +319,6 @@ protected TaskType load() { @Override protected AbstractObjectMainPanel createMainPanel(String id) { - //TODO add visibility for each tab, look at the TaskTabsVisibility return new AbstractObjectMainPanel(id, getObjectModel(), this) { @Override @@ -328,41 +329,104 @@ protected boolean getOptionsPanelVisibility() { @Override protected List createTabs(PageAdminObjectDetails parentPage) { List tabs = new ArrayList<>(); - tabs.add(new AbstractTab(createStringResource("pageTask.basic.title")) { + TaskTabsVisibility taskTabsVisibility = new TaskTabsVisibility(); + taskTabsVisibility.computeAll(PageTask.this, getObjectWrapper()); + + ObjectTabVisibleBehavior basicTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + return taskTabsVisibility.isBasicVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.basic.title"), basicTabVisibility) { + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public WebMarkupContainer createPanel(String panelId) { ItemVisibilityHandler visibilityHandler = wrapper -> getBasicTabVisibility(wrapper.getPath()); return createContainerPanel(panelId, TaskType.COMPLEX_TYPE, getObjectModel(), visibilityHandler); } }); - tabs.add(new AbstractTab(createStringResource("pageTask.schedule.title")) { + ObjectTabVisibleBehavior scheduleTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public boolean isVisible(){ + return taskTabsVisibility.isSchedulingVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.schedule.title"), scheduleTabVisibility) { + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createPanel(String panelId) { ItemVisibilityHandler visibilityHandler = wrapper -> ItemVisibility.AUTO; return createContainerPanel(panelId, TaskType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getObjectModel(), TaskType.F_SCHEDULE), visibilityHandler); } }); - tabs.add(new AbstractTab(createStringResource("pageTask.workManagement.title")) { + ObjectTabVisibleBehavior workManagementTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public boolean isVisible(){ + return taskTabsVisibility.isWorkManagementVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.workManagement.title"), workManagementTabVisibility) { + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createPanel(String panelId) { ItemVisibilityHandler visibilityHandler = wrapper -> ItemVisibility.AUTO; return createContainerPanel(panelId, TaskType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getObjectModel(), TaskType.F_WORK_MANAGEMENT), visibilityHandler); } }); - tabs.add(new AbstractTab(createStringResource("pageTask.cleanupPolicies.title")) { + ObjectTabVisibleBehavior cleanupPoliciesTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public boolean isVisible(){ + return taskTabsVisibility.isCleanupPolicyVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.cleanupPolicies.title"), cleanupPoliciesTabVisibility) { + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createPanel(String panelId) { ItemVisibilityHandler visibilityHandler = wrapper -> ItemVisibility.AUTO; return createContainerPanel(panelId, TaskType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getObjectModel(), ItemPath.create(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_CLEANUP_POLICIES)), visibilityHandler); } }); - tabs.add(new AbstractTab(createStringResource("pageTask.subtasks.title")) { + ObjectTabVisibleBehavior subtasksTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + return taskTabsVisibility.isSubtasksAndThreadsVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.subtasks.title"), subtasksTabVisibility) { + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public WebMarkupContainer createPanel(String panelId) { return new TaskSubtasksAndThreadsTabPanel(panelId, getObjectModel()); } @@ -372,22 +436,47 @@ public boolean isVisible() { } }); - tabs.add(new AbstractTab(createStringResource("pageTask.operationStats.title")) { + ObjectTabVisibleBehavior operationStatsAndInternalPerfTabsVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public boolean isVisible(){ + return taskTabsVisibility.isInternalPerformanceVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.operationStats.title"), operationStatsAndInternalPerfTabsVisibility) { + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createPanel(String panelId) { return new TaskOperationStatisticsPanel(panelId, getObjectModel()); } + @Override public boolean isVisible() { return isEditingFocus(); } }); - tabs.add(new AbstractTab(parentPage.createStringResource("pageTask.environmentalPerformance.title")) { - @Override - public WebMarkupContainer getPanel(String panelId) { - return new TaskPerformanceTabPanel(panelId, getObjectModel()); - } + ObjectTabVisibleBehavior envPerfTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + return taskTabsVisibility.isEnvironmentalPerformanceVisible(); + } + }; + tabs.add(new PanelTab(parentPage.createStringResource("pageTask.environmentalPerformance.title"), envPerfTabVisibility) { + private static final long serialVersionUID = 1L; + + @Override + public WebMarkupContainer createPanel(String panelId) { + return new TaskPerformanceTabPanel(panelId, getObjectModel()); + } @Override public boolean isVisible() { @@ -395,10 +484,21 @@ public boolean isVisible() { } }); - tabs.add( - new AbstractTab(parentPage.createStringResource("pageTaskEdit.operation")) { + ObjectTabVisibleBehavior operationTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + return taskTabsVisibility.isOperationVisible(); + } + }; + tabs.add(new PanelTab(parentPage.createStringResource("pageTaskEdit.operation"), operationTabVisibility) { + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public WebMarkupContainer createPanel(String panelId) { return new TaskOperationTabPanel(panelId, PrismContainerWrapperModel.fromContainerWrapper(getObjectModel(), TaskType.F_MODEL_OPERATION_CONTEXT)); } @Override @@ -407,9 +507,11 @@ public boolean isVisible() { } }); - tabs.add(new AbstractTab(createStringResource("pageTask.internalPerformance.title")) { + tabs.add(new PanelTab(createStringResource("pageTask.internalPerformance.title"), operationStatsAndInternalPerfTabsVisibility) { + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public WebMarkupContainer createPanel(String panelId) { return new TaskInternalPerformanceTabPanel(panelId, PrismContainerWrapperModel.fromContainerWrapper(getObjectModel(), TaskType.F_OPERATION_STATS)); } @Override @@ -418,9 +520,21 @@ public boolean isVisible() { } }); - tabs.add(new AbstractTab(createStringResource("pageTask.result.title")) { + ObjectTabVisibleBehavior resultTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + return taskTabsVisibility.isResultVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.result.title"), resultTabVisibility) { + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public WebMarkupContainer createPanel(String panelId) { return new TaskResultTabPanel(panelId, getObjectModel()); } @Override @@ -430,9 +544,21 @@ public boolean isVisible() { }); - tabs.add(new AbstractTab(createStringResource("pageTask.errors.title")) { + ObjectTabVisibleBehavior errorsTabVisibility = new ObjectTabVisibleBehavior + (Model.of(getObjectWrapper().getObject()), "", PageTask.this){ + + private static final long serialVersionUID = 1L; + + @Override + public boolean isVisible(){ + return taskTabsVisibility.isErrorsVisible(); + } + }; + tabs.add(new PanelTab(createStringResource("pageTask.errors.title"), errorsTabVisibility) { + private static final long serialVersionUID = 1L; + @Override - public WebMarkupContainer getPanel(String panelId) { + public WebMarkupContainer createPanel(String panelId) { return new TaskErrorsTabPanel(panelId, getObjectModel()); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java index d6db03996ce..51d149f26f3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskTabsVisibility.java @@ -36,9 +36,12 @@ class TaskTabsVisibility implements Serializable { private boolean basicVisible; private boolean schedulingVisible; + private boolean workManagementVisible; private boolean subtasksAndThreadsVisible; + private boolean cleanupPolicyVisible; private boolean progressVisible; private boolean environmentalPerformanceVisible; + private boolean internalPerformanceVisible; private boolean operationVisible; private boolean resultVisible; private boolean errorsVisible; @@ -50,7 +53,17 @@ public boolean computeBasicVisible(PageTask parentPage, TaskType task) { public boolean computeSchedulingVisible(PageTask parentPage, TaskType task) { schedulingVisible = !WebComponentUtil.isWorkflowTask(task); - return schedulingVisible; + return schedulingVisible; + } + + public boolean computeWorkManagementVisible(){ + workManagementVisible = true; //todo when work management should be visible? + return workManagementVisible; + } + + public boolean computeCleanupPolicyVisible(){ + cleanupPolicyVisible = true; //todo when cleanup policy should be visible? + return cleanupPolicyVisible; } public boolean computeSubtasksAndThreadsVisible(PageTask parentPage, PrismObjectWrapper taskWrapper) { @@ -80,10 +93,10 @@ && isTaskItemReadable(taskWrapper, TaskType.F_OPERATION_STATS) } public boolean computeInternalPerformanceVisible(PageTask parentPage, PrismObjectWrapper taskWrapper) { - environmentalPerformanceVisible = !parentPage.isEditingFocus() + internalPerformanceVisible = !parentPage.isEditingFocus() && isTaskItemReadable(taskWrapper, TaskType.F_OPERATION_STATS) && taskWrapper.getObject().asObjectable().getOperationStats() != null; - return environmentalPerformanceVisible; + return internalPerformanceVisible; } public boolean computeOperationVisible(PageTask parentPage, PrismObjectWrapper taskWrapper) { @@ -116,6 +129,8 @@ public boolean computeErrorsVisible(PageTask parentPage, TaskType task) { public void computeAll(PageTask parentPage, PrismObjectWrapper taskWrapper) { computeBasicVisible(parentPage, taskWrapper.getObject().asObjectable()); computeSchedulingVisible(parentPage, taskWrapper.getObject().asObjectable()); + computeWorkManagementVisible(); + computeCleanupPolicyVisible(); computeSubtasksAndThreadsVisible(parentPage, taskWrapper); computeProgressVisible(parentPage); computeEnvironmentalPerformanceVisible(parentPage, taskWrapper); @@ -203,6 +218,14 @@ public boolean isSchedulingVisible() { return schedulingVisible; } + public boolean isWorkManagementVisible() { + return workManagementVisible; + } + + public boolean isCleanupPolicyVisible() { + return cleanupPolicyVisible; + } + public boolean isSubtasksAndThreadsVisible() { return subtasksAndThreadsVisible; } @@ -215,6 +238,10 @@ public boolean isEnvironmentalPerformanceVisible() { return environmentalPerformanceVisible; } + public boolean isInternalPerformanceVisible() { + return internalPerformanceVisible; + } + public boolean isOperationVisible() { return operationVisible; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUserHistory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUserHistory.java index e58090fb421..40b52f4c7f9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUserHistory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUserHistory.java @@ -7,12 +7,8 @@ package com.evolveum.midpoint.web.page.admin.users; -import com.evolveum.midpoint.gui.api.ComponentConstants; -import com.evolveum.midpoint.gui.api.component.tabs.CountablePanelTab; -import com.evolveum.midpoint.gui.api.component.tabs.PanelTab; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper; -import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.security.api.AuthorizationConstants; @@ -20,27 +16,10 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; -import com.evolveum.midpoint.web.component.FocusSummaryPanel; import com.evolveum.midpoint.web.component.ObjectSummaryPanel; -import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto; -import com.evolveum.midpoint.web.component.assignment.AssignmentTablePanel; -import com.evolveum.midpoint.web.component.assignment.DelegationEditorPanel; -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel; -import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel; -import com.evolveum.midpoint.web.component.prism.*; -import com.evolveum.midpoint.web.page.admin.PageAdminFocus; -import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; -import com.evolveum.midpoint.web.page.admin.users.component.UserSummaryPanel; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.markup.html.tabs.ITab; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.model.IModel; -import java.util.ArrayList; -import java.util.List; +import org.apache.wicket.model.IModel; /** * Created by honchar.