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 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>() { + menu.add(new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null){ + if (getRowModel() == null) { updateActivationPerformed(target, true, null); } else { SelectableBean rowDto = getRowModel().getObject(); updateActivationPerformed(target, true, rowDto.getValue()); } } - }, isHeader ? InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.HEADER_ENABLE.getMenuItemId() - : InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.ENABLE.getMenuItemId(), - GuiStyleConstants.CLASS_OBJECT_USER_ICON, - DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS.toString()){ - - private static final long serialVersionUID = 1L; + }; + } @Override - public boolean isShowConfirmationDialog() { - return FocusListInlineMenuHelper.this.isShowConfirmationDialog((ColumnMenuAction) getAction()); + public String getButtonIconCssClass(){ + return GuiStyleConstants.CLASS_OBJECT_USER_ICON; } @Override @@ -113,11 +112,12 @@ public IModel getConfirmationMessageModel(){ }); - menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable"), - isHeader ? new Model<>(true) : new Model<>(false), - isHeader ? new Model<>(true) : new Model<>(false), - false, - new ColumnMenuAction>() { + menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { @Override public void onClick(AjaxRequestTarget target) { @@ -128,16 +128,7 @@ public void onClick(AjaxRequestTarget target) { updateActivationPerformed(target, false, rowDto.getValue()); } } - }, isHeader ? InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.HEADER_DISABLE.getMenuItemId() - : InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.DISABLE.getMenuItemId(), - GuiStyleConstants.CLASS_OBJECT_USER_ICON, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()){ - - private static final long serialVersionUID = 1L; - - @Override - public boolean isShowConfirmationDialog() { - return FocusListInlineMenuHelper.this.isShowConfirmationDialog((ColumnMenuAction) getAction()); + }; } @Override @@ -145,10 +136,15 @@ public IModel getConfirmationMessageModel(){ String actionName = parentPage.createStringResource("pageUsers.message.disableAction").getString(); return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName); } + }); - menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.reconcile"), - new Model<>(false), new Model<>(false), false, - new ColumnMenuAction>() { + + menu.add(new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.reconcile")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { @Override public void onClick(AjaxRequestTarget target) { @@ -159,16 +155,12 @@ public void onClick(AjaxRequestTarget target) { reconcilePerformed(target, rowDto.getValue()); } } - }, isHeader ? InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.HEADER_RECONCILE.getMenuItemId() - : InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.RECONCILE.getMenuItemId(), - GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString()){ - - private static final long serialVersionUID = 1L; + }; + } @Override - public boolean isShowConfirmationDialog() { - return FocusListInlineMenuHelper.this.isShowConfirmationDialog((ColumnMenuAction) getAction()); + public String getButtonIconCssClass(){ + return GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM; } @Override @@ -176,29 +168,26 @@ public IModel getConfirmationMessageModel(){ String actionName = parentPage.createStringResource("pageUsers.message.reconcileAction").getString(); return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName); } - }); + }); + menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.delete")) { + private static final long serialVersionUID = 1L; - menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.delete"), - new ColumnMenuAction>() { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null){ + if (getRowModel() == null) { deleteConfirmedPerformed(target, null); } else { SelectableBean rowDto = getRowModel().getObject(); deleteConfirmedPerformed(target, rowDto.getValue()); } } - }){ - - private static final long serialVersionUID = 1L; - - @Override - public boolean isShowConfirmationDialog() { - return FocusListInlineMenuHelper.this.isShowConfirmationDialog((ColumnMenuAction) getAction()); + }; } @Override @@ -206,7 +195,6 @@ public IModel getConfirmationMessageModel(){ String actionName = parentPage.createStringResource("pageUsers.message.deleteAction").getString(); return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName); } - }); return menu; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java index 0031729f6f0..2c454d60692 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCases.java @@ -88,10 +88,6 @@ protected List createInlineMenu() { return new ArrayList<>(); } - @Override - protected IColumn, String> createActionsColumn() { - return null; - } }; casePanel.setOutputMarkupId(true); mainForm.add(casePanel); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java index ee56154ccf8..1a482430dd5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaigns.java @@ -45,6 +45,7 @@ import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.dialog.Popupable; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; import com.evolveum.midpoint.web.component.util.Selectable; import com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignListItemDto; import com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignListItemDtoProvider; @@ -61,7 +62,6 @@ import org.apache.wicket.MarkupContainer; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; @@ -495,47 +495,87 @@ public void clickPerformed(AjaxRequestTarget target, IModel createInlineMenu() { List items = new ArrayList<>(); - items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.startSelected"), false, - new HeaderMenuAction(this) { + items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.startSelected")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCertCampaigns.this) { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { startSelectedCampaignsPerformed(target); } - })); - items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.closeSelected"), false, - new HeaderMenuAction(this) { + }; + } + }); + items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.closeSelected")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCertCampaigns.this) { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { closeSelectedCampaignsConfirmation(target); } - })); - items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.reiterateSelected"), false, - new HeaderMenuAction(this) { + }; + } + }); + items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.reiterateSelected")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCertCampaigns.this) { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { reiterateSelectedCampaignsConfirmation(target); } - })); - items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.deleteSelected"), false, - new HeaderMenuAction(this) { + }; + } + }); + items.add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.deleteSelected")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCertCampaigns.this) { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { deleteSelectedCampaignsConfirmation(target); } - })); + }; + } + }); return items; } private void createInlineMenuForItem(final CertCampaignListItemDto dto) { dto.getMenuItems().clear(); - dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.close"), - new ColumnMenuAction() { + dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.close")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction() { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { closeCampaignConfirmation(target, dto); } - }) { + }; + } + @Override public IModel getVisible() { return new AbstractReadOnlyModel() { @@ -546,26 +586,45 @@ public Boolean getObject() { }; } }); - dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.reiterate"), - new ColumnMenuAction() { + + dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.reiterate")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction() { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { reiterateCampaignConfirmation(target, dto); } - }) { + }; + } + @Override public IModel getVisible() { return new ReadOnlyModel<>(dto::isReiterable); } }); - dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.delete"), - new ColumnMenuAction() { + dto.getMenuItems().add(new InlineMenuItem(createStringResource("PageCertCampaigns.menu.delete")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { deleteCampaignConfirmation(target, dto); } - })); + }; + } + + + }); + } private Table getCampaignsTable() { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java index de22174c658..d17b0702db9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java @@ -35,6 +35,7 @@ import com.evolveum.midpoint.web.component.data.column.*; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn.BUTTON_COLOR_CLASS; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; import com.evolveum.midpoint.web.component.util.EnableBehaviour; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.page.admin.certification.dto.*; @@ -388,13 +389,21 @@ private List createInlineMenu(AvailableResponses availableRespon } private InlineMenuItem createMenu(String titleKey, final AccessCertificationResponseType response) { - return new InlineMenuItem(createStringResource(titleKey), false, - new HeaderMenuAction(this) { + return new InlineMenuItem(createStringResource(titleKey)) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCertDecisions.this) { + private static final long serialVersionUID = 1L; + @Override public void onClick(AjaxRequestTarget target) { recordActionOnSelected(response, target); } - }); + }; + } + }; } private String getDecisionButtonColor(IModel model, AccessCertificationResponseType response) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java index bc2d451cf4e..c30316b3248 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugList.java @@ -25,6 +25,7 @@ import com.evolveum.midpoint.prism.PrismPropertyDefinitionImpl; import com.evolveum.midpoint.prism.query.builder.QueryBuilder; import com.evolveum.midpoint.web.component.dialog.*; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; import com.evolveum.midpoint.web.component.search.Search; import com.evolveum.midpoint.web.component.search.SearchFactory; import com.evolveum.midpoint.web.component.search.SearchPanel; @@ -376,100 +377,153 @@ public void populateItem(Item> cellItem, String c private List initInlineMenu() { List headerMenuItems = new ArrayList<>(); - headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportSelected"), - true, new HeaderMenuAction(this) { + headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportSelected"), true) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { exportSelected(target, null); } - })); + }; + } + }); headerMenuItems - .add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportAllSelectedType"), - true, new HeaderMenuAction(this) { + .add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportAllSelectedType"), true) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { exportAllType(target); } - })); + }; + } + }); headerMenuItems - .add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportShadowsOnResource"), - new Model(true), new AbstractReadOnlyModel() { + .add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportShadowsOnResource")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; + + @Override + public void onClick(AjaxRequestTarget target) { + exportAllShadowsOnResource(target); + } + }; + } - @Override - public Boolean getObject() { + @Override + public IModel getVisible() { DebugSearchDto dto = searchModel.getObject(); - return ObjectTypes.SHADOW.equals(dto.getType()); + return Model.of(ObjectTypes.SHADOW.equals(dto.getType())); } - }, false, new HeaderMenuAction(this) { + }); - @Override - public void onClick(AjaxRequestTarget target) { - exportAllShadowsOnResource(target); - } - })); + headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportAll"), true) { + private static final long serialVersionUID = 1L; - headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.exportAll"), true, - new HeaderMenuAction(this) { + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { exportAll(target); } - })); + }; + } + }); - headerMenuItems.add(new InlineMenuItem()); +// headerMenuItems.add(new InlineMenuItem()); - headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteSelected"), - true, new HeaderMenuAction(this) { + headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteSelected"), true) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { deleteSelected(target, null); } - })); + }; + } + }); + + headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteAllType"), true) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; - headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteAllType"), true, - new HeaderMenuAction(this) { @Override public void onSubmit(AjaxRequestTarget target, Form form) { deleteAllType(target); } - })); + }; + } + }); headerMenuItems - .add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteShadowsOnResource"), - new Model(true), new AbstractReadOnlyModel() { - - @Override - public Boolean getObject() { - DebugSearchDto dto = searchModel.getObject(); - return ObjectTypes.SHADOW.equals(dto.getType()); - } + .add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteShadowsOnResource")) { + private static final long serialVersionUID = 1L; - }, false, new HeaderMenuAction(this) { + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { deleteAllShadowsOnResource(target); } - })); + }; + } - headerMenuItems.add(new InlineMenuItem()); + @Override + public IModel getVisible() { + DebugSearchDto dto = searchModel.getObject(); + return Model.of(ObjectTypes.SHADOW.equals(dto.getType())); + } + }); + + headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteAllIdentities"), true) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageDebugList.this) { + private static final long serialVersionUID = 1L; - headerMenuItems.add(new InlineMenuItem(createStringResource("pageDebugList.menu.deleteAllIdentities"), - true, new HeaderMenuAction(this) { @Override public void onSubmit(AjaxRequestTarget target, Form form) { deleteAllIdentities(target); } - })); + }; + } + }); return headerMenuItems; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java index 62e1d45c7e4..980f5bbf7a9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfigurationNew.java @@ -23,6 +23,8 @@ import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; import com.evolveum.midpoint.web.page.admin.configuration.component.*; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; + +import org.apache.commons.lang.StringUtils; import org.apache.wicket.Page; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; @@ -30,7 +32,9 @@ import org.apache.wicket.markup.html.WebMarkupContainer; 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.util.WebComponentUtil; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.GlobalPolicyRuleTabPanel; import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.LoggingConfigurationTabPanel; @@ -47,6 +51,7 @@ import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.ObjectSummaryPanel; +import com.evolveum.midpoint.web.component.TabbedPanel; import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel; @@ -93,7 +98,9 @@ public class PageSystemConfigurationNew extends PageAdminObjectDetails userToEdit) { - initialize(userToEdit); + public PageSystemConfigurationNew(final PrismObject configToEdit) { + initialize(configToEdit); } - public PageSystemConfigurationNew(final PrismObject unitToEdit, boolean isNewObject) { - initialize(unitToEdit, isNewObject); + public PageSystemConfigurationNew(final PrismObject configToEdit, boolean isNewObject) { + initialize(configToEdit, isNewObject); } @Override - protected void initializeModel(final PrismObject objectToEdit, boolean isNewObject, boolean isReadonly) { + protected void initializeModel(final PrismObject configToEdit, boolean isNewObject, boolean isReadonly) { super.initializeModel(WebModelServiceUtils.loadSystemConfigurationAsObjectWrapper(this).getObject(), false, isReadonly); } @@ -295,11 +302,6 @@ public WebMarkupContainer getPanel(String panelId) { return tabs; } - @Override - protected void onBeforeRender() { - super.onBeforeRender(); - } - @Override public void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync) { @@ -340,6 +342,22 @@ protected boolean getOptionsPanelVisibility() { protected boolean isPreviewButtonVisible() { return false; } + + @Override + protected void initLayoutTabs(PageAdminObjectDetails parentPage) { + List tabs = createTabs(parentPage); + TabbedPanel tabPanel = new TabbedPanel(ID_TAB_PANEL, tabs) { + + private static final long serialVersionUID = 1L; + + @Override + protected void onTabChange(int index) { + PageParameters params = getPageParameters(); + params.set(SELECTED_TAB_INDEX, index); + } + }; + getMainForm().add(tabPanel); + } }; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/orgs/OrgTreePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/orgs/OrgTreePanel.java index 135cb724aab..4fd5f000210 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/orgs/OrgTreePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/orgs/OrgTreePanel.java @@ -61,7 +61,6 @@ import com.evolveum.midpoint.web.session.SessionStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.AdminGuiConfigurationType; import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; -import org.apache.wicket.model.PropertyModel; public class OrgTreePanel extends AbstractTreeTablePanel { private static final long serialVersionUID = 1L; @@ -351,27 +350,39 @@ private List createTreeMenuInternal(AdminGuiConfigurationType ad List items = new ArrayList<>(); if (AdminGuiConfigTypeUtil.isFeatureVisible(adminGuiConfig, GuiFeature.ORGTREE_COLLAPSE_ALL.getUri())) { - InlineMenuItem item = new InlineMenuItem(createStringResource("TreeTablePanel.collapseAll"), - new InlineMenuItemAction() { + InlineMenuItem item = new InlineMenuItem(createStringResource("TreeTablePanel.collapseAll")) { + 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) { collapseAllPerformed(target); } - }); + }; + } + }; items.add(item); } if (AdminGuiConfigTypeUtil.isFeatureVisible(adminGuiConfig, GuiFeature.ORGTREE_EXPAND_ALL.getUri())) { - InlineMenuItem item = new InlineMenuItem(createStringResource("TreeTablePanel.expandAll"), - new InlineMenuItemAction() { + InlineMenuItem item = new InlineMenuItem(createStringResource("TreeTablePanel.expandAll")) { + 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) { expandAllPerformed(target); } - }); + }; + } + }; items.add(item); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java index 577eccf5961..8bd1ffd4a52 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageCreatedReports.java @@ -29,6 +29,9 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; @@ -80,10 +83,6 @@ import com.evolveum.midpoint.web.page.admin.reports.dto.ReportDeleteDialogDto; import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ExportType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportOutputType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType; /** * @author lazyman @@ -339,29 +338,37 @@ protected void downloadPerformed(AjaxRequestTarget target) { private List initInlineMenu() { List headerMenuItems = new ArrayList<>(); - headerMenuItems.add(new InlineMenuItem(createStringResource("pageCreatedReports.inlineMenu.deleteAll"), true, - new HeaderMenuAction(this) { + headerMenuItems.add(new InlineMenuItem(createStringResource("pageCreatedReports.inlineMenu.deleteAll")) { + private static final long serialVersionUID = 1L; - private static final long serialVersionUID = 1L; + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCreatedReports.this) { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { deleteAllPerformed(target, ReportDeleteDialogDto.Operation.DELETE_ALL); } - } - )); + }; + } + }); - headerMenuItems.add(new InlineMenuItem(createStringResource("pageCreatedReports.inlineMenu.deleteSelected"), true, - new HeaderMenuAction(this) { + headerMenuItems.add(new InlineMenuItem(createStringResource("pageCreatedReports.inlineMenu.deleteSelected")) { + private static final long serialVersionUID = 1L; - private static final long serialVersionUID = 1L; + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageCreatedReports.this) { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { deleteSelectedPerformed(target, ReportDeleteDialogDto.Operation.DELETE_SELECTED, null); } - } - )); + }; + } + }); return headerMenuItems; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java index a15bc061502..8a2c0d34883 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/reports/PageReports.java @@ -30,9 +30,9 @@ import com.evolveum.midpoint.web.application.Url; 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.data.column.InlineMenuButtonColumn; +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.web.component.util.SelectableBean; import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration; import com.evolveum.midpoint.web.page.admin.reports.component.RunReportPopupPanel; @@ -45,7 +45,6 @@ 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.markup.html.form.Form; -import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; import java.util.ArrayList; @@ -104,14 +103,9 @@ protected List, String>> createColumns() { return PageReports.this.initColumns(); } - @Override - protected IColumn, String> createActionsColumn() { - return PageReports.this.createActionsColumn(); - } - @Override protected List createInlineMenu() { - return new ArrayList<>(); + return PageReports.this.createInlineMenu(); } @Override @@ -139,49 +133,60 @@ private void reportDetailsPerformed(AjaxRequestTarget target, String oid) { navigateToNext(PageCreatedReports.class, params); } - private IColumn, String> createActionsColumn(){ - return new InlineMenuButtonColumn>(createInlineMenu(), 2, this){ - @Override - protected List getHeaderMenuItems() { - return new ArrayList<>(); - } - - @Override - protected int getHeaderNumberOfButtons(){ - return 0; - } - }; - } - private List createInlineMenu(){ List menu = new ArrayList<>(); - menu.add(new InlineMenuItem(createStringResource("PageReports.button.run"), - new Model<>(true), new Model<>(true), false, - new ColumnMenuAction>() { + menu.add(new ButtonInlineMenuItem(createStringResource("PageReports.button.run")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { ReportType report = getRowModel().getObject().getValue(); runReportPerformed(target, report); } - }, 0, - GuiStyleConstants.CLASS_START_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString())); + }; + } - menu.add(new InlineMenuItem(createStringResource("PageReports.button.configure"), - new Model<>(true), new Model<>(true), - false, - new ColumnMenuAction>() { + @Override + public String getButtonIconCssClass() { + return GuiStyleConstants.CLASS_START_MENU_ITEM; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + }); + menu.add(new ButtonInlineMenuItem(createStringResource("PageReports.button.configure")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { - ReportType reportObject = getRowModel().getObject().getValue(); - configurePerformed(target, reportObject); + ReportType reportObject = getRowModel().getObject().getValue(); + configurePerformed(target, reportObject); } - }, 1, - GuiStyleConstants.CLASS_EDIT_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString())); + }; + } + + @Override + public String getButtonIconCssClass() { + return GuiStyleConstants.CLASS_EDIT_MENU_ITEM; + } + @Override + public boolean isHeaderMenuItem(){ + return false; + } + }); return menu; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageConnectorHosts.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageConnectorHosts.java index 5d51cd1edbd..cc3f914c9ad 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageConnectorHosts.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageConnectorHosts.java @@ -20,6 +20,7 @@ import java.util.List; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; +import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction; import com.evolveum.midpoint.web.component.search.*; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -173,24 +174,36 @@ public void onClick(AjaxRequestTarget target, private List initInlineHostsMenu() { List headerMenuItems = new ArrayList<>(); - headerMenuItems.add(new InlineMenuItem(createStringResource("PageBase.button.delete"), - new HeaderMenuAction(this) { + headerMenuItems.add(new InlineMenuItem(createStringResource("PageBase.button.delete")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageConnectorHosts.this) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { deleteHostPerformed(target); } - })); - headerMenuItems.add(new InlineMenuItem(createStringResource("pageResources.button.discoveryRemote"), - new HeaderMenuAction(this) { + }; + } + }); + headerMenuItems.add(new InlineMenuItem(createStringResource("pageResources.button.discoveryRemote")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new HeaderMenuAction(PageConnectorHosts.this) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { discoveryRemotePerformed(target); } - })); + }; + } + }); return headerMenuItems; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java index e7f4f7c720e..5cfc4e6553b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/PageResources.java @@ -22,10 +22,11 @@ import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.web.application.Url; -import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; -import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; 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.InlineMenuItemAction; import com.evolveum.midpoint.web.component.search.*; +import com.evolveum.midpoint.web.page.admin.users.PageUsers; import com.evolveum.midpoint.web.session.PageStorage; import com.evolveum.midpoint.web.session.SessionStorage; import com.evolveum.midpoint.xml.ns._public.common.common_3.SearchBoxModeType; @@ -37,7 +38,6 @@ import org.apache.wicket.markup.html.form.Form; 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 com.evolveum.midpoint.gui.api.GuiStyleConstants; @@ -162,7 +162,7 @@ private void initLayout() { @Override protected List createInlineMenu() { - return PageResources.this.createRowMenuItems(false); + return PageResources.this.createRowMenuItems(); } @Override @@ -170,11 +170,6 @@ protected List, String>> createColumns() { return PageResources.this.initResourceColumns(); } - @Override - protected IColumn, String> createActionsColumn() { - return PageResources.this.createResourceActionsColumn(); - } - @Override protected void objectDetailsPerformed(AjaxRequestTarget target, ResourceType object) { PageResources.this.resourceDetailsPerformed(target, object.getOid()); @@ -194,80 +189,135 @@ protected void newObjectPerformed(AjaxRequestTarget target) { } - private List createRowMenuItems(boolean isHeader) { + private List createRowMenuItems() { List menuItems = new ArrayList<>(); - menuItems.add(new InlineMenuItem(createStringResource("PageResources.inlineMenuItem.test"), - new Model<>(false), new Model<>(false), false, - new ColumnMenuAction>() { + menuItems.add(new ButtonInlineMenuItem(createStringResource("PageResources.inlineMenuItem.test")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { - SelectableBean rowDto = getRowModel().getObject(); - testResourcePerformed(target, rowDto.getValue()); + SelectableBean rowDto = getRowModel().getObject(); + testResourcePerformed(target, rowDto.getValue()); } - }, isHeader ? InlineMenuItem.RESOURCE_INLINE_MENU_ITEM_ID.HEADER_TEST_CONNECTION.getMenuItemId() - : InlineMenuItem.RESOURCE_INLINE_MENU_ITEM_ID.TEST_CONNECTION.getMenuItemId(), - GuiStyleConstants.CLASS_TEST_CONNECTION_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString())); + }; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + + @Override + public String getButtonIconCssClass() { + return GuiStyleConstants.CLASS_TEST_CONNECTION_MENU_ITEM; + } + }); - menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.delete"), - new Model<>(true), new Model<>(true), false, - new ColumnMenuAction>() { + menuItems.add(new ButtonInlineMenuItem(createStringResource("pageResources.button.editAsXml")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { - if (getRowModel() == null){ - deleteResourcePerformed(target, null); - } else { - SelectableBean rowDto = getRowModel().getObject(); - deleteResourcePerformed(target, rowDto.getValue()); - } + SelectableBean rowDto = getRowModel().getObject(); + editAsXmlPerformed(rowDto.getValue()); } - }, isHeader ? InlineMenuItem.RESOURCE_INLINE_MENU_ITEM_ID.HEADER_DELETE.getMenuItemId() - : InlineMenuItem.RESOURCE_INLINE_MENU_ITEM_ID.DELETE_RESOURCE.getMenuItemId(), - GuiStyleConstants.CLASS_DELETE_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString())); + }; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + + @Override + public String getButtonIconCssClass() { + return GuiStyleConstants.CLASS_EDIT_MENU_ITEM; + } + }); - menuItems.add(new InlineMenuItem(createStringResource("pageResources.inlineMenuItem.deleteSyncToken"), - isHeader ? new Model<>(false) : new Model<>(true), - isHeader ? new Model<>(false) : new Model<>(true), - false, - new ColumnMenuAction>() { + menuItems.add(new InlineMenuItem(createStringResource("pageResources.inlineMenuItem.editResource")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { SelectableBean rowDto = getRowModel().getObject(); - deleteResourceSyncTokenPerformed(target, rowDto.getValue()); + editResourcePerformed(rowDto.getValue()); } + }; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + }); - })); + menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.delete")) { + private static final long serialVersionUID = 1L; - menuItems.add(new InlineMenuItem(createStringResource("pageResources.inlineMenuItem.editResource"), - isHeader ? new Model<>(false) : new Model<>(true), - isHeader ? new Model<>(false) : new Model<>(true), - false, - new ColumnMenuAction>() { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { - SelectableBean rowDto = getRowModel().getObject(); - editResourcePerformed(rowDto.getValue()); + if (getRowModel() == null) { + deleteResourcePerformed(target, null); + } else { + SelectableBean rowDto = getRowModel().getObject(); + deleteResourcePerformed(target, rowDto.getValue()); + } } - })); - menuItems.add(new InlineMenuItem(createStringResource("pageResources.button.editAsXml"), - new Model<>(false), new Model<>(false), false, - new ColumnMenuAction>() { + }; + } + + @Override + public String getButtonIconCssClass() { + return GuiStyleConstants.CLASS_DELETE_MENU_ITEM; + } + }); + + menuItems.add(new InlineMenuItem(createStringResource("pageResources.inlineMenuItem.deleteSyncToken")) { + private static final long serialVersionUID = 1L; + + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { SelectableBean rowDto = getRowModel().getObject(); - editAsXmlPerformed(rowDto.getValue()); + deleteResourceSyncTokenPerformed(target, rowDto.getValue()); } - }, InlineMenuItem.RESOURCE_INLINE_MENU_ITEM_ID.EDIT_XML.getMenuItemId(), - GuiStyleConstants.CLASS_EDIT_MENU_ITEM, - DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString())); + + }; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + + }); return menuItems; } @@ -283,21 +333,7 @@ private List, String>> initResourceColumns( return columns; } - private IColumn, String> createResourceActionsColumn() { - return new InlineMenuButtonColumn>(createRowMenuItems(false), 2, PageResources.this){ - @Override - protected int getHeaderNumberOfButtons() { - return 1; - } - - @Override - protected List getHeaderMenuItems() { - return createRowMenuItems(true); - } - }; - } - - private void resourceDetailsPerformed(AjaxRequestTarget target, String oid) { + private void resourceDetailsPerformed(AjaxRequestTarget target, String oid) { clearSessionStorageForResourcePage(); PageParameters parameters = new PageParameters(); @@ -313,15 +349,18 @@ private List isAnyResourceSelected(AjaxRequestTarget target, Resou return selected; } selected = getResourceTable().getSelectedObjects(); - if (selected.size() < 1) { - warn(createStringResource("pageResources.message.noResourceSelected")); - } return selected; } private void deleteResourcePerformed(AjaxRequestTarget target, ResourceType single) { List selected = isAnyResourceSelected(target, single); + if (selected.size() < 1) { + warn(createStringResource("pageResources.message.noResourceSelected").getString()); + target.add(getFeedbackPanel()); + return; + } + singleDelete = single; if (selected.isEmpty()) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java index dde49e72624..ebe53d7d648 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.java @@ -22,6 +22,8 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.api.GuiConstants; +import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; @@ -269,11 +271,6 @@ protected List, String>> createColumns() { return ResourceContentPanel.this.initColumns(); } - @Override - protected IColumn, String> createActionsColumn(){ - return new InlineMenuHeaderColumn(createHeaderMenuItems()); - } - @Override protected void objectDetailsPerformed(AjaxRequestTarget target, ShadowType object) { shadowDetailsPerformed(target, WebComponentUtil.getName(object), object.getOid()); @@ -394,26 +391,38 @@ private void initButton(String id, String label, String icon, final String categ List items = new ArrayList<>(); InlineMenuItem item = new InlineMenuItem( - getPageBase().createStringResource("ResourceContentResourcePanel.showExisting"), - new InlineMenuItemAction() { + getPageBase().createStringResource("ResourceContentResourcePanel.showExisting")) { + 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) { runTask(tasks, target); } - }); + }; + } + }; items.add(item); - item = new InlineMenuItem(getPageBase().createStringResource("ResourceContentResourcePanel.newTask"), - new InlineMenuItemAction() { + item = new InlineMenuItem(getPageBase().createStringResource("ResourceContentResourcePanel.newTask")) { + 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) { newTaskPerformed(category, target); } - }); + }; + } + }; items.add(item); DropdownButtonPanel button = new DropdownButtonPanel(id, @@ -782,127 +791,131 @@ private F loadShadowOwner(String shadowOid) { return null; } - private List createHeaderMenuItems() { + @SuppressWarnings("serial") + private List createRowMenuItems() { List items = new ArrayList<>(); - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.enableAccounts"), true, - new HeaderMenuAction(this) { - private static final long serialVersionUID = 1L; - - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - updateResourceObjectStatusPerformed(null, target, true); - } - })); - - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.disableAccounts"), true, - new HeaderMenuAction(this) { - private static final long serialVersionUID = 1L; - - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - updateResourceObjectStatusPerformed(null, target, false); - } - })); + items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.enableAccount"), true) { + private static final long serialVersionUID = 1L; - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.deleteAccounts"), true, - new HeaderMenuAction(this) { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { - deleteResourceObjectPerformed(null, target); + if (getRowModel() == null){ + updateResourceObjectStatusPerformed(null, target, true); + } else { + SelectableBean shadow = getRowModel().getObject(); + updateResourceObjectStatusPerformed(shadow.getValue(), target, true); + } } - })); - - items.add(new InlineMenuItem()); + }; + } + }); - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.importAccounts"), true, - new HeaderMenuAction(this) { + items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.disableAccount"), true) { + private static final long serialVersionUID = 1L; + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { - importResourceObject(null, target); + if (getRowModel() == null){ + updateResourceObjectStatusPerformed(null, target, false); + } else { + SelectableBean shadow = getRowModel().getObject(); + updateResourceObjectStatusPerformed(shadow.getValue(), target, false); + } } - })); + }; + } + }); - items.add(new InlineMenuItem()); + items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.deleteAccount"), true) { + private static final long serialVersionUID = 1L; - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.removeOwners"), true, - new HeaderMenuAction(this) { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { - changeOwner(null, target, null, Operation.REMOVE); + if (getRowModel() == null){ + deleteResourceObjectPerformed(null, target); + } else { + SelectableBean shadow = getRowModel().getObject(); + deleteResourceObjectPerformed(shadow.getValue(), target); + } } - })); - - return items; - } - - @SuppressWarnings("serial") - private List createRowMenuItems() { - List items = new ArrayList<>(); + }; + } + }); - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.enableAccount"), true, - new ColumnMenuAction>() { +// items.add(new InlineMenuItem()); - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - SelectableBean shadow = getRowModel().getObject(); - updateResourceObjectStatusPerformed(shadow.getValue(), target, true); - } - })); + items.add(new ButtonInlineMenuItem(createStringResource("pageContentAccounts.menu.importAccount"), true) { + private static final long serialVersionUID = 1L; - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.disableAccount"), true, - new ColumnMenuAction>() { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { - SelectableBean shadow = getRowModel().getObject(); - updateResourceObjectStatusPerformed(shadow.getValue(), target, false); + if (getRowModel() == null){ + importResourceObject(null, target); + } else { + SelectableBean shadow = getRowModel().getObject(); + importResourceObject(shadow.getValue(), target); + } } - })); + }; + } - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.deleteAccount"), true, - new ColumnMenuAction>() { + @Override + public String getButtonIconCssClass(){ + return GuiStyleConstants.CLASS_IMPORT_MENU_ITEM; + } + }); - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - SelectableBean shadow = getRowModel().getObject(); - deleteResourceObjectPerformed(shadow.getValue(), target); - } - })); +// items.add(new InlineMenuItem()); - items.add(new InlineMenuItem()); + items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.removeOwner"), true) { + private static final long serialVersionUID = 1L; - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.importAccount"), true, - new ColumnMenuAction>() { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { - SelectableBean shadow = getRowModel().getObject(); - importResourceObject(shadow.getValue(), target); + if (getRowModel() == null){ + changeOwner(null, target, null, Operation.REMOVE); + } else { + SelectableBean shadow = getRowModel().getObject(); + changeOwner(shadow.getValue(), target, null, Operation.REMOVE); + } } - })); - - items.add(new InlineMenuItem()); - - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.removeOwner"), true, - new ColumnMenuAction>() { + }; + } + }); - @Override - public void onSubmit(AjaxRequestTarget target, Form form) { - SelectableBean shadow = getRowModel().getObject(); - changeOwner(shadow.getValue(), target, null, Operation.REMOVE); - } - })); + items.add(new ButtonInlineMenuItem(createStringResource("pageContentAccounts.menu.changeOwner"), true) { + private static final long serialVersionUID = 1L; - items.add(new InlineMenuItem(createStringResource("pageContentAccounts.menu.changeOwner"), true, - new ColumnMenuAction>() { + @Override + public InlineMenuItemAction initAction() { + return new ColumnMenuAction>() { + private static final long serialVersionUID = 1L; @Override public void onSubmit(AjaxRequestTarget target, Form form) { @@ -921,7 +934,20 @@ protected void onSelectPerformed(AjaxRequestTarget target, FocusType focus) { pageBase.showMainPopup(browser, target); } - })); + }; + } + + @Override + public String getButtonIconCssClass(){ + return GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM; + } + + @Override + public boolean isHeaderMenuItem(){ + return false; + } + + }); return items; } @@ -1090,6 +1116,8 @@ private MainObjectListPanel getTable() { private void changeOwner(ShadowType selected, AjaxRequestTarget target, FocusType ownerToChange, Operation operation) { + pageBase.hideMainPopup(target); + List selectedShadow = getSelectedShadowsList(selected); Collection modifications = new ArrayList<>(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java index bd62d177abc..8b83ab56645 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/AbstractRoleMemberPanel.java @@ -200,24 +200,6 @@ protected List, String>> createColumns() { return createMembersColumns(); } - @Override - protected IColumn, String> createActionsColumn(){ - return new InlineMenuButtonColumn>(new ArrayList<>(), 4, AbstractRoleMemberPanel.this.getPageBase()){ - - private static final long serialVersionUID = 1L; - - @Override - protected int getHeaderNumberOfButtons() { - return 2; - } - - @Override - protected List getHeaderMenuItems() { - return createRowActions(); - } - }; - } - @Override protected List createInlineMenu() { return new ArrayList<>(); @@ -257,66 +239,66 @@ protected ObjectQuery createContentQuery() { private List createRowActions() { List menu = new ArrayList<>(); - if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_ASSIGN)) { - menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.assign"), new Model<>(true), - new Model<>(true), false, new ColumnMenuAction>() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - assignMembers(target, getSupportedRelations()); - } - }, 0, GuiStyleConstants.CLASS_ASSIGN, null)); - } - - if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_UNASSIGN)) { - menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.unassign"), new Model<>(Boolean.TRUE), new Model<>(Boolean.TRUE), - false, new ColumnMenuAction>() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - unassignMembersPerformed(target); - } - }, 1, GuiStyleConstants.CLASS_UNASSIGN, null)); - } - - if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_RECOMPUTE)) { - menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.recompute"), - new Model<>(false), new Model<>(false), false, - new ColumnMenuAction>() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - recomputeMembersPerformed(target); - } - }, 2, GuiStyleConstants.CLASS_RECONCILE, null)); - } - - if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_CREATE)) { - menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.create"), false, - new ColumnMenuAction>() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - createFocusMemberPerformed(target); - } - }, 3, GuiStyleConstants.CLASS_CREATE_FOCUS)); - } - - if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_DELETE)) { - menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.delete"), false, - new ColumnMenuAction>() { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - deleteMembersPerformed(target); - } - }, 3, GuiStyleConstants.CLASS_CREATE_FOCUS)); - } +// if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_ASSIGN)) { +// menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.assign"), new Model<>(true), +// new Model<>(true), false, new ColumnMenuAction>() { +// private static final long serialVersionUID = 1L; +// +// @Override +// public void onClick(AjaxRequestTarget target) { +// assignMembers(target, getSupportedRelations()); +// } +// }, 0, GuiStyleConstants.CLASS_ASSIGN, null)); +// } +// +// if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_UNASSIGN)) { +// menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.unassign"), new Model<>(Boolean.TRUE), new Model<>(Boolean.TRUE), +// false, new ColumnMenuAction>() { +// private static final long serialVersionUID = 1L; +// +// @Override +// public void onClick(AjaxRequestTarget target) { +// unassignMembersPerformed(target); +// } +// }, 1, GuiStyleConstants.CLASS_UNASSIGN, null)); +// } +// +// if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_RECOMPUTE)) { +// menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.recompute"), +// new Model<>(false), new Model<>(false), false, +// new ColumnMenuAction>() { +// private static final long serialVersionUID = 1L; +// +// @Override +// public void onClick(AjaxRequestTarget target) { +// recomputeMembersPerformed(target); +// } +// }, 2, GuiStyleConstants.CLASS_RECONCILE, null)); +// } +// +// if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_CREATE)) { +// menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.create"), false, +// new ColumnMenuAction>() { +// private static final long serialVersionUID = 1L; +// +// @Override +// public void onClick(AjaxRequestTarget target) { +// createFocusMemberPerformed(target); +// } +// }, 3, GuiStyleConstants.CLASS_CREATE_FOCUS)); +// } +// +// if (isAuthorized(GuiAuthorizationConstants.MEMBER_OPERATION_DELETE)) { +// menu.add(new InlineMenuItem(createStringResource("abstractRoleMemberPanel.menu.delete"), false, +// new ColumnMenuAction>() { +// private static final long serialVersionUID = 1L; +// +// @Override +// public void onClick(AjaxRequestTarget target) { +// deleteMembersPerformed(target); +// } +// }, 3, GuiStyleConstants.CLASS_CREATE_FOCUS)); +// } return menu; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java index c4574177133..30a7c335150 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java @@ -26,6 +26,7 @@ import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; +import com.evolveum.midpoint.web.component.data.column.ColumnUtils; import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.search.Search; @@ -37,10 +38,15 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; 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.html.form.Form; +import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; import java.util.ArrayList; @@ -103,18 +109,12 @@ protected List createInlineMenu() { @Override protected List, String>> createColumns() { - return PageRoles.this.initColumns(); + return ColumnUtils.getDefaultRoleColumns(); } - @Override - protected IColumn, String> createActionsColumn() { - return PageRoles.this.createActionsColumn(); - } - @Override protected void objectDetailsPerformed(AjaxRequestTarget target, RoleType object) { PageRoles.this.roleDetailsPerformed(target, object.getOid()); - ; } @Override @@ -127,35 +127,7 @@ protected void newObjectPerformed(AjaxRequestTarget target) { mainForm.add(roleListPanel); } - private List, String>> initColumns() { - List, String>> columns = new ArrayList<>(); - - IColumn column = new PropertyColumn, String>(createStringResource("OrgType.displayName"), "value.displayName"); columns.add(column); - - column = new PropertyColumn(createStringResource("OrgType.identifier"), "value.identifier"); - columns.add(column); - - column = new PropertyColumn(createStringResource("ObjectType.description"), "value.description"); - columns.add(column); - - return columns; - } - - private IColumn, String> createActionsColumn() { - return new InlineMenuButtonColumn>(listInlineMenuHelper.createRowActions(false), 3, PageRoles.this){ - @Override - protected int getHeaderNumberOfButtons() { - return 2; - } - - @Override - protected List getHeaderMenuItems() { - return listInlineMenuHelper.createRowActions(true); - } - }; - } - - private MainObjectListPanel getRoleTable() { + private MainObjectListPanel getRoleTable() { return (MainObjectListPanel) get(createComponentPath(ID_MAIN_FORM, ID_TABLE)); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceMemberPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceMemberPanel.java index ae366a71003..e69de29bb2d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceMemberPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleGovernanceMemberPanel.java @@ -1,185 +0,0 @@ -/* - * Copyright (c) 2010-2017 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.page.admin.roles; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import javax.xml.namespace.QName; - -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AreaCategoryType; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.model.IModel; - -import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.query.ObjectQuery; -import com.evolveum.midpoint.schema.constants.RelationTypes; -import com.evolveum.midpoint.schema.constants.SchemaConstants; -import com.evolveum.midpoint.security.api.AuthorizationConstants; -import com.evolveum.midpoint.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; -import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType; - -/** - * Created by honchar. - */ -public class RoleGovernanceMemberPanel {// extends AbstractRoleMemberPanel { - - private static final long serialVersionUID = 1L; - - private static final Trace LOGGER = TraceManager.getTrace(RoleGovernanceMemberPanel.class); - private static final String DOT_CLASS = RoleGovernanceMemberPanel.class.getName() + "."; - -// public RoleGovernanceMemberPanel(String id, IModel model, List relations) { -// super(id, model, relations); -// } - -// @Override -// protected List createNewMemberInlineMenuItems() { -// List createMemberMenuItems = new ArrayList<>(); -// -// createMemberMenuItems.add(new InlineMenuItem(createStringResource("roleMemberPanel.menu.createApprover"), -// false, new HeaderMenuAction(this) { -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// createFocusMemberPerformed(RelationTypes.APPROVER.getRelation(), target); -// } -// })); -// createMemberMenuItems.add(new InlineMenuItem(createStringResource("roleMemberPanel.menu.createOwner"), -// false, new HeaderMenuAction(this) { -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// createFocusMemberPerformed(RelationTypes.OWNER.getRelation(), target); -// } -// })); -// createMemberMenuItems.add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.createManager"), -// false, new HeaderMenuAction(this) { -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// createFocusMemberPerformed(RelationTypes.MANAGER.getRelation(), target); -// } -// })); -// return createMemberMenuItems; -// } - -// @Override -// protected List createUnassignMemberInlineMenuItems() { -// List unassignMenuItems = new ArrayList<>(); -// unassignMenuItems -// .add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignApproversSelected"), -// false, new HeaderMenuAction(this) { -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// removeMembersPerformed(QueryScope.SELECTED, Arrays.asList(SchemaConstants.ORG_APPROVER), target); -// } -// })); -// -// unassignMenuItems -// .add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignOwnersSelected"), -// false, new HeaderMenuAction(this) { -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// removeMembersPerformed(QueryScope.SELECTED, Arrays.asList(SchemaConstants.ORG_OWNER), target); -// } -// })); -// -// unassignMenuItems -// .add(new InlineMenuItem(createStringResource("TreeTablePanel.menu.unassignManagersSelected"), -// false, new HeaderMenuAction(this) { -// private static final long serialVersionUID = 1L; -// -// @Override -// public void onClick(AjaxRequestTarget target) { -// removeMembersPerformed(QueryScope.SELECTED, Arrays.asList(SchemaConstants.ORG_MANAGER), target); -// } -// })); -// -// return unassignMenuItems; -// } - -// @Override -// protected List getAvailableRelationList(){ -// return WebComponentUtil.getCategoryRelationChoices(AreaCategoryType.GOVERNANCE, -// new OperationResult(OPERATION_RELATION_DEFINITION_TYPE), getPageBase()); } - -// @Override -// protected ObjectQuery createAllMemberQuery(Collection relations) { -// return super.createDirectMemberQuery(relations); -// } -// -// @Override -// protected boolean isAuthorizedToUnassignMembers(){ -// return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_GOVERNANCE_ACTION_URI); -// } -// -// @Override -// protected boolean isAuthorizedToAssignMembers(){ -// return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_GOVERNANCE_ACTION_URI); -// } -// -// @Override -// protected boolean isAuthorizedToCreateMembers(){ -// return WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ADD_GOVERNANCE_ACTION_URI); -// } - -// @Override -// protected List createMemberRecomputeInlineMenuItems() { -// return new ArrayList<>(); -// } - -// @Override -// protected boolean isGovernance(){ -// return true; -// } - -// static class RoleRelationSelectionDto implements Serializable { -// -// private static final long serialVersionUID = 1L; -// private boolean approver; -// private boolean owner; -// private boolean manager; -// -// public boolean isApprover() { -// return approver; -// } -// -// public boolean isManager() { -// return manager; -// } -// -// public boolean isOwner() { -// return owner; -// } -// } - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html deleted file mode 100644 index 4e54b9ffcfe..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/RoleMemberPanel.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - -
-
- -