From 3dc1a2c900ed566aa55e5651a3ecf001f0fca759 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Wed, 27 Apr 2016 16:22:08 +0200 Subject: [PATCH] Resource content styles. And cleanup. Lots of cleanup. --- .../midpoint/gui/api/GuiStyleConstants.java | 5 + .../gui/api/component/ObjectListPanel.java | 14 +- .../web/component/data/BoxedTablePanel.java | 27 ++- .../certification/PageCertDefinitions.java | 8 +- .../page/admin/resources/PageResources.java | 11 +- ...cePanel.html => ResourceContentPanel.html} | 37 ++-- .../admin/resources/ResourceContentPanel.java | 180 +++++++++++++++--- .../ResourceContentRepositoryPanel.html | 25 --- .../ResourceContentRepositoryPanel.java | 5 - .../ResourceContentResourcePanel.java | 180 +----------------- .../resources/ResourceContentTabPanel.html | 44 +++-- .../resources/ResourceContentTabPanel.java | 72 +++---- .../resources/ResourceDetailsTabPanel.java | 10 +- .../admin/resources/ResourceTasksPanel.java | 44 ++--- .../web/page/admin/roles/PageRoles.java | 6 +- .../web/page/admin/services/PageServices.java | 13 +- .../web/page/admin/users/PageUsers.java | 5 +- .../localization/Midpoint.properties | 1 + .../webapp/less/midpoint-theme-variables.less | 3 +- .../src/main/webapp/less/midpoint-theme.less | 45 ++++- 20 files changed, 349 insertions(+), 386 deletions(-) rename gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/{ResourceContentResourcePanel.html => ResourceContentPanel.html} (59%) delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.html diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java index f5593d22dd7..c6d69acada9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java @@ -48,6 +48,11 @@ public class GuiStyleConstants { public static final String CLASS_OBJECT_RESOURCE_BOX_CSS_CLASSES = "object-resource-box"; public static final String CLASS_OBJECT_RESOURCE_BOX_THIN_CSS_CLASSES = "object-resource-box-thin"; + public static final String CLASS_OBJECT_SHADOW_ICON = "fa fa-eye"; + public static final String CLASS_OBJECT_SHADOW_ICON_COLORED = CLASS_OBJECT_RESOURCE_ICON + " object-shadow-color"; + public static final String CLASS_OBJECT_SHADOW_BOX_CSS_CLASSES = "object-shadow-box"; + public static final String CLASS_OBJECT_SHADOW_BOX_THIN_CSS_CLASSES = "object-shadow-box-thin"; + public static final String CLASS_OBJECT_TASK_ICON = "fa fa-tasks"; public static final String CLASS_OBJECT_TASK_ICON_COLORED = CLASS_OBJECT_TASK_ICON + " object-task-color"; public static final String CLASS_OBJECT_TASK_BOX_CSS_CLASSES = "object-task-box"; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java index d551053ebbb..c4db4aeb2cd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java @@ -85,6 +85,8 @@ public abstract class ObjectListPanel extends BasePanel private TableId tableId; + private String addutionalBoxCssClasses; + public Class getType() { return type; } @@ -235,8 +237,8 @@ protected WebMarkupContainer createHeader(String headerId) { } @Override - protected String getBoxCssClasses() { - return ObjectListPanel.this.getBoxCssClasses(); + public String getAdditionalBoxCssClasses() { + return ObjectListPanel.this.getAdditionalBoxCssClasses(); } @Override @@ -258,8 +260,12 @@ protected WebMarkupContainer createButtonToolbar(String id) { return table; } - protected String getBoxCssClasses() { - return null; + public String getAdditionalBoxCssClasses() { + return addutionalBoxCssClasses; + } + + public void setAdditionalBoxCssClasses(String boxCssClasses) { + this.addutionalBoxCssClasses = boxCssClasses; } /** diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java index 4a3646262e7..f4eab09fde7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/BoxedTablePanel.java @@ -22,6 +22,7 @@ import org.apache.wicket.Component; import org.apache.wicket.MarkupContainer; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider; @@ -62,6 +63,7 @@ public class BoxedTablePanel extends BasePanel implements Table { private UserProfileStorage.TableId tableId; private boolean showPaging; + private String additionalBoxCssClasses = null; public BoxedTablePanel(String id, ISortableDataProvider provider, List> columns) { this(id, provider, columns, null, Integer.MAX_VALUE); @@ -82,10 +84,19 @@ public BoxedTablePanel(String id, ISortableDataProvider provider, List> columns, ISortableDataProvider provider, int pageSize) { WebMarkupContainer box = new WebMarkupContainer(ID_BOX); - String boxCssClasses = getBoxCssClasses(); - if (boxCssClasses != null) { - box.add(new AttributeModifier("class", boxCssClasses)); - } + box.add(new AttributeAppender("class", new AbstractReadOnlyModel() { + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + String boxCssClasses = getAdditionalBoxCssClasses(); + if (boxCssClasses == null) { + return ""; + } else { + return " " + boxCssClasses; + } + } + })); add(box); WebMarkupContainer tableContainer = new WebMarkupContainer(ID_TABLE_CONTAINER); @@ -110,8 +121,12 @@ protected Item newRowItem(String id, int index, IModel rowModel) { box.add(createFooter(ID_FOOTER)); } - protected String getBoxCssClasses() { - return null; + public String getAdditionalBoxCssClasses() { + return additionalBoxCssClasses; + } + + public void setAdditionalBoxCssClasses(String boxCssClasses) { + this.additionalBoxCssClasses = boxCssClasses; } // TODO better name? 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 b2cbe7baa0d..fc1f10d4c65 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 @@ -86,6 +86,7 @@ private void initLayout() { add(mainForm); MainObjectListPanel mainPanel = new MainObjectListPanel(ID_TABLE, AccessCertificationDefinitionType.class, TableId.PAGE_CERT_DEFINITIONS_PANEL, null, this) { + private static final long serialVersionUID = 1L; @Override protected IColumn, String> createCheckboxColumn() { @@ -111,13 +112,8 @@ protected List createInlineMenu() { protected void newObjectPerformed(AjaxRequestTarget target) { setResponsePage(PageCertDefinition.class); } - - @Override - protected String getBoxCssClasses() { - return GuiStyleConstants.CLASS_BOX + " " + GuiStyleConstants.CLASS_OBJECT_CERT_DEF_BOX_CSS_CLASSES; - } - }; + mainPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_CERT_DEF_BOX_CSS_CLASSES); mainForm.add(mainPanel); } 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 e6cd9102552..30f7a4eee51 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 @@ -152,6 +152,7 @@ private void initLayout() { MainObjectListPanel resourceListPanel = new MainObjectListPanel(ID_TABLE, ResourceType.class, TableId.TABLE_RESOURCES, options, this) { + private static final long serialVersionUID = 1L; @Override protected List createInlineMenu() { @@ -174,23 +175,21 @@ protected void newObjectPerformed(AjaxRequestTarget target) { setResponsePage(PageResourceWizard.class); } - - @Override - protected String getBoxCssClasses() { - return GuiStyleConstants.CLASS_BOX + " " + GuiStyleConstants.CLASS_OBJECT_RESOURCE_BOX_CSS_CLASSES; - } }; resourceListPanel.setOutputMarkupId(true); + resourceListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_RESOURCE_BOX_CSS_CLASSES); mainForm.add(resourceListPanel); BoxedTablePanel connectorHosts = new BoxedTablePanel(ID_CONNECTOR_TABLE, new ObjectDataProvider(PageResources.this, ConnectorHostType.class), initConnectorHostsColumns(), UserProfileStorage.TableId.PAGE_RESOURCES_CONNECTOR_HOSTS, (int) getItemsPerPage(UserProfileStorage.TableId.PAGE_RESOURCES_CONNECTOR_HOSTS)) { - + private static final long serialVersionUID = 1L; + @Override protected WebMarkupContainer createHeader(String headerId) { return new SearchFormPanel(headerId, chSearchModel) { + private static final long serialVersionUID = 1L; @Override protected void searchPerformed(ObjectQuery query, AjaxRequestTarget target) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.html similarity index 59% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.html rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.html index 829e3484288..af7155381d0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentPanel.html @@ -17,29 +17,26 @@ - -
-
- -
-
-
-
+
+
-
-
-
-
+
+
+

-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
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 ace5564a70a..f5569a7a8bb 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 @@ -23,15 +23,10 @@ import javax.xml.namespace.QName; import org.apache.commons.lang.StringUtils; -import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.Behavior; -import org.apache.wicket.event.Broadcast; -import org.apache.wicket.event.IEventSink; 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.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.panel.Panel; @@ -41,28 +36,34 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.request.component.IRequestablePage; +import org.apache.wicket.model.util.ListModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; +import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.FocusBrowserPanel; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; +import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto; +import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel; import com.evolveum.midpoint.gui.api.component.result.OpResult; import com.evolveum.midpoint.gui.api.component.result.OperationResultPanel; -import com.evolveum.midpoint.gui.api.model.LoadableModel; 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.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.PolicyViolationException; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.PrismObjectDefinition; +import com.evolveum.midpoint.prism.PrismProperty; import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.delta.ReferenceDelta; +import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.query.AndFilter; import com.evolveum.midpoint.prism.query.ObjectFilter; import com.evolveum.midpoint.prism.query.ObjectQuery; +import com.evolveum.midpoint.prism.query.RefFilter; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.RetrieveOption; import com.evolveum.midpoint.schema.SelectorOptions; @@ -73,6 +74,7 @@ import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.schema.util.ShadowUtil; import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.task.api.TaskCategory; import com.evolveum.midpoint.util.exception.CommunicationException; import com.evolveum.midpoint.util.exception.ConfigurationException; import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; @@ -84,24 +86,22 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.data.BaseSortableDataProvider; -import com.evolveum.midpoint.web.component.data.BoxedTablePanel; import com.evolveum.midpoint.web.component.data.ObjectDataProvider2; -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.ColumnTypeDto; import com.evolveum.midpoint.web.component.data.column.ColumnUtils; import com.evolveum.midpoint.web.component.data.column.InlineMenuHeaderColumn; import com.evolveum.midpoint.web.component.data.column.LinkColumn; 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.Search; -import com.evolveum.midpoint.web.component.search.SearchFormPanel; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction; import com.evolveum.midpoint.web.page.admin.resources.ResourceContentTabPanel.Operation; import com.evolveum.midpoint.web.page.admin.resources.content.PageAccount; +import com.evolveum.midpoint.web.page.admin.server.PageTaskAdd; import com.evolveum.midpoint.web.page.admin.users.PageUser; -import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; import com.evolveum.midpoint.web.util.OnePageParameterEncoder; import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType; @@ -110,8 +110,8 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; -import com.fasterxml.jackson.databind.ser.std.CollectionSerializer; /** @@ -125,6 +125,7 @@ public abstract class ResourceContentPanel extends Panel { private static final Trace LOGGER = TraceManager.getTrace(ResourceContentPanel.class); private static final String DOT_CLASS = ResourceContentTabPanel.class.getName() + "."; + private static final String OPERATION_SEARCH_TASKS_FOR_RESOURCE = DOT_CLASS + "seachTasks"; private static final String OPERATION_CHANGE_OWNER = DOT_CLASS + "changeOwner"; private static final String OPERATION_LOAD_SHADOW_OWNER = DOT_CLASS + "loadOwner"; private static final String OPERATION_UPDATE_STATUS = DOT_CLASS + "updateStatus"; @@ -133,6 +134,10 @@ public abstract class ResourceContentPanel extends Panel { private static final String ID_TABLE = "table"; private static final String ID_LABEL = "label"; + + private static final String ID_IMPORT = "import"; + private static final String ID_RECONCILIATION = "reconciliation"; + private static final String ID_LIVE_SYNC = "liveSync"; private PageBase pageBase; private ShadowKindType kind; @@ -142,6 +147,17 @@ public abstract class ResourceContentPanel extends Panel { // private LoadableModel searchModel; IModel> resourceModel; + + public ResourceContentPanel(String id, IModel> resourceModel, + QName objectClass, ShadowKindType kind, String intent, PageBase pageBase) { + super(id); + this.pageBase = pageBase; + this.kind = kind; + this.resourceModel = resourceModel; + this.intent = intent; + this.objectClass = objectClass; + initLayout(); + } public PageBase getPageBase() { return pageBase; @@ -177,17 +193,6 @@ public RefinedObjectClassDefinition getDefinitionByObjectClass() throws SchemaEx } - public ResourceContentPanel(String id, IModel> resourceModel, - QName objectClass, ShadowKindType kind, String intent, PageBase pageBase) { - super(id); - this.pageBase = pageBase; - this.kind = kind; - this.resourceModel = resourceModel; - this.intent = intent; - this.objectClass = objectClass; - initLayout(); - } - private void initLayout() { // searchModel = new LoadableModel(false) { @@ -267,6 +272,7 @@ public boolean isVisible() { return createQuery() != null; } }); + shadowListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_SHADOW_BOX_CSS_CLASSES); add(shadowListPanel); Label label = new Label(ID_LABEL, "Nothing to show. Select intent to search"); @@ -305,10 +311,134 @@ public boolean isVisible() { // }; // parentPage.getItemsPerPage(UserProfileStorage.TableId.PAGE_RESOURCE_ACCOUNTS_PANEL) // table.setOutputMarkupId(true); // add(table); + + OperationResult result = new OperationResult(OPERATION_SEARCH_TASKS_FOR_RESOURCE); + + List> tasks = WebModelServiceUtils + .searchObjects(TaskType.class, + ObjectQuery.createObjectQuery(RefFilter.createReferenceEqual(TaskType.F_OBJECT_REF, + TaskType.class, getPageBase().getPrismContext(), + getResourceModel().getObject().getOid())), + result, getPageBase()); + + List tasksForKind = getTasksForKind(tasks); + + List importTasks = new ArrayList<>(); + List syncTasks = new ArrayList<>(); + List reconTasks = new ArrayList<>(); + for (TaskType task : tasksForKind) { + if (TaskCategory.RECONCILIATION.equals(task.getCategory())) { + reconTasks.add(task); + } else if (TaskCategory.LIVE_SYNCHRONIZATION.equals(task.getCategory())) { + syncTasks.add(task); + } else if (TaskCategory.IMPORTING_ACCOUNTS.equals(task.getCategory())) { + importTasks.add(task); + } + } + + initButton(ID_IMPORT, "Import", " fa-download", TaskCategory.IMPORTING_ACCOUNTS, importTasks); + initButton(ID_RECONCILIATION, "Reconciliation", " fa-link", TaskCategory.RECONCILIATION, reconTasks); + initButton(ID_LIVE_SYNC, "Live Sync", " fa-refresh", TaskCategory.LIVE_SYNCHRONIZATION, syncTasks); + initCustomLayout(); } + private void initButton(String id, String label, String icon, final String category, + final List tasks) { + + List items = new ArrayList<>(); + + InlineMenuItem item = new InlineMenuItem( + getPageBase().createStringResource("ResourceContentResourcePanel.showExisting"), + new InlineMenuItemAction() { + + @Override + public void onClick(AjaxRequestTarget target) { + runTask(tasks, target); + } + }); + items.add(item); + + item = new InlineMenuItem(getPageBase().createStringResource("ResourceContentResourcePanel.newTask"), + new InlineMenuItemAction() { + + @Override + public void onClick(AjaxRequestTarget target) { + newTaskPerformed(category, target); + } + }); + items.add(item); + + DropdownButtonPanel button = new DropdownButtonPanel(id, + new DropdownButtonDto(String.valueOf(tasks.size()), icon, label, items)); + add(button); + + } + + private void newTaskPerformed(String category, AjaxRequestTarget target) { + TaskType taskType = new TaskType(); + PrismProperty pKind; + try { + pKind = taskType.asPrismObject().findOrCreateProperty( + new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_KIND)); + pKind.setRealValue(getKind()); + } catch (SchemaException e) { + getSession().warn("Could not set kind for new task " + e.getMessage()); + } + + PrismProperty pIntent; + try { + pIntent = taskType.asPrismObject().findOrCreateProperty( + new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_INTENT)); + pIntent.setRealValue(getIntent()); + } catch (SchemaException e) { + getSession().warn("Could not set kind for new task " + e.getMessage()); + } + + PrismObject resource = getResourceModel().getObject(); + taskType.setObjectRef(ObjectTypeUtil.createObjectRef(resource)); + + taskType.setCategory(category); + setResponsePage(new PageTaskAdd(taskType)); + ; + } + + private void runTask(List tasks, AjaxRequestTarget target) { + + ResourceTasksPanel tasksPanel = new ResourceTasksPanel(getPageBase().getMainPopupBodyId(), false, + new ListModel<>(tasks), getPageBase()); + getPageBase().showMainPopup(tasksPanel, new Model("Defined tasks"), target, 900, 500); + + } + + private List getTasksForKind(List> tasks) { + List tasksForKind = new ArrayList<>(); + for (PrismObject task : tasks) { + PrismProperty taskKind = task + .findProperty(new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_KIND)); + ShadowKindType taskKindValue = null; + if (taskKind != null) { + taskKindValue = taskKind.getRealValue(); + + PrismProperty taskIntent = task.findProperty( + new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_INTENT)); + String taskIntentValue = null; + if (taskIntent != null) { + taskIntentValue = taskIntent.getRealValue(); + } + if (StringUtils.isNotEmpty(getIntent())) { + if (getKind() == taskKindValue && getIntent().equals(taskIntentValue)) { + tasksForKind.add(task.asObjectable()); + } + } else if (getKind() == taskKindValue) { + tasksForKind.add(task.asObjectable()); + } + } + } + return tasksForKind; + } + private ObjectDataProvider2, ShadowType> initProvider(){ ObjectDataProvider2, ShadowType> provider = new ObjectDataProvider2, ShadowType>( this, ShadowType.class) { @@ -385,7 +515,9 @@ public SelectableBean createDataObjectWrapper(ShadowType obj) { // } - protected abstract void initCustomLayout(); + protected void initCustomLayout() { + // Nothing to do, for subclass extension + }; protected ObjectQuery createQuery(){ ObjectQuery baseQuery = null; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.html deleted file mode 100644 index c285eac0f85..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - -
-
- - - \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.java index bb95fa21c73..41f729575c8 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentRepositoryPanel.java @@ -38,11 +38,6 @@ public ResourceContentRepositoryPanel(String id, IModel addAdditionalOptions() { return new SelectorOptions(GetOperationOptions.createNoFetch()); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.java index d6b1f347d29..b3864b9e229 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentResourcePanel.java @@ -15,70 +15,37 @@ */ package com.evolveum.midpoint.web.page.admin.resources; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.namespace.QName; -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.util.ListModel; import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; -import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; -import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto; -import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel; import com.evolveum.midpoint.gui.api.page.PageBase; -import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.prism.ItemDefinition; -import com.evolveum.midpoint.prism.PrismContainerDefinition; -import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.PrismObjectDefinition; -import com.evolveum.midpoint.prism.PrismProperty; import com.evolveum.midpoint.prism.PrismPropertyDefinition; import com.evolveum.midpoint.prism.PrismReferenceDefinition; import com.evolveum.midpoint.prism.path.ItemPath; -import com.evolveum.midpoint.prism.query.ObjectQuery; -import com.evolveum.midpoint.prism.query.RefFilter; -import com.evolveum.midpoint.prism.schema.SchemaRegistry; import com.evolveum.midpoint.schema.GetOperationOptions; import com.evolveum.midpoint.schema.SelectorOptions; -import com.evolveum.midpoint.schema.constants.SchemaConstants; -import com.evolveum.midpoint.schema.result.OperationResult; -import com.evolveum.midpoint.schema.util.ObjectQueryUtil; -import com.evolveum.midpoint.schema.util.ObjectTypeUtil; -import com.evolveum.midpoint.task.api.TaskCategory; import com.evolveum.midpoint.util.exception.SchemaException; -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.Search; -import com.evolveum.midpoint.web.page.admin.server.PageTaskAdd; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; public class ResourceContentResourcePanel extends ResourceContentPanel { + private static final long serialVersionUID = 1L; private static final String DOT_CLASS = ResourceContentResourcePanel.class.getName() + "."; - private static final String OPERATION_SEARCH_TASKS_FOR_RESOURCE = DOT_CLASS + "seachTasks"; - - private static final String ID_IMPORT = "import"; - private static final String ID_RECONCILIATION = "reconciliation"; - private static final String ID_LIVE_SYNC = "liveSync"; - - private static final String ID_OBJECT_CLASS = "objectClass"; - private static final String ID_LABEL = "label"; - private static final String ID_ICON = "icon"; public ResourceContentResourcePanel(String id, IModel> resourceModel, QName objectClass, ShadowKindType kind, String intent, PageBase pageBase) { @@ -95,151 +62,6 @@ protected boolean isUseObjectCounting() { return false; } - @Override - protected void initCustomLayout() { - OperationResult result = new OperationResult(OPERATION_SEARCH_TASKS_FOR_RESOURCE); - - List> tasks = WebModelServiceUtils - .searchObjects(TaskType.class, - ObjectQuery.createObjectQuery(RefFilter.createReferenceEqual(TaskType.F_OBJECT_REF, - TaskType.class, getPageBase().getPrismContext(), - getResourceModel().getObject().getOid())), - result, getPageBase()); - - List tasksForKind = getTasksForKind(tasks); - - List importTasks = new ArrayList<>(); - List syncTasks = new ArrayList<>(); - List reconTasks = new ArrayList<>(); - for (TaskType task : tasksForKind) { - if (TaskCategory.RECONCILIATION.equals(task.getCategory())) { - reconTasks.add(task); - } else if (TaskCategory.LIVE_SYNCHRONIZATION.equals(task.getCategory())) { - syncTasks.add(task); - } else if (TaskCategory.IMPORTING_ACCOUNTS.equals(task.getCategory())) { - importTasks.add(task); - } - } - - initButton(ID_IMPORT, "Import", " fa-download", TaskCategory.IMPORTING_ACCOUNTS, importTasks); - initButton(ID_RECONCILIATION, "Reconciliation", " fa-link", TaskCategory.RECONCILIATION, reconTasks); - initButton(ID_LIVE_SYNC, "Live Sync", " fa-refresh", TaskCategory.LIVE_SYNCHRONIZATION, syncTasks); - - Label objectClass = new Label(ID_OBJECT_CLASS, new AbstractReadOnlyModel() { - - @Override - public String getObject() { - RefinedObjectClassDefinition ocDef; - try { - ocDef = getDefinitionByKind(); - if (ocDef != null) { - return ocDef.getObjectClassDefinition().getTypeName().getLocalPart(); - } - } catch (SchemaException e) { - } - - return "NOT FOUND"; - } - }); - add(objectClass); - - } - - private void initButton(String id, String label, String icon, final String category, - final List tasks) { - - List items = new ArrayList<>(); - - InlineMenuItem item = new InlineMenuItem( - getPageBase().createStringResource("ResourceContentResourcePanel.showExisting"), - new InlineMenuItemAction() { - - @Override - public void onClick(AjaxRequestTarget target) { - runTask(tasks, target); - } - }); - items.add(item); - - item = new InlineMenuItem(getPageBase().createStringResource("ResourceContentResourcePanel.newTask"), - new InlineMenuItemAction() { - - @Override - public void onClick(AjaxRequestTarget target) { - newTaskPerformed(category, target); - } - }); - items.add(item); - - DropdownButtonPanel button = new DropdownButtonPanel(id, - new DropdownButtonDto(String.valueOf(tasks.size()), icon, label, items)); - add(button); - - } - - private void newTaskPerformed(String category, AjaxRequestTarget target) { - TaskType taskType = new TaskType(); - PrismProperty pKind; - try { - pKind = taskType.asPrismObject().findOrCreateProperty( - new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_KIND)); - pKind.setRealValue(getKind()); - } catch (SchemaException e) { - getSession().warn("Could not set kind for new task " + e.getMessage()); - } - - PrismProperty pIntent; - try { - pIntent = taskType.asPrismObject().findOrCreateProperty( - new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_INTENT)); - pIntent.setRealValue(getIntent()); - } catch (SchemaException e) { - getSession().warn("Could not set kind for new task " + e.getMessage()); - } - - PrismObject resource = getResourceModel().getObject(); - taskType.setObjectRef(ObjectTypeUtil.createObjectRef(resource)); - - taskType.setCategory(category); - setResponsePage(new PageTaskAdd(taskType)); - ; - } - - private void runTask(List tasks, AjaxRequestTarget target) { - - ResourceTasksPanel tasksPanel = new ResourceTasksPanel(getPageBase().getMainPopupBodyId(), false, - new ListModel<>(tasks), getPageBase()); - getPageBase().showMainPopup(tasksPanel, new Model("Defined tasks"), target, 900, 500); - - } - - private List getTasksForKind(List> tasks) { - List tasksForKind = new ArrayList<>(); - for (PrismObject task : tasks) { - PrismProperty taskKind = task - .findProperty(new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_KIND)); - ShadowKindType taskKindValue = null; - if (taskKind != null) { - taskKindValue = taskKind.getRealValue(); - - PrismProperty taskIntent = task.findProperty( - new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_INTENT)); - String taskIntentValue = null; - if (taskIntent != null) { - taskIntentValue = taskIntent.getRealValue(); - } - if (StringUtils.isNotEmpty(getIntent())) { - if (getKind() == taskKindValue && getIntent().equals(taskIntentValue)) { - tasksForKind.add(task.asObjectable()); - } - } else if (getKind() == taskKindValue) { - tasksForKind.add(task.asObjectable()); - } - } - } - return tasksForKind; - } - @Override protected Search createSearch() { Map availableDefs = new HashMap<>(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.html index 8502cfe11ab..4dbd05adf59 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.html @@ -18,32 +18,40 @@
-
-
- -
- -
-
+
+ +
- -
+ + +
+ + (: ) + + + + +
+
- - +
+ +
+ +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java index 9919a0a7162..161d88aa145 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceContentTabPanel.java @@ -34,6 +34,7 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.util.ListModel; +import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition; import com.evolveum.midpoint.common.refinery.RefinedResourceSchema; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.prism.PrismObject; @@ -61,9 +62,8 @@ enum Operation { private static final String DOT_CLASS = ResourceContentTabPanel.class.getName() + "."; private static final String ID_INTENT = "intent"; + private static final String ID_REAL_OBJECT_CLASS = "realObjectClass"; private static final String ID_OBJECT_CLASS = "objectClass"; - private static final String ID_INTENT_LABEL = "intentLabel"; - private static final String ID_OBJECT_CLASS_LABEL = "objectClassLabel"; private static final String ID_MAIN_FORM = "mainForm"; private static final String ID_REPO_SEARCH = "repositorySearch"; @@ -100,28 +100,16 @@ public ResourceContentTabPanel(String id, ShadowKindType kind, intentModel = new Model(); objectClassModel = new Model(); - initLayout(model); + initLayout(model, parentPage); } - private void initLayout(final IModel> model) { - + private void initLayout(final IModel> model, final PageBase parentPage) { setOutputMarkupId(true); - Label intentLabel = new Label(ID_INTENT_LABEL, parentPage.createStringResource("ShadowType.intent")); - intentLabel.add(new VisibleEnableBehaviour() { - - @Override - public boolean isVisible() { - return !useObjectClass; - } - }); - add(intentLabel); AutoCompleteTextPanel intent = new AutoCompleteTextPanel(ID_INTENT, intentModel, String.class) { - - - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; @Override public Iterator getIterator(String input) { @@ -136,12 +124,8 @@ public Iterator getIterator(String input) { return RefinedResourceSchema.getIntentsForKind(refinedSchema, kind).iterator(); } - - - }; intent.getBaseFormComponent().add(new OnChangeAjaxBehavior() { - private static final long serialVersionUID = 1L; @Override @@ -154,6 +138,8 @@ protected void onUpdate(AjaxRequestTarget target) { }); intent.setOutputMarkupId(true); intent.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; + @Override public boolean isVisible() { return !useObjectClass; @@ -161,8 +147,30 @@ public boolean isVisible() { }); add(intent); + Label realObjectClassLabel = new Label(ID_REAL_OBJECT_CLASS, new AbstractReadOnlyModel() { + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + RefinedObjectClassDefinition ocDef; + try { + RefinedResourceSchema refinedSchema = RefinedResourceSchema + .getRefinedSchema(model.getObject(), parentPage.getPrismContext()); + ocDef = refinedSchema.getRefinedDefinition(kind, intentModel.getObject()); + if (ocDef != null) { + return ocDef.getObjectClassDefinition().getTypeName().getLocalPart(); + } + } catch (SchemaException e) { + } + + return "NOT FOUND"; + } + }); + add(realObjectClassLabel); + DropDownChoicePanel objectClass = new DropDownChoicePanel(ID_OBJECT_CLASS, objectClassModel, createObjectClassChoices(model), new QNameChoiceRenderer()); objectClass.getBaseFormComponent().add(new OnChangeAjaxBehavior() { + private static final long serialVersionUID = 1L; @Override protected void onUpdate(AjaxRequestTarget target) { @@ -174,6 +182,7 @@ protected void onUpdate(AjaxRequestTarget target) { }); objectClass.add(new VisibleEnableBehaviour() { + private static final long serialVersionUID = 1L; @Override public boolean isVisible() { @@ -182,18 +191,8 @@ public boolean isVisible() { }); add(objectClass); - Label objectClassLabel = new Label(ID_OBJECT_CLASS_LABEL, parentPage.createStringResource("ShadowType.objectClass")); - objectClassLabel.add(new VisibleEnableBehaviour() { - - @Override - public boolean isVisible() { - return useObjectClass; - } - }); - add(objectClassLabel); - - AjaxButton repoSearch = new AjaxButton(ID_REPO_SEARCH) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -203,18 +202,19 @@ public void onClick(AjaxRequestTarget target) { mainForm.addOrReplace(initRepoContent(model)); target.add(getParent().addOrReplace(mainForm)); target.add(this); - target.add(getParent().get(ID_RESOURCE_SEARCH).add(AttributeModifier.replace("class", "btn btn-default"))); + target.add(getParent().get(ID_RESOURCE_SEARCH).add(AttributeModifier.replace("class", "btn btn-sm btn-default"))); } @Override protected void onBeforeRender() { super.onBeforeRender(); - if (!ResourceContentTabPanel.this.resourceSearchModel.getObject()) add(AttributeModifier.append("class", " active")); + if (!ResourceContentTabPanel.this.resourceSearchModel.getObject()) add(AttributeModifier.replace("class", "btn btn-sm btn-default active")); } }; add(repoSearch); AjaxButton resourceSearch = new AjaxButton(ID_RESOURCE_SEARCH) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -225,14 +225,14 @@ public void onClick(AjaxRequestTarget target) { // mainForm.addOrReplace(initRepoContent(model)); target.add(getParent().addOrReplace(mainForm)); target.add(this.add(AttributeModifier.append("class", " active"))); - target.add(getParent().get(ID_REPO_SEARCH).add(AttributeModifier.replace("class", "btn btn-default"))); + target.add(getParent().get(ID_REPO_SEARCH).add(AttributeModifier.replace("class", "btn btn-sm btn-default"))); } @Override protected void onBeforeRender() { super.onBeforeRender(); - if (ResourceContentTabPanel.this.resourceSearchModel.getObject()) add(AttributeModifier.append("class", " active")); + if (ResourceContentTabPanel.this.resourceSearchModel.getObject()) add(AttributeModifier.replace("class", "btn btn-sm btn-default active")); } }; add(resourceSearch); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java index 674cc9a04f6..bc005f07374 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceDetailsTabPanel.java @@ -151,14 +151,8 @@ public void onClick(AjaxRequestTarget target) { tableColumns.add(tasksColumn); BoxedTablePanel resourceConfig = new BoxedTablePanel( - "resourceConfig", resourceConfigProvider, tableColumns) { - private static final long serialVersionUID = 1L; - - @Override - protected String getBoxCssClasses() { - return "box box-success"; - } - }; + "resourceConfig", resourceConfigProvider, tableColumns); + resourceConfig.setAdditionalBoxCssClasses("box-success"); add(resourceConfig); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java index 73819862be6..58162ebfa17 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/resources/ResourceTasksPanel.java @@ -15,13 +15,22 @@ */ package com.evolveum.midpoint.web.page.admin.resources; +import java.util.ArrayList; +import java.util.List; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.util.ListModel; +import org.apache.wicket.request.mapper.parameter.PageParameters; + import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.MainObjectListPanel; import com.evolveum.midpoint.gui.api.component.ObjectListPanel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.query.ObjectPaging; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.prism.query.RefFilter; import com.evolveum.midpoint.schema.result.OperationResult; @@ -39,26 +48,7 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.behavior.Behavior; -import org.apache.wicket.event.Broadcast; -import org.apache.wicket.event.IEventSink; -import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.util.ListModel; -import org.apache.wicket.request.component.IRequestablePage; -import org.apache.wicket.request.mapper.parameter.PageParameters; - -import java.util.ArrayList; -import java.util.List; - -public class ResourceTasksPanel extends Panel{ - - /** - * - */ +public class ResourceTasksPanel extends Panel { private static final long serialVersionUID = 1L; private static final String DOT_CLASS = ResourceTasksPanel.class.getName() + "."; @@ -115,6 +105,7 @@ private ListModel createTaskModel(PrismObject object) { private void initLayout(final ListModel tasks){ final MainObjectListPanel tasksPanel = new MainObjectListPanel(ID_TASKS_TABLE, TaskType.class, TableId.PAGE_RESOURCE_TASKS_PANEL, null, pageBase) { + private static final long serialVersionUID = 1L; @Override protected BaseSortableDataProvider> getProvider() { @@ -147,11 +138,6 @@ protected void newObjectPerformed(AjaxRequestTarget target) { protected List, String>> createColumns() { return ColumnUtils.getDefaultTaskColumns(); } - - @Override - protected String getBoxCssClasses() { - return GuiStyleConstants.CLASS_BOX + " " + GuiStyleConstants.CLASS_OBJECT_TASK_BOX_CSS_CLASSES; - } }; // final ObjectListPanel tasksPanel = new ObjectListPanel(ID_TASKS_TABLE, TaskType.class, pageBase){ // @@ -175,9 +161,11 @@ protected String getBoxCssClasses() { // } // }; // tasksPanel.setEditable(false); + tasksPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_TASK_BOX_CSS_CLASSES); add(tasksPanel); AjaxButton runNow = new AjaxButton(ID_RUN_NOW, pageBase.createStringResource("pageTaskEdit.button.runNow")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -192,6 +180,7 @@ public void onClick(AjaxRequestTarget target) { add(runNow); AjaxButton resume = new AjaxButton(ID_RESUME, pageBase.createStringResource("pageTaskEdit.button.resume")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -206,6 +195,7 @@ public void onClick(AjaxRequestTarget target) { add(resume); AjaxButton suspend = new AjaxButton(ID_SUSPEND, pageBase.createStringResource("pageTaskEdit.button.suspend")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -231,7 +221,5 @@ private List createOidList(List tasks){ } return oids; } - - } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java index 432083d5f40..2583565f8cd 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRoles.java @@ -151,13 +151,9 @@ protected void newObjectPerformed(AjaxRequestTarget target) { setResponsePage(PageRole.class); } - - @Override - protected String getBoxCssClasses() { - return GuiStyleConstants.CLASS_BOX + " " + GuiStyleConstants.CLASS_OBJECT_ROLE_BOX_CSS_CLASSES; - } }; roleListPanel.setOutputMarkupId(true); + roleListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_ROLE_BOX_CSS_CLASSES); mainForm.add(roleListPanel); // ObjectDataProvider provider = new ObjectDataProvider(PageRoles.this, RoleType.class) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java index 79059298d92..ab3db29d6cb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/services/PageServices.java @@ -71,9 +71,9 @@ private void initLayout() { MainObjectListPanel servicePanel = new MainObjectListPanel(ID_TABLE, ServiceType.class, TableId.TABLE_SERVICES, null, this){ - - - @Override + private static final long serialVersionUID = 1L; + + @Override public void objectDetailsPerformed(AjaxRequestTarget target, ServiceType service) { PageServices.this.serviceDetailsPerformed(target, service); } @@ -93,13 +93,8 @@ protected List createInlineMenu() { protected void newObjectPerformed(AjaxRequestTarget target) { setResponsePage(PageService.class); } - - @Override - protected String getBoxCssClasses() { - return GuiStyleConstants.CLASS_BOX + " " + GuiStyleConstants.CLASS_OBJECT_SERVICE_BOX_CSS_CLASSES; - } - }; + servicePanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_SERVICE_BOX_CSS_CLASSES); mainForm.add(servicePanel); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java index d3252b556d0..13100a1923b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java @@ -173,12 +173,9 @@ protected void newObjectPerformed(AjaxRequestTarget target) { } - @Override - protected String getBoxCssClasses() { - return GuiStyleConstants.CLASS_BOX + " " + GuiStyleConstants.CLASS_OBJECT_USER_BOX_CSS_CLASSES; - } }; + userListPanel.setAdditionalBoxCssClasses(GuiStyleConstants.CLASS_OBJECT_USER_BOX_CSS_CLASSES); userListPanel.setOutputMarkupId(true); mainForm.add(userListPanel); } diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint.properties b/gui/admin-gui/src/main/resources/localization/Midpoint.properties index 65fd93de52b..230739f0fed 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint.properties @@ -1848,6 +1848,7 @@ pageResource.oid=Oid pageResource.overallStatus=Overall status pageResource.progress=Progress pageResource.resource=Resource +pageResource.synchronizationTasks=Synchronization tasks pageResources.bundle=Bundle pageResources.connectorType=Connector type pageResources.button.discoveryRemote=Discovery diff --git a/gui/admin-gui/src/main/webapp/less/midpoint-theme-variables.less b/gui/admin-gui/src/main/webapp/less/midpoint-theme-variables.less index e91bbd0ec1b..56d7aa09340 100644 --- a/gui/admin-gui/src/main/webapp/less/midpoint-theme-variables.less +++ b/gui/admin-gui/src/main/webapp/less/midpoint-theme-variables.less @@ -26,5 +26,4 @@ @object-service-color: #00C0EF; @object-resource-color: #605CA8; @object-task-color: #001f3f; - -@box-projection-color: #001F3F; \ No newline at end of file +@object-shadow-color: #001F3F; diff --git a/gui/admin-gui/src/main/webapp/less/midpoint-theme.less b/gui/admin-gui/src/main/webapp/less/midpoint-theme.less index 9001b7abb9a..a160f09ff30 100644 --- a/gui/admin-gui/src/main/webapp/less/midpoint-theme.less +++ b/gui/admin-gui/src/main/webapp/less/midpoint-theme.less @@ -213,6 +213,11 @@ th.cog, td.cog { color: @object-task-color; } +.object-shadow-color { + color: @object-shadow-color; +} + + .object-user-bg { background-color: @object-user-color !important; color: #fff !important; @@ -243,6 +248,11 @@ th.cog, td.cog { color: #fff !important; } +.object-shadow-bg { + background-color: @object-shadow-color !important; + color: #fff !important; +} + // Colored boxes for each object type #box-object(@color) { @@ -284,6 +294,10 @@ th.cog, td.cog { #box-object(@object-resource-color); } +.object-shadow-box { + #box-object(@object-shadow-color); +} + #box-thin-object(@color) { border: 1px solid @color; @@ -312,6 +326,10 @@ th.cog, td.cog { #box-thin-object(@object-resource-color); } +.object-shadow-box-thin { + #box-thin-object(@object-shadow-color); +} + // Summary panel (panel above the edit user/role/org forms) #info-box-summary-panel(@color) { @@ -339,6 +357,10 @@ th.cog, td.cog { #info-box-summary-panel(@object-resource-color); } +.info-box.summary-panel-shadow { + #info-box-summary-panel(@object-shadow-color); +} + #info-box-icon-summary-panel(@color){ color: #FFF !important; background-color: @color; @@ -369,6 +391,10 @@ th.cog, td.cog { #info-box-icon-summary-panel(@object-resource-color); } +.info-box-icon.summary-panel-shadow { + #info-box-icon-summary-panel(@object-shadow-color); +} + // End-user home (PageSelfDashboard) .quicksearch-panel { @@ -406,6 +432,7 @@ th.cog, td.cog { } // capability buttons in resource details page + .btn-resource-capability { width: 90px; height: 75px; @@ -413,6 +440,22 @@ th.cog, td.cog { white-space: normal; } +// resource content pages (ResourceContentPanel) + +.resource-content-selection { + + .form-group { + margin-bottom: 5px; + } +} + +.control-suffix { + text-align: left !important; + padding-left: 0px; +} + +// Feedback messages ??? + .feedback-message.box { box-shadow: 0 0px 0px rgba(0, 0, 0, 0.1); word-break: inherit; @@ -779,7 +822,7 @@ div.dashAssignmentHeader { .projection { margin-bottom: 10px; - #box-thin-object(@box-projection-color); + #box-thin-object(@object-shadow-color); .box-header {