diff --git a/config/initial-objects/200-lookup-languages.xml b/config/initial-objects/200-lookup-languages.xml
index d42f076a5ec..eb0f04eb61f 100644
--- a/config/initial-objects/200-lookup-languages.xml
+++ b/config/initial-objects/200-lookup-languages.xml
@@ -64,6 +64,10 @@
lt
+
+ nl
+
+
pl
diff --git a/config/initial-objects/210-lookup-locales.xml b/config/initial-objects/210-lookup-locales.xml
index d91cef3eee3..3b9a748de40 100644
--- a/config/initial-objects/210-lookup-locales.xml
+++ b/config/initial-objects/210-lookup-locales.xml
@@ -55,6 +55,10 @@
lt
+
+ nl
+
+
pl
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 0d8c27597df..e76b0ee58f6 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
@@ -1,547 +1,547 @@
-/*
- * Copyright (c) 2018 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.gui.impl.component;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
-import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
-import com.evolveum.midpoint.web.component.MultiCompositedButtonPanel;
-import com.evolveum.midpoint.web.component.MultiFunctinalButtonDto;
-import com.evolveum.midpoint.web.component.objectdetails.AssignmentHolderTypeMainPanel;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType;
-
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-
-import com.evolveum.midpoint.gui.api.GuiStyleConstants;
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.api.model.LoadableModel;
-import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
-import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
-import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
-import com.evolveum.midpoint.gui.impl.util.GuiImplUtil;
-import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.PrismContainerDefinition;
-import com.evolveum.midpoint.prism.PrismContainerValue;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.query.ObjectPaging;
-import com.evolveum.midpoint.prism.query.ObjectQuery;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.web.component.MultifunctionalButton;
-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.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.objectdetails.FocusMainPanel;
-import com.evolveum.midpoint.web.component.prism.ValueStatus;
-import com.evolveum.midpoint.web.component.search.Search;
-import com.evolveum.midpoint.web.component.search.SearchFormPanel;
-import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
-import com.evolveum.midpoint.web.component.util.MultivalueContainerListDataProvider;
-import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-import com.evolveum.midpoint.web.session.PageStorage;
-import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;
-
-/**
- * @author skublik
- */
-
-public abstract class MultivalueContainerListPanel extends BasePanel> {
-
- private static final long serialVersionUID = 1L;
-
- private static final String DOT_CLASS = MultivalueContainerListPanel.class.getName() + ".";
- private static final String OPERATION_CREATE_NEW_VALUE = DOT_CLASS + "createNewValue";
-
- public static final String ID_ITEMS = "items";
- private static final String ID_ITEMS_TABLE = "itemsTable";
- public static final String ID_SEARCH_ITEM_PANEL = "search";
-
-
- private static final Trace LOGGER = TraceManager.getTrace(MultivalueContainerListPanel.class);
-
- private TableId tableId;
- private PageStorage pageStorage;
-
- private LoadableModel searchModel = null;
-
- public MultivalueContainerListPanel(String id, IModel> model, TableId tableId, PageStorage pageStorage) {
- super(id, model);
- this.tableId = tableId;
- this.pageStorage = pageStorage;
-
- searchModel = new LoadableModel(false) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected Search load() {
- if (model == null || model.getObject() == null){
- return null;
- }
- List availableDefs = initSearchableItems(model.getObject());
-
- Search search = new Search(model.getObject().getCompileTimeClass(), availableDefs);
- return search;
- }
-
-
- };
- }
-
-
- public MultivalueContainerListPanel(String id, PrismContainerDefinition def, TableId tableId, PageStorage pageStorage) {
- super(id);
- this.tableId = tableId;
- this.pageStorage = pageStorage;
-
- searchModel = new LoadableModel(false) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected Search load() {
- List availableDefs = initSearchableItems(def);
-
- Search search = new Search(def.getCompileTimeClass(), availableDefs);
- return search;
- }
-
-
- };
- }
-
- protected abstract List initSearchableItems(PrismContainerDefinition containerDef);
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
-
- initPaging();
- initLayout();
- }
-
- private void initLayout() {
-
- initListPanel();
- setOutputMarkupId(true);
-
- }
-
- protected abstract void initPaging();
-
- private void initListPanel() {
- WebMarkupContainer itemsContainer = new WebMarkupContainer(ID_ITEMS);
- itemsContainer.setOutputMarkupId(true);
- itemsContainer.setOutputMarkupPlaceholderTag(true);
- add(itemsContainer);
-
- BoxedTablePanel> itemTable = initItemTable();
- itemTable.setOutputMarkupId(true);
- itemTable.setOutputMarkupPlaceholderTag(true);
- itemsContainer.add(itemTable);
-
- WebMarkupContainer searchContainer = getSearchPanel(ID_SEARCH_ITEM_PANEL);
- searchContainer.setOutputMarkupId(true);
- searchContainer.setOutputMarkupPlaceholderTag(true);
- itemsContainer.add(searchContainer);
- itemsContainer.add(new VisibleEnableBehaviour() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible() {
- return isListPanelVisible();
- }
- });
-
- }
-
- protected boolean isListPanelVisible() {
- return true;
- }
-
- protected WebMarkupContainer getSearchPanel(String contentAreaId) {
- return new WebMarkupContainer(contentAreaId);
- }
-
- protected abstract boolean enableActionNewObject();
-
- protected IModel>> loadValuesModel() {
- if (getModel() == null) {
- LOGGER.info("Parent model is null. Cannot load model for values for table: {}", tableId.name());
- }
-
- return new PropertyModel<>(getModel(), "values");
- }
-
- private BoxedTablePanel> initItemTable() {
-
- MultivalueContainerListDataProvider containersProvider = new MultivalueContainerListDataProvider(this, loadValuesModel()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) {
- pageStorage.setPaging(paging);
- }
-
- @Override
- public ObjectQuery getQuery() {
- return MultivalueContainerListPanel.this.createProviderQuery();
- }
-
- @Override
- protected List> searchThroughList() {
- List> resultList = super.searchThroughList();
- return postSearch(resultList);
- }
-
- };
-
- List, String>> columns = createColumns();
-
- int itemPerPage = (int) getPageBase().getItemsPerPage(tableId);
- BoxedTablePanel> itemTable = new BoxedTablePanel>(ID_ITEMS_TABLE,
- containersProvider, columns, tableId, itemPerPage) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected WebMarkupContainer createHeader(String headerId) {
- return MultivalueContainerListPanel.this.initSearch(headerId);
- }
-
- @Override
- public int getItemsPerPage() {
- return getPageBase().getSessionStorage().getUserProfile().getTables()
- .get(getTableId());
- }
-
- @Override
- protected Item> customizeNewRowItem(Item> item,
- IModel> model) {
- item.add(AttributeModifier.append("class", new IModel() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getObject() {
- return GuiImplUtil.getObjectStatus(model.getObject());
- }
- }));
- return item;
- }
-
- @Override
- protected WebMarkupContainer createButtonToolbar(String id) {
- return initButtonToolbar(id);
- }
-
- };
- itemTable.setOutputMarkupId(true);
- itemTable.setCurrentPage(pageStorage != null ? pageStorage.getPaging() : null);
- return itemTable;
-
- }
-
- protected WebMarkupContainer initButtonToolbar(String id) {
- return getNewItemButton(id);
- }
-
- protected List createNewButtonDescription() {
- return null;
- }
-
-
- public MultiCompositedButtonPanel getNewItemButton(String id) {
- MultiCompositedButtonPanel newObjectIcon =
- new MultiCompositedButtonPanel(id, createNewButtonDescription()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews) {
- newItemPerformed(target, relationSepc);
- }
-
- @Override
- protected boolean isDefaultButtonVisible(){
- return getNewObjectGenericButtonVisibility();
- }
-
- @Override
- protected DisplayType getMainButtonDisplayType() {
- return getNewObjectButtonDisplayType();
- }
-
- @Override
- protected DisplayType getDefaultObjectButtonDisplayType() {
- return getNewObjectButtonDisplayType();
- }
- };
- newObjectIcon.add(AttributeModifier.append("class", "btn-group btn-margin-right"));
- newObjectIcon.add(new VisibleEnableBehaviour() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible() {
- return enableActionNewObject();
- }
-
- @Override
- public boolean isEnabled() {
- return isNewObjectButtonEnabled();
- }
- });
-// newObjectIcon.add(AttributeModifier.append("class", createStyleClassModelForNewObjectIcon()));
- return newObjectIcon;
- }
-
- protected boolean isNewObjectButtonEnabled(){
- return true;
- }
-
-
- protected boolean getNewObjectGenericButtonVisibility(){
- return true;
- }
-
-
- protected DisplayType getNewObjectButtonDisplayType(){
- return WebComponentUtil.createDisplayType(GuiStyleConstants.CLASS_ADD_NEW_OBJECT, "green", createStringResource("MainObjectListPanel.newObject").getString());
- }
-
-
- protected WebMarkupContainer initSearch(String headerId) {
- SearchFormPanel searchPanel = new SearchFormPanel(headerId, searchModel) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
- MultivalueContainerListPanel.this.searchPerformed(query, target);
- }
- };
- searchPanel.add(new VisibleBehaviour(() -> isSearchEnabled()));
- return searchPanel;
- }
-
- protected boolean isSearchEnabled(){
- return true;
- }
-
- private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
- Table table = getItemTable();
- table.setCurrentPage(null);
- target.add((Component) table);
- target.add(getPageBase().getFeedbackPanel());
-
- }
-
- private ObjectQuery getQuery() {
- Search search = searchModel.getObject();
- ObjectQuery query = search.createObjectQuery(getPageBase().getPrismContext());
- return query;
- }
-
- private MultivalueContainerListDataProvider getDataProvider() {
- return (MultivalueContainerListDataProvider) getItemTable().getDataTable().getDataProvider();
- }
-
-
- protected IModel createStyleClassModelForNewObjectIcon() {
- return new IModel() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getObject() {
- return "btn btn-success btn-sm";
- }
- };
- }
-
- protected abstract List> postSearch(List> items);
-
- private ObjectQuery createProviderQuery() {
- ObjectQuery searchQuery = isSearchEnabled() ? getQuery() : null;
-
- ObjectQuery customQuery = createQuery();
-
- if (searchQuery != null && searchQuery.getFilter() != null) {
- if (customQuery != null && customQuery.getFilter() != null) {
- return getPrismContext().queryFactory().createQuery(getPrismContext().queryFactory().createAnd(customQuery.getFilter(), searchQuery.getFilter()));
- }
- return searchQuery;
-
- }
- return customQuery;
- }
-
- protected abstract ObjectQuery createQuery();
-
- protected abstract List, String>> createColumns();
-
-// protected void newItemPerformed(AjaxRequestTarget target){}
-
- protected void newItemPerformed(AjaxRequestTarget target, AssignmentObjectRelation influencingObject){}
-
- public BoxedTablePanel> getItemTable() {
- return (BoxedTablePanel>) get(createComponentPath(ID_ITEMS, ID_ITEMS_TABLE));
- }
-
- public void refreshTable(AjaxRequestTarget ajaxRequestTarget) {
- ajaxRequestTarget.add(getItemContainer().addOrReplace(initItemTable()));
- }
-
- public WebMarkupContainer getItemContainer() {
- return (WebMarkupContainer) get(ID_ITEMS);
- }
-
- public PrismObject getFocusObject(){
- AssignmentHolderTypeMainPanel mainPanel = findParent(AssignmentHolderTypeMainPanel.class);
- if (mainPanel != null) {
- return mainPanel.getObjectWrapper().getObject();
- }
- return null;
- }
-
- public List> getSelectedItems() {
- BoxedTablePanel> itemsTable = getItemTable();
- MultivalueContainerListDataProvider itemsProvider = (MultivalueContainerListDataProvider) itemsTable.getDataTable()
- .getDataProvider();
- return itemsProvider.getAvailableData().stream().filter(a -> a.isSelected()).collect(Collectors.toList());
- }
-
- public void reloadSavePreviewButtons(AjaxRequestTarget target){
- FocusMainPanel mainPanel = findParent(FocusMainPanel.class);
- if (mainPanel != null) {
- mainPanel.reloadSavePreviewButtons(target);
- }
- }
-
- public List> getPerformedSelectedItems(IModel> rowModel) {
- List> performedItems = new ArrayList>();
- List> listItems = getSelectedItems();
- if((listItems!= null && !listItems.isEmpty()) || rowModel != null) {
- if(rowModel == null) {
- performedItems.addAll(listItems);
- listItems.forEach(itemConfigurationTypeContainerValueWrapper -> {
- itemConfigurationTypeContainerValueWrapper.setSelected(false);
- });
- } else {
- performedItems.add(rowModel.getObject());
- rowModel.getObject().setSelected(false);
- }
- }
- return performedItems;
- }
-
- //TODO generalize for properties
- public PrismContainerValueWrapper createNewItemContainerValueWrapper(
- PrismContainerValue newItem,
- PrismContainerWrapper model, AjaxRequestTarget target) {
-
- return WebPrismUtil.createNewValueWrapper(model, newItem, getPageBase(), target);
-
- }
-
- public ColumnMenuAction> createDeleteColumnAction() {
- return new ColumnMenuAction>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- if (getRowModel() == null) {
- deleteItemPerformed(target, getSelectedItems());
- } else {
- List> toDelete = new ArrayList<>();
- toDelete.add(getRowModel().getObject());
- deleteItemPerformed(target, toDelete);
- }
- }
- };
- }
-
- public ColumnMenuAction> createEditColumnAction() {
- return new ColumnMenuAction>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- itemPerformedForDefaultAction(target, getRowModel(), getSelectedItems());
- }
- };
- }
-
- protected abstract void itemPerformedForDefaultAction(AjaxRequestTarget target, IModel> rowModel, List> listItems);
-
- protected void deleteItemPerformed(AjaxRequestTarget target, List> toDelete) {
- if (toDelete == null || toDelete.isEmpty()){
- warn(createStringResource("MultivalueContainerListPanel.message.noItemsSelected").getString());
- target.add(getPageBase().getFeedbackPanel());
- return;
- }
- toDelete.forEach(value -> {
- if (value.getStatus() == ValueStatus.ADDED) {
- PrismContainerWrapper wrapper = getModelObject();
- wrapper.getValues().remove(value);
- } else {
- value.setStatus(ValueStatus.DELETED);
- }
- value.setSelected(false);
- });
- refreshTable(target);
- reloadSavePreviewButtons(target);
- }
-
- public List getDefaultMenuActions() {
- List menuItems = new ArrayList<>();
- menuItems.add(new ButtonInlineMenuItem(createStringResource("pageAdminFocus.button.delete")) {
- 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 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;
- }
-}
+/*
+ * Copyright (c) 2018 Evolveum and contributors
+ *
+ * This work is dual-licensed under the Apache License 2.0
+ * and European Union Public License. See LICENSE file for details.
+ */
+package com.evolveum.midpoint.gui.impl.component;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
+import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
+import com.evolveum.midpoint.web.component.MultiCompositedButtonPanel;
+import com.evolveum.midpoint.web.component.MultiFunctinalButtonDto;
+import com.evolveum.midpoint.web.component.objectdetails.AssignmentHolderTypeMainPanel;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType;
+
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
+
+import com.evolveum.midpoint.gui.api.GuiStyleConstants;
+import com.evolveum.midpoint.gui.api.component.BasePanel;
+import com.evolveum.midpoint.gui.api.model.LoadableModel;
+import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
+import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
+import com.evolveum.midpoint.gui.impl.util.GuiImplUtil;
+import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.PrismContainerDefinition;
+import com.evolveum.midpoint.prism.PrismContainerValue;
+import com.evolveum.midpoint.prism.PrismObject;
+import com.evolveum.midpoint.prism.query.ObjectPaging;
+import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.web.component.MultifunctionalButton;
+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.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.objectdetails.FocusMainPanel;
+import com.evolveum.midpoint.web.component.prism.ValueStatus;
+import com.evolveum.midpoint.web.component.search.Search;
+import com.evolveum.midpoint.web.component.search.SearchFormPanel;
+import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
+import com.evolveum.midpoint.web.component.util.MultivalueContainerListDataProvider;
+import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
+import com.evolveum.midpoint.web.session.PageStorage;
+import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType;
+
+/**
+ * @author skublik
+ */
+
+public abstract class MultivalueContainerListPanel extends BasePanel> {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String DOT_CLASS = MultivalueContainerListPanel.class.getName() + ".";
+ private static final String OPERATION_CREATE_NEW_VALUE = DOT_CLASS + "createNewValue";
+
+ public static final String ID_ITEMS = "items";
+ private static final String ID_ITEMS_TABLE = "itemsTable";
+ public static final String ID_SEARCH_ITEM_PANEL = "search";
+
+
+ private static final Trace LOGGER = TraceManager.getTrace(MultivalueContainerListPanel.class);
+
+ private TableId tableId;
+ private PageStorage pageStorage;
+
+ private LoadableModel searchModel = null;
+
+ public MultivalueContainerListPanel(String id, IModel> model, TableId tableId, PageStorage pageStorage) {
+ super(id, model);
+ this.tableId = tableId;
+ this.pageStorage = pageStorage;
+
+ searchModel = new LoadableModel(false) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected Search load() {
+ if (model == null || model.getObject() == null){
+ return null;
+ }
+ List availableDefs = initSearchableItems(model.getObject());
+
+ Search search = new Search(model.getObject().getCompileTimeClass(), availableDefs);
+ return search;
+ }
+
+
+ };
+ }
+
+
+ public MultivalueContainerListPanel(String id, PrismContainerDefinition def, TableId tableId, PageStorage pageStorage) {
+ super(id);
+ this.tableId = tableId;
+ this.pageStorage = pageStorage;
+
+ searchModel = new LoadableModel(false) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected Search load() {
+ List availableDefs = initSearchableItems(def);
+
+ Search search = new Search(def.getCompileTimeClass(), availableDefs);
+ return search;
+ }
+
+
+ };
+ }
+
+ protected abstract List initSearchableItems(PrismContainerDefinition containerDef);
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+
+ initPaging();
+ initLayout();
+ }
+
+ private void initLayout() {
+
+ initListPanel();
+ setOutputMarkupId(true);
+
+ }
+
+ protected abstract void initPaging();
+
+ private void initListPanel() {
+ WebMarkupContainer itemsContainer = new WebMarkupContainer(ID_ITEMS);
+ itemsContainer.setOutputMarkupId(true);
+ itemsContainer.setOutputMarkupPlaceholderTag(true);
+ add(itemsContainer);
+
+ BoxedTablePanel> itemTable = initItemTable();
+ itemTable.setOutputMarkupId(true);
+ itemTable.setOutputMarkupPlaceholderTag(true);
+ itemsContainer.add(itemTable);
+
+ WebMarkupContainer searchContainer = getSearchPanel(ID_SEARCH_ITEM_PANEL);
+ searchContainer.setOutputMarkupId(true);
+ searchContainer.setOutputMarkupPlaceholderTag(true);
+ itemsContainer.add(searchContainer);
+ itemsContainer.add(new VisibleEnableBehaviour() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean isVisible() {
+ return isListPanelVisible();
+ }
+ });
+
+ }
+
+ protected boolean isListPanelVisible() {
+ return true;
+ }
+
+ protected WebMarkupContainer getSearchPanel(String contentAreaId) {
+ return new WebMarkupContainer(contentAreaId);
+ }
+
+ protected abstract boolean enableActionNewObject();
+
+ protected IModel>> loadValuesModel() {
+ if (getModel() == null) {
+ LOGGER.info("Parent model is null. Cannot load model for values for table: {}", tableId.name());
+ }
+
+ return new PropertyModel<>(getModel(), "values");
+ }
+
+ private BoxedTablePanel> initItemTable() {
+
+ MultivalueContainerListDataProvider containersProvider = new MultivalueContainerListDataProvider(this, loadValuesModel()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void saveProviderPaging(ObjectQuery query, ObjectPaging paging) {
+ pageStorage.setPaging(paging);
+ }
+
+ @Override
+ public ObjectQuery getQuery() {
+ return MultivalueContainerListPanel.this.createProviderQuery();
+ }
+
+ @Override
+ protected List> searchThroughList() {
+ List> resultList = super.searchThroughList();
+ return postSearch(resultList);
+ }
+
+ };
+
+ List, String>> columns = createColumns();
+
+ int itemPerPage = (int) getPageBase().getItemsPerPage(tableId);
+ BoxedTablePanel> itemTable = new BoxedTablePanel>(ID_ITEMS_TABLE,
+ containersProvider, columns, tableId, itemPerPage) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected WebMarkupContainer createHeader(String headerId) {
+ return MultivalueContainerListPanel.this.initSearch(headerId);
+ }
+
+ @Override
+ public int getItemsPerPage() {
+ return getPageBase().getSessionStorage().getUserProfile().getTables()
+ .get(getTableId());
+ }
+
+ @Override
+ protected Item> customizeNewRowItem(Item> item,
+ IModel> model) {
+ item.add(AttributeModifier.append("class", new IModel() {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getObject() {
+ return GuiImplUtil.getObjectStatus(model.getObject());
+ }
+ }));
+ return item;
+ }
+
+ @Override
+ protected WebMarkupContainer createButtonToolbar(String id) {
+ return initButtonToolbar(id);
+ }
+
+ };
+ itemTable.setOutputMarkupId(true);
+ itemTable.setCurrentPage(pageStorage != null ? pageStorage.getPaging() : null);
+ return itemTable;
+
+ }
+
+ protected WebMarkupContainer initButtonToolbar(String id) {
+ return getNewItemButton(id);
+ }
+
+ protected List createNewButtonDescription() {
+ return null;
+ }
+
+
+ public MultiCompositedButtonPanel getNewItemButton(String id) {
+ MultiCompositedButtonPanel newObjectIcon =
+ new MultiCompositedButtonPanel(id, createNewButtonDescription()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void buttonClickPerformed(AjaxRequestTarget target, AssignmentObjectRelation relationSepc, CompiledObjectCollectionView collectionViews) {
+ newItemPerformed(target, relationSepc);
+ }
+
+ @Override
+ protected boolean isDefaultButtonVisible(){
+ return getNewObjectGenericButtonVisibility();
+ }
+
+ @Override
+ protected DisplayType getMainButtonDisplayType() {
+ return getNewObjectButtonDisplayType();
+ }
+
+ @Override
+ protected DisplayType getDefaultObjectButtonDisplayType() {
+ return getNewObjectButtonDisplayType();
+ }
+ };
+ newObjectIcon.add(AttributeModifier.append("class", "btn-group btn-margin-right"));
+ newObjectIcon.add(new VisibleEnableBehaviour() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean isVisible() {
+ return enableActionNewObject();
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return isNewObjectButtonEnabled();
+ }
+ });
+// newObjectIcon.add(AttributeModifier.append("class", createStyleClassModelForNewObjectIcon()));
+ return newObjectIcon;
+ }
+
+ protected boolean isNewObjectButtonEnabled(){
+ return true;
+ }
+
+
+ protected boolean getNewObjectGenericButtonVisibility(){
+ return true;
+ }
+
+
+ protected DisplayType getNewObjectButtonDisplayType(){
+ return WebComponentUtil.createDisplayType(GuiStyleConstants.CLASS_ADD_NEW_OBJECT, "green", createStringResource("MainObjectListPanel.newObject").getString());
+ }
+
+
+ protected WebMarkupContainer initSearch(String headerId) {
+ SearchFormPanel searchPanel = new SearchFormPanel(headerId, searchModel) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
+ MultivalueContainerListPanel.this.searchPerformed(query, target);
+ }
+ };
+ searchPanel.add(new VisibleBehaviour(() -> isSearchEnabled()));
+ return searchPanel;
+ }
+
+ protected boolean isSearchEnabled(){
+ return true;
+ }
+
+ private void searchPerformed(ObjectQuery query, AjaxRequestTarget target) {
+ Table table = getItemTable();
+ table.setCurrentPage(null);
+ target.add((Component) table);
+ target.add(getPageBase().getFeedbackPanel());
+
+ }
+
+ private ObjectQuery getQuery() {
+ Search search = searchModel.getObject();
+ ObjectQuery query = search.createObjectQuery(getPageBase().getPrismContext());
+ return query;
+ }
+
+ private MultivalueContainerListDataProvider getDataProvider() {
+ return (MultivalueContainerListDataProvider) getItemTable().getDataTable().getDataProvider();
+ }
+
+
+ protected IModel createStyleClassModelForNewObjectIcon() {
+ return new IModel() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getObject() {
+ return "btn btn-success btn-sm";
+ }
+ };
+ }
+
+ protected abstract List> postSearch(List> items);
+
+ private ObjectQuery createProviderQuery() {
+ ObjectQuery searchQuery = isSearchEnabled() ? getQuery() : null;
+
+ ObjectQuery customQuery = createQuery();
+
+ if (searchQuery != null && searchQuery.getFilter() != null) {
+ if (customQuery != null && customQuery.getFilter() != null) {
+ return getPrismContext().queryFactory().createQuery(getPrismContext().queryFactory().createAnd(customQuery.getFilter(), searchQuery.getFilter()));
+ }
+ return searchQuery;
+
+ }
+ return customQuery;
+ }
+
+ protected abstract ObjectQuery createQuery();
+
+ protected abstract List, String>> createColumns();
+
+// protected void newItemPerformed(AjaxRequestTarget target){}
+
+ protected void newItemPerformed(AjaxRequestTarget target, AssignmentObjectRelation influencingObject){}
+
+ public BoxedTablePanel> getItemTable() {
+ return (BoxedTablePanel>) get(createComponentPath(ID_ITEMS, ID_ITEMS_TABLE));
+ }
+
+ public void refreshTable(AjaxRequestTarget ajaxRequestTarget) {
+ ajaxRequestTarget.add(getItemContainer().addOrReplace(initItemTable()));
+ }
+
+ public WebMarkupContainer getItemContainer() {
+ return (WebMarkupContainer) get(ID_ITEMS);
+ }
+
+ public PrismObject getFocusObject(){
+ AssignmentHolderTypeMainPanel mainPanel = findParent(AssignmentHolderTypeMainPanel.class);
+ if (mainPanel != null) {
+ return mainPanel.getObjectWrapper().getObject();
+ }
+ return null;
+ }
+
+ public List> getSelectedItems() {
+ BoxedTablePanel> itemsTable = getItemTable();
+ MultivalueContainerListDataProvider itemsProvider = (MultivalueContainerListDataProvider) itemsTable.getDataTable()
+ .getDataProvider();
+ return itemsProvider.getAvailableData().stream().filter(a -> a.isSelected()).collect(Collectors.toList());
+ }
+
+ public void reloadSavePreviewButtons(AjaxRequestTarget target){
+ FocusMainPanel mainPanel = findParent(FocusMainPanel.class);
+ if (mainPanel != null) {
+ mainPanel.reloadSavePreviewButtons(target);
+ }
+ }
+
+ public List> getPerformedSelectedItems(IModel> rowModel) {
+ List> performedItems = new ArrayList>();
+ List> listItems = getSelectedItems();
+ if((listItems!= null && !listItems.isEmpty()) || rowModel != null) {
+ if(rowModel == null) {
+ performedItems.addAll(listItems);
+ listItems.forEach(itemConfigurationTypeContainerValueWrapper -> {
+ itemConfigurationTypeContainerValueWrapper.setSelected(false);
+ });
+ } else {
+ performedItems.add(rowModel.getObject());
+ rowModel.getObject().setSelected(false);
+ }
+ }
+ return performedItems;
+ }
+
+ //TODO generalize for properties
+ public PrismContainerValueWrapper createNewItemContainerValueWrapper(
+ PrismContainerValue newItem,
+ PrismContainerWrapper model, AjaxRequestTarget target) {
+
+ return WebPrismUtil.createNewValueWrapper(model, newItem, getPageBase(), target);
+
+ }
+
+ public ColumnMenuAction> createDeleteColumnAction() {
+ return new ColumnMenuAction>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ if (getRowModel() == null) {
+ deleteItemPerformed(target, getSelectedItems());
+ } else {
+ List> toDelete = new ArrayList<>();
+ toDelete.add(getRowModel().getObject());
+ deleteItemPerformed(target, toDelete);
+ }
+ }
+ };
+ }
+
+ public ColumnMenuAction> createEditColumnAction() {
+ return new ColumnMenuAction>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ itemPerformedForDefaultAction(target, getRowModel(), getSelectedItems());
+ }
+ };
+ }
+
+ protected abstract void itemPerformedForDefaultAction(AjaxRequestTarget target, IModel> rowModel, List> listItems);
+
+ protected void deleteItemPerformed(AjaxRequestTarget target, List> toDelete) {
+ if (toDelete == null || toDelete.isEmpty()){
+ warn(createStringResource("MultivalueContainerListPanel.message.noItemsSelected").getString());
+ target.add(getPageBase().getFeedbackPanel());
+ return;
+ }
+ toDelete.forEach(value -> {
+ if (value.getStatus() == ValueStatus.ADDED) {
+ PrismContainerWrapper wrapper = getModelObject();
+ wrapper.getValues().remove(value);
+ } else {
+ value.setStatus(ValueStatus.DELETED);
+ }
+ value.setSelected(false);
+ });
+ refreshTable(target);
+ reloadSavePreviewButtons(target);
+ }
+
+ public List getDefaultMenuActions() {
+ List menuItems = new ArrayList<>();
+ menuItems.add(new ButtonInlineMenuItem(createStringResource("pageAdminFocus.button.delete")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(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 CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(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/NotificationConfigTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/NotificationConfigTabPanel.java
index 8bdbfa567ef..706659e0c1d 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
@@ -10,6 +10,8 @@
import java.util.List;
import java.util.stream.Collectors;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
+
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
@@ -445,8 +447,8 @@ private List getMenuActions() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
@Override
@@ -459,8 +461,8 @@ public InlineMenuItemAction initAction() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_EDIT_MENU_ITEM);
}
@Override
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 a426224b080..82e0c2bea8a 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
@@ -848,8 +848,8 @@ private List getAssignmentMenu
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
@Override
@@ -866,8 +866,8 @@ public InlineMenuItemAction initAction() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
@Override
@@ -881,8 +881,8 @@ public InlineMenuItemAction initAction() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_EDIT_MENU_ITEM);
}
@Override
@@ -894,8 +894,8 @@ public InlineMenuItemAction initAction() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_NAVIGATE_ARROW;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_NAVIGATE_ARROW);
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java
index 7685eb6bd70..6fc90113b5a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java
@@ -9,6 +9,8 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.AjaxIconButton;
+
+import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.repeater.RepeatingView;
@@ -47,14 +49,14 @@ private void initLayout() {
add(buttons);
for (int id = 0; id < numberOfButtons; id++) {
- AjaxIconButton button = createButton(id, buttons.newChildId(), getModel());
+ Component button = createButton(id, buttons.newChildId(), getModel());
if (button != null) {
buttons.add(button);
}
}
}
- protected AjaxIconButton createButton(int index, String componentId, IModel model) {
+ protected Component createButton(int index, String componentId, IModel model) {
return null;
}
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 b841b11f883..f015425bb0b 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
@@ -8,6 +8,8 @@
package com.evolveum.midpoint.web.component.data.column;
import com.evolveum.midpoint.gui.api.page.PageBase;
+import com.evolveum.midpoint.gui.impl.component.AjaxCompositedIconButton;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.data.MenuMultiButtonPanel;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
@@ -20,6 +22,7 @@
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AttributeAppender;
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;
@@ -112,16 +115,18 @@ private Component getPanel(String componentId, IModel rowModel,
private static final long serialVersionUID = 1L;
@Override
- protected AjaxIconButton createButton(int index, String componentId, IModel model) {
- AjaxIconButton btn = buildDefaultButton(componentId,
- new Model<>(getButtonIconCss(index, buttonMenuItems)),
- new Model<>(getButtonTitle(index, buttonMenuItems)),
- new Model<>(getButtonCssClass()),
- target -> {
- setRowModelToButtonAction(rowModel, buttonMenuItems);
- buttonMenuItemClickPerformed(index, buttonMenuItems, target);
- });
- btn.showTitleAsLabel(false);
+ protected Component createButton(int index, String componentId, IModel model) {
+ CompositedIconBuilder builder = getIconCompositedBuilder(index, buttonMenuItems);
+ AjaxCompositedIconButton btn = new AjaxCompositedIconButton(componentId, builder.build(),
+ Model.of(getButtonTitle(index, buttonMenuItems))) {
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ setRowModelToButtonAction(rowModel, buttonMenuItems);
+ buttonMenuItemClickPerformed(index, buttonMenuItems, target);
+ }
+ };
+
+ btn.add(AttributeAppender.append("class", " btn btn-default btn-xs"));
btn.add(new EnableBehaviour(() -> isButtonMenuItemEnabled(model)));
return btn;
@@ -209,11 +214,11 @@ private boolean isButtonEnabled(int id, List buttonMenuIte
return buttonMenuItems.get(id).getEnabled().getObject().booleanValue();
}
- private String getButtonIconCss(int id, List buttonMenuItems) {
+ private CompositedIconBuilder getIconCompositedBuilder(int id, List buttonMenuItems) {
if (id >= buttonMenuItems.size()){
return null;
}
- return buttonMenuItems.get(id).getButtonIconCssClass() + " fa-fw";
+ return buttonMenuItems.get(id).getIconCompositedBuilder(); // + " fa-fw";
}
private String getButtonTitle(int id, List buttonMenuItems) {
@@ -287,8 +292,8 @@ public InlineMenuItemAction initAction() {
}
@Override
- public String getButtonIconCssClass() {
- return ((ButtonInlineMenuItem) item).getButtonIconCssClass();
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return ((ButtonInlineMenuItem) item).getIconCompositedBuilder();
}
public IModel getConfirmationMessageModel() {
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
index f51a2150af3..1bbab47b975 100644
--- 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
@@ -1,25 +1,36 @@
-/*
- * Copyright (c) 2010-2018 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-package com.evolveum.midpoint.web.component.menu.cog;
-
-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();
-}
+/*
+ * Copyright (c) 2010-2018 Evolveum and contributors
+ *
+ * This work is dual-licensed under the Apache License 2.0
+ * and European Union Public License. See LICENSE file for details.
+ */
+package com.evolveum.midpoint.web.component.menu.cog;
+
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
+
+import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
+
+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 CompositedIconBuilder getIconCompositedBuilder();
+
+ protected CompositedIconBuilder getDefaultCompositedIconBuilder(String basicIcon){
+ CompositedIconBuilder builder = new CompositedIconBuilder();
+ builder.setBasicIcon(basicIcon, IconCssStyle.IN_ROW_STYLE);
+ return builder;
+ }
+
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusPersonasTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusPersonasTabPanel.java
index ca12c55bcdd..b8b911ea896 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusPersonasTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusPersonasTabPanel.java
@@ -9,6 +9,7 @@
import java.util.ArrayList;
import java.util.List;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
@@ -76,8 +77,8 @@ protected List createInlineMenu() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_NAVIGATE_ARROW;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_NAVIGATE_ARROW);
}
@Override
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 232e26a056d..98bf4ef2411 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
@@ -9,14 +9,12 @@
import java.util.ArrayList;
import java.util.List;
-import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.web.component.search.SearchFactory;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -52,7 +50,6 @@
import com.evolveum.midpoint.gui.impl.component.data.column.AbstractItemWrapperColumn.ColumnType;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
-import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
import com.evolveum.midpoint.gui.impl.component.data.column.CompositedIconColumn;
import com.evolveum.midpoint.gui.impl.component.data.column.PrismContainerWrapperColumn;
import com.evolveum.midpoint.gui.impl.factory.ItemRealValueModel;
@@ -63,16 +60,13 @@
import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper;
import com.evolveum.midpoint.gui.impl.prism.ShadowPanel;
-import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
-import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismPropertyValue;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.PrismValue;
-import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
@@ -91,7 +85,6 @@
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.search.SearchItemDefinition;
-import com.evolveum.midpoint.web.model.PrismPropertyWrapperModel;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
import com.evolveum.midpoint.web.page.admin.users.dto.UserDtoStatus;
import com.evolveum.midpoint.web.session.PageStorage;
@@ -505,8 +498,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass() {
- return "fa fa-check";
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder("fa fa-check");
}
};
items.add(item);
@@ -591,8 +584,8 @@ public void onClick(AjaxRequestTarget target) {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_EDIT_MENU_ITEM);
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java
index f11ff8f9712..6549772150a 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java
@@ -10,6 +10,7 @@
import java.util.List;
+import org.apache.wicket.Component;
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.AbstractColumn;
@@ -95,7 +96,7 @@ public void populateItem(Item> cellItem, St
private static final long serialVersionUID = 1L;
@Override
- protected AjaxIconButton createButton(int index, String componentId, IModel model) {
+ protected Component createButton(int index, String componentId, IModel model) {
AjaxIconButton btn = null;
switch (index) {
case 0:
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 64cc992b500..cf866455e5e 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
@@ -11,6 +11,8 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
+import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.result.OperationResult;
@@ -25,8 +27,11 @@
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectList;
+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.xml.ns._public.common.common_3.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
+
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;
@@ -73,7 +78,7 @@ public FocusListInlineMenuHelper(@NotNull Class objectClass, @NotNull PageBas
public List createRowActions() {
List menu = new ArrayList<>();
- menu.add(new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable")) {
+ ButtonInlineMenuItem enableItem = new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable")) {
private static final long serialVersionUID = 1L;
@Override
@@ -93,8 +98,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_OBJECT_USER_ICON;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_OBJECT_USER_ICON);
}
@Override
@@ -103,9 +108,11 @@ public IModel getConfirmationMessageModel(){
return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}
- });
+ };
+ enableItem.setVisibilityChecker(FocusListInlineMenuHelper::isObjectDisabled);
+ menu.add(enableItem);
- menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable")) {
+ ButtonInlineMenuItem disableItem = new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable")) {
private static final long serialVersionUID = 1L;
@Override
@@ -130,7 +137,15 @@ public IModel getConfirmationMessageModel(){
return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}
- });
+ @Override
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ CompositedIconBuilder builder = getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_OBJECT_USER_ICON);
+ builder.appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_BAN), IconCssStyle.BOTTOM_RIGHT_STYLE);
+ return builder; }
+
+ };
+ disableItem.setVisibilityChecker(FocusListInlineMenuHelper::isObjectEnabled);
+ menu.add(disableItem);
menu.add(new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.reconcile")) {
private static final long serialVersionUID = 1L;
@@ -152,8 +167,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM);
}
@Override
@@ -320,6 +335,21 @@ private List getObjectsToActOn(AjaxRequestTarget target, F selectedObject) {
}
}
+ public static boolean isObjectEnabled(IModel> rowModel, boolean isHeader) {
+ if (rowModel == null || isHeader) {
+ return true;
+ }
+ FocusType focusObject = ((IModel>) rowModel).getObject().getValue();
+ return focusObject != null && ActivationStatusType.ENABLED.equals(focusObject.getActivation().getEffectiveStatus());
+ }
+
+ public static boolean isObjectDisabled(IModel> rowModel, boolean isHeader) {
+ if (rowModel == null || isHeader) {
+ return true;
+ }
+ FocusType focusObject = ((IModel>) rowModel).getObject().getValue();
+ return focusObject != null && ActivationStatusType.DISABLED.equals(focusObject.getActivation().getEffectiveStatus());
+ }
protected boolean isShowConfirmationDialog(ColumnMenuAction action){
return false;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsPanel.java
index fc2be5d62bc..9f2094cca37 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/CaseWorkItemsPanel.java
@@ -11,17 +11,15 @@
import com.evolveum.midpoint.gui.api.component.ContainerableListPanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.ObjectFilter;
-import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.CaseTypeUtil;
-import com.evolveum.midpoint.schema.util.WorkItemId;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.data.column.*;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
@@ -31,7 +29,6 @@
import com.evolveum.midpoint.web.page.admin.workflow.PageAttorneySelection;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
-import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.wf.util.ApprovalUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
@@ -220,8 +217,8 @@ public IModel getConfirmationMessageModel(){
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_ICON_NO_OBJECTS;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_ICON_NO_OBJECTS);
}
});
menu.add(new ButtonInlineMenuItem(createStringResource("pageWorkItem.button.approve")) {
@@ -239,8 +236,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_ICON_ACTIVATION_ACTIVE;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_ICON_ACTIVATION_ACTIVE);
}
@Override
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 48c33395eb8..7628e8506ce 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
@@ -9,6 +9,7 @@
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.prism.query.ObjectOrdering;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
@@ -166,8 +167,8 @@ public IModel getEnabled() {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_STOP_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_STOP_MENU_ITEM);
}
@Override
@@ -200,8 +201,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageWorkItemsClaimable.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageWorkItemsClaimable.java
index 28938e41edd..d05c264de13 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageWorkItemsClaimable.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageWorkItemsClaimable.java
@@ -10,6 +10,7 @@
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.ContainerableListPanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.result.OperationResult;
@@ -104,8 +105,8 @@ public IModel getConfirmationMessageModel(){
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_ICON_CLAIM;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_ICON_CLAIM);
}
});
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java
index c87fe5733c9..9de45786370 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java
@@ -323,7 +323,7 @@ public void populateItem(Item> cellItem, String comp
private static final long serialVersionUID = 1L;
@Override
- protected AjaxIconButton createButton(int index, String componentId, IModel model) {
+ protected Component createButton(int index, String componentId, IModel model) {
AjaxIconButton btn = null;
if (index < responses) {
btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)),
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 e8e5753cd39..8349a26c08c 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
@@ -363,7 +363,7 @@ public void populateItem(Item> cellItem, String
private static final long serialVersionUID = 1L;
@Override
- protected AjaxIconButton createButton(int index, String componentId, IModel model) {
+ protected Component createButton(int index, String componentId, IModel model) {
AjaxIconButton btn;
if (index < responses) {
btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)),
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java
index 942a0418275..0b073a404f0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java
@@ -37,6 +37,8 @@
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationDefinitionType;
+
+import org.apache.wicket.Component;
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.AbstractColumn;
@@ -162,7 +164,7 @@ public void populateItem(Item> model) {
+ protected Component createButton(int index, String componentId, IModel> model) {
AjaxIconButton btn = null;
switch (index) {
case 0:
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/InternalsLoggedInUsersPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/InternalsLoggedInUsersPanel.java
index d3231c5628d..0f6647b18a9 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/InternalsLoggedInUsersPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/InternalsLoggedInUsersPanel.java
@@ -11,6 +11,7 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider;
@@ -127,8 +128,8 @@ private List initInlineMenu() {
private static final long serialVersionUID = 1L;
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_ICON_SIGN_OUT;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_ICON_SIGN_OUT);
}
@Override
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 44251e00088..299766ea48a 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
@@ -20,14 +20,14 @@
import javax.xml.namespace.QName;
+import com.evolveum.midpoint.gui.api.GuiStyleConstants;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectList;
-import com.evolveum.midpoint.web.page.admin.configuration.PageDebugView;
-import com.evolveum.midpoint.web.page.admin.configuration.PageEvaluateMapping;
import com.evolveum.midpoint.web.page.admin.configuration.PageTraceView;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
@@ -357,8 +357,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass() {
- return "fa fa-minus";
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder("fa fa-minus");
}
});
@@ -391,8 +391,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass() {
- return "fa fa-download";
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder("fa fa-download");
}
@Override
@@ -425,8 +425,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass() {
- return "fa fa-eye";
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder("fa fa-eye");
}
@Override
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 e8cb34ef72b..0850372e815 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
@@ -1,245 +1,246 @@
-/*
- * Copyright (c) 2010-2017 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-
-package com.evolveum.midpoint.web.page.admin.reports;
-
-import com.evolveum.midpoint.gui.api.GuiStyleConstants;
-import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
-import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
-import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
-import com.evolveum.midpoint.prism.PrismContainer;
-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.security.api.AuthorizationConstants;
-import com.evolveum.midpoint.task.api.Task;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.web.application.AuthorizationAction;
-import com.evolveum.midpoint.web.application.PageDescriptor;
-import com.evolveum.midpoint.web.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.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.component.util.SelectableBeanImpl;
-import com.evolveum.midpoint.web.page.admin.PageAdmin;
-import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration;
-import com.evolveum.midpoint.web.page.admin.reports.component.RunReportPopupPanel;
-import com.evolveum.midpoint.web.session.UserProfileStorage;
-import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportEngineSelectionType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportParameterType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
-
-import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-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.request.mapper.parameter.PageParameters;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * @author lazyman
- */
-@PageDescriptor(
- urls = {
- @Url(mountUrl = "/admin/reports", matchUrlForSecurity = "/admin/reports")
- },
- action = {
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_ALL_URL,
- label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
- description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_URL,
- label = "PageReports.auth.reports.label",
- description = "PageReports.auth.reports.description")})
-public class PageReports extends PageAdmin {
-
- private static final Trace LOGGER = TraceManager.getTrace(PageReports.class);
-
- private static final String DOT_CLASS = PageReports.class.getName() + ".";
- private static final String OPERATION_RUN_REPORT = DOT_CLASS + "runReport";
-
- private static final String ID_MAIN_FORM = "mainForm";
- private static final String ID_REPORTS_TABLE = "reportsTable";
-
- public PageReports() {
- initLayout();
- }
-
- private void initLayout() {
- Form mainForm = new com.evolveum.midpoint.web.component.form.Form(ID_MAIN_FORM);
- add(mainForm);
-
- MainObjectListPanel table =
- new MainObjectListPanel(ID_REPORTS_TABLE, ReportType.class, UserProfileStorage.TableId.PAGE_REPORTS,
- null) {
-
- @Override
- protected IColumn, String> createCheckboxColumn() {
- return null;
- }
-
- @Override
- public void objectDetailsPerformed(AjaxRequestTarget target, ReportType report) {
- if (report != null) {
- PageReports.this.reportDetailsPerformed(target, report.getOid());
- }
- }
-
- @Override
- protected List, String>> createColumns() {
- return PageReports.this.initColumns();
- }
-
- @Override
- protected List createInlineMenu() {
- return PageReports.this.createInlineMenu();
- }
-
- @Override
- protected void newObjectPerformed(AjaxRequestTarget target, AssignmentObjectRelation relation, CompiledObjectCollectionView collectionView) {
- navigateToNext(PageNewReport.class);
- }
- };
- table.setOutputMarkupId(true);
- mainForm.add(table);
-
- }
-
- private List, String>> initColumns() {
- List, String>> columns = new ArrayList<>();
-
- IColumn column = new PropertyColumn(createStringResource("PageReports.table.description"), "value.description");
- columns.add(column);
-
- return columns;
- }
-
- private void reportDetailsPerformed(AjaxRequestTarget target, String oid) {
- PageParameters params = new PageParameters();
- params.add(OnePageParameterEncoder.PARAMETER, oid);
- navigateToNext(PageCreatedReports.class, params);
- }
-
- private List createInlineMenu(){
- List menu = new ArrayList<>();
- 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);
- }
- };
- }
-
- @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);
- }
- };
- }
-
- @Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
- }
-
- @Override
- public boolean isHeaderMenuItem(){
- return false;
- }
- });
- return menu;
-
- }
-
- private void runConfirmPerformed(AjaxRequestTarget target, ReportType reportType, PrismContainer reportParam) {
- OperationResult result = new OperationResult(OPERATION_RUN_REPORT);
- Task task = createSimpleTask(OPERATION_RUN_REPORT);
- task.getUpdatedTaskObject().asObjectable().getAssignment()
- .add(ObjectTypeUtil.createAssignmentTo(SystemObjectsType.ARCHETYPE_REPORT_TASK.value(), ObjectTypes.ARCHETYPE, getPrismContext()));
- task.getUpdatedTaskObject().asObjectable().getArchetypeRef()
- .add(ObjectTypeUtil.createObjectRef(SystemObjectsType.ARCHETYPE_REPORT_TASK.value(), ObjectTypes.ARCHETYPE));
- try {
- getReportManager().runReport(reportType.asPrismObject(), reportParam, task, result);
- } catch (Exception ex) {
- result.recordFatalError(ex);
- } finally {
- result.computeStatusIfUnknown();
- }
-
- showResult(result);
- target.add(getFeedbackPanel(), get(createComponentPath(ID_MAIN_FORM)));
- hideMainPopup(target);
-
- }
-
- protected void runReportPerformed(AjaxRequestTarget target, ReportType report) {
-
- if(report.getReportEngine() != null && report.getReportEngine().equals(ReportEngineSelectionType.DASHBOARD)) {
- runConfirmPerformed(target, report, null);
- return;
- }
-
- RunReportPopupPanel runReportPopupPanel = new RunReportPopupPanel(getMainPopupBodyId(), report) {
-
- private static final long serialVersionUID = 1L;
-
- protected void runConfirmPerformed(AjaxRequestTarget target, ReportType reportType, PrismContainer reportParam) {
- PageReports.this.runConfirmPerformed(target, reportType, reportParam);
- hideMainPopup(target);
-
- }
- };
- showMainPopup(runReportPopupPanel, target);
-
- }
-
- private void configurePerformed(AjaxRequestTarget target, ReportType report) {
- PageParameters params = new PageParameters();
- params.add(OnePageParameterEncoder.PARAMETER, report.getOid());
- navigateToNext(PageReport.class, params);
- }
-
- private Table getReportTable() {
- return (Table) get(createComponentPath(ID_MAIN_FORM, ID_REPORTS_TABLE));
- }
-}
+/*
+ * Copyright (c) 2010-2017 Evolveum and contributors
+ *
+ * This work is dual-licensed under the Apache License 2.0
+ * and European Union Public License. See LICENSE file for details.
+ */
+
+package com.evolveum.midpoint.web.page.admin.reports;
+
+import com.evolveum.midpoint.gui.api.GuiStyleConstants;
+import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
+import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
+import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
+import com.evolveum.midpoint.prism.PrismContainer;
+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.security.api.AuthorizationConstants;
+import com.evolveum.midpoint.task.api.Task;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.web.application.AuthorizationAction;
+import com.evolveum.midpoint.web.application.PageDescriptor;
+import com.evolveum.midpoint.web.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.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.component.util.SelectableBeanImpl;
+import com.evolveum.midpoint.web.page.admin.PageAdmin;
+import com.evolveum.midpoint.web.page.admin.configuration.PageAdminConfiguration;
+import com.evolveum.midpoint.web.page.admin.reports.component.RunReportPopupPanel;
+import com.evolveum.midpoint.web.session.UserProfileStorage;
+import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportEngineSelectionType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportParameterType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ReportType;
+
+import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+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.request.mapper.parameter.PageParameters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @author lazyman
+ */
+@PageDescriptor(
+ urls = {
+ @Url(mountUrl = "/admin/reports", matchUrlForSecurity = "/admin/reports")
+ },
+ action = {
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_ALL_URL,
+ label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
+ description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_REPORTS_URL,
+ label = "PageReports.auth.reports.label",
+ description = "PageReports.auth.reports.description")})
+public class PageReports extends PageAdmin {
+
+ private static final Trace LOGGER = TraceManager.getTrace(PageReports.class);
+
+ private static final String DOT_CLASS = PageReports.class.getName() + ".";
+ private static final String OPERATION_RUN_REPORT = DOT_CLASS + "runReport";
+
+ private static final String ID_MAIN_FORM = "mainForm";
+ private static final String ID_REPORTS_TABLE = "reportsTable";
+
+ public PageReports() {
+ initLayout();
+ }
+
+ private void initLayout() {
+ Form mainForm = new com.evolveum.midpoint.web.component.form.Form(ID_MAIN_FORM);
+ add(mainForm);
+
+ MainObjectListPanel table =
+ new MainObjectListPanel(ID_REPORTS_TABLE, ReportType.class, UserProfileStorage.TableId.PAGE_REPORTS,
+ null) {
+
+ @Override
+ protected IColumn, String> createCheckboxColumn() {
+ return null;
+ }
+
+ @Override
+ public void objectDetailsPerformed(AjaxRequestTarget target, ReportType report) {
+ if (report != null) {
+ PageReports.this.reportDetailsPerformed(target, report.getOid());
+ }
+ }
+
+ @Override
+ protected List, String>> createColumns() {
+ return PageReports.this.initColumns();
+ }
+
+ @Override
+ protected List createInlineMenu() {
+ return PageReports.this.createInlineMenu();
+ }
+
+ @Override
+ protected void newObjectPerformed(AjaxRequestTarget target, AssignmentObjectRelation relation, CompiledObjectCollectionView collectionView) {
+ navigateToNext(PageNewReport.class);
+ }
+ };
+ table.setOutputMarkupId(true);
+ mainForm.add(table);
+
+ }
+
+ private List, String>> initColumns() {
+ List, String>> columns = new ArrayList<>();
+
+ IColumn column = new PropertyColumn(createStringResource("PageReports.table.description"), "value.description");
+ columns.add(column);
+
+ return columns;
+ }
+
+ private void reportDetailsPerformed(AjaxRequestTarget target, String oid) {
+ PageParameters params = new PageParameters();
+ params.add(OnePageParameterEncoder.PARAMETER, oid);
+ navigateToNext(PageCreatedReports.class, params);
+ }
+
+ private List createInlineMenu(){
+ List menu = new ArrayList<>();
+ 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);
+ }
+ };
+ }
+
+ @Override
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(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);
+ }
+ };
+ }
+
+ @Override
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_EDIT_MENU_ITEM);
+ }
+
+ @Override
+ public boolean isHeaderMenuItem(){
+ return false;
+ }
+ });
+ return menu;
+
+ }
+
+ private void runConfirmPerformed(AjaxRequestTarget target, ReportType reportType, PrismContainer reportParam) {
+ OperationResult result = new OperationResult(OPERATION_RUN_REPORT);
+ Task task = createSimpleTask(OPERATION_RUN_REPORT);
+ task.getUpdatedTaskObject().asObjectable().getAssignment()
+ .add(ObjectTypeUtil.createAssignmentTo(SystemObjectsType.ARCHETYPE_REPORT_TASK.value(), ObjectTypes.ARCHETYPE, getPrismContext()));
+ task.getUpdatedTaskObject().asObjectable().getArchetypeRef()
+ .add(ObjectTypeUtil.createObjectRef(SystemObjectsType.ARCHETYPE_REPORT_TASK.value(), ObjectTypes.ARCHETYPE));
+ try {
+ getReportManager().runReport(reportType.asPrismObject(), reportParam, task, result);
+ } catch (Exception ex) {
+ result.recordFatalError(ex);
+ } finally {
+ result.computeStatusIfUnknown();
+ }
+
+ showResult(result);
+ target.add(getFeedbackPanel(), get(createComponentPath(ID_MAIN_FORM)));
+ hideMainPopup(target);
+
+ }
+
+ protected void runReportPerformed(AjaxRequestTarget target, ReportType report) {
+
+ if(report.getReportEngine() != null && report.getReportEngine().equals(ReportEngineSelectionType.DASHBOARD)) {
+ runConfirmPerformed(target, report, null);
+ return;
+ }
+
+ RunReportPopupPanel runReportPopupPanel = new RunReportPopupPanel(getMainPopupBodyId(), report) {
+
+ private static final long serialVersionUID = 1L;
+
+ protected void runConfirmPerformed(AjaxRequestTarget target, ReportType reportType, PrismContainer reportParam) {
+ PageReports.this.runConfirmPerformed(target, reportType, reportParam);
+ hideMainPopup(target);
+
+ }
+ };
+ showMainPopup(runReportPopupPanel, target);
+
+ }
+
+ private void configurePerformed(AjaxRequestTarget target, ReportType report) {
+ PageParameters params = new PageParameters();
+ params.add(OnePageParameterEncoder.PARAMETER, report.getOid());
+ navigateToNext(PageReport.class, params);
+ }
+
+ private Table getReportTable() {
+ return (Table) get(createComponentPath(ID_MAIN_FORM, ID_REPORTS_TABLE));
+ }
+}
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 62d254cb6b8..f8e259f64d1 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
@@ -11,17 +11,14 @@
import java.util.Collection;
import java.util.List;
-import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.web.application.Url;
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.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectList;
-import com.evolveum.midpoint.web.session.PageStorage;
-import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
@@ -160,8 +157,8 @@ public boolean isHeaderMenuItem(){
}
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_TEST_CONNECTION_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_TEST_CONNECTION_MENU_ITEM);
}
});
@@ -187,8 +184,8 @@ public boolean isHeaderMenuItem(){
}
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_EDIT_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_EDIT_MENU_ITEM);
}
});
@@ -257,8 +254,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_DELETE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
});
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 d0f79b92a49..4c93e486028 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
@@ -12,6 +12,7 @@
import com.evolveum.midpoint.gui.api.component.PendingOperationPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
+import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.delta.*;
import com.evolveum.midpoint.prism.path.ItemPath;
@@ -42,7 +43,6 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;
-import org.apache.wicket.model.util.ListModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
@@ -850,8 +850,8 @@ public void onSubmit(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_IMPORT_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_IMPORT_MENU_ITEM);
}
});
@@ -907,8 +907,8 @@ protected void onSelectPerformed(AjaxRequestTarget target, FocusType focus) {
}
@Override
- public String getButtonIconCssClass(){
- return GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder(){
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM);
}
@Override
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 9220024ad29..1c19f036bcb 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
@@ -81,7 +81,6 @@
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.midpoint.web.component.search.SearchFactory;
-import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.ChooseTypePanel;
import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto;
@@ -442,8 +441,8 @@ public void onClick(AjaxRequestTarget target) {
}
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_UNASSIGN;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_UNASSIGN);
}
});
}
@@ -533,8 +532,8 @@ public void onClick(AjaxRequestTarget target) {
// }
@Override
- public String getButtonIconCssClass() {
- return GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM;
+ public CompositedIconBuilder getIconCompositedBuilder() {
+ return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM);
}
});
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageNodes.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageNodes.java
index 93719092fa5..9ba776e6164 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageNodes.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageNodes.java
@@ -1,487 +1,489 @@
-/*
- * Copyright (c) 2020 Evolveum and contributors
- *
- * This work is dual-licensed under the Apache License 2.0
- * and European Union Public License. See LICENSE file for details.
- */
-
-package com.evolveum.midpoint.web.page.admin.server;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.xml.datatype.XMLGregorianCalendar;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DurationFormatUtils;
-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.AbstractColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-
-import com.evolveum.midpoint.gui.api.GuiStyleConstants;
-import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.prism.delta.ObjectDelta;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.schema.result.OperationResultStatus;
-import com.evolveum.midpoint.security.api.AuthorizationConstants;
-import com.evolveum.midpoint.task.api.Task;
-import com.evolveum.midpoint.util.MiscUtil;
-import com.evolveum.midpoint.util.exception.*;
-import com.evolveum.midpoint.web.application.AuthorizationAction;
-import com.evolveum.midpoint.web.application.PageDescriptor;
-import com.evolveum.midpoint.web.application.Url;
-import com.evolveum.midpoint.web.component.data.column.CheckBoxColumn;
-import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
-import com.evolveum.midpoint.web.component.data.column.EnumPropertyColumn;
-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.component.util.SelectableBeanImpl;
-import com.evolveum.midpoint.web.page.admin.PageAdmin;
-import com.evolveum.midpoint.web.session.UserProfileStorage;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-
-@PageDescriptor(
- urls = {
- @Url(mountUrl = "/admin/nodes", matchUrlForSecurity = "/admin/nodes")
- },
- action = {
- @AuthorizationAction(actionUri = PageAdminTasks.AUTHORIZATION_TASKS_ALL,
- label = PageAdminTasks.AUTH_TASKS_ALL_LABEL,
- description = PageAdminTasks.AUTH_TASKS_ALL_DESCRIPTION),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_NODES_URL,
- label = "PageNodes.auth.nodes.label",
- description = "PageNodes.auth.nodes.description")})
-public class PageNodes extends PageAdmin {
-
- public static final long WAIT_FOR_TASK_STOP = 2000L;
- private static final String ID_TABLE = "table";
- private static final String DOT_CLASS = PageNodes.class.getName() + ".";
- private static final String OPERATION_DELETE_NODES = DOT_CLASS + "deleteNodes";
- private static final String OPERATION_START_SCHEDULERS = DOT_CLASS + "startSchedulers";
- private static final String OPERATION_STOP_SCHEDULERS_AND_TASKS = DOT_CLASS + "stopSchedulersAndTasks";
- private static final String OPERATION_STOP_SCHEDULERS = DOT_CLASS + "stopSchedulers";
-
- public PageNodes() {
- initLayout();
- }
-
-
- private void initLayout() {
- MainObjectListPanel table = new MainObjectListPanel(ID_TABLE, NodeType.class, UserProfileStorage.TableId.PAGE_TASKS_NODES_PANEL, null) {
-
- @Override
- protected void objectDetailsPerformed(AjaxRequestTarget target, NodeType object) {
- //nothing to do, details not enabled.
- }
-
- @Override
- protected boolean isObjectDetailsEnabled(IModel> rowModel) {
- return false;
- }
-
- @Override
- protected boolean isCreateNewObjectEnabled() {
- return false;
- }
-
- @Override
- protected List, String>> createColumns() {
- return initNodeColumns();
- }
-
- @Override
- protected List createInlineMenu() {
- return createNodesInlineMenu();
- }
-
- };
- table.setOutputMarkupId(true);
- add(table);
- }
-
- private List, String>> initNodeColumns() {
- List, String>> columns = new ArrayList<>();
-
- columns.add(new EnumPropertyColumn>(createStringResource("pageTasks.node.executionStatus"),
- SelectableBeanImpl.F_VALUE + "." + NodeType.F_EXECUTION_STATUS) {
-
- @SuppressWarnings("rawtypes")
- @Override
- protected String translate(Enum en) {
- return createStringResource(en).getString();
- }
- });
-
- columns.add(new CheckBoxColumn>(createStringResource("pageTasks.node.actualNode")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected IModel getEnabled(IModel> rowModel) {
- return Model.of(Boolean.FALSE);
- }
-
- @Override
- protected IModel getCheckBoxValueModel(IModel> rowModel) {
- return new IModel() {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public Boolean getObject() {
- if (getTaskManager().getNodeId() != null && rowModel != null
- && rowModel.getObject() != null && rowModel.getObject().getValue() != null
- && getTaskManager().getNodeId().equals(rowModel.getObject().getValue().getNodeIdentifier())) {
- return Boolean.TRUE;
- }
-
- return Boolean.FALSE;
- }
- };
- }
- });
-
- columns.add(new AbstractColumn, String>(createStringResource("pageTasks.node.contact")) {
-
- @Override
- public void populateItem(Item>> item, String componentId, IModel> rowModel) {
- item.add(new Label(componentId, () -> getContactLabel(rowModel)));
- }
- });
-
- columns.add(new AbstractColumn, String>(createStringResource("pageTasks.node.lastCheckInTime")) {
-
- @Override
- public void populateItem(Item>> item, String componentId,
- final IModel> rowModel) {
- item.add(new Label(componentId, (IModel