diff --git a/gui/admin-gui/pom.xml b/gui/admin-gui/pom.xml
index 279ae1c3450..559156372b3 100644
--- a/gui/admin-gui/pom.xml
+++ b/gui/admin-gui/pom.xml
@@ -110,7 +110,7 @@
spring-boot-maven-plugin
${spring.boot.version}
-
+ true
false
-Dserver.port=${server.port} -Dmidpoint.home=${midpoint.home} -Dmidpoint.schrodinger=${midpoint.schrodinger} -Djavax.net.ssl.trustStore=${javax.net.ssl.trustStore} -Djavax.net.ssl.trustStoreType=${javax.net.ssl.trustStoreType}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java
index dcc8a906f20..939ddae03aa 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java
@@ -142,6 +142,7 @@ public class GuiStyleConstants {
public static final String CLASS_RESUME_MENU_ITEM = "fa fa-check-square";
public static final String CLASS_STOP_MENU_ITEM = "fa fa-stop";
public static final String CLASS_START_MENU_ITEM = "fa fa-play";
+ public static final String CLASS_IMPORT_MENU_ITEM = "fa fa-download";
public static final String CLASS_BUTTON_TOGGLE_OFF = "btn-default";
public static final String CLASS_BUTTON_TOGGLE_ON = "btn-info";
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java
index 33d97c79496..84b331590f7 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java
@@ -24,7 +24,9 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
+import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.task.api.Task;
+import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
@@ -188,6 +190,13 @@ private BoxedTablePanel> createTable() {
} else {
columns = initColumns();
}
+ List menuItems = createInlineMenu();
+ getCustomActions(menuItems);
+
+ if (menuItems != null && menuItems.size() > 0) {
+ InlineMenuButtonColumn> actionsColumn = new InlineMenuButtonColumn<>(menuItems, parentPage);
+ columns.add(actionsColumn);
+ }
BaseSortableDataProvider> provider = initProvider();
@@ -247,10 +256,6 @@ protected List, String>> initCustomColumns() {
columns.add(iconColumn);
columns.addAll(getCustomColumnsTransformed(customColumns));
- IColumn, String> actionsColumn = createActionsColumn();
- if (actionsColumn != null){
- columns.add(actionsColumn);
- }
LOGGER.trace("Finished to init custom columns, created columns {}", columns);
return columns;
}
@@ -365,10 +370,6 @@ protected List, String>> initColumns() {
List, String>> others = createColumns();
columns.addAll(others);
- IColumn, String> actionsColumn = createActionsColumn();
- if (actionsColumn != null) {
- columns.add(createActionsColumn());
- }
LOGGER.trace("Finished to init columns, created columns {}", columns);
return columns;
}
@@ -393,6 +394,7 @@ protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) {
@Override
public SelectableBean createDataObjectWrapper(O obj) {
SelectableBean bean = super.createDataObjectWrapper(obj);
+
List inlineMenu = createInlineMenu();
if (inlineMenu != null) {
bean.getMenuItems().addAll(inlineMenu);
@@ -606,18 +608,32 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob
protected abstract List, String>> createColumns();
- protected IColumn, String> createActionsColumn(){
- return null;
- }
-
protected abstract List createInlineMenu();
+ protected void getCustomActions(List actionsList){
+ GuiObjectListViewType guiObjectListViewType = getGuiObjectListViewType();
+ if (guiObjectListViewType != null && guiObjectListViewType.getAction() != null &&
+ guiObjectListViewType.getAction().size() > 0){
+ if (actionsList == null){
+ actionsList = new ArrayList<>();
+ }
+ List customActions = WebComponentUtil.createMenuItemsFromActions(guiObjectListViewType.getAction());
+ if (customActions != null) {
+ actionsList.addAll(customActions);
+ }
+ }
+ }
public void addPerformed(AjaxRequestTarget target, List selected) {
parentPage.hideMainPopup(target);
}
private List getGuiObjectColumnTypeList(){
+ GuiObjectListViewType guiObjectListViewType = getGuiObjectListViewType();
+ return guiObjectListViewType != null ? guiObjectListViewType.getColumn() : null;
+ }
+
+ private GuiObjectListViewType getGuiObjectListViewType(){
AdminGuiConfigurationType adminGuiConfig = parentPage.getPrincipal().getAdminGuiConfiguration();
if (adminGuiConfig != null && adminGuiConfig.getObjectLists() != null &&
adminGuiConfig.getObjectLists().getObjectList() != null){
@@ -626,7 +642,7 @@ private List getGuiObjectColumnTypeList(){
!type.getClassDefinition().getSimpleName().equals(object.getType().getLocalPart())){
continue;
}
- return object.getColumn();
+ return object;
}
}
return null;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java
index f77b3366980..1ee3ba01025 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/PopupObjectListPanel.java
@@ -143,6 +143,11 @@ protected List createInlineMenu() {
return null;
}
+ @Override
+ protected void getCustomActions(List actionsList){
+ }
+
+
protected void onUpdateCheckbox(AjaxRequestTarget target){
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/DropdownButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/DropdownButtonPanel.java
index e67936136b3..39f5322c410 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/DropdownButtonPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/button/DropdownButtonPanel.java
@@ -17,12 +17,17 @@
import java.io.Serializable;
+import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
+import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.evolveum.midpoint.gui.api.component.BasePanel;
@@ -53,49 +58,49 @@ public DropdownButtonPanel(String id, DropdownButtonDto model) {
initLayout(model);
}
- private void initLayout(DropdownButtonDto model) {
+ private void initLayout(DropdownButtonDto dropdownButtonDto) {
WebMarkupContainer buttonContainer = new WebMarkupContainer(ID_BUTTON_CONTAINER);
buttonContainer.setOutputMarkupId(true);
buttonContainer.add(AttributeAppender.append("class", getSpecialButtonClass()));
add(buttonContainer);
- Label info = new Label(ID_INFO, model.getInfo());
+ Label info = new Label(ID_INFO, dropdownButtonDto.getInfo());
info.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
- return model.getInfo() != null;
+ return dropdownButtonDto.getInfo() != null;
}
});
buttonContainer.add(info);
- Label label = new Label(ID_LABEL, model.getLabel());
+ Label label = new Label(ID_LABEL, dropdownButtonDto.getLabel());
label.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
- return model.getLabel() != null;
+ return dropdownButtonDto.getLabel() != null;
}
});
buttonContainer.add(label);
WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
- icon.add(AttributeModifier.append("class", model.getIcon()));
+ icon.add(AttributeModifier.append("class", dropdownButtonDto.getIcon()));
icon.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
- return model.getIcon() != null;
+ return dropdownButtonDto.getIcon() != null;
}
});
buttonContainer.add(icon);
- ListView li = new ListView(ID_MENU_ITEM, new Model((Serializable) model.getMenuItems())) {
+ ListView li = new ListView(ID_MENU_ITEM, Model.ofList(dropdownButtonDto.getMenuItems())) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem item) {
- initMenuItem(item);
+ initMenuItem(item);
}
};
@@ -107,9 +112,8 @@ public WebMarkupContainer getButtonContainer() {
}
private void initMenuItem(ListItem menuItem) {
- final InlineMenuItem item = menuItem.getModelObject();
-
- WebMarkupContainer menuItemBody = new MenuLinkPanel(ID_MENU_ITEM_BODY, menuItem.getModel());
+ MenuLinkPanel menuItemBody = new MenuLinkPanel(ID_MENU_ITEM_BODY, menuItem.getModel());
+ menuItemBody.add(new VisibleBehaviour(() -> menuItem.getModelObject().getVisible().getObject()));
menuItemBody.setRenderBodyOnly(true);
menuItem.add(menuItemBody);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java
index 1bebb62d1fe..8c9ff226df6 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java
@@ -30,6 +30,7 @@
import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.SystemConfigPanelNew;
import com.evolveum.midpoint.model.api.*;
import com.evolveum.midpoint.model.api.expr.MidpointFunctions;
import com.evolveum.midpoint.model.api.validator.ResourceValidator;
@@ -1490,6 +1491,19 @@ protected List createMenuItems() {
return menus;
}
+
+// private MainMenuItem createSystemConfigurationItems() {
+// MainMenuItem item = new MainMenuItem(GuiStyleConstants.CLASS_SYSTEM_CONFIGURATION_ICON_COLORED,
+// createStringResource("PageAdmin.menu.top.configuration.basic.new"), PageSystemConfigurationNew.class);
+//
+// addMenuItem(item, "PageAdmin.menu.top.configuration.basic", SystemConfigPanelNew.class);
+// addMenuItem(item, "PageAdmin.menu.top.configuration.objectPolicy", PageUsers.class);
+// addMenuItem(item, "PageAdmin.menu.top.users.list", PageUsers.class);
+//
+// addUsersViewMenuItems(item.getItems());
+//
+// return item;
+// }
private void createConfigurationMenu(SideBarMenuItem item) {
addMainMenuItem(item, "fa fa-bullseye", "PageAdmin.menu.top.configuration.bulkActions", PageBulkAction.class);
@@ -1503,7 +1517,7 @@ private void createConfigurationMenu(SideBarMenuItem item) {
PageDebugView.class, null, createVisibleDisabledBehaviorForEditMenu(PageDebugView.class));
debugs.getItems().add(menu);
- MainMenuItem systemItemNew = addMainMenuItem(item, "fa fa-cog", "PageAdmin.menu.top.configuration.basic.new", PageSystemConfigurationNew.class);
+ MainMenuItem systemItemNew = addMainMenuItem(item, "fa fa-cog", "PageAdmin.menu.top.configuration.basic.new", null);
addSystemMenuItemNew(systemItemNew, "PageAdmin.menu.top.configuration.basic",
PageSystemConfigurationNew.CONFIGURATION_TAB_BASIC);
@@ -1590,7 +1604,7 @@ public boolean isMenuActive(WebPage page) {
return false;
}
- int index = getSelectedTabForConfiguration(page);
+ int index = getSelectedTabForNewConfiguration(page);
return tabIndex == index ? true : false;
}
};
@@ -1747,6 +1761,17 @@ private int getSelectedTabForConfiguration(WebPage page) {
return StringUtils.isNumeric(value) ? Integer.parseInt(value) : PageSystemConfiguration.CONFIGURATION_TAB_BASIC;
}
+
+ private int getSelectedTabForNewConfiguration(WebPage page) {
+ PageParameters params = page.getPageParameters();
+ StringValue val = params.get(PageSystemConfigurationNew.SELECTED_TAB_INDEX);
+ String value = null;
+ if (val != null && !val.isNull()) {
+ value = val.toString();
+ }
+
+ return StringUtils.isNumeric(value) ? Integer.parseInt(value) : PageSystemConfigurationNew.CONFIGURATION_TAB_BASIC;
+ }
private void createSelfServiceMenu(SideBarMenuItem menu) {
addMainMenuItem(menu, GuiStyleConstants.CLASS_ICON_DASHBOARD, "PageAdmin.menu.selfDashboard",
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
index 47efba3fed3..871bfc01ff4 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
@@ -58,6 +58,8 @@
import com.evolveum.midpoint.util.*;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.web.component.data.SelectableBeanObjectDataProvider;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.prism.*;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
@@ -2629,4 +2631,31 @@ public static LookupTableType createAppenderChoices(PageBase pageBase) {
}
return lookupTable;
}
+
+ public static List createMenuItemsFromActions(List actions){
+ List menuItems = new ArrayList<>();
+ if (actions == null || actions.size() == 0){
+ return menuItems;
+ }
+ actions.forEach(action -> {
+ String label = action.getDisplay() != null && StringUtils.isNotEmpty(action.getDisplay().getLabel()) ?
+ action.getDisplay().getLabel() : action.getName();
+ new InlineMenuItem(Model.of(label)){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction(){
+ return new InlineMenuItemAction() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ //TODO run task from action
+ }
+ };
+ }
+ };
+ });
+ return menuItems;
+ }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java
index 58c4b088950..e9944cb61bf 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java
@@ -19,6 +19,8 @@
import java.util.List;
import java.util.stream.Collectors;
+import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -48,7 +50,6 @@
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.Table;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
-import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
@@ -271,21 +272,21 @@ private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
// MultivalueContainerListDataProvider provider = getDataProvider();
// ObjectQuery finalQuery = null;
-//
+//
// ObjectQuery searchQuery = getQuery();
-//
+//
// ObjectQuery customQuery = createQuery();
-//
+//
// if (query != null && query.getFilter() != null) {
// if (customQuery != null && customQuery.getFilter() != null) {
// finalQuery = ObjectQuery.createObjectQuery(AndFilter.createAnd(customQuery.getFilter(), query.getFilter()));
// }
// finalQuery = query;
-//
+//
// } else {
// finalQuery = customQuery;
// }
-//
+//
// provider.setQuery(finalQuery);
// String storageKey = getStorageKey();
// if (StringUtils.isNotEmpty(storageKey)) {
@@ -330,19 +331,19 @@ public String getObject() {
private ObjectQuery createProviderQuery() {
ObjectQuery searchQuery = getQuery();
-
+
ObjectQuery customQuery = createQuery();
-
+
if (searchQuery != null && searchQuery.getFilter() != null) {
if (customQuery != null && customQuery.getFilter() != null) {
return ObjectQuery.createObjectQuery(AndFilter.createAnd(customQuery.getFilter(), searchQuery.getFilter()));
}
return searchQuery;
-
- }
+
+ }
return customQuery;
}
-
+
protected abstract ObjectQuery createQuery();
protected abstract List, String>> createColumns();
@@ -444,13 +445,33 @@ private void deleteItemPerformed(AjaxRequestTarget target, List getDefaultMenuActions() {
List menuItems = new ArrayList<>();
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true),
- new Model<>(true), false, createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.unassign")) {
+ private static final long serialVersionUID = 1L;
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true),
- new Model<>(true), false, createEditColumnAction(), 1, GuiStyleConstants.CLASS_EDIT_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString()));
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return createDeleteColumnAction();
+ }
+ });
+
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.edit")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return createEditColumnAction();
+ }
+ });
return menuItems;
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java
index 55ec8b69076..0decc35ed1e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java
@@ -22,15 +22,23 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.path.ItemPath;
+import com.evolveum.midpoint.prism.path.ItemPath;import com.evolveum.midpoint.prism.path.ItemPathSegment;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.form.Form;
+import com.evolveum.midpoint.web.component.prism.ItemVisibility;
+import com.evolveum.midpoint.web.component.prism.ItemWrapper;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.component.prism.PrismContainerPanel;
import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.DeploymentInformationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LoggingConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.PcpAspectConfigurationType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.PrimaryChangeProcessorConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.WfConfigurationType;
/**
* @author skublik
@@ -39,6 +47,8 @@ public class ContainerOfSystemConfigurationPanel extend
private static final long serialVersionUID = 1L;
+ private static final Trace LOGGER = TraceManager.getTrace(ContainerOfSystemConfigurationPanel.class);
+
private static final String ID_CONTAINER = "container";
private QName qNameContainer;
@@ -58,9 +68,37 @@ protected void initLayout() {
Form form = new Form<>("form");
ContainerWrapperFromObjectWrapperModel model = new ContainerWrapperFromObjectWrapperModel<>(getModel(), new ItemPath(qNameContainer));
- PrismContainerPanel panel = new PrismContainerPanel<>(ID_CONTAINER, model, true, form, null, getPageBase());
+ PrismContainerPanel panel = new PrismContainerPanel<>(ID_CONTAINER, model, true, form, itemWrapper -> getVisibity(itemWrapper.getPath()), getPageBase());
add(panel);
}
+
+ protected ItemVisibility getVisibity(ItemPath itemPath) {
+ if(itemPath.getFirstName().equals(SystemConfigurationType.F_WORKFLOW_CONFIGURATION)) {
+ if(itemPath.lastNamed().getName().equals(WfConfigurationType.F_APPROVER_COMMENTS_FORMATTING)) {
+ return ItemVisibility.HIDDEN;
+ }
+
+ if(itemPath.tail().equivalent(new ItemPath(WfConfigurationType.F_PRIMARY_CHANGE_PROCESSOR, PrimaryChangeProcessorConfigurationType.F_ADD_ASSOCIATION_ASPECT,
+ PcpAspectConfigurationType.F_APPROVER_REF))) {
+ return ItemVisibility.AUTO;
+ }
+
+ if(itemPath.tail().startsWithName(WfConfigurationType.F_PRIMARY_CHANGE_PROCESSOR)
+ && (itemPath.lastNamed().getName().equals(PcpAspectConfigurationType.F_APPROVER_EXPRESSION)
+ || itemPath.lastNamed().getName().equals(PcpAspectConfigurationType.F_APPROVER_REF)
+ || itemPath.lastNamed().getName().equals(PcpAspectConfigurationType.F_AUTOMATICALLY_APPROVED)
+ || itemPath.lastNamed().getName().equals(PcpAspectConfigurationType.F_APPLICABILITY_CONDITION))) {
+ return ItemVisibility.HIDDEN;
+ }
+ }
+
+ if(itemPath.equivalent(new ItemPath(SystemConfigurationType.F_ACCESS_CERTIFICATION, AccessCertificationConfigurationType.F_REVIEWER_COMMENTS_FORMATTING))) {
+ return ItemVisibility.HIDDEN;
+ }
+
+ return ItemVisibility.AUTO;
+ }
+
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java
index c6edeefa0ce..5fe312b5032 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/GlobalPolicyRuleTabPanel.java
@@ -292,7 +292,7 @@ public void populateItem(Item menuActionsList = getMultivalueContainerListPanel().getDefaultMenuActions();
- columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));
+ columns.add(new InlineMenuButtonColumn<>(menuActionsList, getPageBase()));
return columns;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java
index 15a5c6e1c72..60b15fe5811 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java
@@ -65,6 +65,7 @@
import com.evolveum.midpoint.web.component.prism.PrismContainerPanel;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
+import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
@@ -94,11 +95,7 @@ public class LoggingConfigurationTabPanel extends BasePanel> appenderModel = null;
- IModel> loggerModel = null;
-
+
public LoggingConfigurationTabPanel(String id, IModel> model) {
super(id, model);
}
@@ -113,23 +110,15 @@ protected void initLayout() {
PrismContainerPanel loggingPanel = new PrismContainerPanel(ID_LOGGING, getModel(), true, new Form<>("form"), itemWrapper -> getLoggingVisibility(itemWrapper.getPath()), getPageBase());
add(loggingPanel);
+
TableId tableIdLoggers = UserProfileStorage.TableId.LOGGING_TAB_LOGGER_TABLE;
- int itemPerPageLoggers = (int) ((PageBase)LoggingConfigurationTabPanel.this.getPage()).getItemsPerPage(UserProfileStorage.TableId.LOGGING_TAB_LOGGER_TABLE);
- PageStorage pageStorageLoggers = ((PageBase)LoggingConfigurationTabPanel.this.getPage()).getSessionStorage().getLoggingConfigurationTabLoggerTableStorage();
+ int itemPerPageLoggers = (int) getPageBase().getItemsPerPage(tableIdLoggers);
+ PageStorage pageStorageLoggers = getPageBase().getSessionStorage().getLoggingConfigurationTabLoggerTableStorage();
- ContainerValueWrapper containerValueWrapper = getModelObject().getValues().get(0);
-
- ContainerWrapper loggersContainerWrap = containerValueWrapper.findContainerWrapper(new ItemPath(getModel().getObject().getPath(), LoggingConfigurationType.F_CLASS_LOGGER));
- IModel> loggerModel = new AbstractReadOnlyModel>() {
- private static final long serialVersionUID = 1L;
+ IModel> loggerModel =
+ new ContainerWrapperFromObjectWrapperModel(Model.of(getModelObject().getObjectWrapper()), new ItemPath(SystemConfigurationType.F_LOGGING, LoggingConfigurationType.F_CLASS_LOGGER));
- @Override
- public ContainerWrapper getObject() {
- return loggersContainerWrap;
- }
- };
- this.loggerModel = loggerModel;
PrismContainerHeaderPanel loggersHeader = new PrismContainerHeaderPanel(ID_LOGGERS_HEADER, loggerModel) {
@@ -150,7 +139,7 @@ protected boolean isAddButtonVisible() {
@Override
protected List> postSearch(
List> items) {
- return getLoggers();
+ return items;
}
@Override
@@ -164,7 +153,7 @@ protected void newItemPerformed(AjaxRequestTarget target) {
@Override
protected void initPaging() {
- initLoggerPaging();
+ initLoggerPaging();
}
@Override
@@ -174,7 +163,7 @@ protected boolean enableActionNewObject() {
@Override
protected ObjectQuery createQuery() {
- return LoggingConfigurationTabPanel.this.createAppendersQuery();
+ return null;
}
@Override
@@ -203,24 +192,15 @@ protected List initSearchableItems(
}
};
add(loggersMultivalueContainerListPanel);
-
+
TableId tableIdAppenders = UserProfileStorage.TableId.LOGGING_TAB_APPENDER_TABLE;
int itemPerPageAppenders = (int) ((PageBase)LoggingConfigurationTabPanel.this.getPage()).getItemsPerPage(UserProfileStorage.TableId.LOGGING_TAB_APPENDER_TABLE);
PageStorage pageStorageAppenders = ((PageBase)LoggingConfigurationTabPanel.this.getPage()).getSessionStorage().getLoggingConfigurationTabAppenderTableStorage();
-
- ContainerWrapper containerWrap = containerValueWrapper.findContainerWrapper(new ItemPath(getModel().getObject().getPath(), LoggingConfigurationType.F_APPENDER));
- IModel> appenderModel = new AbstractReadOnlyModel>() {
- private static final long serialVersionUID = 1L;
- @Override
- public ContainerWrapper getObject() {
- return containerWrap;
- }
+ IModel> appenderModel =
+ new ContainerWrapperFromObjectWrapperModel(Model.of(getModelObject().getObjectWrapper()), new ItemPath(SystemConfigurationType.F_LOGGING, LoggingConfigurationType.F_APPENDER));
- };
- this.appenderModel = appenderModel;
-
PrismContainerHeaderPanel appenderHeader = new PrismContainerHeaderPanel(ID_APPENDERS_HEADER, appenderModel) {
private static final long serialVersionUID = 1L;
@@ -240,7 +220,7 @@ protected boolean isAddButtonVisible() {
@Override
protected List> postSearch(
List> items) {
- return getAppenders();
+ return items;
}
@Override
@@ -260,7 +240,7 @@ protected boolean enableActionNewObject() {
@Override
protected ObjectQuery createQuery() {
- return LoggingConfigurationTabPanel.this.createAppendersQuery();
+ return null;
}
@Override
@@ -284,17 +264,8 @@ protected List initSearchableItems(
};
add(appendersMultivalueContainerListPanel);
- ContainerWrapper auditWrapper = containerValueWrapper.findContainerWrapper(new ItemPath(getModel().getObject().getPath(), LoggingConfigurationType.F_AUDITING));
- IModel> auditModel = new AbstractReadOnlyModel>() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public ContainerWrapper getObject() {
- return auditWrapper;
- }
-
- };
+ IModel> auditModel =
+ new ContainerWrapperFromObjectWrapperModel(Model.of(getModelObject().getObjectWrapper()), new ItemPath(SystemConfigurationType.F_LOGGING, LoggingConfigurationType.F_AUDITING));
PrismContainerPanel auditPanel = new PrismContainerPanel(ID_AUDITING, auditModel, true, new Form<>("form"), null, getPageBase());
add(auditPanel);
setOutputMarkupId(true);
@@ -308,13 +279,6 @@ private ItemVisibility getLoggingVisibility(ItemPath pathToCheck) {
return ItemVisibility.HIDDEN;
}
- private List> getAppenders() {
- return appenderModel.getObject().getValues();
- }
-
- private List> getLoggers() {
- return loggerModel.getObject().getValues();
- }
private List, String>> initLoggersBasicColumns() {
List, String>> columns = new ArrayList<>();
@@ -350,7 +314,7 @@ public void onClick(AjaxRequestTarget target, IModel(createStringResource("LoggingConfigurationTabPanel.loggers.appender"), ClassLoggerConfigurationType.F_APPENDER, getPageBase()));
List menuActionsList = getLoggersMultivalueContainerListPanel().getDefaultMenuActions();
- columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));
+ columns.add(new InlineMenuButtonColumn<>(menuActionsList, getPageBase()));
return columns;
}
@@ -370,8 +334,9 @@ private void loggerEditPerformed(AjaxRequestTarget target, IModel newObjectPolicy = appenderModel.getObject().getItem().createNewValue();
- ContainerValueWrapper newAppenderContainerWrapper = getAppendersMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, appenderModel);
+ MultivalueContainerListPanelWithDetailsPanel appenders = (MultivalueContainerListPanelWithDetailsPanel) get(ID_APPENDERS);
+ PrismContainerValue newObjectPolicy = appenders.getModelObject().getItem().createNewValue();
+ ContainerValueWrapper newAppenderContainerWrapper = getAppendersMultivalueContainerListPanel().createNewItemContainerValueWrapper(newObjectPolicy, appenders.getModel());
newAppenderContainerWrapper.setShowEmpty(true, false);
newAppenderContainerWrapper.computeStripes();
getAppendersMultivalueContainerListPanel().itemDetailsPerformed(target, Arrays.asList(newAppenderContainerWrapper));
@@ -405,14 +370,14 @@ protected void getBasicContainerValuePanel(String idPanel) {
model.getObject().getContainer().setShowOnTopLevel(true);
ContainerValuePanel panel;
if(item.getModelObject().getContainerValue().getValue() instanceof FileAppenderConfigurationType) {
-
+
FileAppenderConfigurationType appender = (FileAppenderConfigurationType) item.getModelObject().getContainerValue().getValue();
ContainerWrapperFactory cwf = new ContainerWrapperFactory(getPageBase());
Task task = LoggingConfigurationTabPanel.this.getPageBase().createSimpleTask("create appender");
ContainerWrapper wrapper = cwf.createContainerWrapper(item.getModelObject().getContainer().getObjectWrapper(), (PrismContainer)appender.asPrismContainerValue().getContainer(), item.getModelObject().getObjectStatus(),
new ItemPath(FileAppenderConfigurationType.COMPLEX_TYPE), task);
wrapper.setShowOnTopLevel(true);
-
+
ContainerValueWrapper value = cwf.createContainerValueWrapper(wrapper, (PrismContainerValue)appender.asPrismContainerValue(), item.getModelObject().getObjectStatus(), item.getModelObject().getStatus(), new ItemPath(FileAppenderConfigurationType.COMPLEX_TYPE), task);
IModel> valueModel = new LoadableModel>(false) {
@@ -448,12 +413,7 @@ private MultivalueContainerListPanelWithDetailsPanel
private MultivalueContainerListPanel getLoggersMultivalueContainerListPanel(){
return ((MultivalueContainerListPanel)get(ID_LOGGERS));
}
-
- private ObjectQuery createAppendersQuery() {
- TypeFilter filter = TypeFilter.createType(AppenderConfigurationType.COMPLEX_TYPE, new AllFilter());
- return ObjectQuery.createObjectQuery(filter);
- }
-
+
private void initAppenderPaging() {
getPageBase().getSessionStorage().getLoggingConfigurationTabAppenderTableStorage().setPaging(ObjectPaging.createPaging(0, (int) ((PageBase)getPage()).getItemsPerPage(UserProfileStorage.TableId.LOGGING_TAB_APPENDER_TABLE)));
}
@@ -504,7 +464,8 @@ public void onClick(AjaxRequestTarget target, IModel menuActionsList = getAppendersMultivalueContainerListPanel().getDefaultMenuActions();
- columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));
+ columns.add(new InlineMenuButtonColumn<>(menuActionsList, getPageBase()));
+
return columns;
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/NotificationConfigTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/NotificationConfigTabPanel.java
index 56f41b16a45..08b70f2011a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/NotificationConfigTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/NotificationConfigTabPanel.java
@@ -31,6 +31,8 @@
import com.evolveum.midpoint.gui.impl.component.data.column.EditableColumn;
import com.evolveum.midpoint.gui.impl.component.form.TriStateFormGroup;
+import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
@@ -61,7 +63,6 @@
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
-import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
import com.evolveum.midpoint.web.component.data.column.EditableLinkColumn;
import com.evolveum.midpoint.web.component.data.column.IconColumn;
import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn;
@@ -74,7 +75,6 @@
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
import com.evolveum.midpoint.web.component.prism.InputPanel;
import com.evolveum.midpoint.web.component.prism.PropertyWrapper;
-import com.evolveum.midpoint.web.component.prism.ValueStatus;
import com.evolveum.midpoint.web.component.prism.ValueWrapper;
import com.evolveum.midpoint.web.component.util.Editable;
import com.evolveum.midpoint.web.component.util.ListDataProvider;
@@ -452,20 +452,40 @@ protected Component createInputPanel(String componentId, IModel menuActionsList = getMenuActions();
- columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));
+ columns.add(new InlineMenuButtonColumn<>(menuActionsList, getPageBase()));
return columns;
}
private List getMenuActions() {
List menuItems = new ArrayList<>();
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true),
- new Model<>(true), false, createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.unassign")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return createDeleteColumnAction();
+ }
+ });
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true),
- new Model<>(true), false, createEditColumnAction(), 1, GuiStyleConstants.CLASS_EDIT_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString()));
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.edit")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return createEditColumnAction();
+ }
+ });
return menuItems;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java
index 6c67b0ab92d..673b21f8d71 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ObjectPolicyConfigurationTabPanel.java
@@ -32,6 +32,8 @@
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.StringValue;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.DisplayNamePanel;
@@ -60,6 +62,7 @@
import com.evolveum.midpoint.web.component.prism.ValueWrapper;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
+import com.evolveum.midpoint.web.page.admin.configuration.PageSystemConfigurationNew;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
@@ -82,11 +85,22 @@ public class ObjectPolicyConfigurationTabPanel extends BasePanel> model) {
super(id, model);
+
+
}
@Override
protected void onInitialize() {
super.onInitialize();
+
+ PageParameters params = getPage().getPageParameters();
+ StringValue val = params.get(PageSystemConfigurationNew.SELECTED_TAB_INDEX);
+ String value = null;
+ if (val != null && !val.isNull()) {
+ params.remove(params.getPosition(PageSystemConfigurationNew.SELECTED_TAB_INDEX));
+ }
+ params.set(PageSystemConfigurationNew.SELECTED_TAB_INDEX, PageSystemConfigurationNew.CONFIGURATION_TAB_OBJECT_POLICY);
+
initLayout();
}
@@ -286,7 +300,7 @@ public void populateItem(Item menuActionsList = getMultivalueContainerListPanel().getDefaultMenuActions();
- columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));
+ columns.add(new InlineMenuButtonColumn<>(menuActionsList, getPageBase()));
return columns;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java
index 8ea36ed5460..c2166cc9adf 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java
@@ -30,10 +30,9 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.prism.*;
-import com.evolveum.midpoint.web.component.search.Search;
-import com.evolveum.midpoint.web.component.search.SearchFactory;
-import com.evolveum.midpoint.web.component.search.SearchFormPanel;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
@@ -148,7 +147,7 @@ protected MultivalueContainerDetailsPanel getMultivalueContainer
ListItem> item) {
return createMultivalueContainerDetailsPanel(item);
}
-
+
@Override
protected WebMarkupContainer getSearchPanel(String contentAreaId) {
return getCustomSearchPanel(contentAreaId);
@@ -233,7 +232,7 @@ public void populateItem(Item menuActionsList = getAssignmentMenuActions();
- columns.add(new InlineMenuButtonColumn<>(menuActionsList, menuActionsList.size(), getPageBase()));
+ columns.add(new InlineMenuButtonColumn<>(menuActionsList, getPageBase()));
return columns;
}
@@ -265,7 +264,7 @@ protected Fragment getSpecificContainers(String contentAreaId) {
ItemPath assignmentPath = item.getModelObject().getContainerValue().getValue().asPrismContainerValue().getPath();
ContainerWrapperFromObjectWrapperModel activationModel = new ContainerWrapperFromObjectWrapperModel(((PageAdminObjectDetails)getPageBase()).getObjectModel(), assignmentPath.append(AssignmentType.F_ACTIVATION));
- ContainerValuePanel acitvationContainer = new ContainerValuePanel(ID_ACTIVATION_PANEL, Model.of(activationModel.getObject().getValues().get(0)), true, form, itemWrapper -> getActivationVisibileItems(itemWrapper.getPath(), assignmentPath), getPageBase());
+ PrismContainerPanel acitvationContainer = new PrismContainerPanel(ID_ACTIVATION_PANEL, Model.of(activationModel), true, form, itemWrapper -> getActivationVisibileItems(itemWrapper.getPath(), assignmentPath), getPageBase());
specificContainers.add(acitvationContainer);
return specificContainers;
@@ -422,30 +421,57 @@ public C getObject() {
private List getAssignmentMenuActions() {
List menuItems = new ArrayList<>();
PrismObject obj = getMultivalueContainerListPanel().getFocusObject();
- boolean isUnassignMenuAdded = false;
try {
boolean isUnassignAuthorized = getParentPage().isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_ACTION_URI,
AuthorizationPhaseType.REQUEST, obj,
null, null, null);
if (isUnassignAuthorized) {
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true),
- new Model<>(true), false, getMultivalueContainerListPanel().createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));
- isUnassignMenuAdded = true;
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.unassign")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return getMultivalueContainerListPanel().createDeleteColumnAction();
+ }
+ });
}
} catch (Exception ex){
LOGGER.error("Couldn't check unassign authorization for the object: {}, {}", obj.getName(), ex.getLocalizedMessage());
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI)){
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.unassign"), new Model<>(true),
- new Model<>(true), false, getMultivalueContainerListPanel().createDeleteColumnAction(), 0, GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));
- isUnassignMenuAdded = true;
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.unassign")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return getMultivalueContainerListPanel().createDeleteColumnAction();
+ }
+ });
}
}
- menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.edit"), new Model<>(true),
- new Model<>(true), false, getMultivalueContainerListPanel().createEditColumnAction(), isUnassignMenuAdded ? 1 : 0, GuiStyleConstants.CLASS_EDIT_MENU_ITEM,
- DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString()));
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.edit")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getButtonIconCssClass() {
+ return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ }
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return getMultivalueContainerListPanel().createEditColumnAction();
+ }
+ });
return menuItems;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java
index 2abf3059561..53edf29eb85 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentTablePanel.java
@@ -191,8 +191,12 @@ protected List createAssignmentMenu() {
InlineMenuItem item;
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI)) {
- item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.assign"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.assign")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
@@ -206,18 +210,24 @@ protected void addPerformed(AjaxRequestTarget target, List selected, QName relat
super.addPerformed(target, selected, relation, kind, intent);
addSelectedAssignablePerformed(target, selected, relation,
getPageBase().getMainPopup().getId());
- reloadMainFormButtons(target);
+ reloadMainFormButtons(target);
}
};
panel.setOutputMarkupId(true);
getPageBase().showMainPopup(panel, target);
}
- });
+ };
+ }
+ };
items.add(item);
- item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.assignOrg"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.assignOrg")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
@@ -230,12 +240,12 @@ public void onClick(AjaxRequestTarget target) {
@Override
protected void assignSelectedOrgPerformed(List selectedOrgs,
- AjaxRequestTarget target) {
+ AjaxRequestTarget target) {
// TODO Auto-generated method stub
addSelectedAssignablePerformed(target, (List) selectedOrgs, SchemaConstants.ORG_DEFAULT,
getPageBase().getMainPopup().getId());
- reloadMainFormButtons(target);
- }
+ reloadMainFormButtons(target);
+ }
};
orgTreePanel.setOutputMarkupId(true);
getPageBase().showMainPopup(orgTreePanel, target);
@@ -245,32 +255,45 @@ protected void assignSelectedOrgPerformed(List selectedOrgs,
}
}
- });
+ };
+ }
+ };
items.add(item);
- items.add(new InlineMenuItem());
}
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_ACTION_URI)) {
- item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.unassign"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.unassign")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
AssignmentTablePanel.this.deleteAssignmentPerformed(target, null);
- }
- });
+ }
+ };
+ }
+ };
items.add(item);
}
if (isShowAllAssignmentsVisible()) {
- item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.showAllAssignments"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.showAllAssignments")){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
showAllAssignments(target);
}
- });
+ };
+ }
+ };
items.add(item);
}
return items;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java
index 91c054e45ad..78cb93236eb 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java
@@ -18,6 +18,9 @@
import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto;
import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel;
+import com.evolveum.midpoint.web.component.data.column.InlineMenuable;
+import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenu;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import org.apache.wicket.model.IModel;
@@ -35,12 +38,12 @@ public class MenuMultiButtonPanel extends MultiButtonPan
private static final String ID_INLINE_MENU_PANEL = "inlineMenuPanel";
- private IModel> menuItems;
+ private IModel> menuItemsModel;
- public MenuMultiButtonPanel(String id, IModel model, int numberOfButtons, IModel> menuItems) {
+ public MenuMultiButtonPanel(String id, IModel model, int numberOfButtons, IModel> menuItemsModel) {
super(id, model, numberOfButtons);
- this.menuItems = menuItems;
+ this.menuItemsModel = menuItemsModel;
}
@Override
@@ -52,7 +55,7 @@ protected void onInitialize() {
private void initLayout() {
DropdownButtonPanel inlineMenu = new DropdownButtonPanel(ID_INLINE_MENU_PANEL,
- new DropdownButtonDto(null, null, null, menuItems.getObject())) {
+ new DropdownButtonDto(null, null, null, menuItemsModel.getObject())) {
private static final long serialVersionUID = 1L;
@@ -64,6 +67,16 @@ protected String getSpecialButtonClass() {
};
add(inlineMenu);
- inlineMenu.add(new VisibleBehaviour(() -> !(getNumberOfButtons() <= 2) || menuItems.getObject().size() > 2));
+ inlineMenu.add(new VisibleBehaviour(() -> {
+ List menuItems = getModelObject() == null || !(getModelObject() instanceof InlineMenuable) ?
+ menuItemsModel.getObject() : ((InlineMenuable)getModelObject()).getMenuItems();
+ for (InlineMenuItem menuItem : menuItems) {
+ if (!(menuItem instanceof ButtonInlineMenuItem)){
+ return true;
+ }
+ }
+ return false;
+ }));
}
+
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java
index 3f3e3daaa6b..4ce78a56d2b 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/ColumnUtils.java
@@ -22,14 +22,12 @@
import javax.xml.namespace.QName;
-import com.evolveum.midpoint.gui.api.GuiStyleConstants;
-import com.evolveum.midpoint.schema.util.ShadowUtil;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.RepeatingView;
@@ -39,11 +37,24 @@
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;
+import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
+import com.evolveum.midpoint.schema.util.ShadowUtil;
import com.evolveum.midpoint.web.component.util.SelectableBean;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationDefinitionType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
+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.ShadowKindType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
public class ColumnUtils {
@@ -541,7 +552,7 @@ public static List, String>> ge
return columns;
}
- private static List, String>> getDefaultAbstractRoleColumns(QName type) {
+ private static List, String>> getDefaultAbstractRoleColumns(QName type) {
String sortByDisplayName = null;
String sortByIdentifer = null;
@@ -560,7 +571,30 @@ private static List, String>> g
SelectableBean.F_VALUE + ".identifier", false)
);
- return createColumns(columnsDefs);
+ List, String>> columns = createColumns(columnsDefs);
+
+ IColumn, String> column = new AbstractExportableColumn, String>(
+ createStringResource("pageUsers.accounts")) {
+
+ @Override
+ public void populateItem(Item>> cellItem,
+ String componentId, IModel> model) {
+ cellItem.add(new Label(componentId,
+ model.getObject().getValue() != null ?
+ model.getObject().getValue().getLinkRef().size() : null));
+ }
+
+ @Override
+ public IModel getDataModel(IModel> rowModel) {
+ return Model.of(rowModel.getObject().getValue() != null ?
+ Integer.toString(rowModel.getObject().getValue().getLinkRef().size()) : "");
+ }
+
+
+ };
+
+ columns.add(column);
+ return columns;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java
index 724d5cfbbcc..d84b746cb45 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java
@@ -21,14 +21,13 @@
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.data.MenuMultiButtonPanel;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
+import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
-import com.evolveum.midpoint.web.component.util.SelectableBean;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
+import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.markup.repeater.Item;
@@ -52,14 +51,12 @@ public class InlineMenuButtonColumn extends AbstractColu
private static final long serialVersionUID = 1L;
- private int buttonsNumber;
- protected List menuItems;
+ protected List menuItems = new ArrayList<>();
private PageBase pageBase;
- public InlineMenuButtonColumn(List menuItems, int buttonsNumber, PageBase pageBase) {
+ public InlineMenuButtonColumn(List menuItems, PageBase pageBase) {
super(null);
- this.buttonsNumber = menuItems.size() < 2 ? menuItems.size() : buttonsNumber;
this.menuItems = menuItems;
this.pageBase = pageBase;
}
@@ -67,81 +64,90 @@ public InlineMenuButtonColumn(List menuItems, int buttonsNumber,
@Override
public void populateItem(final Item> cellItem, String componentId,
final IModel rowModel) {
- cellItem.add(getPanel(componentId, rowModel, this.buttonsNumber, this.menuItems));
+ Component panel = getPanel(componentId, rowModel, getNumberOfButtons(false), false);
+ panel.add(new VisibleBehaviour(() -> isPanelVisible(false)));
+ cellItem.add(panel);
}
@Override
public Component getHeader(String componentId) {
- return getPanel(componentId, null, getHeaderNumberOfButtons(), getHeaderMenuItems());
+ Component headerPanel = getPanel(componentId, null, getNumberOfButtons(true), true);
+ headerPanel.add(new VisibleBehaviour(() -> isPanelVisible(true)));
+ return headerPanel;
}
private Component getPanel(String componentId, IModel rowModel,
- int numberOfButtons, List menuItems) {
- return new MenuMultiButtonPanel(componentId, rowModel, numberOfButtons, createMenuModel(rowModel, menuItems)) {
+ int numberOfButtons, boolean isHeaderPanel) {
+ List filteredMenuItems = new ArrayList<>();
+ for (InlineMenuItem menuItem : (rowModel != null ? ((InlineMenuable)rowModel.getObject()).getMenuItems() : menuItems)){
+ if (isHeaderPanel && !menuItem.isHeaderMenuItem()){
+ continue;
+ }
+ if (rowModel != null && menuItem.getAction() != null && menuItem.getAction() instanceof ColumnMenuAction){
+ ((ColumnMenuAction) menuItem.getAction()).setRowModel(rowModel);
+ }
+ filteredMenuItems.add(menuItem);
+ }
+ if (rowModel != null && rowModel.getObject() instanceof InlineMenuable &&
+ ((InlineMenuable)rowModel.getObject()) != null){
+ ((InlineMenuable) rowModel.getObject()).getMenuItems().clear();
+ ((InlineMenuable) rowModel.getObject()).getMenuItems().addAll(filteredMenuItems);
+ }
+
+ List buttonMenuItems = new ArrayList<>();
+ menuItems.forEach(menuItem -> {
+ if (menuItem instanceof ButtonInlineMenuItem){
+ if (isHeaderPanel && !menuItem.isHeaderMenuItem()){
+ return;
+ }
+ buttonMenuItems.add((ButtonInlineMenuItem) menuItem);
+ }
+ });
+
+ return new MenuMultiButtonPanel(componentId, rowModel, numberOfButtons, Model.ofList(filteredMenuItems)) {
private static final long serialVersionUID = 1L;
@Override
protected AjaxIconButton createButton(int index, String componentId, IModel model) {
AjaxIconButton btn = buildDefaultButton(componentId,
- new Model<>(getButtonIconCss(index, menuItems)),
- new Model<>(getButtonTitle(index, menuItems)),
- new Model<>(getButtonCssClass(index, menuItems)),
+ new Model<>(getButtonIconCss(index, buttonMenuItems)),
+ new Model<>(getButtonTitle(index, buttonMenuItems)),
+ new Model<>(getButtonCssClass()),
target -> {
- setRowModelToAction(rowModel, menuItems);
- menuItemClickPerformed(index, target, model, menuItems);
+ setRowModelToButtonAction(rowModel, buttonMenuItems);
+ buttonMenuItemClickPerformed(index, buttonMenuItems, target);
});
btn.showTitleAsLabel(false);
- btn.add(new VisibleBehaviour(() -> isButtonVisible(index, model)));
+// btn.add(new VisibleBehaviour(() -> isButtonVisible(index, model)));
return btn;
}
};
}
- private void setRowModelToAction(IModel rowModel, List menuItems) {
- for (InlineMenuItem menuItem : menuItems) {
- if (menuItem.getAction() != null) {
+ private void setRowModelToButtonAction(IModel rowModel, List buttonMenuItems) {
+ for (InlineMenuItem menuItem : buttonMenuItems) {
+ if (menuItem.getAction() != null && menuItem.getAction() instanceof ColumnMenuAction) {
((ColumnMenuAction) menuItem.getAction()).setRowModel(rowModel);
}
}
}
- private IModel> createMenuModel(final IModel rowModel, List menuItems) {
- return new LoadableModel>(false) {
-
- @Override
- public List load() {
- if (rowModel == null) {
- return menuItems;
- }
- if (rowModel.getObject() == null ||
- !(rowModel.getObject() instanceof InlineMenuable)) {
- return new ArrayList<>();
- }
- for (InlineMenuItem item : ((InlineMenuable) rowModel.getObject()).getMenuItems()) {
- if (!(item.getAction() instanceof ColumnMenuAction)) {
- continue;
- }
-
- ColumnMenuAction action = (ColumnMenuAction) item.getAction();
- action.setRowModel(rowModel);
- }
- return ((InlineMenuable) rowModel.getObject()).getMenuItems();
- }
- };
- }
-
- private void menuItemClickPerformed(int id, AjaxRequestTarget target, IModel model, List menuItems) {
- for (InlineMenuItem menuItem : menuItems) {
- if (menuItem.getId() == id) {
- if (menuItem.getAction() != null) {
- if (menuItem.isShowConfirmationDialog() && menuItem.getConfirmationMessageModel() != null) {
- showConfirmationPopup(menuItem, target);
- } else {
- menuItem.getAction().onClick(target);
- }
+ private void buttonMenuItemClickPerformed(int id, List buttonMenuItems, AjaxRequestTarget target) {
+ if (id >= buttonMenuItems.size()){
+ return;
+ }
+ ButtonInlineMenuItem menuItem = buttonMenuItems.get(id);
+ if (menuItem.getAction() != null) {
+ if (menuItem.showConfirmationDialog() && menuItem.getConfirmationMessageModel() != null) {
+ showConfirmationPopup(menuItem, target);
+ } else {
+ if (menuItem.isSubmit()){
+ menuItem.getAction().onSubmit(target, null);
+ } else {
+ menuItem.getAction().onClick(target);
}
}
}
@@ -165,79 +171,64 @@ public void yesPerformed(AjaxRequestTarget target) {
pageBase.showMainPopup(dialog, target);
}
- public boolean isButtonVisible(int id, IModel model) {
- if (model == null || model.getObject() == null) {
- return true;
- }
- if (id == InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.ENABLE.getMenuItemId() &&
- model.getObject() instanceof SelectableBean &&
- ((SelectableBean) model.getObject()).getValue() instanceof FocusType) {
- FocusType focus = (FocusType) ((SelectableBean) model.getObject()).getValue();
- if (focus.getActivation() == null) {
- return false;
- }
- return ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus());
- } else if (id == InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.DISABLE.getMenuItemId() &&
- model.getObject() instanceof SelectableBean &&
- ((SelectableBean) model.getObject()).getValue() instanceof FocusType) {
- FocusType focus = (FocusType) ((SelectableBean) model.getObject()).getValue();
- if (focus.getActivation() == null) {
- return true;
- }
- return !ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus());
- }
- return true;
- }
- public String getButtonColorCssClass(int id, List menuItems) {
- for (InlineMenuItem menuItem : menuItems) {
- if (menuItem.getId() == id) {
- return menuItem.getButtonColorCssClass();
- }
- }
- return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString();
- }
- public String getButtonSizeCssClass(int id) {
+// public boolean isButtonVisible(int id, IModel model) {
+// return true;
+// }
+
+ public String getButtonSizeCssClass() {
return DoubleButtonColumn.BUTTON_SIZE_CLASS.EXTRA_SMALL.toString();
}
- protected String getButtonCssClass(int id, List menuItems) {
+ private String getButtonCssClass() {
StringBuilder sb = new StringBuilder();
sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" ");
// Do not add color. It attracts too much attention
// sb.append(getButtonColorCssClass(id, menuItems)).append(" ");
sb.append("btn-default ");
- sb.append(getButtonSizeCssClass(id)).append(" ");
+ sb.append(getButtonSizeCssClass()).append(" ");
return sb.toString();
}
- protected String getButtonIconCss(int id, List menuItems) {
- for (InlineMenuItem menuItem : menuItems) {
- if (menuItem.getId() == id) {
- return menuItem.getButtonIconCssClass() + " fa-fw"; //temporary size fix, should be moved somewhere...
- }
+ private String getButtonIconCss(int id, List buttonMenuItems) {
+ if (id >= buttonMenuItems.size()){
+ return null;
}
-
- return null;
+ return buttonMenuItems.get(id).getButtonIconCssClass() + " fa-fw";
}
- public String getButtonTitle(int id, List menuItems) {
- for (InlineMenuItem menuItem : menuItems) {
- if (menuItem.getId() == id) {
- return menuItem.getLabel() != null && menuItem.getLabel().getObject() != null ?
- menuItem.getLabel().getObject() : "";
- }
+ private String getButtonTitle(int id, List buttonMenuItems) {
+ if (id >= buttonMenuItems.size()){
+ return null;
}
- return "";
+ return buttonMenuItems.get(id).getLabel() != null && buttonMenuItems.get(id).getLabel().getObject() != null ?
+ buttonMenuItems.get(id).getLabel().getObject() : "";
}
- protected int getHeaderNumberOfButtons() {
- return this.buttonsNumber;
+ protected int getNumberOfButtons(boolean isHeaderPanel) {
+ int numberOfHeaderButtons = 0;
+ for (InlineMenuItem inlineMenuItem : menuItems){
+ if (isHeaderPanel && !inlineMenuItem.isHeaderMenuItem()){
+ continue;
+ }
+ if (inlineMenuItem instanceof ButtonInlineMenuItem){
+ numberOfHeaderButtons++;
+ }
+ }
+ return numberOfHeaderButtons;
}
- protected List getHeaderMenuItems() {
- return menuItems;
+ private boolean isPanelVisible(boolean isHeaderPanel){
+ for (InlineMenuItem item : menuItems){
+ if (isHeaderPanel && (item.isHeaderMenuItem() || item.getAction() instanceof HeaderMenuAction)){
+ return true;
+ }
+ if (!isHeaderPanel && !(item.getAction() instanceof HeaderMenuAction)){
+ return true;
+ }
+ }
+ return false;
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ExpressionValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ExpressionValuePanel.java
index 9c67f91bca2..4da1b76cfc4 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ExpressionValuePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/ExpressionValuePanel.java
@@ -378,48 +378,66 @@ private ObjectReferenceType getShadowRefValue() {
private List createAddButtonInlineMenuItems(){
List menuList = new ArrayList<>();
- menuList.add(new InlineMenuItem(createStringResource("ExpressionValuePanel.addValueButtonDefaultTitle"),
- new InlineMenuItemAction(){
- private static final long serialVersionUID = 1L;
+ menuList.add(new InlineMenuItem(createStringResource("ExpressionValuePanel.addValueButtonDefaultTitle")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ if (getModelObject() == null) {
+ getModel().setObject(new ExpressionType());
+ }
+ ExpressionUtil.createShadowRefEvaluatorValue(getModelObject(), null, pageBase.getPrismContext());
+ target.add(ExpressionValuePanel.this);
+ }
+ };
+ }
+ });
+ menuList.add(new InlineMenuItem(createStringResource("ExpressionValuePanel.addValueButtonTargetSearchTitle")) {
+ private static final long serialVersionUID = 1L;
@Override
- public void onClick(AjaxRequestTarget target) {
- if (getModelObject() == null){
- getModel().setObject(new ExpressionType());
- }
- ExpressionUtil.createShadowRefEvaluatorValue(getModelObject(), null, pageBase.getPrismContext());
- target.add(ExpressionValuePanel.this);
- }
- }));
- menuList.add(new InlineMenuItem(createStringResource("ExpressionValuePanel.addValueButtonTargetSearchTitle"),
- new InlineMenuItemAction(){
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
- @Override
- public void onClick(AjaxRequestTarget target) {
- if (getModelObject() == null){
- getModel().setObject(new ExpressionType());
- }
- ExpressionType expression = getModelObject();
- expression.getExpressionEvaluator().add(ExpressionUtil.createAssociationTargetSearchElement());
- target.add(ExpressionValuePanel.this);
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ if (getModelObject() == null) {
+ getModel().setObject(new ExpressionType());
+ }
+ ExpressionType expression = getModelObject();
+ expression.getExpressionEvaluator().add(ExpressionUtil.createAssociationTargetSearchElement());
+ target.add(ExpressionValuePanel.this);
+ }
+ };
}
- }));
- menuList.add(new InlineMenuItem(createStringResource("ExpressionValuePanel.addLiteralValueButton"),
- new InlineMenuItemAction(){
- private static final long serialVersionUID = 1L;
+ });
+ menuList.add(new InlineMenuItem(createStringResource("ExpressionValuePanel.addLiteralValueButton")) {
+ private static final long serialVersionUID = 1L;
@Override
- public void onClick(AjaxRequestTarget target) {
- if (getModelObject() == null){
- getModel().setObject(new ExpressionType());
- }
- ExpressionUtil.updateLiteralExpressionValue(getModelObject(), Arrays.asList(""), pageBase.getPrismContext());
- target.add(ExpressionValuePanel.this);
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ if (getModelObject() == null) {
+ getModel().setObject(new ExpressionType());
+ }
+ ExpressionUtil.updateLiteralExpressionValue(getModelObject(), Arrays.asList(""), pageBase.getPrismContext());
+ target.add(ExpressionValuePanel.this);
+
+ }
+ };
}
- }));
+ });
return menuList;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/ButtonInlineMenuItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/ButtonInlineMenuItem.java
new file mode 100644
index 00000000000..08317fd4ff5
--- /dev/null
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/ButtonInlineMenuItem.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2010-2018 Evolveum
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.evolveum.midpoint.web.component.menu.cog;
+
+import com.evolveum.midpoint.gui.api.GuiStyleConstants;
+import org.apache.wicket.model.IModel;
+
+/**
+ * Created by honchar
+ */
+public abstract class ButtonInlineMenuItem extends InlineMenuItem {
+
+ public ButtonInlineMenuItem(IModel labelModel){
+ super(labelModel);
+ }
+
+ public ButtonInlineMenuItem(IModel labelModel, boolean isSubmit){
+ super(labelModel, isSubmit);
+ }
+
+ public abstract String getButtonIconCssClass();
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java
index d5e2ec9d4cf..b8fce56eab0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/InlineMenuItem.java
@@ -16,8 +16,8 @@
package com.evolveum.midpoint.web.component.menu.cog;
-import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
import java.io.Serializable;
@@ -27,118 +27,28 @@
*
* @author lazyman
*/
-public class InlineMenuItem implements Serializable {
+public abstract class InlineMenuItem implements Serializable {
private IModel label;
- private IModel enabled;
- private IModel visible;
+ private IModel enabled = Model.of(true);
+ private IModel visible = Model.of(true);
+ private boolean submit = false;
private InlineMenuItemAction action;
- private boolean submit;
private int id = -1;
- private String buttonIconCssClass;
- private String buttonColorCssClass;
- private IModel confirmationMessageModel = null;
private boolean showConfirmationDialog = false;
- public static enum FOCUS_LIST_INLINE_MENU_ITEM_ID {
- ENABLE(0), DISABLE(1), RECONCILE(2),
- UNLOCK(3), DELETE(4), MERGE(5),
- HEADER_ENABLE(0), HEADER_RECONCILE(1),
- HEADER_DISABLE(2);
-
- private int menuItemId = -1;
-
- FOCUS_LIST_INLINE_MENU_ITEM_ID(final int id){menuItemId = id;}
-
- public int getMenuItemId(){
- return menuItemId;
- }
- public String toString(){return Integer.toString(menuItemId);}
- }
- public static enum RESOURCE_INLINE_MENU_ITEM_ID {
- TEST_CONNECTION(0),
- HEADER_TEST_CONNECTION(1),
- EDIT_XML(1), HEADER_DELETE(0), DELETE_RESOURCE(2),
- DELETE_SYNC_TOKEN(3), EDIT_USING_WIZARD(4);
-
- private int menuItemId = -1;
-
- RESOURCE_INLINE_MENU_ITEM_ID(final int id){menuItemId = id;}
-
- public int getMenuItemId(){
- return menuItemId;
- }
- public String toString(){return Integer.toString(menuItemId);}
- }
- public static enum TASKS_INLINE_MENU_ITEM_ID {
- SUSPEND(0), RESUME(1), RUN_NOW(2), DELETE(3), DELETE_CLOSED(4),
- NODE_STOP_SCHEDULER(1), NODE_STOP_SCHEDULER_TASK(2), NODE_START(0), NODE_DELETE(3);
-
- private int menuItemId = -1;
-
- TASKS_INLINE_MENU_ITEM_ID(final int id){menuItemId = id;}
-
- public int getMenuItemId(){
- return menuItemId;
- }
- public String toString(){return Integer.toString(menuItemId);}
- }
-
- public InlineMenuItem() {
- this(null, null);
- }
-
public InlineMenuItem(IModel label) {
- this(label, null);
- }
-
- public InlineMenuItem(IModel label, InlineMenuItemAction action) {
- this(label, false, action);
- }
-
- public InlineMenuItem(IModel label, boolean submit, InlineMenuItemAction action) {
- this(label, null, null, submit, action, -1, "", "");
- }
-
- public InlineMenuItem(IModel label, boolean submit, InlineMenuItemAction action, int id) {
- this(label, null, null, submit, action, id, "", DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString());
- }
-
- public InlineMenuItem(IModel label, boolean submit, InlineMenuItemAction action, int id,
- String buttonIconCssClass) {
- this(label, null, null, submit, action, id, buttonIconCssClass, DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString());
- }
-
- public InlineMenuItem(IModel label, boolean submit, InlineMenuItemAction action, int id,
- String buttonIconCssClass, String buttonColorCssClass) {
- this(label, null, null, submit, action, id, buttonIconCssClass, buttonColorCssClass);
- }
-
- public InlineMenuItem(IModel label, IModel enabled, IModel visible,
- InlineMenuItemAction action) {
- this(label, enabled, visible, false, action, -1, "", "");
- }
-
- public InlineMenuItem(IModel label, IModel enabled, IModel visible, boolean submit,
- InlineMenuItemAction action) {
- this(label, enabled, visible, submit, action, -1, "", "");
+ this.label = label;
+ action = initAction();
}
- public InlineMenuItem(IModel label, IModel enabled, IModel visible, boolean submit,
- InlineMenuItemAction action, int id, String buttonIconCssClass, String buttonColorCssClass) {
+ public InlineMenuItem(IModel label, boolean isSubmit) {
+ this.submit = isSubmit;
this.label = label;
- this.enabled = enabled;
- this.visible = visible;
- this.action = action;
- this.submit = submit;
- this.id = id;
- this.buttonIconCssClass = buttonIconCssClass;
- this.buttonColorCssClass = buttonColorCssClass;
+ action = initAction();
}
- public InlineMenuItemAction getAction() {
- return action;
- }
+ public abstract InlineMenuItemAction initAction();
public IModel getEnabled() {
return enabled;
@@ -164,13 +74,25 @@ public void setVisible(IModel visible) {
}
public boolean isDivider() {
- return label == null && action == null;
+ return false;
+ //TODO fix after menu items refactoring
+// return label == null && action == null;
}
public boolean isMenuHeader() {
+// return true;
+// TODO fix after menu items refactoring
return label != null && action == null;
}
+ /**
+ * visible behavior for menu item in the header
+ * @return
+ */
+ public boolean isHeaderMenuItem(){
+ return true;
+ }
+
public int getId() {
return id;
}
@@ -179,32 +101,20 @@ public void setId(int id) {
this.id = id;
}
- public String getButtonIconCssClass() {
- return buttonIconCssClass;
- }
-
- public void setButtonIconCssClass(String buttonIconCssClass) {
- this.buttonIconCssClass = buttonIconCssClass;
- }
-
- public String getButtonColorCssClass() {
- return buttonColorCssClass;
+ public InlineMenuItemAction getAction() {
+ return action;
}
- public void setButtonColorCssClass(String buttonColorCssClass) {
- this.buttonColorCssClass = buttonColorCssClass;
+ public void setAction(InlineMenuItemAction action) {
+ this.action = action;
}
public IModel getConfirmationMessageModel() {
- return confirmationMessageModel;
- }
-
- public void setConfirmationMessageModel(IModel confirmationMessageModel) {
- this.confirmationMessageModel = confirmationMessageModel;
+ return null;
}
- public boolean isShowConfirmationDialog() {
- return showConfirmationDialog;
+ public boolean showConfirmationDialog() {
+ return true;
}
public void setShowConfirmationDialog(boolean showConfirmationDialog) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/MenuLinkPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/MenuLinkPanel.java
index b9e7c05e116..27329c36a3f 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/MenuLinkPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/menu/cog/MenuLinkPanel.java
@@ -22,7 +22,6 @@
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.AbstractLink;
@@ -104,7 +103,7 @@ public boolean isVisible() {
protected void onSubmit(AjaxRequestTarget target, Form> form, InlineMenuItemAction action, IModel item) {
if (action != null) {
- if (item.getObject().isShowConfirmationDialog() && item.getObject().getConfirmationMessageModel() != null) {
+ if (item.getObject().showConfirmationDialog() && item.getObject().getConfirmationMessageModel() != null) {
showConfirmationPopup(item.getObject(), target);
} else {
action.onSubmit(target, form);
@@ -120,7 +119,7 @@ protected void onError(AjaxRequestTarget target, Form> form, InlineMenuItemAct
protected void onClick(AjaxRequestTarget target, InlineMenuItemAction action, IModel item) {
if (action != null) {
- if (item.getObject().isShowConfirmationDialog() && item.getObject().getConfirmationMessageModel() != null) {
+ if (item.getObject().showConfirmationDialog() && item.getObject().getConfirmationMessageModel() != null) {
showConfirmationPopup(item.getObject(), target);
} else {
action.onClick(target);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectMainPanel.java
index c10c0c47b3c..ad00e53c4e5 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectMainPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectMainPanel.java
@@ -57,7 +57,7 @@ public abstract class AbstractObjectMainPanel extends Pane
public static final String PARAMETER_SELECTED_TAB = "tab";
private static final String ID_MAIN_FORM = "mainForm";
- private static final String ID_TAB_PANEL = "tabPanel";
+ public static final String ID_TAB_PANEL = "tabPanel";
private static final String ID_EXECUTE_OPTIONS = "executeOptions";
private static final String ID_BACK = "back";
private static final String ID_SAVE = "save";
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 080fc21fd3c..957a49d80d8 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
@@ -15,7 +15,20 @@
*/
package com.evolveum.midpoint.web.component.objectdetails;
+import java.util.List;
+
+import org.apache.wicket.ajax.AjaxChannel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+
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.page.PageBase;
import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
@@ -23,47 +36,38 @@
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
-import com.evolveum.midpoint.schema.constants.RelationTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxButton;
+import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto;
import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil;
import com.evolveum.midpoint.web.component.breadcrumbs.Breadcrumb;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageClass;
import com.evolveum.midpoint.web.component.breadcrumbs.BreadcrumbPageInstance;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
-import com.evolveum.midpoint.web.page.self.PageAssignmentShoppingCart;
-import com.evolveum.midpoint.web.page.self.PageAssignmentsList;
-import com.evolveum.midpoint.web.session.RoleCatalogStorage;
-import com.evolveum.midpoint.web.util.ExpressionUtil;
-import org.apache.wicket.ajax.AjaxChannel;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.model.Model;
-
-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.web.component.assignment.AssignmentEditorDto;
import com.evolveum.midpoint.web.component.prism.ContainerStatus;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
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.RoleGovernanceMemberPanel;
import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
+import com.evolveum.midpoint.web.page.self.PageAssignmentShoppingCart;
+import com.evolveum.midpoint.web.page.self.PageAssignmentsList;
+import com.evolveum.midpoint.web.session.RoleCatalogStorage;
+import com.evolveum.midpoint.web.util.ExpressionUtil;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceObjectAssociationType;
+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;
/**
* @author semancik
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusDetailsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusDetailsTabPanel.java
index c79e6bdc96f..1f0f396a822 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusDetailsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusDetailsTabPanel.java
@@ -44,11 +44,7 @@
public class FocusDetailsTabPanel extends AbstractFocusTabPanel {
private static final long serialVersionUID = 1L;
- protected static final String ID_FOCUS_FORM = "focusDetails";
-// protected static final String ID_FOCUS_MAIN_PANEL = "focusDetails";
-// protected static final String ID_FOCUS_ACTIVATION_PANEL = "activation";
-// protected static final String ID_FOCUS_PASSWORD_PANEL = "password";
-
+ protected static final String ID_FOCUS_FORM = "focusDetails";
private static final Trace LOGGER = TraceManager.getTrace(FocusDetailsTabPanel.class);
@@ -61,20 +57,7 @@ public FocusDetailsTabPanel(String id, Form mainForm,
}
private void initLayout() {
-
-// ContainerWrapperFromObjectWrapperModel basicContainerModel = new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), ItemPath.EMPTY_PATH);
-// PrismContainerPanel mainContainer = new PrismContainerPanel<>(ID_FOCUS_MAIN_PANEL, basicContainerModel, false, getMainForm(), getPageBase());
-// add(mainContainer);
-//
-// ContainerWrapperFromObjectWrapperModel activationContainerModel = new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), SchemaConstants.PATH_ACTIVATION);
-// PrismContainerPanel activationContainerPanel = new PrismContainerPanel<>(ID_FOCUS_ACTIVATION_PANEL, activationContainerModel, false, getMainForm(), getPageBase());
-// add(activationContainerPanel);
-//
-// ContainerWrapperFromObjectWrapperModel passwordContainerModel = new ContainerWrapperFromObjectWrapperModel<>(getObjectWrapperModel(), SchemaConstants.PATH_PASSWORD);
-// PrismContainerPanel passwordContainerPanel = new PrismContainerPanel<>(ID_FOCUS_PASSWORD_PANEL, passwordContainerModel, false, getMainForm(), getPageBase());
-// add(passwordContainerPanel);
-
-
+
PrismPanel panel = new PrismPanel(ID_FOCUS_FORM, new ContainerWrapperListFromObjectWrapperModel(getObjectWrapperModel(), getVisibleContainers()),
new PackageResourceReference(ImgResources.class, ImgResources.USER_PRISM), getMainForm(),
null, getPageBase());
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java
index 7926d28acb2..bbea92a4655 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java
@@ -25,7 +25,6 @@
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
@@ -305,8 +304,12 @@ private List createShadowMenu() {
PrismReferenceDefinition ref = def.findReferenceDefinition(UserType.F_LINK_REF);
InlineMenuItem item;
if (ref.canRead() && ref.canAdd()) {
- item = new InlineMenuItem(createStringResource("pageAdminFocus.button.addShadow"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("pageAdminFocus.button.addShadow")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
@@ -319,9 +322,10 @@ public void onClick(AjaxRequestTarget target) {
pageBase) {
private static final long serialVersionUID = 1L;
+
@Override
protected void addPerformed(AjaxRequestTarget target, QName type,
- List selected) {
+ List selected) {
FocusProjectionsTabPanel.this.addSelectedAccountPerformed(target,
selected);
}
@@ -330,41 +334,55 @@ protected void addPerformed(AjaxRequestTarget target, QName type,
pageBase.showMainPopup(resourceSelectionPanel,
target);
}
- });
+ };
+ }
+ };
items.add(item);
- items.add(new InlineMenuItem());
+// items.add(new InlineMenuItem());
}
PrismPropertyDefinition administrativeStatus = def
.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS);
if (administrativeStatus.canRead() && administrativeStatus.canModify()) {
- item = new InlineMenuItem(createStringResource("pageAdminFocus.button.enable"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("pageAdminFocus.button.enable")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
updateShadowActivation(target, getSelectedProjections(projectionModel), true);
}
- });
+ };
+ }
+ };
items.add(item);
- item = new InlineMenuItem(createStringResource("pageAdminFocus.button.disable"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("pageAdminFocus.button.disable")) {
+ private static final long serialVersionUID = 1L;
- /**
- *
- */
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
updateShadowActivation(target, getSelectedProjections(projectionModel), false);
}
- });
+ };
+ }
+ };
items.add(item);
}
if (ref.canRead() && ref.canAdd()) {
- item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlink"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlink")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
@@ -372,13 +390,19 @@ public void onClick(AjaxRequestTarget target) {
unlinkProjectionPerformed(target, projectionModel,
getSelectedProjections(projectionModel), ID_SHADOWS);
}
- });
+ };
+ }
+ };
items.add(item);
}
PrismPropertyDefinition locakoutStatus = def.findPropertyDefinition(SchemaConstants.PATH_ACTIVATION_LOCKOUT_STATUS);
if (locakoutStatus.canRead() && locakoutStatus.canModify()) {
- item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlock"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("pageAdminFocus.button.unlock")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
@@ -386,20 +410,28 @@ public void onClick(AjaxRequestTarget target) {
unlockShadowPerformed(target, projectionModel,
getSelectedProjections(projectionModel));
}
- });
+ };
+ }
+ };
items.add(item);
}
if (administrativeStatus.canRead() && administrativeStatus.canModify()) {
- items.add(new InlineMenuItem());
- item = new InlineMenuItem(createStringResource("pageAdminFocus.button.delete"),
- new InlineMenuItemAction() {
+// items.add(new InlineMenuItem());
+ item = new InlineMenuItem(createStringResource("pageAdminFocus.button.delete")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
deleteProjectionPerformed(target, projectionModel);
}
- });
+ };
+ }
+ };
items.add(item);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RoleMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RoleMainPanel.java
index fdc781b50c9..249b17498ba 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RoleMainPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/RoleMainPanel.java
@@ -15,31 +15,17 @@
*/
package com.evolveum.midpoint.web.component.objectdetails;
-import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.Model;
-import com.evolveum.midpoint.gui.api.ComponentConstants;
-import com.evolveum.midpoint.gui.api.GuiConstants;
-import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
-import com.evolveum.midpoint.gui.api.util.FocusTabVisibleBehavior;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.schema.constants.RelationTypes;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.web.component.prism.ContainerStatus;
import com.evolveum.midpoint.web.component.prism.ObjectWrapper;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
-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.RoleGovernanceMemberPanel;
-import com.evolveum.midpoint.web.page.admin.roles.RoleMemberPanel;
-import com.evolveum.midpoint.web.page.admin.services.PageService;
import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto;
import com.evolveum.midpoint.web.security.GuiAuthorizationConstants;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/UserDelegationsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/UserDelegationsTabPanel.java
index cdc605f3c46..6df7c812b22 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/UserDelegationsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/UserDelegationsTabPanel.java
@@ -104,8 +104,12 @@ protected List createAssignmentMenu() {
InlineMenuItem item;
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_DELEGATE_ACTION_URL)) {
- item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.addDelegation"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.addDelegation")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
@@ -132,19 +136,27 @@ protected void onSelectPerformed(AjaxRequestTarget target, UserType user) {
pageBase.showMainPopup(panel, target);
}
- });
+ };
+ }
+ };
items.add(item);
}
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_ACTION_URI)) {
- item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.deleteDelegation"),
- new InlineMenuItemAction() {
+ item = new InlineMenuItem(createStringResource("AssignmentTablePanel.menu.deleteDelegation")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
deleteAssignmentPerformed(target, null);
}
- });
+ };
+ }
+ };
items.add(item);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValuePanel.java
index 43be3bdd6a1..13eb940462a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValuePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValuePanel.java
@@ -235,7 +235,6 @@ protected void populateItem(final ListItem item) {
PrismContainerPanel containerPanel = new PrismContainerPanel("container", (IModel>) item.getModel(), true, form, isPanalVisible, pageBase, false);
containerPanel.setOutputMarkupId(true);
item.add(containerPanel);
- LOGGER.info("XXXXXXXX container: " + item.getModelObject().getItemDefinition());
item.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@@ -254,7 +253,7 @@ public boolean isVisible() {
return false;
}
- if (model.getObject().containsMultipleMultivalueContainer()
+ if (model.getObject().containsMultipleMultivalueContainer(isPanalVisible)
&& item.getModelObject().getItemDefinition().isMultiValue()
&& CollectionUtils.isEmpty(item.getModelObject().getValues())) {
return false;
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java
index 551c3df1c7a..3bd1de8cd0a 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ContainerValueWrapper.java
@@ -786,14 +786,21 @@ public ContainerValueWrapper findContainerValueWrapper(ItemPath path) {
return null;
}
- public boolean containsMultipleMultivalueContainer(){
+ public boolean containsMultipleMultivalueContainer(ItemVisibilityHandler isPanelVisible){
int count = 0;
for (ItemWrapper wrapper : getItems()) {
if (!(wrapper instanceof ContainerWrapper)) {
continue;
}
if (!((ContainerWrapper) wrapper).getItemDefinition().isSingleValue()){
- count++;
+ if(isPanelVisible != null) {
+ if(isPanelVisible.isVisible(wrapper).equals(ItemVisibility.VISIBLE)
+ || (isPanelVisible.isVisible(wrapper).equals(ItemVisibility.AUTO) && ((ContainerWrapper)wrapper).isVisible())) {
+ count++;
+ }
+ } else if(((ContainerWrapper)wrapper).isVisible()) {
+ count++;
+ }
}
if (count > 1) {
@@ -820,10 +827,8 @@ public List getChildMultivalueContainersToBeAdded(ItemVisibilityHandler i
if(isPanelVisible.isVisible(wrapper).equals(ItemVisibility.AUTO) && !((ContainerWrapper)wrapper).isVisible()) {
continue;
}
- } else {
- if(!((ContainerWrapper)wrapper).isVisible()) {
+ } else if(!((ContainerWrapper)wrapper).isVisible()) {
continue;
- }
}
if (!((ContainerWrapper) wrapper).getItemDefinition().isSingleValue()){
pathList.add(((ContainerWrapper) wrapper).getName());
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java
index c81b1487231..dc6bde4df00 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/ObjectWrapper.java
@@ -326,6 +326,7 @@ public ObjectDelta getObjectDelta() throws SchemaException {
LOGGER.trace("Wrapper before creating delta:\n{}", this.debugDump());
}
+
ObjectDelta delta = new ObjectDelta<>(object.getCompileTimeClass(), ChangeType.MODIFY, object.getPrismContext());
delta.setOid(object.getOid());
@@ -338,9 +339,14 @@ public ObjectDelta getObjectDelta() throws SchemaException {
}
if (ContainerStatus.ADDING.equals(getStatus())) {
- delta.applyTo(object);
- cleanupEmptyContainers(object);
- ObjectDelta addDelta = ObjectDelta.createAddDelta(object);
+ PrismObject objectToModify = object.clone();
+ delta.applyTo(objectToModify);
+ cleanupEmptyContainers(objectToModify);
+ ObjectDelta addDelta = ObjectDelta.createAddDelta(objectToModify);
+ if (object.getPrismContext() != null) {
+ // Make sure we have all the definitions
+ object.getPrismContext().adopt(delta);
+ }
return addDelta;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerPanel.java
index d5bf2c04cb0..ba70cda4777 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerPanel.java
@@ -93,8 +93,6 @@ public boolean isVisible() {
}
});
- LOGGER.info("XXXXXXXXXXX container visible : " + isPanelVisible(isPanelVisible, model));
-
initLayout(model, form, isPanelVisible, showHeader);
if(model.getObject() != null && model.getObject().getItemDefinition() != null && model.getObject().getItemDefinition().isMultiValue()) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java
index a1f0dad51d7..8975372d0ec 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/PrismContainerValueHeaderPanel.java
@@ -168,7 +168,7 @@ public void onClick(AjaxRequestTarget target) {
@Override
public boolean isVisible(){
- return getModelObject().containsMultipleMultivalueContainer() && getModelObject().getContainer() != null
+ return getModelObject().containsMultipleMultivalueContainer(isPanelVisible) && getModelObject().getContainer() != null
&& getModelObject().getDefinition().canModify()
&& !getModelObject().getChildMultivalueContainersToBeAdded(isPanelVisible).isEmpty()
&& buttonsVisibleBehaviour.isVisible();
@@ -184,7 +184,7 @@ && getModelObject().getDefinition().canModify()
@Override
public boolean isVisible(){
- return pathsList.size() > 1 && isChildContainersSelectorPanelVisible && buttonsVisibleBehaviour.isVisible();
+ return getModelObject().containsMultipleMultivalueContainer(isPanelVisible) && isChildContainersSelectorPanelVisible && buttonsVisibleBehaviour.isVisible();
}
});
childContainersSelectorPanel.setOutputMarkupId(true);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PagePreviewChanges.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PagePreviewChanges.java
index 9eceeac1205..35efa58ed06 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PagePreviewChanges.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/prism/show/PagePreviewChanges.java
@@ -17,6 +17,7 @@
import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.model.api.ModelInteractionService;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.model.api.context.ModelProjectionContext;
@@ -51,6 +52,7 @@
import com.evolveum.midpoint.web.page.admin.workflow.dto.ApprovalProcessExecutionInformationDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.EvaluatedTriggerGroupDto;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ApprovalSchemaExecutionInformationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyRuleEnforcerHookPreviewOutputType;
@@ -176,7 +178,7 @@ public WebMarkupContainer createPanel(String panelId) {
}
private IModel getTabPanelTitleModel(PrismObject extends ObjectType> object){
- return Model.of(object.asObjectable().getName().getOrig());
+ return Model.of(WebComponentUtil.getEffectiveName(object, AbstractRoleType.F_DISPLAY_NAME));
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java
index b9ad52ea867..df748f35f90 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/search/SearchPanel.java
@@ -60,7 +60,6 @@
import javax.xml.namespace.QName;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -263,31 +262,43 @@ public boolean isEnabled() {
List searchItems = new ArrayList<>();
InlineMenuItem searchItem = new InlineMenuItem(
- createStringResource("SearchPanel.search"),
- new InlineMenuItemAction() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- PrismContext ctx = getPageBase().getPrismContext();
- if (getModelObject().isAdvancedQueryValid(ctx)) {
- searchPerformed(target);
- }
- }
- });
+ createStringResource("SearchPanel.search")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ PrismContext ctx = getPageBase().getPrismContext();
+ if (getModelObject().isAdvancedQueryValid(ctx)) {
+ searchPerformed(target);
+ }
+ }
+ };
+ }
+ };
searchItems.add(searchItem);
- searchItem = new InlineMenuItem(createStringResource("SearchPanel.debug"),
- new InlineMenuItemAction() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- debugPerformed();
- }
- });
+ searchItem = new InlineMenuItem(createStringResource("SearchPanel.debug")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public InlineMenuItemAction initAction() {
+ return new InlineMenuItemAction() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ debugPerformed();
+ }
+ };
+ }
+ };
searchItems.add(searchItem);
ListView li = new ListView(ID_MENU_ITEM, Model.ofList(searchItems)) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java
index fc702c7f1c2..25a21c17d5a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/FocusListInlineMenuHelper.java
@@ -29,13 +29,13 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
-import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
+import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
+import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;
import java.io.Serializable;
@@ -80,29 +80,28 @@ public FocusListInlineMenuHelper(@NotNull Class objectClass, @NotNull PageBas
public List createRowActions(boolean isHeader) {
List menu = new ArrayList<>();
- menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable"),
- new Model<>(false), new Model<>(false), false,
- new ColumnMenuAction