diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java
index b14b4039c63..18e7c74b82f 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/BasePanel.java
@@ -1,162 +1,157 @@
-/*
- * 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.gui.api.component;
-
-import com.evolveum.midpoint.gui.api.page.PageBase;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.prism.PrismContext;
-import com.evolveum.midpoint.schema.SchemaHelper;
-import com.evolveum.midpoint.prism.polystring.PolyString;
-import com.evolveum.midpoint.web.security.MidPointApplication;
-import com.evolveum.midpoint.web.security.MidPointAuthWebSession;
-import com.evolveum.midpoint.web.security.WebApplicationConfiguration;
-import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.StringResourceModel;
-import org.jetbrains.annotations.Contract;
-
-/**
- * Base class for most midPoint GUI panels. It has a constructor and
- * utility methods for convenient handling of the model. It also has
- * other utility methods often used in reusable components.
- *
- * Almost all reusable components should extend this class.
- *
- * @author lazyman
- * @author semancik
- */
-public class BasePanel extends Panel {
- private static final long serialVersionUID = 1L;
-
- private IModel model;
-
- public BasePanel(String id) {
- super(id);
- }
-
-// public BasePanel(String id, T object) {
-// super(id);
-// this.model = Model.of(object);
-// }
-
- public BasePanel(String id, IModel model) {
- super(id);
- this.model = model == null ? createModel() : model;
- }
-
- public IModel createModel() {
- return null;
- }
-
- public IModel getModel() {
- return model;
- }
-
- public T getModelObject() {
- return model != null ? model.getObject() : null;
- }
-
- public String getString(String resourceKey, Object... objects) {
- return createStringResource(resourceKey, objects).getString();
- }
-
- public String getString(Enum> e) {
- return createStringResource(e).getString();
- }
-
- public StringResourceModel createStringResource(String resourceKey, IModel> model, Object... objects) {
- return new StringResourceModel(resourceKey, this).setModel(model)
- .setDefaultValue(resourceKey)
- .setParameters(objects);
- }
-
- public StringResourceModel createStringResource(String resourceKey, Object... objects) {
- return new StringResourceModel(resourceKey, this).setModel(null)
- .setDefaultValue(resourceKey)
- .setParameters(objects);
- }
-
- public StringResourceModel createStringResource(PolyString polystringKey, Object... objects) {
- String resourceKey = null;
- if (polystringKey != null) {
- // TODO later: use polystringKey.getKey()
- resourceKey = polystringKey.getOrig();
- }
- return new StringResourceModel(resourceKey, this).setModel(null)
- .setDefaultValue(resourceKey)
- .setParameters(objects);
- }
-
- public StringResourceModel createStringResource(PolyStringType polystringKey, Object... objects) {
- String resourceKey = null;
- if (polystringKey != null) {
- // TODO later: use polystringKey.getKey()
- resourceKey = polystringKey.getOrig();
- }
- return new StringResourceModel(resourceKey, this).setModel(null)
- .setDefaultValue(resourceKey)
- .setParameters(objects);
- }
-
- public StringResourceModel createStringResource(Enum> e) {
- return createStringResource(e, null);
- }
-
- public StringResourceModel createStringResource(Enum> e, String prefix) {
- return createStringResource(e, prefix, null);
- }
-
- public StringResourceModel createStringResource(Enum> e, String prefix, String nullKey) {
- StringBuilder sb = new StringBuilder();
- if (StringUtils.isNotEmpty(prefix)) {
- sb.append(prefix).append('.');
- }
-
- if (e == null) {
- if (StringUtils.isNotEmpty(nullKey)) {
- sb.append(nullKey);
- } else {
- sb = new StringBuilder();
- }
- } else {
- sb.append(e.getDeclaringClass().getSimpleName()).append('.');
- sb.append(e.name());
- }
-
- return createStringResource(sb.toString());
- }
-
- @Contract(pure = true)
- public PageBase getPageBase() {
- return WebComponentUtil.getPageBase(this);
- }
-
- public PrismContext getPrismContext() {
- return getPageBase().getPrismContext();
- }
-
- public SchemaHelper getSchemaHelper() {
- return getPageBase().getSchemaHelper();
- }
-
- protected String createComponentPath(String... components) {
- return StringUtils.join(components, ":");
- }
-
- public WebApplicationConfiguration getWebApplicationConfiguration() {
- MidPointApplication application = MidPointApplication.get();
- return application.getWebApplicationConfiguration();
- }
-
- @Override
- public MidPointAuthWebSession getSession() {
- return (MidPointAuthWebSession) super.getSession();
- }
-}
+/*
+ * 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.gui.api.component;
+
+import com.evolveum.midpoint.gui.api.page.PageBase;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.prism.PrismContext;
+import com.evolveum.midpoint.schema.SchemaHelper;
+import com.evolveum.midpoint.prism.polystring.PolyString;
+import com.evolveum.midpoint.web.security.MidPointApplication;
+import com.evolveum.midpoint.web.security.MidPointAuthWebSession;
+import com.evolveum.midpoint.web.security.WebApplicationConfiguration;
+import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.StringResourceModel;
+import org.jetbrains.annotations.Contract;
+
+/**
+ * Base class for most midPoint GUI panels. It has a constructor and
+ * utility methods for convenient handling of the model. It also has
+ * other utility methods often used in reusable components.
+ *
+ * Almost all reusable components should extend this class.
+ *
+ * @author lazyman
+ * @author semancik
+ */
+public class BasePanel extends Panel {
+ private static final long serialVersionUID = 1L;
+
+ private IModel model;
+
+ public BasePanel(String id) {
+ super(id);
+ }
+
+ public BasePanel(String id, IModel model) {
+ super(id);
+ this.model = model == null ? createModel() : model;
+ }
+
+ public IModel createModel() {
+ return null;
+ }
+
+ public IModel getModel() {
+ return model;
+ }
+
+ public T getModelObject() {
+ return model != null ? model.getObject() : null;
+ }
+
+ public String getString(String resourceKey, Object... objects) {
+ return createStringResource(resourceKey, objects).getString();
+ }
+
+ public String getString(Enum> e) {
+ return createStringResource(e).getString();
+ }
+
+ public StringResourceModel createStringResource(String resourceKey, IModel> model, Object... objects) {
+ return new StringResourceModel(resourceKey, this).setModel(model)
+ .setDefaultValue(resourceKey)
+ .setParameters(objects);
+ }
+
+ public StringResourceModel createStringResource(String resourceKey, Object... objects) {
+ return new StringResourceModel(resourceKey, this).setModel(null)
+ .setDefaultValue(resourceKey)
+ .setParameters(objects);
+ }
+
+ public StringResourceModel createStringResource(PolyString polystringKey, Object... objects) {
+ String resourceKey = null;
+ if (polystringKey != null) {
+ // TODO later: use polystringKey.getKey()
+ resourceKey = polystringKey.getOrig();
+ }
+ return new StringResourceModel(resourceKey, this).setModel(null)
+ .setDefaultValue(resourceKey)
+ .setParameters(objects);
+ }
+
+ public StringResourceModel createStringResource(PolyStringType polystringKey, Object... objects) {
+ String resourceKey = null;
+ if (polystringKey != null) {
+ // TODO later: use polystringKey.getKey()
+ resourceKey = polystringKey.getOrig();
+ }
+ return new StringResourceModel(resourceKey, this).setModel(null)
+ .setDefaultValue(resourceKey)
+ .setParameters(objects);
+ }
+
+ public StringResourceModel createStringResource(Enum> e) {
+ return createStringResource(e, null);
+ }
+
+ public StringResourceModel createStringResource(Enum> e, String prefix) {
+ return createStringResource(e, prefix, null);
+ }
+
+ public StringResourceModel createStringResource(Enum> e, String prefix, String nullKey) {
+ StringBuilder sb = new StringBuilder();
+ if (StringUtils.isNotEmpty(prefix)) {
+ sb.append(prefix).append('.');
+ }
+
+ if (e == null) {
+ if (StringUtils.isNotEmpty(nullKey)) {
+ sb.append(nullKey);
+ } else {
+ sb = new StringBuilder();
+ }
+ } else {
+ sb.append(e.getDeclaringClass().getSimpleName()).append('.');
+ sb.append(e.name());
+ }
+
+ return createStringResource(sb.toString());
+ }
+
+ @Contract(pure = true)
+ public PageBase getPageBase() {
+ return WebComponentUtil.getPageBase(this);
+ }
+
+ public PrismContext getPrismContext() {
+ return getPageBase().getPrismContext();
+ }
+
+ public SchemaHelper getSchemaHelper() {
+ return getPageBase().getSchemaHelper();
+ }
+
+ protected String createComponentPath(String... components) {
+ return StringUtils.join(components, ":");
+ }
+
+ public WebApplicationConfiguration getWebApplicationConfiguration() {
+ MidPointApplication application = MidPointApplication.get();
+ return application.getWebApplicationConfiguration();
+ }
+
+ @Override
+ public MidPointAuthWebSession getSession() {
+ return (MidPointAuthWebSession) super.getSession();
+ }
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProtectedStringTypeWrapperImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProtectedStringTypeWrapperImpl.java
index 7804bee7328..86b59493eb3 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProtectedStringTypeWrapperImpl.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProtectedStringTypeWrapperImpl.java
@@ -15,6 +15,7 @@
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.web.component.prism.ValueStatus;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType;
/**
@@ -33,6 +34,10 @@ public , PrismProper
if (valueWrapper != null && valueWrapper.getRealValue() == null && valueWrapper.getOldValue().getRealValue() != null){
valueWrapper.setStatus(ValueStatus.DELETED);
}
+ if (getParent() != null && getParent().getParent() != null && getParent().getParent().getTypeClass().isAssignableFrom(ShadowType.class)
+ && valueWrapper.getStatus().equals(ValueStatus.ADDED)) {
+ valueWrapper.setStatus(ValueStatus.MODIFIED);
+ }
return super.getDelta();
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java
index 9af395d814d..78af3b58b21 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AbstractSummaryPanel.java
@@ -1,392 +1,421 @@
-/*
- * 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.component;
-
-import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.gui.impl.model.FlexibleLabelModel;
-import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.PrismContainer;
-import com.evolveum.midpoint.prism.path.ItemName;
-import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
-import com.evolveum.midpoint.web.component.util.SummaryTag;
-import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.image.NonCachingImage;
-import org.apache.wicket.markup.repeater.RepeatingView;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.resource.AbstractResource;
-
-import javax.xml.namespace.QName;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author semancik
- * @author mederly
- */
-public abstract class AbstractSummaryPanel extends BasePanel {
- private static final long serialVersionUID = 1L;
-
- protected static final String ID_BOX = "summaryBox";
- protected static final String ID_ICON_BOX = "summaryIconBox";
- protected static final String ID_TAG_BOX = "summaryTagBox";
- protected static final String ID_SUMMARY_TAG = "summaryTag";
- protected static final String ID_ICON = "summaryIcon";
- protected static final String ID_DISPLAY_NAME = "summaryDisplayName";
- protected static final String ID_IDENTIFIER = "summaryIdentifier";
- protected static final String ID_IDENTIFIER_PANEL = "summaryIdentifierPanel";
- protected static final String ID_NAVIGATE_TO_OBJECT_BUTTON = "navigateToObject";
- protected static final String ID_TITLE = "summaryTitle";
- protected static final String ID_TITLE2 = "summaryTitle2";
- protected static final String ID_TITLE3 = "summaryTitle3";
-
- protected static final String ID_PHOTO = "summaryPhoto"; // perhaps useful only for focal objects but it was simpler to include it here
- protected static final String ID_ORGANIZATION = "summaryOrganization"; // similar (requires ObjectWrapper to get parent organizations so hard to use in ObjectSummaryPanel)
-
- protected static final String BOX_CSS_CLASS = "col-xs-12 info-box";
- protected static final String ICON_BOX_CSS_CLASS = "info-box-icon";
- protected static final String ARCHETYPE_ICON_FONT_SIZE = "font-size: 45px !important;";
-
- protected SummaryPanelSpecificationType configuration;
-
- protected WebMarkupContainer box;
- protected RepeatingView tagBox;
- protected WebMarkupContainer iconBox;
-
- public AbstractSummaryPanel(String id, IModel model, SummaryPanelSpecificationType configuration) {
- super(id, model);
- this.configuration = configuration;
- setOutputMarkupId(true);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
-
- box = new WebMarkupContainer(ID_BOX);
- add(box);
-
- String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass();
- box.add(new AttributeModifier("class", BOX_CSS_CLASS + " " + getBoxAdditionalCssClass()));
- if (StringUtils.isNotEmpty(archetypePolicyAdditionalCssClass)){
- box.add(AttributeModifier.append("style", "border-color: " + archetypePolicyAdditionalCssClass + ";"));
- }
-
- if (getDisplayNameModel() != null) {
- box.add(new Label(ID_DISPLAY_NAME, getDisplayNameModel()));
- } else if (getDisplayNamePropertyName() != null) {
- box.add(new Label(ID_DISPLAY_NAME, createLabelModel(getDisplayNamePropertyName(), SummaryPanelSpecificationType.F_DISPLAY_NAME)));
- } else {
- box.add(new Label(ID_DISPLAY_NAME, " "));
- }
-
- WebMarkupContainer identifierPanel = new WebMarkupContainer(ID_IDENTIFIER_PANEL);
- identifierPanel.add(new Label(ID_IDENTIFIER, createLabelModel(getIdentifierPropertyName(), SummaryPanelSpecificationType.F_IDENTIFIER)));
- identifierPanel.add(new VisibleEnableBehaviour() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible() {
- return isIdentifierVisible();
- }
- });
- box.add(identifierPanel);
-
- AjaxButton navigateToObject = new AjaxButton(ID_NAVIGATE_TO_OBJECT_BUTTON) {
- @Override
- public void onClick(AjaxRequestTarget ajaxRequestTarget) {
- ObjectReferenceType ort = getReferencedObjectToNavigate();
- WebComponentUtil.dispatchToObjectDetailsPage(ort, AbstractSummaryPanel.this, false);
- }
- };
- navigateToObject.add(AttributeAppender.append("title", getReferenceObjectTitleModel()));
- navigateToObject.add(new VisibleBehaviour(() -> {
- ObjectReferenceType ort = getReferencedObjectToNavigate();
- Class refType = !isReferencedObjectNull() ?
- WebComponentUtil.qnameToClass(AbstractSummaryPanel.this.getPageBase().getPrismContext(), ort.getType()) : null;
- return ort != null && refType != null &&
- WebComponentUtil.getObjectDetailsPage(refType) != null;
-
- }));
- navigateToObject.setOutputMarkupId(true);
- box.add(navigateToObject);
-
- if (getTitleModel() != null) {
- box.add(new Label(ID_TITLE, getTitleModel()));
- } else if (getTitlePropertyName() != null) {
- box.add(new Label(ID_TITLE, createLabelModel(getTitlePropertyName(), SummaryPanelSpecificationType.F_TITLE_1)));
- } else {
- box.add(new Label(ID_TITLE, " "));
- }
-
- if (getTitle2Model() != null) {
- box.add(new Label(ID_TITLE2, getTitle2Model()));
- } else if (getTitle2PropertyName() != null) {
- box.add(new Label(ID_TITLE, createLabelModel(getTitle2PropertyName(), SummaryPanelSpecificationType.F_TITLE_2)));
- } else {
- Label label = new Label(ID_TITLE2, " ");
- label.setVisible(false);
- box.add(label);
- }
-
- if (getTitle3Model() != null) {
- box.add(new Label(ID_TITLE3, getTitle3Model()));
- } else if (getTitle3PropertyName() != null) {
- box.add(new Label(ID_TITLE, createLabelModel(getTitle3PropertyName(), SummaryPanelSpecificationType.F_TITLE_3)));
- } else {
- Label label = new Label(ID_TITLE3, " ");
- label.setVisible(false);
- box.add(label);
- }
-
- final IModel parentOrgModel = getParentOrgModel();
- Label parentOrgLabel = new Label(ID_ORGANIZATION, parentOrgModel);
- parentOrgLabel.add(new VisibleEnableBehaviour() {
- private static final long serialVersionUID = 1L;
- @Override
- public boolean isVisible() {
- return parentOrgModel.getObject() != null;
- }
- });
- box.add(parentOrgLabel);
-
- iconBox = new WebMarkupContainer(ID_ICON_BOX);
- box.add(iconBox);
-
- String iconAdditionalCssClass = getIconBoxAdditionalCssClass();
- if (StringUtils.isNotEmpty(iconAdditionalCssClass)) {
- iconBox.add(new AttributeModifier("class", ICON_BOX_CSS_CLASS + " " + iconAdditionalCssClass));
- }
- if (StringUtils.isNotEmpty(archetypePolicyAdditionalCssClass)){
- iconBox.add(AttributeModifier.append("style", "background-color: " + archetypePolicyAdditionalCssClass + ";"));
- }
-
- Label icon = new Label(ID_ICON, "");
-
- String archetypeIconCssClass = getArchetypeIconCssClass();
- if (StringUtils.isNotEmpty(archetypeIconCssClass)){
- icon.add(AttributeModifier.append("class", archetypeIconCssClass));
- icon.add(AttributeModifier.append("style", ARCHETYPE_ICON_FONT_SIZE));
- } else {
- icon.add(AttributeModifier.append("class", getIconCssClass()));
- }
- icon.add(new VisibleEnableBehaviour() {
- @Override
- public boolean isVisible(){
- return getPhotoModel().getObject() == null;
- }
- });
- iconBox.add(icon);
- NonCachingImage img = new NonCachingImage(ID_PHOTO, getPhotoModel());
- img.add(new VisibleEnableBehaviour(){
- private static final long serialVersionUID = 1L;
- @Override
- public boolean isVisible() {
- return getPhotoModel().getObject() != null;
- }
- });
- iconBox.add(img);
-
- tagBox = new RepeatingView(ID_TAG_BOX);
- List> summaryTags = getSummaryTagComponentList();
-
- if (getArchetypeSummaryTag() != null){
- summaryTags.add(getArchetypeSummaryTag());
- }
- summaryTags.forEach(summaryTag -> {
- WebMarkupContainer summaryTagPanel = new WebMarkupContainer(tagBox.newChildId());
- summaryTagPanel.setOutputMarkupId(true);
-
- summaryTagPanel.add(summaryTag);
- tagBox.add(summaryTagPanel);
- });
- if (getTagBoxCssClass() != null) {
- tagBox.add(new AttributeModifier("class", getTagBoxCssClass()));
- }
- tagBox.add(new VisibleBehaviour(() -> CollectionUtils.isNotEmpty(summaryTags)));
- box.add(tagBox);
- }
-
- private FlexibleLabelModel createLabelModel(QName modelPropertyName, QName configurationPropertyName) {
- return createFlexibleLabelModel(modelPropertyName, getLabelConfiguration(configurationPropertyName));
- }
-
- private FlexibleLabelModel createFlexibleLabelModel(QName modelPropertyName, GuiFlexibleLabelType configuration) {
- return new FlexibleLabelModel(getModel(), ItemName.fromQName(modelPropertyName), getPageBase(), configuration) {
- private static final long serialVersionUID = 1L;
- @Override
- protected void addAdditionalExpressionVariables(ExpressionVariables variables) {
- super.addAdditionalExpressionVariables(variables);
- AbstractSummaryPanel.this.addAdditionalExpressionVariables(variables);
- }
- };
- }
-
- protected List> getSummaryTagComponentList(){
- return new ArrayList<>();
- }
-
- protected ObjectReferenceType getReferencedObjectToNavigate(){
- return null;
- }
-
- private boolean isReferencedObjectNull(){
- return getReferencedObjectToNavigate() == null || StringUtils.isEmpty(getReferencedObjectToNavigate().getOid()) ||
- getReferencedObjectToNavigate().getType() == null;
- }
-
- protected IModel getReferenceObjectTitleModel(){
- return null;
- }
-
- private SummaryTag getArchetypeSummaryTag(){
- String archetypeIconCssClass = getArchetypeIconCssClass();
- String archetypeIconColor = getArchetypePolicyAdditionalCssClass();
- String archetypeLabel = getArchetypeLabel();
- if (StringUtils.isNotEmpty(archetypeLabel)){
- SummaryTag archetypeSummaryTag = new SummaryTag(ID_SUMMARY_TAG, getModel()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void initialize(C object) {
- setIconCssClass(archetypeIconCssClass);
- setLabel(createStringResource(archetypeLabel).getString());
- setColor(archetypeIconColor);
- }
- };
- return archetypeSummaryTag;
- }
- return null;
- }
-
- protected void addAdditionalExpressionVariables(ExpressionVariables variables) {
-
- }
-
- private GuiFlexibleLabelType getLabelConfiguration(QName configurationPropertyName) {
- if (configuration == null) {
- return null;
- }
- @SuppressWarnings("unchecked")
- PrismContainer subContainer = configuration.asPrismContainerValue().findContainer(configurationPropertyName);
- if (subContainer == null) {
- return null;
- }
- return subContainer.getRealValue();
- }
-
- protected String getTagBoxCssClass() {
- return null;
- }
-
- public Component getTag(String id) {
- return tagBox.get(id);
- }
-
- private String getArchetypePolicyAdditionalCssClass(){
- if (getModelObject() instanceof AssignmentHolderType){
- DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase());
- return WebComponentUtil.getIconColor(displayType);
- }
- return "";
- }
-
- private String getArchetypeLabel(){
- if (getModelObject() instanceof AssignmentHolderType){
- DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase());
- return displayType == null || displayType.getLabel() == null ? "" : displayType.getLabel().getOrig();
- }
- return "";
- }
-
- private String getArchetypeIconCssClass(){
- if (getModelObject() instanceof AssignmentHolderType){
- DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase());
- return WebComponentUtil.getIconCssClass(displayType);
- }
- return "";
- }
-
- protected abstract String getIconCssClass();
-
- protected abstract String getIconBoxAdditionalCssClass();
-
- protected abstract String getBoxAdditionalCssClass();
-
- protected QName getIdentifierPropertyName() {
- return FocusType.F_NAME;
- }
-
- protected QName getDisplayNamePropertyName() {
- return ObjectType.F_NAME;
- }
-
- protected IModel getDisplayNameModel() {
- return null;
- }
-
- protected QName getTitlePropertyName() {
- return null;
- }
-
- protected IModel getTitleModel() {
- return null;
- }
-
- protected QName getTitle2PropertyName() {
- return null;
- }
-
- protected IModel getTitle2Model() {
- return null;
- }
-
- protected QName getTitle3PropertyName() {
- return null;
- }
-
- protected IModel getTitle3Model() {
- return null;
- }
-
- protected boolean isIdentifierVisible() {
- return true;
- }
-
- protected IModel getParentOrgModel() {
- GuiFlexibleLabelType config = getLabelConfiguration(SummaryPanelSpecificationType.F_ORGANIZATION);
- if (config != null) {
- return createFlexibleLabelModel(ObjectType.F_PARENT_ORG_REF, config);
- } else {
- return getDefaltParentOrgModel();
- }
- }
-
- protected IModel getDefaltParentOrgModel() {
- return new Model<>(null);
- }
-
- protected IModel getPhotoModel() {
- return new Model<>(null);
- }
-
- protected WebMarkupContainer getSummaryBoxPanel(){
- return (WebMarkupContainer) get(ID_BOX);
- }
-}
+/*
+ * 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.component;
+
+import com.evolveum.midpoint.gui.api.component.BasePanel;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.gui.impl.model.FlexibleLabelModel;
+import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.PrismContainer;
+import com.evolveum.midpoint.prism.path.ItemName;
+import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
+import com.evolveum.midpoint.web.component.util.SummaryTag;
+import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.NonCachingImage;
+import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.AbstractResource;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author semancik
+ * @author mederly
+ */
+public abstract class AbstractSummaryPanel extends BasePanel {
+ private static final long serialVersionUID = 1L;
+
+ protected static final String ID_BOX = "summaryBox";
+ protected static final String ID_ICON_BOX = "summaryIconBox";
+ protected static final String ID_TAG_BOX = "summaryTagBox";
+ protected static final String ID_SUMMARY_TAG = "summaryTag";
+ protected static final String ID_ICON = "summaryIcon";
+ protected static final String ID_DISPLAY_NAME = "summaryDisplayName";
+ protected static final String ID_IDENTIFIER = "summaryIdentifier";
+ protected static final String ID_IDENTIFIER_PANEL = "summaryIdentifierPanel";
+ protected static final String ID_NAVIGATE_TO_OBJECT_BUTTON = "navigateToObject";
+ protected static final String ID_TITLE = "summaryTitle";
+ protected static final String ID_TITLE2 = "summaryTitle2";
+ protected static final String ID_TITLE3 = "summaryTitle3";
+
+ protected static final String ID_PHOTO = "summaryPhoto"; // perhaps useful only for focal objects but it was simpler to include it here
+ protected static final String ID_ORGANIZATION = "summaryOrganization"; // similar (requires ObjectWrapper to get parent organizations so hard to use in ObjectSummaryPanel)
+
+ protected static final String BOX_CSS_CLASS = "col-xs-12 info-box";
+ protected static final String ICON_BOX_CSS_CLASS = "info-box-icon";
+ protected static final String ARCHETYPE_ICON_FONT_SIZE = "font-size: 45px !important;";
+
+ protected SummaryPanelSpecificationType configuration;
+
+ protected WebMarkupContainer box;
+ protected RepeatingView tagBox;
+ protected WebMarkupContainer iconBox;
+
+ public AbstractSummaryPanel(String id, IModel model, SummaryPanelSpecificationType configuration) {
+ super(id, model);
+ this.configuration = configuration;
+ setOutputMarkupId(true);
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+
+ box = new WebMarkupContainer(ID_BOX);
+ add(box);
+
+ IModel archetypePolicyAdditionalCssClassModel = () -> {
+ String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass();
+ if (archetypePolicyAdditionalCssClass == null) {
+ return "";
+ }
+ return "border-color: " + archetypePolicyAdditionalCssClass + ";";
+ };
+
+ box.add(new AttributeModifier("class", BOX_CSS_CLASS + " " + getBoxAdditionalCssClass()));
+ box.add(AttributeModifier.append("style", archetypePolicyAdditionalCssClassModel));
+
+ if (getDisplayNameModel() != null) {
+ box.add(new Label(ID_DISPLAY_NAME, getDisplayNameModel()));
+ } else if (getDisplayNamePropertyName() != null) {
+ box.add(new Label(ID_DISPLAY_NAME, createLabelModel(getDisplayNamePropertyName(), SummaryPanelSpecificationType.F_DISPLAY_NAME)));
+ } else {
+ box.add(new Label(ID_DISPLAY_NAME, " "));
+ }
+
+ WebMarkupContainer identifierPanel = new WebMarkupContainer(ID_IDENTIFIER_PANEL);
+ identifierPanel.add(new Label(ID_IDENTIFIER, createLabelModel(getIdentifierPropertyName(), SummaryPanelSpecificationType.F_IDENTIFIER)));
+ identifierPanel.add(new VisibleEnableBehaviour() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean isVisible() {
+ return isIdentifierVisible();
+ }
+ });
+ box.add(identifierPanel);
+
+ AjaxButton navigateToObject = new AjaxButton(ID_NAVIGATE_TO_OBJECT_BUTTON) {
+ @Override
+ public void onClick(AjaxRequestTarget ajaxRequestTarget) {
+ ObjectReferenceType ort = getReferencedObjectToNavigate();
+ WebComponentUtil.dispatchToObjectDetailsPage(ort, AbstractSummaryPanel.this, false);
+ }
+ };
+ navigateToObject.add(AttributeAppender.append("title", getReferenceObjectTitleModel()));
+ navigateToObject.add(new VisibleBehaviour(() -> {
+ ObjectReferenceType ort = getReferencedObjectToNavigate();
+ Class refType = !isReferencedObjectNull() ?
+ WebComponentUtil.qnameToClass(AbstractSummaryPanel.this.getPageBase().getPrismContext(), ort.getType()) : null;
+ return ort != null && refType != null &&
+ WebComponentUtil.getObjectDetailsPage(refType) != null;
+
+ }));
+ navigateToObject.setOutputMarkupId(true);
+ box.add(navigateToObject);
+
+ if (getTitleModel() != null) {
+ box.add(new Label(ID_TITLE, getTitleModel()));
+ } else if (getTitlePropertyName() != null) {
+ box.add(new Label(ID_TITLE, createLabelModel(getTitlePropertyName(), SummaryPanelSpecificationType.F_TITLE_1)));
+ } else {
+ box.add(new Label(ID_TITLE, " "));
+ }
+
+ if (getTitle2Model() != null) {
+ box.add(new Label(ID_TITLE2, getTitle2Model()));
+ } else if (getTitle2PropertyName() != null) {
+ box.add(new Label(ID_TITLE, createLabelModel(getTitle2PropertyName(), SummaryPanelSpecificationType.F_TITLE_2)));
+ } else {
+ Label label = new Label(ID_TITLE2, " ");
+ label.setVisible(false);
+ box.add(label);
+ }
+
+ if (getTitle3Model() != null) {
+ box.add(new Label(ID_TITLE3, getTitle3Model()));
+ } else if (getTitle3PropertyName() != null) {
+ box.add(new Label(ID_TITLE, createLabelModel(getTitle3PropertyName(), SummaryPanelSpecificationType.F_TITLE_3)));
+ } else {
+ Label label = new Label(ID_TITLE3, " ");
+ label.setVisible(false);
+ box.add(label);
+ }
+
+ final IModel parentOrgModel = getParentOrgModel();
+ Label parentOrgLabel = new Label(ID_ORGANIZATION, parentOrgModel);
+ parentOrgLabel.add(new VisibleEnableBehaviour() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public boolean isVisible() {
+ return parentOrgModel.getObject() != null;
+ }
+ });
+ box.add(parentOrgLabel);
+
+ iconBox = new WebMarkupContainer(ID_ICON_BOX);
+ box.add(iconBox);
+
+ String iconAdditionalCssClass = getIconBoxAdditionalCssClass();
+ if (StringUtils.isNotEmpty(iconAdditionalCssClass)) {
+ iconBox.add(new AttributeModifier("class", ICON_BOX_CSS_CLASS + " " + iconAdditionalCssClass));
+ }
+
+ iconBox.add(AttributeModifier.append("style", createArchetypeBackgroundModel()));
+
+ Label icon = new Label(ID_ICON, "");
+
+ String archetypeIconCssClass = getArchetypeIconCssClass();
+ if (StringUtils.isNotEmpty(archetypeIconCssClass)){
+ icon.add(AttributeModifier.append("class", archetypeIconCssClass));
+ icon.add(AttributeModifier.append("style", ARCHETYPE_ICON_FONT_SIZE));
+ } else {
+ icon.add(AttributeModifier.append("class", getIconCssClass()));
+ }
+ icon.add(new VisibleEnableBehaviour() {
+ @Override
+ public boolean isVisible(){
+ return getPhotoModel().getObject() == null;
+ }
+ });
+ iconBox.add(icon);
+ NonCachingImage img = new NonCachingImage(ID_PHOTO, getPhotoModel());
+ img.add(new VisibleEnableBehaviour(){
+ private static final long serialVersionUID = 1L;
+ @Override
+ public boolean isVisible() {
+ return getPhotoModel().getObject() != null;
+ }
+ });
+ iconBox.add(img);
+
+ tagBox = new RepeatingView(ID_TAG_BOX);
+ List> summaryTags = getSummaryTagComponentList();
+
+ if (getArchetypeSummaryTag() != null){
+ summaryTags.add(getArchetypeSummaryTag());
+ }
+ summaryTags.forEach(summaryTag -> {
+ WebMarkupContainer summaryTagPanel = new WebMarkupContainer(tagBox.newChildId());
+ summaryTagPanel.setOutputMarkupId(true);
+
+ summaryTagPanel.add(summaryTag);
+ tagBox.add(summaryTagPanel);
+ });
+ if (getTagBoxCssClass() != null) {
+ tagBox.add(new AttributeModifier("class", getTagBoxCssClass()));
+ }
+ tagBox.add(new VisibleBehaviour(() -> CollectionUtils.isNotEmpty(summaryTags)));
+ box.add(tagBox);
+ }
+
+ private IModel createArchetypeBackgroundModel() {
+ return () -> {
+
+ String archetypePolicyAdditionalCssClass = getArchetypePolicyAdditionalCssClass();
+ if (archetypePolicyAdditionalCssClass == null) {
+ return "";
+ }
+ return "background-color: " + archetypePolicyAdditionalCssClass + ";";
+ };
+ }
+ private FlexibleLabelModel createLabelModel(QName modelPropertyName, QName configurationPropertyName) {
+ return createFlexibleLabelModel(modelPropertyName, getLabelConfiguration(configurationPropertyName));
+ }
+
+ private FlexibleLabelModel createFlexibleLabelModel(QName modelPropertyName, GuiFlexibleLabelType configuration) {
+ return new FlexibleLabelModel(getModel(), ItemName.fromQName(modelPropertyName), getPageBase(), configuration) {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected void addAdditionalExpressionVariables(ExpressionVariables variables) {
+ super.addAdditionalExpressionVariables(variables);
+ AbstractSummaryPanel.this.addAdditionalExpressionVariables(variables);
+ }
+ };
+ }
+
+ protected List> getSummaryTagComponentList(){
+ return new ArrayList<>();
+ }
+
+ protected ObjectReferenceType getReferencedObjectToNavigate(){
+ return null;
+ }
+
+ private boolean isReferencedObjectNull(){
+ return getReferencedObjectToNavigate() == null || StringUtils.isEmpty(getReferencedObjectToNavigate().getOid()) ||
+ getReferencedObjectToNavigate().getType() == null;
+ }
+
+ protected IModel getReferenceObjectTitleModel(){
+ return null;
+ }
+
+ private SummaryTag getArchetypeSummaryTag(){
+ String archetypeIconCssClass = getArchetypeIconCssClass();
+ String archetypeIconColor = getArchetypePolicyAdditionalCssClass();
+ String archetypeLabel = getArchetypeLabel();
+ if (StringUtils.isNotEmpty(archetypeLabel)){
+ SummaryTag archetypeSummaryTag = new SummaryTag(ID_SUMMARY_TAG, getModel()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void initialize(C object) {
+ setIconCssClass(archetypeIconCssClass);
+ setLabel(createStringResource(archetypeLabel).getString());
+ setColor(archetypeIconColor);
+ }
+
+ @Override
+ public String getIconCssClass() {
+ return getArchetypeIconCssClass();
+ }
+
+ @Override
+ public String getColor() {
+ return getArchetypePolicyAdditionalCssClass();
+ }
+
+ @Override
+ public String getLabel() {
+ return getArchetypeLabel();
+ }
+ };
+ return archetypeSummaryTag;
+ }
+ return null;
+ }
+
+ protected void addAdditionalExpressionVariables(ExpressionVariables variables) {
+
+ }
+
+ private GuiFlexibleLabelType getLabelConfiguration(QName configurationPropertyName) {
+ if (configuration == null) {
+ return null;
+ }
+ @SuppressWarnings("unchecked")
+ PrismContainer subContainer = configuration.asPrismContainerValue().findContainer(configurationPropertyName);
+ if (subContainer == null) {
+ return null;
+ }
+ return subContainer.getRealValue();
+ }
+
+ protected String getTagBoxCssClass() {
+ return null;
+ }
+
+ public Component getTag(String id) {
+ return tagBox.get(id);
+ }
+
+ private String getArchetypePolicyAdditionalCssClass(){
+ if (getModelObject() instanceof AssignmentHolderType){
+ DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase());
+ return WebComponentUtil.getIconColor(displayType);
+ }
+ return "";
+ }
+
+ private String getArchetypeLabel(){
+ if (getModelObject() instanceof AssignmentHolderType){
+ DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase());
+ return displayType == null || displayType.getLabel() == null ? "" : displayType.getLabel().getOrig();
+ }
+ return "";
+ }
+
+ private String getArchetypeIconCssClass(){
+ if (getModelObject() instanceof AssignmentHolderType){
+ DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType((AssignmentHolderType) getModelObject(), getPageBase());
+ return WebComponentUtil.getIconCssClass(displayType);
+ }
+ return "";
+ }
+
+ protected abstract String getIconCssClass();
+
+ protected abstract String getIconBoxAdditionalCssClass();
+
+ protected abstract String getBoxAdditionalCssClass();
+
+ protected QName getIdentifierPropertyName() {
+ return FocusType.F_NAME;
+ }
+
+ protected QName getDisplayNamePropertyName() {
+ return ObjectType.F_NAME;
+ }
+
+ protected IModel getDisplayNameModel() {
+ return null;
+ }
+
+ protected QName getTitlePropertyName() {
+ return null;
+ }
+
+ protected IModel getTitleModel() {
+ return null;
+ }
+
+ protected QName getTitle2PropertyName() {
+ return null;
+ }
+
+ protected IModel getTitle2Model() {
+ return null;
+ }
+
+ protected QName getTitle3PropertyName() {
+ return null;
+ }
+
+ protected IModel getTitle3Model() {
+ return null;
+ }
+
+ protected boolean isIdentifierVisible() {
+ return true;
+ }
+
+ protected IModel getParentOrgModel() {
+ GuiFlexibleLabelType config = getLabelConfiguration(SummaryPanelSpecificationType.F_ORGANIZATION);
+ if (config != null) {
+ return createFlexibleLabelModel(ObjectType.F_PARENT_ORG_REF, config);
+ } else {
+ return getDefaltParentOrgModel();
+ }
+ }
+
+ protected IModel getDefaltParentOrgModel() {
+ return new Model<>(null);
+ }
+
+ protected IModel getPhotoModel() {
+ return new Model<>(null);
+ }
+
+ protected WebMarkupContainer getSummaryBoxPanel(){
+ return (WebMarkupContainer) get(ID_BOX);
+ }
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/FocusSummaryPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/FocusSummaryPanel.java
index 34899d17a2c..177f797bb91 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/FocusSummaryPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/FocusSummaryPanel.java
@@ -1,190 +1,190 @@
-/*
- * Copyright (c) 2015-2019 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;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.resource.AbstractResource;
-import org.apache.wicket.request.resource.ByteArrayResource;
-
-import com.evolveum.midpoint.gui.api.GuiStyleConstants;
-import com.evolveum.midpoint.gui.api.model.ReadOnlyModel;
-import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
-import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
-import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
-import com.evolveum.midpoint.schema.constants.ExpressionConstants;
-import com.evolveum.midpoint.schema.constants.RelationTypes;
-import com.evolveum.midpoint.schema.util.FocusTypeUtil;
-import com.evolveum.midpoint.web.component.util.SummaryTag;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-import com.evolveum.midpoint.web.page.admin.roles.component.RoleSummaryPanel;
-import com.evolveum.midpoint.web.page.admin.users.component.OrgSummaryPanel;
-import com.evolveum.midpoint.web.page.admin.users.component.ServiceSummaryPanel;
-import com.evolveum.midpoint.web.page.admin.users.component.UserSummaryPanel;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.ServiceType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
-
-/**
- * @author semancik
- *
- */
-public abstract class FocusSummaryPanel extends ObjectSummaryPanel {
- private static final long serialVersionUID = 1L;
-
- private static final String DOT_CLASS = FocusSummaryPanel.class.getName() + ".";
- private static final String OPERATION_LOAD_PARENT_ORGS = DOT_CLASS + "activationTag";
-
-
- public FocusSummaryPanel(String id, Class type, final IModel model, ModelServiceLocator serviceLocator) {
- super(id, type, model, serviceLocator);
- }
-
- @Override
- protected List> getSummaryTagComponentList(){
- List> summaryTagList = new ArrayList<>();
-
- SummaryTag tagActivation = new SummaryTag(ID_SUMMARY_TAG, getModel()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void initialize(O object) {
- ActivationType activation = null;
-// O object = object.asObjectable();
- if (object instanceof FocusType) {
- activation = ((FocusType)object).getActivation();
- }
- if (activation == null) {
- setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_ACTIVE);
- setLabel(getString("ActivationStatusType.ENABLED"));
-
- } else if (activation.getEffectiveStatus() == ActivationStatusType.DISABLED) {
- setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_INACTIVE);
- setLabel(getString("ActivationStatusType.DISABLED"));
- setCssClass(GuiStyleConstants.CLASS_ICON_STYLE_DISABLED);
-
- } else if (activation.getEffectiveStatus() == ActivationStatusType.ARCHIVED) {
- setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_INACTIVE);
- setLabel(getString("ActivationStatusType.ARCHIVED"));
- setCssClass(GuiStyleConstants.CLASS_ICON_STYLE_ARCHIVED);
-
- } else {
- setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_ACTIVE);
- setLabel(getString("ActivationStatusType.ENABLED"));
- }
- }
- };
- tagActivation.add(new VisibleEnableBehaviour() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible() {
- return isActivationVisible();
- }
- });
- summaryTagList.add(tagActivation);
- return summaryTagList;
- }
-
- @Override
- protected IModel getDefaltParentOrgModel() {
- return new ReadOnlyModel(() -> {
- O focusObject = FocusSummaryPanel.this.getModel().getObject();
- List parentOrgs = focusObject != null ? WebComponentUtil.loadReferencedObjectList(focusObject.getParentOrgRef(),
- OPERATION_LOAD_PARENT_ORGS, FocusSummaryPanel.this.getPageBase()) : null;
- if (parentOrgs == null || parentOrgs.isEmpty()) {
- return "";
- }
- // Kinda hack now .. "functional" orgType always has preference
- // this whole thing should be driven by an expression later on
- for (OrgType orgType : parentOrgs) {
- if (FocusTypeUtil.determineSubTypes(orgType).contains("functional")) {
- return WebComponentUtil.getDisplayNameOrName(orgType.asPrismObject());
- }
- }
- //search for manager org at first
- for (ObjectReferenceType orgRef : focusObject.getParentOrgRef()) {
- if (orgRef.getRelation() != null && RelationTypes.MANAGER.equals(orgRef.getRelation())) {
- for (OrgType orgType : parentOrgs){
- if (orgType.getOid().equals(orgRef.getOid())){
- return WebComponentUtil.getDisplayNameOrName(orgType.asPrismObject());
- }
- }
- }
- }
- // Just use the first one as a fallback
- return WebComponentUtil.getDisplayNameOrName(parentOrgs.iterator().next().asPrismObject());
- });
- }
-
- @Override
- protected void addAdditionalExpressionVariables(ExpressionVariables variables) {
- List parentOrgs = new ArrayList<>();
- for (ObjectReferenceType parentOrgRef : getModelObject().getParentOrgRef()) {
- if (parentOrgRef != null && parentOrgRef.asReferenceValue().getObject() != null) {
- parentOrgs.add((OrgType) parentOrgRef.asReferenceValue().getObject().asObjectable());
- }
- }
- variables.putList(ExpressionConstants.VAR_ORGS, parentOrgs);
- }
-
- @Override
- protected IModel getPhotoModel() {
- return new IModel() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public AbstractResource getObject() {
- byte[] jpegPhoto = null;
- O object = getModel().getObject();
- if (object == null){
- return null;
- }
- if (object instanceof FocusType) {
- jpegPhoto = ((FocusType) object).getJpegPhoto();
- }
- if (jpegPhoto == null) {
- return null;
- } else {
- return new ByteArrayResource("image/jpeg", jpegPhoto);
- }
- }
- };
- }
-
- protected boolean isActivationVisible() {
- return true;
- }
-
- public static void addSummaryPanel(MarkupContainer parentComponent, PrismObject focus, PrismObjectWrapper focusWrapper, String id, ModelServiceLocator serviceLocator) {
- if (focus.getCompileTimeClass().equals(UserType.class)) {
- parentComponent.add(new UserSummaryPanel(id,
- Model.of((UserType)focus.asObjectable()), serviceLocator));
- } else if (focus.getCompileTimeClass().equals(RoleType.class)) {
- parentComponent.add(new RoleSummaryPanel(id,
- Model.of((RoleType)focus.asObjectable()), serviceLocator));
- } else if (focus.getCompileTimeClass().equals(OrgType.class)) {
- parentComponent.add(new OrgSummaryPanel(id,
- Model.of((OrgType)focus.asObjectable()), serviceLocator));
- } else if (focus.getCompileTimeClass().equals(ServiceType.class)) {
- parentComponent.add(new ServiceSummaryPanel(id,
- Model.of((ServiceType)focus.asObjectable()), serviceLocator));
- }
- }
-}
+/*
+ * Copyright (c) 2015-2019 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;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.wicket.request.resource.ByteArrayResource;
+
+import com.evolveum.midpoint.gui.api.GuiStyleConstants;
+import com.evolveum.midpoint.gui.api.model.ReadOnlyModel;
+import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
+import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
+import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.prism.PrismObject;
+import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
+import com.evolveum.midpoint.schema.constants.ExpressionConstants;
+import com.evolveum.midpoint.schema.constants.RelationTypes;
+import com.evolveum.midpoint.schema.util.FocusTypeUtil;
+import com.evolveum.midpoint.web.component.util.SummaryTag;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
+import com.evolveum.midpoint.web.page.admin.roles.component.RoleSummaryPanel;
+import com.evolveum.midpoint.web.page.admin.users.component.OrgSummaryPanel;
+import com.evolveum.midpoint.web.page.admin.users.component.ServiceSummaryPanel;
+import com.evolveum.midpoint.web.page.admin.users.component.UserSummaryPanel;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.ServiceType;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
+
+/**
+ * @author semancik
+ *
+ */
+public abstract class FocusSummaryPanel extends ObjectSummaryPanel {
+ private static final long serialVersionUID = 1L;
+
+ private static final String DOT_CLASS = FocusSummaryPanel.class.getName() + ".";
+ private static final String OPERATION_LOAD_PARENT_ORGS = DOT_CLASS + "activationTag";
+
+
+ public FocusSummaryPanel(String id, Class type, final IModel model, ModelServiceLocator serviceLocator) {
+ super(id, type, model, serviceLocator);
+ }
+
+ @Override
+ protected List> getSummaryTagComponentList(){
+ List> summaryTagList = new ArrayList<>();
+
+ SummaryTag tagActivation = new SummaryTag(ID_SUMMARY_TAG, getModel()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void initialize(O object) {
+ ActivationType activation = null;
+// O object = object.asObjectable();
+ if (object instanceof FocusType) {
+ activation = ((FocusType)object).getActivation();
+ }
+ if (activation == null) {
+ setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_ACTIVE);
+ setLabel(getString("ActivationStatusType.ENABLED"));
+
+ } else if (activation.getEffectiveStatus() == ActivationStatusType.DISABLED) {
+ setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_INACTIVE);
+ setLabel(getString("ActivationStatusType.DISABLED"));
+ setCssClass(GuiStyleConstants.CLASS_ICON_STYLE_DISABLED);
+
+ } else if (activation.getEffectiveStatus() == ActivationStatusType.ARCHIVED) {
+ setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_INACTIVE);
+ setLabel(getString("ActivationStatusType.ARCHIVED"));
+ setCssClass(GuiStyleConstants.CLASS_ICON_STYLE_ARCHIVED);
+
+ } else {
+ setIconCssClass(GuiStyleConstants.CLASS_ICON_ACTIVATION_ACTIVE);
+ setLabel(getString("ActivationStatusType.ENABLED"));
+ }
+ }
+ };
+ tagActivation.add(new VisibleEnableBehaviour() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean isVisible() {
+ return isActivationVisible();
+ }
+ });
+ summaryTagList.add(tagActivation);
+ return summaryTagList;
+ }
+
+ @Override
+ protected IModel getDefaltParentOrgModel() {
+ return new ReadOnlyModel<>(() -> {
+ O focusObject = FocusSummaryPanel.this.getModel().getObject();
+ List parentOrgs = focusObject != null ? WebComponentUtil.loadReferencedObjectList(focusObject.getParentOrgRef(),
+ OPERATION_LOAD_PARENT_ORGS, FocusSummaryPanel.this.getPageBase()) : null;
+ if (parentOrgs == null || parentOrgs.isEmpty()) {
+ return "";
+ }
+ // Kinda hack now .. "functional" orgType always has preference
+ // this whole thing should be driven by an expression later on
+ for (OrgType orgType : parentOrgs) {
+ if (FocusTypeUtil.determineSubTypes(orgType).contains("functional")) {
+ return WebComponentUtil.getDisplayNameOrName(orgType.asPrismObject());
+ }
+ }
+ //search for manager org at first
+ for (ObjectReferenceType orgRef : focusObject.getParentOrgRef()) {
+ if (orgRef.getRelation() != null && RelationTypes.MANAGER.equals(orgRef.getRelation())) {
+ for (OrgType orgType : parentOrgs){
+ if (orgType.getOid().equals(orgRef.getOid())){
+ return WebComponentUtil.getDisplayNameOrName(orgType.asPrismObject());
+ }
+ }
+ }
+ }
+ // Just use the first one as a fallback
+ return WebComponentUtil.getDisplayNameOrName(parentOrgs.iterator().next().asPrismObject());
+ });
+ }
+
+ @Override
+ protected void addAdditionalExpressionVariables(ExpressionVariables variables) {
+ List parentOrgs = new ArrayList<>();
+ for (ObjectReferenceType parentOrgRef : getModelObject().getParentOrgRef()) {
+ if (parentOrgRef != null && parentOrgRef.asReferenceValue().getObject() != null) {
+ parentOrgs.add((OrgType) parentOrgRef.asReferenceValue().getObject().asObjectable());
+ }
+ }
+ variables.putList(ExpressionConstants.VAR_ORGS, parentOrgs);
+ }
+
+ @Override
+ protected IModel getPhotoModel() {
+ return new IModel() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public AbstractResource getObject() {
+ byte[] jpegPhoto = null;
+ O object = getModel().getObject();
+ if (object == null){
+ return null;
+ }
+ if (object instanceof FocusType) {
+ jpegPhoto = ((FocusType) object).getJpegPhoto();
+ }
+ if (jpegPhoto == null) {
+ return null;
+ } else {
+ return new ByteArrayResource("image/jpeg", jpegPhoto);
+ }
+ }
+ };
+ }
+
+ protected boolean isActivationVisible() {
+ return true;
+ }
+
+ public static void addSummaryPanel(MarkupContainer parentComponent, PrismObject focus, PrismObjectWrapper focusWrapper, String id, ModelServiceLocator serviceLocator) {
+ if (focus.getCompileTimeClass().equals(UserType.class)) {
+ parentComponent.add(new UserSummaryPanel(id,
+ Model.of((UserType)focus.asObjectable()), serviceLocator));
+ } else if (focus.getCompileTimeClass().equals(RoleType.class)) {
+ parentComponent.add(new RoleSummaryPanel(id,
+ Model.of((RoleType)focus.asObjectable()), serviceLocator));
+ } else if (focus.getCompileTimeClass().equals(OrgType.class)) {
+ parentComponent.add(new OrgSummaryPanel(id,
+ Model.of((OrgType)focus.asObjectable()), serviceLocator));
+ } else if (focus.getCompileTimeClass().equals(ServiceType.class)) {
+ parentComponent.add(new ServiceSummaryPanel(id,
+ Model.of((ServiceType)focus.asObjectable()), serviceLocator));
+ }
+ }
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/QueryTextAreaPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/QueryTextAreaPanel.java
index e811f464d87..ff8b36f4fef 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/QueryTextAreaPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/QueryTextAreaPanel.java
@@ -62,6 +62,10 @@ public String getObject() {
@Override
public void setObject(String object) {
+ if (object == null) {
+ model.setObject(null);
+ return;
+ }
try {
model.setObject(((PageBase)getPage()).getPrismContext()
.parserFor(object).xml().parseRealValue(QueryType.class));
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeAssignmentsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeAssignmentsTabPanel.java
index 3d0abcc8a31..d01338b0483 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeAssignmentsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeAssignmentsTabPanel.java
@@ -6,6 +6,9 @@
*/
package com.evolveum.midpoint.web.component.objectdetails;
+import com.evolveum.midpoint.web.page.admin.server.RefreshableTabPanel;
+
+import org.apache.wicket.Component;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.Model;
@@ -17,10 +20,13 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
+import java.util.Collection;
+import java.util.Collections;
+
/**
* @author semancik
*/
-public class AssignmentHolderTypeAssignmentsTabPanel extends AbstractObjectTabPanel {
+public class AssignmentHolderTypeAssignmentsTabPanel extends AbstractObjectTabPanel implements RefreshableTabPanel {
private static final long serialVersionUID = 1L;
private static final String ID_ASSIGNMENTS = "assignmentsContainer";
@@ -62,4 +68,8 @@ protected boolean isReadonly(){
return false;
}
+ @Override
+ public Collection getComponentsToUpdate() {
+ return Collections.singleton(this);
+ }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeDetailsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeDetailsTabPanel.java
index 7754500543f..047079facbb 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeDetailsTabPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AssignmentHolderTypeDetailsTabPanel.java
@@ -6,28 +6,29 @@
*/
package com.evolveum.midpoint.web.component.objectdetails;
+import java.util.Collection;
+import java.util.Collections;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.panel.Panel;
+
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
-import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder;
import com.evolveum.midpoint.prism.path.ItemPath;
-import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.ItemVisibility;
import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
+import com.evolveum.midpoint.web.page.admin.server.RefreshableTabPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import org.apache.wicket.markup.html.panel.Panel;
-
-import java.util.ArrayList;
-import java.util.List;
/**
* @author semancik
*/
-public class AssignmentHolderTypeDetailsTabPanel extends AbstractObjectTabPanel {
+public class AssignmentHolderTypeDetailsTabPanel extends AbstractObjectTabPanel implements RefreshableTabPanel {
private static final long serialVersionUID = 1L;
private static final String ID_MAIN_PANEL = "main";
@@ -36,7 +37,7 @@ public class AssignmentHolderTypeDetailsTabPanel> mainForm,
LoadableModel> focusWrapperModel) {
super(id, mainForm, focusWrapperModel);
@@ -69,4 +70,9 @@ private void initLayout() {
}
}
+ @Override
+ public Collection getComponentsToUpdate() {
+ getObjectWrapperModel().reset();
+ return Collections.singleton(this);
+ }
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java
index d0f28488763..35ae48728f2 100755
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java
@@ -14,7 +14,6 @@
import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper;
import com.evolveum.midpoint.gui.api.util.WebPrismUtil;
-import com.evolveum.midpoint.model.api.AssignmentCandidatesSpecification;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.query.ObjectFilter;
@@ -29,10 +28,12 @@
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.PageSystemConfiguration;
import com.evolveum.midpoint.web.page.admin.server.OperationalButtonsPanel;
+import com.evolveum.midpoint.web.page.admin.server.RefreshableTabPanel;
import com.evolveum.midpoint.web.security.util.SecurityUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
+import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.Session;
@@ -40,7 +41,6 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.repeater.RepeatingView;
@@ -246,7 +246,6 @@ public void initialize(final PrismObject objectToEdit, boolean isNewObject) {
public void initialize(final PrismObject objectToEdit, boolean isNewObject, boolean isReadonly) {
initializeModel(objectToEdit, isNewObject, isReadonly);
-// initLayout();
}
protected void initializeModel(final PrismObject objectToEdit, boolean isNewObject, boolean isReadonly) {
@@ -315,17 +314,32 @@ protected void initLayout() {
add(progressPanel);
}
- protected abstract ObjectSummaryPanel createSummaryPanel();
+ protected abstract ObjectSummaryPanel createSummaryPanel(IModel summaryModel);
protected void initLayoutSummaryPanel() {
- ObjectSummaryPanel summaryPanel = createSummaryPanel();
+ ObjectSummaryPanel summaryPanel = createSummaryPanel(loadModelForSummaryPanel());
summaryPanel.setOutputMarkupId(true);
setSummaryPanelVisibility(summaryPanel);
add(summaryPanel);
}
+ private IModel loadModelForSummaryPanel() {
+ return new LoadableModel(true) {
+
+ @Override
+ protected O load() {
+ PrismObjectWrapper wrapper = getObjectWrapper();
+ if (wrapper == null) {
+ return null;
+ }
+
+ return wrapper.getObject().asObjectable();
+ }
+ };
+ }
+
protected void setSummaryPanelVisibility(ObjectSummaryPanel summaryPanel){
summaryPanel.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@@ -374,7 +388,18 @@ public boolean isRefreshEnabled() {
}
public void refresh(AjaxRequestTarget target) {
+ getObjectModel().reset();
+ target.add(getSummaryPanel());
+ target.add(getOperationalButtonsPanel());
+ target.add(getFeedbackPanel());
+ for (Component component : getMainPanel().getTabbedPanel()) {
+ if (component instanceof RefreshableTabPanel) {
+ for (Component c : ((RefreshableTabPanel) component).getComponentsToUpdate()) {
+ target.add(c);
+ }
+ }
+ }
}
public int getRefreshInterval() {
@@ -440,6 +465,7 @@ protected void addPerformed(AjaxRequestTarget target, List newAssignmentsList) {
LOGGER.error("Cannot find assignment wrapper: {}", e.getMessage());
}
target.add(PageAdminObjectDetails.this.getFeedbackPanel());
+ refresh(target);
}
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/archetype/PageArchetype.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/archetype/PageArchetype.java
index bf1ba0ac656..f20e5d3a575 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/archetype/PageArchetype.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/archetype/PageArchetype.java
@@ -18,7 +18,6 @@
import com.evolveum.midpoint.gui.api.ComponentConstants;
import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
-import com.evolveum.midpoint.gui.impl.factory.ItemRealValueModel;
import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ContainerOfSystemConfigurationPanel;
import com.evolveum.midpoint.gui.impl.prism.PrismObjectValueWrapper;
import com.evolveum.midpoint.prism.PrismObject;
@@ -83,9 +82,8 @@ protected ArchetypeType createNewObject() {
}
@Override
- protected ObjectSummaryPanel createSummaryPanel() {
- IModel> valueModel = new PropertyModel<>(getObjectModel(), "value");
- return new ArchetypeSummaryPanel(ID_SUMMARY_PANEL, new ItemRealValueModel<>(valueModel), this);
+ protected ObjectSummaryPanel createSummaryPanel(IModel summaryModel) {
+ return new ArchetypeSummaryPanel(ID_SUMMARY_PANEL, summaryModel, this);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java
index 27c782a6cfd..82ec17ef05d 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/cases/PageCase.java
@@ -1,245 +1,243 @@
-/*
- * Copyright (c) 2010-2019 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.cases;
-
-import java.util.List;
-
-import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
-import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
-import com.evolveum.midpoint.prism.query.ObjectQuery;
-import com.evolveum.midpoint.prism.query.QueryFactory;
-import com.evolveum.midpoint.schema.util.CaseTypeUtil;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-import com.evolveum.midpoint.gui.api.ComponentConstants;
-import com.evolveum.midpoint.gui.api.component.tabs.CountablePanelTab;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.schema.result.OperationResult;
-import com.evolveum.midpoint.security.api.AuthorizationConstants;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.web.application.AuthorizationAction;
-import com.evolveum.midpoint.web.application.PageDescriptor;
-import com.evolveum.midpoint.web.component.ObjectSummaryPanel;
-import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
-import com.evolveum.midpoint.web.component.objectdetails.AssignmentHolderTypeMainPanel;
-import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
-import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
-
-@PageDescriptor(url = "/admin/case", encoder = OnePageParameterEncoder.class, action = {
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CASES_ALL_URL,
- label = "PageAdminCases.auth.casesAll.label",
- description = "PageAdminCases.auth.casesAll.description"),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CASE_URL,
- label = "PageCase.auth.case.label",
- description = "PageCase.auth.case.description")})
-public class PageCase extends PageAdminObjectDetails {
- private static final long serialVersionUID = 1L;
-
- private static final Trace LOGGER = TraceManager.getTrace(PageCase.class);
- private static final String DOT_CLASS = PageCase.class.getName() + ".";
- private static final String OPERATION_LOAD_CASE = DOT_CLASS + "loadCase";
-
- private static final String ID_SUMMARY_PANEL = "summaryPanel";
-
- public PageCase() {
- this(null, true);
- }
-
- public PageCase(PrismObject unitToEdit, boolean isNewObject) {
- initialize(unitToEdit, isNewObject, true);
- }
-
- public PageCase(PageParameters parameters) {
- getPageParameters().overwriteWith(parameters);
- initialize(null, true, true);
- }
-
-
- @Override
- protected AbstractObjectMainPanel createMainPanel(String id) {
- return new AssignmentHolderTypeMainPanel(id, getObjectModel(), this) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected List createTabs(final PageAdminObjectDetails parentPage) {
- List tabs = super.createTabs(parentPage);
-
- if (matchCaseType(SystemObjectsType.ARCHETYPE_APPROVAL_CASE)
- && CaseTypeUtil.approvalSchemaExists(getObject() != null ? getObject().asObjectable() : null)) {
- tabs.add(0,
- new PanelTab(parentPage.createStringResource("PageCase.approvalTab"),
- getTabVisibility(ComponentConstants.UI_CASE_TAB_APPROVAL_URL, true, parentPage)) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer createPanel(String panelId) {
- return new ApprovalCaseTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
- }
- });
- } else if (matchCaseType(SystemObjectsType.ARCHETYPE_OPERATION_REQUEST)) {
- tabs.add(0,
- new PanelTab(parentPage.createStringResource("PageCase.operationRequestTab"),
- getTabVisibility(ComponentConstants.UI_CASE_TAB_APPROVAL_URL, true, parentPage)) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer createPanel(String panelId) {
- return new OperationRequestCaseTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
- }
-
- });
- } else if (matchCaseType(SystemObjectsType.ARCHETYPE_MANUAL_CASE)) {
- //todo manual case tab
- }
- if (!matchCaseType(SystemObjectsType.ARCHETYPE_OPERATION_REQUEST)) {
-
- tabs.add(
- new CountablePanelTab(parentPage.createStringResource("PageCase.workitemsTab"),
- getTabVisibility(ComponentConstants.UI_CASE_TAB_WORKITEMS_URL, false, parentPage)) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer createPanel(String panelId) {
- return new CaseWorkitemsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
- }
-
- @Override
- public String getCount() {
- return Integer.toString(countWorkItems());
- }
- });
- }
- if (matchCaseType(SystemObjectsType.ARCHETYPE_OPERATION_REQUEST)){
- tabs.add(
- new CountablePanelTab(parentPage.createStringResource("PageCase.childCasesTab"),
- getTabVisibility(ComponentConstants.UI_CASE_TAB_CHILD_CASES_URL, false, parentPage)) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer createPanel(String panelId) {
- return new ChildCasesTabPanel(panelId, getMainForm(), getObjectModel());
- }
-
- @Override
- public String getCount() {
- return Integer.toString(countChildrenCases());
- }
- });
- }
-
- // commented now as it doesn't display informative data
-// tabs.add(
-// new CountablePanelTab(parentPage.createStringResource("PageCase.events"),
-// getTabVisibility(ComponentConstants.UI_CASE_TAB_EVENTS_URL, false, parentPage)) {
-//
-// private static final long serialVersionUID = 1L;
-//
-// @Override
-// public WebMarkupContainer createPanel(String panelId) {
-// return new CaseEventsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
-// }
-//
-// @Override
-// public String getCount() {
-// return Integer.toString(countEvents());
-// }
-// });
- return tabs;
- }
-
- @Override
- protected boolean getOptionsPanelVisibility() {
- return false;
- }
-
- @Override
- protected boolean isReadonly(){
- return true;
- }
- };
- }
-
- @Override
- protected IModel createPageTitleModel() {
- return createStringResource("PageCase.title");
- }
-
- @Override
- protected ObjectSummaryPanel createSummaryPanel() {
- return new CaseSummaryPanel(ID_SUMMARY_PANEL, CaseType.class, Model.of(getObjectModel().getObject().getObject().asObjectable()), this);
- }
-
- @Override
- public void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync) {
-
- }
-
- @Override
- public void continueEditing(AjaxRequestTarget target) {
-
- }
-
- @Override
- public Class getCompileTimeClass() {
- return CaseType.class;
- }
-
- @Override
- protected CaseType createNewObject(){
- return new CaseType();
- }
-
- @Override
- protected Class getRestartResponsePage() {
- return PageCases.class;
- }
-
- private boolean matchCaseType(SystemObjectsType archetypeType){
- CaseType caseObject = getObjectWrapper().getObject().asObjectable();
- if (caseObject == null || caseObject.getAssignment() == null){
- return false;
- }
- for (AssignmentType assignment : caseObject.getAssignment()){
- ObjectReferenceType targetRef = assignment.getTargetRef();
- if (targetRef != null && archetypeType.value().equals(targetRef.getOid())){
- return true;
- }
- }
- return false;
- }
-
- private int countWorkItems(){
- List workItemsList = getObjectModel().getObject().getObject().asObjectable().getWorkItem();
- return workItemsList == null ? 0 : workItemsList.size();
- }
-
- private int countChildrenCases(){
- CaseType currentCase = getObjectModel().getObject().getObject().asObjectable();
- ObjectQuery childrenCasesQuery = getPrismContext().queryFor(CaseType.class)
- .item(CaseType.F_PARENT_REF).ref(currentCase.getOid())
- .build();
- return WebModelServiceUtils.countObjects(CaseType.class, childrenCasesQuery, PageCase.this);
- }
-
- private int countEvents(){
- List eventsList = getObjectModel().getObject().getObject().asObjectable().getEvent();
- return eventsList == null ? 0 : eventsList.size();
- }
-}
+/*
+ * Copyright (c) 2010-2019 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.cases;
+
+import java.util.List;
+
+import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
+import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
+import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.schema.util.CaseTypeUtil;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+import com.evolveum.midpoint.gui.api.ComponentConstants;
+import com.evolveum.midpoint.gui.api.component.tabs.CountablePanelTab;
+import com.evolveum.midpoint.prism.PrismObject;
+import com.evolveum.midpoint.schema.result.OperationResult;
+import com.evolveum.midpoint.security.api.AuthorizationConstants;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.web.application.AuthorizationAction;
+import com.evolveum.midpoint.web.application.PageDescriptor;
+import com.evolveum.midpoint.web.component.ObjectSummaryPanel;
+import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
+import com.evolveum.midpoint.web.component.objectdetails.AssignmentHolderTypeMainPanel;
+import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
+import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
+
+@PageDescriptor(url = "/admin/case", encoder = OnePageParameterEncoder.class, action = {
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CASES_ALL_URL,
+ label = "PageAdminCases.auth.casesAll.label",
+ description = "PageAdminCases.auth.casesAll.description"),
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CASE_URL,
+ label = "PageCase.auth.case.label",
+ description = "PageCase.auth.case.description")})
+public class PageCase extends PageAdminObjectDetails {
+ private static final long serialVersionUID = 1L;
+
+ private static final Trace LOGGER = TraceManager.getTrace(PageCase.class);
+ private static final String DOT_CLASS = PageCase.class.getName() + ".";
+ private static final String OPERATION_LOAD_CASE = DOT_CLASS + "loadCase";
+
+ private static final String ID_SUMMARY_PANEL = "summaryPanel";
+
+ public PageCase() {
+ this(null, true);
+ }
+
+ public PageCase(PrismObject unitToEdit, boolean isNewObject) {
+ initialize(unitToEdit, isNewObject, true);
+ }
+
+ public PageCase(PageParameters parameters) {
+ getPageParameters().overwriteWith(parameters);
+ initialize(null, true, true);
+ }
+
+
+ @Override
+ protected AbstractObjectMainPanel createMainPanel(String id) {
+ return new AssignmentHolderTypeMainPanel(id, getObjectModel(), this) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected List createTabs(final PageAdminObjectDetails parentPage) {
+ List tabs = super.createTabs(parentPage);
+
+ if (matchCaseType(SystemObjectsType.ARCHETYPE_APPROVAL_CASE)
+ && CaseTypeUtil.approvalSchemaExists(getObject() != null ? getObject().asObjectable() : null)) {
+ tabs.add(0,
+ new PanelTab(parentPage.createStringResource("PageCase.approvalTab"),
+ getTabVisibility(ComponentConstants.UI_CASE_TAB_APPROVAL_URL, true, parentPage)) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer createPanel(String panelId) {
+ return new ApprovalCaseTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
+ }
+ });
+ } else if (matchCaseType(SystemObjectsType.ARCHETYPE_OPERATION_REQUEST)) {
+ tabs.add(0,
+ new PanelTab(parentPage.createStringResource("PageCase.operationRequestTab"),
+ getTabVisibility(ComponentConstants.UI_CASE_TAB_APPROVAL_URL, true, parentPage)) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer createPanel(String panelId) {
+ return new OperationRequestCaseTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
+ }
+
+ });
+ } else if (matchCaseType(SystemObjectsType.ARCHETYPE_MANUAL_CASE)) {
+ //todo manual case tab
+ }
+ if (!matchCaseType(SystemObjectsType.ARCHETYPE_OPERATION_REQUEST)) {
+
+ tabs.add(
+ new CountablePanelTab(parentPage.createStringResource("PageCase.workitemsTab"),
+ getTabVisibility(ComponentConstants.UI_CASE_TAB_WORKITEMS_URL, false, parentPage)) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer createPanel(String panelId) {
+ return new CaseWorkitemsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
+ }
+
+ @Override
+ public String getCount() {
+ return Integer.toString(countWorkItems());
+ }
+ });
+ }
+ if (matchCaseType(SystemObjectsType.ARCHETYPE_OPERATION_REQUEST)){
+ tabs.add(
+ new CountablePanelTab(parentPage.createStringResource("PageCase.childCasesTab"),
+ getTabVisibility(ComponentConstants.UI_CASE_TAB_CHILD_CASES_URL, false, parentPage)) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer createPanel(String panelId) {
+ return new ChildCasesTabPanel(panelId, getMainForm(), getObjectModel());
+ }
+
+ @Override
+ public String getCount() {
+ return Integer.toString(countChildrenCases());
+ }
+ });
+ }
+
+ // commented now as it doesn't display informative data
+// tabs.add(
+// new CountablePanelTab(parentPage.createStringResource("PageCase.events"),
+// getTabVisibility(ComponentConstants.UI_CASE_TAB_EVENTS_URL, false, parentPage)) {
+//
+// private static final long serialVersionUID = 1L;
+//
+// @Override
+// public WebMarkupContainer createPanel(String panelId) {
+// return new CaseEventsTabPanel(panelId, getMainForm(), getObjectModel(), parentPage);
+// }
+//
+// @Override
+// public String getCount() {
+// return Integer.toString(countEvents());
+// }
+// });
+ return tabs;
+ }
+
+ @Override
+ protected boolean getOptionsPanelVisibility() {
+ return false;
+ }
+
+ @Override
+ protected boolean isReadonly(){
+ return true;
+ }
+ };
+ }
+
+ @Override
+ protected IModel createPageTitleModel() {
+ return createStringResource("PageCase.title");
+ }
+
+ @Override
+ protected ObjectSummaryPanel createSummaryPanel(IModel summaryModel) {
+ return new CaseSummaryPanel(ID_SUMMARY_PANEL, CaseType.class, summaryModel, this);
+ }
+
+ @Override
+ public void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync) {
+
+ }
+
+ @Override
+ public void continueEditing(AjaxRequestTarget target) {
+
+ }
+
+ @Override
+ public Class getCompileTimeClass() {
+ return CaseType.class;
+ }
+
+ @Override
+ protected CaseType createNewObject(){
+ return new CaseType();
+ }
+
+ @Override
+ protected Class getRestartResponsePage() {
+ return PageCases.class;
+ }
+
+ private boolean matchCaseType(SystemObjectsType archetypeType){
+ CaseType caseObject = getObjectWrapper().getObject().asObjectable();
+ if (caseObject == null || caseObject.getAssignment() == null){
+ return false;
+ }
+ for (AssignmentType assignment : caseObject.getAssignment()){
+ ObjectReferenceType targetRef = assignment.getTargetRef();
+ if (targetRef != null && archetypeType.value().equals(targetRef.getOid())){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private int countWorkItems(){
+ List workItemsList = getObjectModel().getObject().getObject().asObjectable().getWorkItem();
+ return workItemsList == null ? 0 : workItemsList.size();
+ }
+
+ private int countChildrenCases(){
+ CaseType currentCase = getObjectModel().getObject().getObject().asObjectable();
+ ObjectQuery childrenCasesQuery = getPrismContext().queryFor(CaseType.class)
+ .item(CaseType.F_PARENT_REF).ref(currentCase.getOid())
+ .build();
+ return WebModelServiceUtils.countObjects(CaseType.class, childrenCasesQuery, PageCase.this);
+ }
+
+ private int countEvents(){
+ List eventsList = getObjectModel().getObject().getObject().asObjectable().getEvent();
+ return eventsList == null ? 0 : eventsList.size();
+ }
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java
index 2e52f10d175..fcdf9bc2a01 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java
@@ -1,429 +1,427 @@
-/*
- * 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.web.page.admin.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import javax.xml.namespace.QName;
-
-import com.evolveum.midpoint.web.application.Url;
-import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-
-import org.apache.wicket.Page;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.extensions.markup.html.tabs.ITab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
-import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.GlobalPolicyRuleTabPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.LoggingConfigurationTabPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.NotificationConfigTabPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ObjectPolicyConfigurationTabPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ProfilingConfigurationTabPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ContainerOfSystemConfigurationPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.SystemConfigPanel;
-import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.SystemConfigurationSummaryPanel;
-import com.evolveum.midpoint.gui.impl.prism.PrismContainerPanel;
-import com.evolveum.midpoint.prism.Containerable;
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.path.ItemName;
-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.logging.LoggingUtils;
-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.component.ObjectSummaryPanel;
-import com.evolveum.midpoint.web.component.TabbedPanel;
-import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
-import com.evolveum.midpoint.web.component.progress.ProgressPanel;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel;
-import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
-
-/**
- * @author lazyman
- * @author skublik
- */
-@PageDescriptor(
- urls = {
- @Url(mountUrl = "/admin/config/system", matchUrlForSecurity = "/admin/config/system"),
- },
- action = {
- @AuthorizationAction(actionUri = PageAdminConfiguration.AUTH_CONFIGURATION_ALL,
- label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
- description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CONFIGURATION_SYSTEM_CONFIG_URL,
- label = "PageSystemConfiguration.auth.configSystemConfiguration.label",
- description = "PageSystemConfiguration.auth.configSystemConfiguration.description")
- })
-public class PageSystemConfiguration extends PageAdminObjectDetails {
-
- private static final long serialVersionUID = 1L;
-
- public static final String SELECTED_TAB_INDEX = "tab";
- public static final String SELECTED_SERVER_INDEX = "mailServerIndex";
- public static final String SERVER_LIST_SIZE = "mailServerListSize";
-
- private static final String DOT_CLASS = PageSystemConfiguration.class.getName() + ".";
- private static final String OPERATION_LOAD_SYSTEM_CONFIG = DOT_CLASS + "load";
-
- public static final int CONFIGURATION_TAB_BASIC = 0;
- public static final int CONFIGURATION_TAB_OBJECT_POLICY = 1;
- public static final int CONFIGURATION_TAB_GLOBAL_POLICY_RULE = 2;
- public static final int CONFIGURATION_TAB_GLOBAL_ACCOUNT_SYNCHRONIZATION = 3;
- public static final int CONFIGURATION_TAB_CLEANUP_POLICY = 4;
- public static final int CONFIGURATION_TAB_NOTIFICATION = 5;
- public static final int CONFIGURATION_TAB_LOGGING = 6;
- public static final int CONFIGURATION_TAB_PROFILING = 7;
- public static final int CONFIGURATION_TAB_ADMIN_GUI = 8;
- public static final int CONFIGURATION_TAB_WORKFLOW = 9;
- public static final int CONFIGURATION_TAB_ROLE_MANAGEMENT = 10;
- public static final int CONFIGURATION_TAB_INTERNALS = 11;
- public static final int CONFIGURATION_TAB_DEPLOYMENT_INFORMATION = 12;
- public static final int CONFIGURATION_TAB_ACCESS_CERTIFICATION = 13;
- public static final int CONFIGURATION_TAB_INFRASTRUCTURE = 14;
- public static final int CONFIGURATION_TAB_FULL_TEXT_SEARCH = 15;
-
- private static final Trace LOGGER = TraceManager.getTrace(PageSystemConfiguration.class);
-
- private static final String ID_SUMM_PANEL = "summaryPanel";
-
- public static final String ROOT_APPENDER_INHERITANCE_CHOICE = "(Inherit root)";
-
- public PageSystemConfiguration() {
- initialize(null);
- }
-
- public PageSystemConfiguration(PageParameters parameters) {
- getPageParameters().overwriteWith(parameters);
- initialize(null);
- }
-
- public PageSystemConfiguration(final PrismObject configToEdit) {
- initialize(configToEdit);
- }
-
- public PageSystemConfiguration(final PrismObject configToEdit, boolean isNewObject) {
- initialize(configToEdit, isNewObject);
- }
-
- @Override
- protected void initializeModel(final PrismObject configToEdit, boolean isNewObject, boolean isReadonly) {
- Task task = createSimpleTask(OPERATION_LOAD_SYSTEM_CONFIG);
- OperationResult result = new OperationResult(OPERATION_LOAD_SYSTEM_CONFIG);
- super.initializeModel(WebModelServiceUtils.loadSystemConfigurationAsPrismObject(this, task, result), false, isReadonly);
- }
-
- private List getTabs(){
- List tabs = new ArrayList<>();
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.system.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return new SystemConfigPanel(panelId, getObjectModel());
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.objectPolicy.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- PrismContainerWrapperModel model = createModel(getObjectModel(), SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION);
- return new ObjectPolicyConfigurationTabPanel<>(panelId, model);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.globalPolicyRule.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- PrismContainerWrapperModel model = createModel(getObjectModel(),
- SystemConfigurationType.F_GLOBAL_POLICY_RULE);
- return new GlobalPolicyRuleTabPanel<>(panelId, model);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.globalAccountSynchronization.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_GLOBAL_ACCOUNT_SYNCHRONIZATION_SETTINGS, ProjectionPolicyType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.cleanupPolicy.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_CLEANUP_POLICY, CleanupPoliciesType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.notifications.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- PrismContainerWrapperModel model = createModel(getObjectModel(),
- SystemConfigurationType.F_NOTIFICATION_CONFIGURATION);
- return new NotificationConfigTabPanel(panelId, model);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.logging.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- PrismContainerWrapperModel model = createModel(getObjectModel(), SystemConfigurationType.F_LOGGING);
- return new LoggingConfigurationTabPanel<>(panelId, model);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.profiling.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- PrismContainerWrapperModel profilingModel = createModel(getObjectModel(), SystemConfigurationType.F_PROFILING_CONFIGURATION);
- PrismContainerWrapperModel loggingModel = createModel(getObjectModel(),
- SystemConfigurationType.F_LOGGING);
- return new ProfilingConfigurationTabPanel(panelId, profilingModel, loggingModel);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.adminGui.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_ADMIN_GUI_CONFIGURATION, AdminGuiConfigurationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.workflow.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_WORKFLOW_CONFIGURATION, WfConfigurationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.roleManagement.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_ROLE_MANAGEMENT, RoleManagementConfigurationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.internals.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_INTERNALS, InternalsConfigurationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.deploymentInformation.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_DEPLOYMENT_INFORMATION, DeploymentInformationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.accessCertification.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_ACCESS_CERTIFICATION, AccessCertificationConfigurationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.infrastructure.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_INFRASTRUCTURE, InfrastructureConfigurationType.COMPLEX_TYPE);
- }
- });
-
- tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.fullTextSearch.title")) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public WebMarkupContainer getPanel(String panelId) {
- return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_FULL_TEXT_SEARCH, FullTextSearchConfigurationType.COMPLEX_TYPE);
- }
- });
-
-
- return tabs;
- }
-
- private ContainerOfSystemConfigurationPanel createContainerPanel(String panelId, IModel> objectModel, ItemName propertyName, QName propertyType) {
- return new ContainerOfSystemConfigurationPanel(panelId, createModel(objectModel, propertyName), propertyType);
- }
-
- private PrismContainerWrapperModel createModel(IModel> model, ItemName itemName) {
- return PrismContainerWrapperModel.fromContainerWrapper(model, itemName);
- }
-
- @Override
- public void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync) {
- if (!isKeepDisplayingResults()) {
- showResult(result);
- redirectBack();
- }
- }
-
- @Override
- public Class getCompileTimeClass() {
- return SystemConfigurationType.class;
- }
-
- @Override
- protected SystemConfigurationType createNewObject() {
- return null;
- }
-
- @Override
- protected ObjectSummaryPanel createSummaryPanel() {
- return new SystemConfigurationSummaryPanel(ID_SUMM_PANEL, SystemConfigurationType.class, Model.of(getObjectModel().getObject().getObject().asObjectable()), this);
- }
-
- @Override
- protected AbstractObjectMainPanel createMainPanel(String id) {
- return new AbstractObjectMainPanel(id, getObjectModel(), this) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected List createTabs(PageAdminObjectDetails parentPage) {
- return getTabs();
- }
-
- @Override
- protected boolean getOptionsPanelVisibility() {
- return false;
- }
-
- @Override
- protected boolean isPreviewButtonVisible() {
- return false;
- }
-
- @Override
- protected void initLayoutTabs(PageAdminObjectDetails parentPage) {
- List tabs = createTabs(parentPage);
- TabbedPanel tabPanel = new TabbedPanel(ID_TAB_PANEL, tabs) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onTabChange(int index) {
- PageParameters params = getPageParameters();
- params.set(SELECTED_TAB_INDEX, index);
-
- parentPage.updateBreadcrumbParameters(SELECTED_TAB_INDEX, index);
- }
- };
- getMainForm().add(tabPanel);
- }
- };
- }
-
- @Override
- protected Class extends Page> getRestartResponsePage() {
- return getMidpointApplication().getHomePage();
- }
-
- @Override
- public void continueEditing(AjaxRequestTarget target) {
-
- }
-
- @Override
- protected void setSummaryPanelVisibility(ObjectSummaryPanel summaryPanel) {
- summaryPanel.add(new VisibleEnableBehaviour() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isVisible() {
- return true;
- }
- });
- }
-
- @Override
- public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult result, boolean previewOnly) {
-
- ProgressPanel progressPanel = getProgressPanel();
- progressPanel.hide();
- Task task = createSimpleTask(OPERATION_SEND_TO_SUBMIT);
- super.saveOrPreviewPerformed(target, result, previewOnly, task);
-
- try {
- TimeUnit.SECONDS.sleep(1);
- while(task.isClosed()) {TimeUnit.SECONDS.sleep(1);}
- } catch ( InterruptedException ex) {
- result.recomputeStatus();
- result.recordFatalError(getString("PageSystemConfiguration.message.saveOrPreviewPerformed.fatalError"), ex);
-
- LoggingUtils.logUnexpectedException(LOGGER, "Couldn't use sleep", ex);
- }
- result.recomputeStatus();
- target.add(getFeedbackPanel());
-
- if(result.getStatus().equals(OperationResultStatus.SUCCESS)) {
- showResult(result);
- redirectBack();
- }
- }
-
-}
+/*
+ * 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.web.page.admin.configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import javax.xml.namespace.QName;
+
+import com.evolveum.midpoint.web.application.Url;
+import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
+import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.GlobalPolicyRuleTabPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.LoggingConfigurationTabPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.NotificationConfigTabPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ObjectPolicyConfigurationTabPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ProfilingConfigurationTabPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ContainerOfSystemConfigurationPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.SystemConfigPanel;
+import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.SystemConfigurationSummaryPanel;
+import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.PrismObject;
+import com.evolveum.midpoint.prism.path.ItemName;
+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.logging.LoggingUtils;
+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.component.ObjectSummaryPanel;
+import com.evolveum.midpoint.web.component.TabbedPanel;
+import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
+import com.evolveum.midpoint.web.component.progress.ProgressPanel;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
+import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
+
+/**
+ * @author lazyman
+ * @author skublik
+ */
+@PageDescriptor(
+ urls = {
+ @Url(mountUrl = "/admin/config/system", matchUrlForSecurity = "/admin/config/system"),
+ },
+ action = {
+ @AuthorizationAction(actionUri = PageAdminConfiguration.AUTH_CONFIGURATION_ALL,
+ label = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_LABEL,
+ description = PageAdminConfiguration.AUTH_CONFIGURATION_ALL_DESCRIPTION),
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_CONFIGURATION_SYSTEM_CONFIG_URL,
+ label = "PageSystemConfiguration.auth.configSystemConfiguration.label",
+ description = "PageSystemConfiguration.auth.configSystemConfiguration.description")
+ })
+public class PageSystemConfiguration extends PageAdminObjectDetails {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String SELECTED_TAB_INDEX = "tab";
+ public static final String SELECTED_SERVER_INDEX = "mailServerIndex";
+ public static final String SERVER_LIST_SIZE = "mailServerListSize";
+
+ private static final String DOT_CLASS = PageSystemConfiguration.class.getName() + ".";
+ private static final String OPERATION_LOAD_SYSTEM_CONFIG = DOT_CLASS + "load";
+
+ public static final int CONFIGURATION_TAB_BASIC = 0;
+ public static final int CONFIGURATION_TAB_OBJECT_POLICY = 1;
+ public static final int CONFIGURATION_TAB_GLOBAL_POLICY_RULE = 2;
+ public static final int CONFIGURATION_TAB_GLOBAL_ACCOUNT_SYNCHRONIZATION = 3;
+ public static final int CONFIGURATION_TAB_CLEANUP_POLICY = 4;
+ public static final int CONFIGURATION_TAB_NOTIFICATION = 5;
+ public static final int CONFIGURATION_TAB_LOGGING = 6;
+ public static final int CONFIGURATION_TAB_PROFILING = 7;
+ public static final int CONFIGURATION_TAB_ADMIN_GUI = 8;
+ public static final int CONFIGURATION_TAB_WORKFLOW = 9;
+ public static final int CONFIGURATION_TAB_ROLE_MANAGEMENT = 10;
+ public static final int CONFIGURATION_TAB_INTERNALS = 11;
+ public static final int CONFIGURATION_TAB_DEPLOYMENT_INFORMATION = 12;
+ public static final int CONFIGURATION_TAB_ACCESS_CERTIFICATION = 13;
+ public static final int CONFIGURATION_TAB_INFRASTRUCTURE = 14;
+ public static final int CONFIGURATION_TAB_FULL_TEXT_SEARCH = 15;
+
+ private static final Trace LOGGER = TraceManager.getTrace(PageSystemConfiguration.class);
+
+ private static final String ID_SUMM_PANEL = "summaryPanel";
+
+ public static final String ROOT_APPENDER_INHERITANCE_CHOICE = "(Inherit root)";
+
+ public PageSystemConfiguration() {
+ initialize(null);
+ }
+
+ public PageSystemConfiguration(PageParameters parameters) {
+ getPageParameters().overwriteWith(parameters);
+ initialize(null);
+ }
+
+ public PageSystemConfiguration(final PrismObject configToEdit) {
+ initialize(configToEdit);
+ }
+
+ public PageSystemConfiguration(final PrismObject configToEdit, boolean isNewObject) {
+ initialize(configToEdit, isNewObject);
+ }
+
+ @Override
+ protected void initializeModel(final PrismObject configToEdit, boolean isNewObject, boolean isReadonly) {
+ Task task = createSimpleTask(OPERATION_LOAD_SYSTEM_CONFIG);
+ OperationResult result = new OperationResult(OPERATION_LOAD_SYSTEM_CONFIG);
+ super.initializeModel(WebModelServiceUtils.loadSystemConfigurationAsPrismObject(this, task, result), false, isReadonly);
+ }
+
+ private List getTabs(){
+ List tabs = new ArrayList<>();
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.system.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return new SystemConfigPanel(panelId, getObjectModel());
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.objectPolicy.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ PrismContainerWrapperModel model = createModel(getObjectModel(), SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION);
+ return new ObjectPolicyConfigurationTabPanel<>(panelId, model);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.globalPolicyRule.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ PrismContainerWrapperModel model = createModel(getObjectModel(),
+ SystemConfigurationType.F_GLOBAL_POLICY_RULE);
+ return new GlobalPolicyRuleTabPanel<>(panelId, model);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.globalAccountSynchronization.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_GLOBAL_ACCOUNT_SYNCHRONIZATION_SETTINGS, ProjectionPolicyType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.cleanupPolicy.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_CLEANUP_POLICY, CleanupPoliciesType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.notifications.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ PrismContainerWrapperModel model = createModel(getObjectModel(),
+ SystemConfigurationType.F_NOTIFICATION_CONFIGURATION);
+ return new NotificationConfigTabPanel(panelId, model);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.logging.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ PrismContainerWrapperModel model = createModel(getObjectModel(), SystemConfigurationType.F_LOGGING);
+ return new LoggingConfigurationTabPanel<>(panelId, model);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.profiling.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ PrismContainerWrapperModel profilingModel = createModel(getObjectModel(), SystemConfigurationType.F_PROFILING_CONFIGURATION);
+ PrismContainerWrapperModel loggingModel = createModel(getObjectModel(),
+ SystemConfigurationType.F_LOGGING);
+ return new ProfilingConfigurationTabPanel(panelId, profilingModel, loggingModel);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.adminGui.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_ADMIN_GUI_CONFIGURATION, AdminGuiConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.workflow.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_WORKFLOW_CONFIGURATION, WfConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.roleManagement.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_ROLE_MANAGEMENT, RoleManagementConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.internals.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_INTERNALS, InternalsConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.deploymentInformation.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_DEPLOYMENT_INFORMATION, DeploymentInformationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.accessCertification.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_ACCESS_CERTIFICATION, AccessCertificationConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.infrastructure.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_INFRASTRUCTURE, InfrastructureConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+ tabs.add(new AbstractTab(createStringResource("pageSystemConfiguration.fullTextSearch.title")) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public WebMarkupContainer getPanel(String panelId) {
+ return createContainerPanel(panelId, getObjectModel(), SystemConfigurationType.F_FULL_TEXT_SEARCH, FullTextSearchConfigurationType.COMPLEX_TYPE);
+ }
+ });
+
+
+ return tabs;
+ }
+
+ private ContainerOfSystemConfigurationPanel createContainerPanel(String panelId, IModel> objectModel, ItemName propertyName, QName propertyType) {
+ return new ContainerOfSystemConfigurationPanel(panelId, createModel(objectModel, propertyName), propertyType);
+ }
+
+ private PrismContainerWrapperModel createModel(IModel> model, ItemName itemName) {
+ return PrismContainerWrapperModel.fromContainerWrapper(model, itemName);
+ }
+
+ @Override
+ public void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync) {
+ if (!isKeepDisplayingResults()) {
+ showResult(result);
+ redirectBack();
+ }
+ }
+
+ @Override
+ public Class getCompileTimeClass() {
+ return SystemConfigurationType.class;
+ }
+
+ @Override
+ protected SystemConfigurationType createNewObject() {
+ return null;
+ }
+
+ @Override
+ protected ObjectSummaryPanel createSummaryPanel(IModel summaryModel) {
+ return new SystemConfigurationSummaryPanel(ID_SUMM_PANEL, SystemConfigurationType.class, summaryModel, this);
+ }
+
+ @Override
+ protected AbstractObjectMainPanel createMainPanel(String id) {
+ return new AbstractObjectMainPanel(id, getObjectModel(), this) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected List createTabs(PageAdminObjectDetails parentPage) {
+ return getTabs();
+ }
+
+ @Override
+ protected boolean getOptionsPanelVisibility() {
+ return false;
+ }
+
+ @Override
+ protected boolean isPreviewButtonVisible() {
+ return false;
+ }
+
+ @Override
+ protected void initLayoutTabs(PageAdminObjectDetails parentPage) {
+ List tabs = createTabs(parentPage);
+ TabbedPanel tabPanel = new TabbedPanel(ID_TAB_PANEL, tabs) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onTabChange(int index) {
+ PageParameters params = getPageParameters();
+ params.set(SELECTED_TAB_INDEX, index);
+
+ parentPage.updateBreadcrumbParameters(SELECTED_TAB_INDEX, index);
+ }
+ };
+ getMainForm().add(tabPanel);
+ }
+ };
+ }
+
+ @Override
+ protected Class extends Page> getRestartResponsePage() {
+ return getMidpointApplication().getHomePage();
+ }
+
+ @Override
+ public void continueEditing(AjaxRequestTarget target) {
+
+ }
+
+ @Override
+ protected void setSummaryPanelVisibility(ObjectSummaryPanel summaryPanel) {
+ summaryPanel.add(new VisibleEnableBehaviour() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public boolean isVisible() {
+ return true;
+ }
+ });
+ }
+
+ @Override
+ public void saveOrPreviewPerformed(AjaxRequestTarget target, OperationResult result, boolean previewOnly) {
+
+ ProgressPanel progressPanel = getProgressPanel();
+ progressPanel.hide();
+ Task task = createSimpleTask(OPERATION_SEND_TO_SUBMIT);
+ super.saveOrPreviewPerformed(target, result, previewOnly, task);
+
+ try {
+ TimeUnit.SECONDS.sleep(1);
+ while(task.isClosed()) {TimeUnit.SECONDS.sleep(1);}
+ } catch ( InterruptedException ex) {
+ result.recomputeStatus();
+ result.recordFatalError(getString("PageSystemConfiguration.message.saveOrPreviewPerformed.fatalError"), ex);
+
+ LoggingUtils.logUnexpectedException(LOGGER, "Couldn't use sleep", ex);
+ }
+ result.recomputeStatus();
+ target.add(getFeedbackPanel());
+
+ if(result.getStatus().equals(OperationResultStatus.SUCCESS)) {
+ showResult(result);
+ redirectBack();
+ }
+ }
+
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java
index 2dc6b9d9ee1..207ce7c00dd 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/roles/PageRole.java
@@ -1,111 +1,110 @@
-/*
- * 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.roles;
-
-import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.security.api.AuthorizationConstants;
-import com.evolveum.midpoint.util.logging.Trace;
-import com.evolveum.midpoint.util.logging.TraceManager;
-import com.evolveum.midpoint.web.application.AuthorizationAction;
-import com.evolveum.midpoint.web.application.PageDescriptor;
-import com.evolveum.midpoint.web.component.FocusSummaryPanel;
-import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
-import com.evolveum.midpoint.web.component.objectdetails.AbstractRoleMainPanel;
-import com.evolveum.midpoint.web.component.progress.ProgressReportingAwarePage;
-import com.evolveum.midpoint.web.page.admin.PageAdminAbstractRole;
-import com.evolveum.midpoint.web.page.admin.roles.component.RoleSummaryPanel;
-import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
-import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
-/**
- * @author shood
- * @author semancik
- */
-@PageDescriptor(url = "/admin/role", encoder = OnePageParameterEncoder.class, action = {
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_ROLES_ALL_URL, label = "PageAdminRoles.auth.roleAll.label", description = "PageAdminRoles.auth.roleAll.description"),
- @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_ROLE_URL, label = "PageRole.auth.role.label", description = "PageRole.auth.role.description") })
-public class PageRole extends PageAdminAbstractRole implements ProgressReportingAwarePage {
- private static final long serialVersionUID = 1L;
-
- public static final String AUTH_ROLE_ALL = AuthorizationConstants.AUTZ_UI_ROLES_ALL_URL;
- public static final String AUTH_ROLE_ALL_LABEL = "PageAdminRoles.auth.roleAll.label";
- public static final String AUTH_ROLE_ALL_DESCRIPTION = "PageAdminRoles.auth.roleAll.description";
-
- private static final Trace LOGGER = TraceManager.getTrace(PageRole.class);
-
- public PageRole() {
- super();
- }
-
- public PageRole(PageParameters parameters) {
- super(parameters);
- }
-
- public PageRole(final PrismObject role) {
- super(role);
- }
-
- public PageRole(final PrismObject userToEdit, boolean isNewObject) {
- super(userToEdit, isNewObject);
- }
-
- public PageRole(final PrismObject abstractRole, boolean isNewObject, boolean isReadonly) {
- super(abstractRole, isNewObject, isReadonly);
- }
-
- @Override
- protected RoleType createNewObject() {
- return new RoleType();
- }
-
- @Override
- public Class getCompileTimeClass() {
- return RoleType.class;
- }
-
- @Override
- protected Class getRestartResponsePage() {
- return PageRoles.class;
- }
-
- @Override
- protected FocusSummaryPanel createSummaryPanel() {
- return new RoleSummaryPanel(ID_SUMMARY_PANEL, Model.of(getObjectModel().getObject().getObject().asObjectable()), this);
- }
-
- @Override
- protected AbstractObjectMainPanel createMainPanel(String id) {
- return new AbstractRoleMainPanel(id, getObjectModel(), getProjectionModel(), this) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected boolean isFocusHistoryPage(){
- return PageRole.this.isFocusHistoryPage();
- }
-
- @Override
- protected void viewObjectHistoricalDataPerformed(AjaxRequestTarget target, PrismObject object, String date){
- PageRole.this.navigateToNext(new PageRoleHistory(object, date));
- }
-
- @Override
- protected boolean getOptionsPanelVisibility() {
- if (isSelfProfile()){
- return false;
- } else {
- return super.getOptionsPanelVisibility();
- }
- }
- };
- }
-}
+/*
+ * 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.roles;
+
+import com.evolveum.midpoint.prism.PrismObject;
+import com.evolveum.midpoint.security.api.AuthorizationConstants;
+import com.evolveum.midpoint.util.logging.Trace;
+import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.web.application.AuthorizationAction;
+import com.evolveum.midpoint.web.application.PageDescriptor;
+import com.evolveum.midpoint.web.component.FocusSummaryPanel;
+import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
+import com.evolveum.midpoint.web.component.objectdetails.AbstractRoleMainPanel;
+import com.evolveum.midpoint.web.component.progress.ProgressReportingAwarePage;
+import com.evolveum.midpoint.web.page.admin.PageAdminAbstractRole;
+import com.evolveum.midpoint.web.page.admin.roles.component.RoleSummaryPanel;
+import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
+import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+/**
+ * @author shood
+ * @author semancik
+ */
+@PageDescriptor(url = "/admin/role", encoder = OnePageParameterEncoder.class, action = {
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_ROLES_ALL_URL, label = "PageAdminRoles.auth.roleAll.label", description = "PageAdminRoles.auth.roleAll.description"),
+ @AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_ROLE_URL, label = "PageRole.auth.role.label", description = "PageRole.auth.role.description") })
+public class PageRole extends PageAdminAbstractRole implements ProgressReportingAwarePage {
+ private static final long serialVersionUID = 1L;
+
+ public static final String AUTH_ROLE_ALL = AuthorizationConstants.AUTZ_UI_ROLES_ALL_URL;
+ public static final String AUTH_ROLE_ALL_LABEL = "PageAdminRoles.auth.roleAll.label";
+ public static final String AUTH_ROLE_ALL_DESCRIPTION = "PageAdminRoles.auth.roleAll.description";
+
+ private static final Trace LOGGER = TraceManager.getTrace(PageRole.class);
+
+ public PageRole() {
+ super();
+ }
+
+ public PageRole(PageParameters parameters) {
+ super(parameters);
+ }
+
+ public PageRole(final PrismObject role) {
+ super(role);
+ }
+
+ public PageRole(final PrismObject userToEdit, boolean isNewObject) {
+ super(userToEdit, isNewObject);
+ }
+
+ public PageRole(final PrismObject abstractRole, boolean isNewObject, boolean isReadonly) {
+ super(abstractRole, isNewObject, isReadonly);
+ }
+
+ @Override
+ protected RoleType createNewObject() {
+ return new RoleType();
+ }
+
+ @Override
+ public Class getCompileTimeClass() {
+ return RoleType.class;
+ }
+
+ @Override
+ protected Class getRestartResponsePage() {
+ return PageRoles.class;
+ }
+
+ @Override
+ protected FocusSummaryPanel createSummaryPanel(IModel summaryModel) {
+ return new RoleSummaryPanel(ID_SUMMARY_PANEL, summaryModel, this);
+ }
+
+ @Override
+ protected AbstractObjectMainPanel createMainPanel(String id) {
+ return new AbstractRoleMainPanel(id, getObjectModel(), getProjectionModel(), this) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected boolean isFocusHistoryPage(){
+ return PageRole.this.isFocusHistoryPage();
+ }
+
+ @Override
+ protected void viewObjectHistoricalDataPerformed(AjaxRequestTarget target, PrismObject object, String date){
+ PageRole.this.navigateToNext(new PageRoleHistory(object, date));
+ }
+
+ @Override
+ protected boolean getOptionsPanelVisibility() {
+ if (isSelfProfile()){
+ return false;
+ } else {
+ return super.getOptionsPanelVisibility();
+ }
+ }
+ };
+ }
+}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/LivesyncTokenEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/LivesyncTokenEditorPanel.java
index e85fac6d28d..1804747f2e2 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/LivesyncTokenEditorPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/LivesyncTokenEditorPanel.java
@@ -7,7 +7,6 @@
package com.evolveum.midpoint.web.page.admin.server;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
-import com.evolveum.midpoint.prism.delta.PropertyDelta;
import com.evolveum.midpoint.prism.delta.builder.S_ValuesEntry;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
@@ -17,9 +16,7 @@
import org.apache.wicket.model.StringResourceModel;
import com.evolveum.midpoint.gui.api.component.BasePanel;
-import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
-import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.path.ItemPath;
@@ -41,7 +38,7 @@ public class LivesyncTokenEditorPanel extends BasePanel> model) {
super(id, model);
@@ -60,7 +57,7 @@ private void initLayout() {
public T getObject() {
PrismObjectWrapper taskWrapper = getModelObject();
PrismObject task = taskWrapper.getObject();
- PrismProperty token = task.findProperty(tokenPath);
+ PrismProperty token = task.findProperty(PATH_TOKEN);
if (token == null) {
return null;
@@ -73,14 +70,14 @@ public T getObject() {
public void setObject(T object) {
PrismObjectWrapper taskWrapper = getModelObject();
PrismObject task = taskWrapper.getObject();
- PrismProperty token = task.findProperty(tokenPath);
+ PrismProperty token = task.findProperty(PATH_TOKEN);
if (token == null) {
try {
- token = task.findOrCreateProperty(tokenPath);
+ token = task.findOrCreateProperty(PATH_TOKEN);
} catch (SchemaException e) {
LoggingUtils.logUnexpectedException(LOGGER, "Cannot create token property", e);
- getSession().error("Cannot create token property: " + e.getMessage());
+ getSession().error(getString("LivesyncTokenEditorPanel.create.token.failed", e.getMessage()));
return;
}
}
@@ -93,14 +90,14 @@ public void setObject(T object) {
tokenPanel.getBaseFormComponent().add(new EmptyOnChangeAjaxFormUpdatingBehavior());
add(tokenPanel);
- AjaxButton okButton = new AjaxButton(ID_OK, createStringResource("button.ok")) {
+ AjaxButton okButton = new AjaxButton(ID_OK, createStringResource("Button.ok")) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
getPageBase().hideMainPopup(ajaxRequestTarget);
ObjectDelta tokenDelta = getTokenDelta(ajaxRequestTarget);
if (tokenDelta == null) {
- getSession().warn("Nothing to save. Token was not changed");
+ getSession().warn(getString("LivesyncTokenEditorPanel.token.delta.empty"));
return;
}
saveTokenPerformed(tokenDelta, ajaxRequestTarget);
@@ -108,7 +105,7 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) {
};
add(okButton);
- AjaxButton cancelButton = new AjaxButton(ID_CANCEL, createStringResource("button.cancel")) {
+ AjaxButton cancelButton = new AjaxButton(ID_CANCEL, createStringResource("Button.cancel")) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
@@ -119,19 +116,23 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) {
}
private ObjectDelta getTokenDelta(AjaxRequestTarget target) {
- TextPanel tokenPanel = (TextPanel)get(ID_TOKEN);
+ TextPanel tokenPanel = (TextPanel) get(ID_TOKEN);
T newTokenValue = tokenPanel.getBaseFormComponent().getModelObject();
try {
- PrismProperty tokenProperty = getModelObject().getObject().findProperty(tokenPath);
+ PrismProperty tokenProperty = getModelObject().getObject().findProperty(PATH_TOKEN);
- S_ValuesEntry valuesEntry = getPrismContext().deltaFor(TaskType.class).item(tokenPath, tokenProperty.getDefinition());
+ if (tokenProperty == null) {
+ tokenProperty = getModelObject().getObject().findOrCreateProperty(PATH_TOKEN);
+ }
+
+ S_ValuesEntry valuesEntry = getPrismContext().deltaFor(TaskType.class).item(PATH_TOKEN, tokenProperty.getDefinition());
if (newTokenValue == null) {
return valuesEntry.replace().asObjectDelta(getModelObject().getOid());
}
return valuesEntry.replace(newTokenValue).asObjectDelta(getModelObject().getOid());
} catch (SchemaException e) {
LoggingUtils.logUnexpectedException(LOGGER, "Cannot modify token", e);
- getSession().error("Cannot modify token: " + e.getMessage());
+ getSession().error(getString("LivesyncTokenEditorPanel.modify.token.failed", e.getMessage()));
target.add(getPageBase().getFeedbackPanel());
return null;
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java
index 4220cdafaef..0fb784eef3e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/PageTask.java
@@ -4,14 +4,6 @@
import java.util.Collection;
import java.util.Collections;
-import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
-import com.evolveum.midpoint.report.api.ReportConstants;
-import com.evolveum.midpoint.web.component.AjaxDownloadBehaviorFromStream;
-import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
-
-import com.evolveum.midpoint.web.page.admin.reports.PageCreatedReports;
-
-import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
@@ -22,14 +14,15 @@
import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.evolveum.midpoint.gui.api.GuiStyleConstants;
-import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
+import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
+import com.evolveum.midpoint.report.api.ReportConstants;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
@@ -44,12 +37,15 @@
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.application.Url;
import com.evolveum.midpoint.web.component.AjaxButton;
+import com.evolveum.midpoint.web.component.AjaxDownloadBehaviorFromStream;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.ObjectSummaryPanel;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
import com.evolveum.midpoint.web.component.refresh.Refreshable;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
+import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
+import com.evolveum.midpoint.web.page.admin.reports.PageCreatedReports;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.TaskOperationUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
@@ -107,8 +103,8 @@ protected TaskType createNewObject() {
}
@Override
- protected ObjectSummaryPanel createSummaryPanel() {
- return new TaskSummaryPanel(ID_SUMMARY_PANEL, createSummaryPanelModel(), this, this);
+ protected ObjectSummaryPanel createSummaryPanel(IModel summaryModel) {
+ return new TaskSummaryPanel(ID_SUMMARY_PANEL, summaryModel, this, this);
}
@Override
@@ -125,12 +121,6 @@ protected Collection> buildGetOptions() {
.build();
}
- private void afterOperation(AjaxRequestTarget target, OperationResult result) {
- showResult(result);
- getObjectModel().reset();
- refresh(target);
- }
-
protected void initOperationalButtons(RepeatingView repeatingView) {
super.initOperationalButtons(repeatingView);
@@ -230,7 +220,7 @@ protected void saveTokenPerformed(ObjectDelta tokenDelta, AjaxRequestT
manageLivesyncToken.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
- return WebComponentUtil.isLiveSync(getTask()) && isNotRunning();
+ return WebComponentUtil.isLiveSync(getTask()) && isNotRunning() && getTask().asPrismObject().findProperty(LivesyncTokenEditorPanel.PATH_TOKEN) != null;
}
@Override
@@ -410,10 +400,15 @@ private void saveTaskChanges(AjaxRequestTarget target, ObjectDelta tas
LoggingUtils.logUnexpectedException(LOGGER, "Cannot save tasks changes", e);
result.recordFatalError("Cannot save tasks changes, " + e.getMessage(), e);
}
-// showResult(result);
afterOperation(target, result);
}
+ private void afterOperation(AjaxRequestTarget target, OperationResult result) {
+ showResult(result);
+ getObjectModel().reset();
+ refresh(target);
+ }
+
public void saveAndRunPerformed(AjaxRequestTarget target) {
PrismObjectWrapper taskWrapper = getObjectWrapper();
try {
@@ -470,21 +465,6 @@ private String createResumePauseButtonLabel() {
return "fa fa-play";
}
- private IModel createSummaryPanelModel() {
- return isEditingFocus() ?
-
- new LoadableModel(true) {
- @Override
- protected TaskType load() {
- PrismObjectWrapper taskWrapper = getObjectWrapper();
- if (taskWrapper == null) {
- return null;
- }
- return taskWrapper.getObject().asObjectable();
- }
- } : Model.of();
- }
-
@Override
protected AbstractObjectMainPanel createMainPanel(String id) {
return new TaskMainPanel(id, getObjectModel(), this);
@@ -509,25 +489,6 @@ public int getRefreshInterval() {
return REFRESH_INTERVAL;
}
- public void refresh(AjaxRequestTarget target) {
-
- getObjectModel().reset();
- target.add(getSummaryPanel());
- target.add(getOperationalButtonsPanel());
- target.add(getFeedbackPanel());
-// target.add(getMainPanel());
-
- for (Component component : getMainPanel().getTabbedPanel()) {
- if (component instanceof RefreshableTabPanel) {
-
- for (Component c : ((RefreshableTabPanel) component).getComponentsToUpdate()) {
- target.add(c);
- }
- }
- }
-
- }
-
private boolean isNotRunning(){
return !WebComponentUtil.isRunningTask(getTask());
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java
index 36961d08fb2..419a26d1f1e 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskMainPanel.java
@@ -112,7 +112,7 @@ public WebMarkupContainer createPanel(String panelId) {
});
ObjectTabVisibleBehavior workManagementTabVisibility = new ObjectTabVisibleBehavior
- (Model.of(getObjectWrapper().getObject()), ComponentConstants.UI_CASE_TAB_WORKITEMS_URL, parentPage){
+ (Model.of(getObjectWrapper().getObject()), ComponentConstants.UI_TASK_TAB_WORK_MANAGEMENT_URL, parentPage){
private static final long serialVersionUID = 1L;
@@ -292,7 +292,7 @@ public WebMarkupContainer createPanel(String panelId) {
}
protected void initLayoutSaveAndRunButton() {
- AjaxSubmitButton saveButton = new AjaxSubmitButton(ID_SAVE_AND_RUN, getDetailsPage().createStringResource("pageAdminFocus.button.saveAndRun")) {
+ AjaxSubmitButton saveButton = new AjaxSubmitButton(ID_SAVE_AND_RUN, getDetailsPage().createStringResource("TaskMainPanel.button.saveAndRun")) {
private static final long serialVersionUID = 1L;
@Override
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskOperationStatisticsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskOperationStatisticsPanel.java
index 46aedf2685c..bf91ec4a328 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskOperationStatisticsPanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskOperationStatisticsPanel.java
@@ -1,39 +1,35 @@
package com.evolveum.midpoint.web.page.admin.server;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.namespace.QName;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.markup.html.basic.Label;
+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.component.BasePanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
-import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.prism.PrismReference;
-import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
-import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.TaskTypeUtil;
-import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskCategory;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.web.component.data.column.EnumPropertyColumn;
import com.evolveum.midpoint.web.component.util.ListDataProvider;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
-import org.apache.wicket.Component;
-import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
-
-import javax.xml.datatype.XMLGregorianCalendar;
-import javax.xml.namespace.QName;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
public class TaskOperationStatisticsPanel extends BasePanel