diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java index 0b96ecb23d4..c3cb5081f14 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/GuiStyleConstants.java @@ -31,7 +31,7 @@ public class GuiStyleConstants { public static final String CLASS_OBJECT_USER_BOX_CSS_CLASSES = "object-user-box"; public static final String CLASS_OBJECT_USER_BOX_THIN_CSS_CLASSES = "object-user-box-thin"; - public static final String CLASS_OBJECT_ROLE_ICON = "fa fa-street-view"; + public static final String CLASS_OBJECT_ROLE_ICON = "fe fe-role_icon"; public static final String CLASS_OBJECT_ROLE_BG = "object-role-bg"; public static final String CLASS_DISABLED_OBJECT_ROLE_BG = "object-disabled-bg"; public static final String CLASS_OBJECT_ROLE_ICON_COLORED = CLASS_OBJECT_ROLE_ICON + " object-role-color"; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java index 28b191fb13b..bf30f8d323b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/password/PasswordPropertyPanel.java @@ -32,8 +32,8 @@ public class PasswordPropertyPanel extends PrismPropertyPanel> model, ItemVisibilityHandler visibilitytHandler){ - super(id, model, visibilitytHandler); + public PasswordPropertyPanel(String id, IModel> model, ItemPanelSettings settings){ + super(id, model, settings); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index 42ea03a84e1..0f9a57dd9d6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -30,7 +30,6 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.gui.api.prism.ItemWrapper; -import com.evolveum.midpoint.gui.api.prism.PrismContainerWrapper; import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -39,11 +38,7 @@ import com.evolveum.midpoint.gui.impl.factory.ItemWrapperFactory; import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; import com.evolveum.midpoint.gui.impl.factory.WrapperContext; -import com.evolveum.midpoint.gui.impl.prism.ItemVisibilityHandler; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValuePanel; -import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper; -import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; -import com.evolveum.midpoint.gui.impl.registry.GuiComponentRegistryImpl; +import com.evolveum.midpoint.gui.impl.prism.*; import com.evolveum.midpoint.model.api.*; import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView; import com.evolveum.midpoint.model.api.authentication.CompiledUserProfile; @@ -106,7 +101,6 @@ import com.evolveum.midpoint.web.component.prism.ValueStatus; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; -import com.evolveum.midpoint.web.model.PrismContainerWrapperModel; import com.evolveum.midpoint.web.page.admin.PageAdmin; import com.evolveum.midpoint.web.page.admin.PageAdminFocus; import com.evolveum.midpoint.web.page.admin.PageAdminObjectList; @@ -134,7 +128,6 @@ import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicies; import com.evolveum.midpoint.web.page.admin.valuePolicy.PageValuePolicy; import com.evolveum.midpoint.web.page.admin.workflow.*; -import com.evolveum.midpoint.web.page.error.PageError; import com.evolveum.midpoint.web.page.login.PageLogin; import com.evolveum.midpoint.web.page.self.*; import com.evolveum.midpoint.web.security.MidPointApplication; @@ -188,7 +181,6 @@ import org.apache.wicket.util.string.StringValue; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; -import org.springframework.beans.factory.annotation.Autowired; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -2690,15 +2682,8 @@ private Class getWrapperPanel(QName typeName) { return registry.getPanelClass(typeName); } - public Panel initItemPanel(String panelId, QName typeName, IModel wrapperModel, ItemVisibilityHandler visibilityHandler) throws SchemaException{ - return initItemPanel(panelId, typeName, wrapperModel, visibilityHandler, false); - } - - public Panel initItemPanel(String panelId, QName typeName, IModel wrapperModel, ItemVisibilityHandler visibilityHandler, boolean isOnTopLevel) throws SchemaException{ - if (wrapperModel.getObject() instanceof PrismContainerWrapper) { - ((PrismContainerWrapper)wrapperModel.getObject()).setShowOnTopLevel(isOnTopLevel); - } - + + public Panel initItemPanel(String panelId, QName typeName, IModel wrapperModel, ItemPanelSettings itemPanelSettings) throws SchemaException{ Class panelClass = getWrapperPanel(typeName); if (panelClass == null) { ErrorPanel errorPanel = new ErrorPanel(panelId, () -> "Cannot create panel for " + typeName); @@ -2708,8 +2693,8 @@ public Panel initItemPanel(String panelId, QName typeNa Constructor constructor; try { - constructor = panelClass.getConstructor(String.class, IModel.class, ItemVisibilityHandler.class); - Panel panel = (Panel) constructor.newInstance(panelId, wrapperModel, visibilityHandler); + constructor = panelClass.getConstructor(String.class, IModel.class, ItemPanelSettings.class); + Panel panel = (Panel) constructor.newInstance(panelId, wrapperModel, itemPanelSettings); return panel; } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { throw new SystemException("Cannot instantiate " + panelClass, e); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java index e3a72d47a87..76e2bda6d2b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/prism/PrismContainerWrapper.java @@ -41,17 +41,13 @@ public interface PrismContainerWrapper extends ItemWrap boolean isExpanded(); - void setShowOnTopLevel(boolean setShowOnTopLevel); - - boolean isShowOnTopLevel(); - + ItemStatus getStatus(); void setVirtual(boolean virtual); boolean isVirtual(); - -// ItemWrapper findItem(ItemPath path); - + + PrismContainerWrapper findContainer(ItemPath path) throws SchemaException; PrismPropertyWrapper findProperty(ItemPath propertyPath) throws SchemaException; PrismReferenceWrapper findReference(ItemPath path) throws SchemaException; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java index 434165a2110..a6dcd843d19 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/ModelServiceLocator.java @@ -16,6 +16,7 @@ package com.evolveum.midpoint.gui.api.util; import com.evolveum.midpoint.common.LocalizationService; +import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.gui.api.prism.ItemWrapper; import com.evolveum.midpoint.gui.api.registry.GuiComponentRegistry; import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; @@ -26,6 +27,7 @@ import com.evolveum.midpoint.model.api.ModelService; import com.evolveum.midpoint.model.api.authentication.CompiledUserProfile; import com.evolveum.midpoint.model.api.interaction.DashboardService; +import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObjectDefinition; import com.evolveum.midpoint.prism.PrismValue; @@ -94,11 +96,13 @@ default ObjectResolver getModelObjectResolver() { return null; } - public Locale getLocale(); + Locale getLocale(); GuiComponentRegistry getRegistry(); PrismObjectWrapperFactory findObjectWrapperFactory(PrismObjectDefinition objectDef); - public VW createValueWrapper(IW parentWrapper, PV newValue, ValueStatus status, WrapperContext context) throws SchemaException; + IW createItemWrapper(I item, ItemStatus status, WrapperContext ctx) throws SchemaException; + + VW createValueWrapper(IW parentWrapper, PV newValue, ValueStatus status, WrapperContext context) throws SchemaException; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 7cce24fb704..27242a4c748 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -1186,7 +1186,17 @@ public static String getDisplayName(PrismContainerValu } else if (prismContainerValue.canRepresent(UserInterfaceFeatureType.class)) { UserInterfaceFeatureType userInterfaceFeature = (UserInterfaceFeatureType) prismContainerValue.asContainerable(); String identifier = userInterfaceFeature.getIdentifier(); - if (StringUtils.isNotEmpty(identifier)) { + + if (StringUtils.isBlank(identifier)) { + DisplayType uifDisplay = userInterfaceFeature.getDisplay(); + if (uifDisplay != null) { + displayName = WebComponentUtil.getOrigStringFromPoly(uifDisplay.getLabel()); + } + + if (displayName == null) { + displayName = "UserInterfaceFeatureType.containerTitle"; + } + } else { displayName = identifier; } } else if (prismContainerValue.canRepresent(GuiObjectColumnType.class)) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java index 448073c26f4..603a14823a0 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/HeterogenousContainerWrapperFactory.java @@ -93,6 +93,8 @@ public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper PrismContainerValue value, ValueStatus status, WrapperContext context) throws SchemaException { PrismContainerValueWrapper containerValueWrapper = new PrismContainerValueWrapperImpl(parent, value, status); + containerValueWrapper.setShowEmpty(context.isShowEmpty()); + containerValueWrapper.setExpanded(shouldBeExpanded(parent, value, context)); containerValueWrapper.setHeterogenous(true); List> wrappers = new ArrayList<>(); @@ -117,6 +119,24 @@ public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper containerValueWrapper.getItems().addAll((Collection) wrappers); return containerValueWrapper; } + + protected boolean shouldBeExpanded(PrismContainerWrapper parent, PrismContainerValue value, WrapperContext context) { + if (value.isEmpty()) { + return context.isShowEmpty() || containsEmphasizedItems(parent.getDefinitions()); + } + + return true; + } + + private boolean containsEmphasizedItems(List definitions) { + for (ItemDefinition def : definitions) { + if (def.isEmphasized()) { + return true; + } + } + + return false; + } protected List> createValuesWrapper(PrismContainerWrapper itemWrapper, PrismContainer item, WrapperContext context) throws SchemaException { List> pvWrappers = new ArrayList<>(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismContainerWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismContainerWrapperFactoryImpl.java index afd1cd00a6c..21b83874cb6 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismContainerWrapperFactoryImpl.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismContainerWrapperFactoryImpl.java @@ -86,10 +86,8 @@ public int getOrder() { public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper parent, PrismContainerValue value, ValueStatus status, WrapperContext context) throws SchemaException { PrismContainerValueWrapper containerValueWrapper = createContainerValueWrapper(parent, value, status); - containerValueWrapper.setExpanded(shouldBeExpanded(parent, value, context)); containerValueWrapper.setShowEmpty(context.isShowEmpty()); - List> wrappers = new ArrayList<>(); for (ItemDefinition def : getItemDefinitions(parent, value)) { addItemWrapper(def, containerValueWrapper, context, wrappers); @@ -98,6 +96,7 @@ public PrismContainerValueWrapper createValueWrapper(PrismContainerWrapper containerValueWrapper.getItems().addAll((Collection) wrappers); containerValueWrapper.setVirtualContainerItems(context.getVirtualItemSpecification()); parent.setVirtual(context.getVirtualItemSpecification() != null); + containerValueWrapper.setExpanded(shouldBeExpanded(parent, value, context)); return containerValueWrapper; } @@ -147,7 +146,12 @@ public PrismContainerValueWrapper createContainerValueWrapper(PrismContainerW } protected boolean shouldBeExpanded(PrismContainerWrapper parent, PrismContainerValue value, WrapperContext context) { - if (value.isEmpty()) { + + if (context.getVirtualItemSpecification() != null) { + return true; + } + + if (value.isEmpty()) { return context.isShowEmpty() || containsEmphasizedItems(parent.getDefinitions()); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactoryImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactoryImpl.java index f206c977ece..dd75a7d4f2c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactoryImpl.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/factory/PrismObjectWrapperFactoryImpl.java @@ -87,7 +87,7 @@ public PrismObjectWrapper createObjectWrapper(PrismObject object, ItemStat PrismContainerValueWrapper valueWrapper = createValueWrapper(objectWrapper, object.getValue(), ItemStatus.ADDED == status ? ValueStatus.ADDED : ValueStatus.NOT_CHANGED, context); objectWrapper.getValues().add(valueWrapper); - registry.registerWrapperPanel(object.getDefinition().getTypeName(), PrismObjectValuePanel.class); + registry.registerWrapperPanel(object.getDefinition().getTypeName(), PrismContainerPanel.class); return objectWrapper; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java index a225eaf762e..cc375552520 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ContainerOfSystemConfigurationPanel.java @@ -18,6 +18,7 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; @@ -61,8 +62,9 @@ protected void onInitialize() { protected void initLayout() { try { - Panel panel = getPageBase().initItemPanel(ID_CONTAINER, typeName, getModel(), wrapper -> getVisibity(wrapper.getPath())); - getModelObject().setShowOnTopLevel(true); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(wrapper -> getVisibity(wrapper.getPath())).showOnTopLevel(true); + Panel panel = getPageBase().initItemPanel(ID_CONTAINER, typeName, getModel(), builder.build()); +// getModelObject().setShowOnTopLevel(true); add(panel); } catch (SchemaException e) { LOGGER.error("Cannot create panel for {}, {}", typeName, e.getMessage(), e); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java index 15abe8a8ed6..e7209c2a4bc 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/LoggingConfigurationTabPanel.java @@ -23,6 +23,8 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; import com.evolveum.midpoint.schema.constants.MidPointConstants; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang.StringUtils; @@ -117,8 +119,10 @@ protected void onInitialize() { protected void initLayout() { try { - getModelObject().setShowOnTopLevel(true); - Panel loggingPanel = getPageBase().initItemPanel(ID_LOGGING, LoggingConfigurationType.COMPLEX_TYPE, getModel(), itemWrapper -> getLoggingVisibility(itemWrapper.getPath())); +// getModelObject().setShowOnTopLevel(true); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder(); + builder.visibilityHandler(itemWrapper -> getLoggingVisibility(itemWrapper.getPath())).showOnTopLevel(true); + Panel loggingPanel = getPageBase().initItemPanel(ID_LOGGING, LoggingConfigurationType.COMPLEX_TYPE, getModel(), builder.build()); add(loggingPanel); } catch (SchemaException e) { LOGGER.error("Cannot create panel for logging: {}", e.getMessage(), e); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ProfilingConfigurationTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ProfilingConfigurationTabPanel.java index cb2a70ab89c..bfd77cc62b7 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ProfilingConfigurationTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/ProfilingConfigurationTabPanel.java @@ -17,6 +17,7 @@ package com.evolveum.midpoint.gui.impl.page.admin.configuration.component; import com.evolveum.midpoint.common.configuration.api.ProfilingMode; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; import com.evolveum.midpoint.schema.constants.MidPointConstants; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.panel.Panel; @@ -101,8 +102,8 @@ public boolean isVisible() { add(profilingEnabledNote); try { - getProfilingModel().getObject().setShowOnTopLevel(true); - Panel panel = getPageBase().initItemPanel(ID_PROFILING, ProfilingConfigurationType.COMPLEX_TYPE, getProfilingModel(), null); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().showOnTopLevel(true); + Panel panel = getPageBase().initItemPanel(ID_PROFILING, ProfilingConfigurationType.COMPLEX_TYPE, getProfilingModel(), builder.build()); add(panel); } catch (SchemaException e) { LOGGER.error("Cannot create profiling panel. Reason: {}", e.getMessage(), e); @@ -111,8 +112,8 @@ public boolean isVisible() { PrismContainerWrapperModel profilingLogger = PrismContainerWrapperModel.fromContainerWrapper(getLoggingModel(), ItemPath.create(ProfilingClassLoggerWrapperFactoryImpl.PROFILING_LOGGER_PATH)); try { - profilingLogger.getObject().setShowOnTopLevel(true); - Panel logger = getPageBase().initItemPanel(ID_PROFILING_LOGGER, ProfilingClassLoggerWrapperFactoryImpl.PROFILING_LOGGER_PATH, profilingLogger, null); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().showOnTopLevel(true); + Panel logger = getPageBase().initItemPanel(ID_PROFILING_LOGGER, ProfilingClassLoggerWrapperFactoryImpl.PROFILING_LOGGER_PATH, profilingLogger, builder.build()); add(logger); } catch (SchemaException e) { LOGGER.error("Cannot create profiling panel. Reason: {}", e.getMessage(), e); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/SystemConfigPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/SystemConfigPanel.java index cf810df1469..9fc50f1b3ed 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/SystemConfigPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/admin/configuration/component/SystemConfigPanel.java @@ -16,6 +16,7 @@ package com.evolveum.midpoint.gui.impl.page.admin.configuration.component; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; @@ -58,7 +59,8 @@ protected void onInitialize() { protected void initLayout() { try { - Panel panel = getPageBase().initItemPanel(ID_SYSTEM_CONFIG, SystemConfigurationType.COMPLEX_TYPE, getModel(), itemWrapper -> getBasicTabVisibity(itemWrapper)); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> getBasicTabVisibity(itemWrapper)); + Panel panel = getPageBase().initItemPanel(ID_SYSTEM_CONFIG, SystemConfigurationType.COMPLEX_TYPE, getModel(), builder.build()); add(panel); } catch (SchemaException e) { LOGGER.error("Cannot create basic panel for system configuration."); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanel.java index 18231fca3e9..8433fe66ee4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanel.java @@ -61,12 +61,12 @@ public abstract class ItemPanel model, ItemVisibilityHandler visibilityHandler) { + public ItemPanel(String id, IModel model, ItemPanelSettings itemPanelSettings) { super(id, model); - this.visibilityHandler = visibilityHandler; + this.itemPanelSettings = itemPanelSettings; } @Override @@ -88,6 +88,9 @@ private void initLayout() { } protected boolean getHeaderVisibility() { + if (!isHeaderVisible()) { + return false; + } return getParent().findParent(AbstractItemWrapperColumnPanel.class) == null; } @@ -104,7 +107,7 @@ protected void populateItem(ListItem item) { GuiComponentFactory componentFactory = getPageBase().getRegistry() .findValuePanelFactory(ItemPanel.this.getModelObject()); - Component panel = createValuePanel(item, componentFactory, visibilityHandler); + Component panel = createValuePanel(item, componentFactory, getVisibilityHandler()); panel.add(new EnableBehaviour(() -> !ItemPanel.this.getModelObject().isReadOnly())); createButtons(item); } @@ -287,6 +290,29 @@ private boolean isVisibleValue(IModel model) { } public ItemVisibilityHandler getVisibilityHandler() { - return visibilityHandler; + if (itemPanelSettings == null) { + return null; + } + return itemPanelSettings.getVisibilityHandler(); + } + + protected boolean isShowOnTopLevel() { + if (itemPanelSettings == null) { + return false; + } + return itemPanelSettings.isShowOnTopLevel(); + } + + + protected boolean isHeaderVisible() { + if (itemPanelSettings == null) { + return true; + } + + return itemPanelSettings.isHeaderVisible(); + } + + public ItemPanelSettings getSettings() { + return itemPanelSettings; } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanelSettings.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanelSettings.java new file mode 100644 index 00000000000..9a3054b5912 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanelSettings.java @@ -0,0 +1,39 @@ +package com.evolveum.midpoint.gui.impl.prism; + +import java.io.Serializable; + +public class ItemPanelSettings implements Serializable { + + private ItemVisibilityHandler visibilityHandler; + private boolean showOnTopLevel; + private boolean headerVisible = true; + + + public ItemVisibilityHandler getVisibilityHandler() { + return visibilityHandler; + } + + void setVisibilityHandler(ItemVisibilityHandler visibilityHandler) { + this.visibilityHandler = visibilityHandler; + } + + public boolean isShowOnTopLevel() { + return showOnTopLevel; + } + + void setShowOnTopLevel(boolean showOnTopLevel) { + this.showOnTopLevel = showOnTopLevel; + } + + public boolean isHeaderVisible() { + return headerVisible; + } + + void setHeaderVisible(boolean headerVisible) { + this.headerVisible = headerVisible; + } + + + +} + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanelSettingsBuilder.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanelSettingsBuilder.java new file mode 100644 index 00000000000..144e4d06580 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemPanelSettingsBuilder.java @@ -0,0 +1,29 @@ +package com.evolveum.midpoint.gui.impl.prism; + +public class ItemPanelSettingsBuilder { + + private ItemPanelSettings settings; + + public ItemPanelSettingsBuilder() { + settings = new ItemPanelSettings(); + } + + public ItemPanelSettingsBuilder visibilityHandler(ItemVisibilityHandler handler) { + settings.setVisibilityHandler(handler); + return this; + } + + public ItemPanelSettingsBuilder showOnTopLevel(boolean showOnTopLevel) { + settings.setShowOnTopLevel(showOnTopLevel); + return this; + } + + public ItemPanelSettingsBuilder headerVisibility(boolean headerVisibility) { + settings.setHeaderVisible(headerVisibility); + return this; + } + + public ItemPanelSettings build() { + return settings; + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java index 47b5b9afa49..7d4fc443f57 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ItemVisibilityHandler.java @@ -27,5 +27,5 @@ @FunctionalInterface public interface ItemVisibilityHandler extends Serializable{ - public ItemVisibility isVisible(ItemWrapper wrapper); + ItemVisibility isVisible(ItemWrapper wrapper); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerPanel.java index 86a2ffcd57a..db0f4d13fef 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerPanel.java @@ -48,8 +48,8 @@ public class PrismContainerPanel extends ItemPanel> model, ItemVisibilityHandler visibilitytHandler) { - super(id, model, visibilitytHandler); + public PrismContainerPanel(String id, IModel> model, ItemPanelSettings settings) { + super(id, model, settings); } @Override @@ -60,8 +60,7 @@ protected void onInitialize() { add(AttributeModifier.append("class", () -> { String cssClasses = ""; - if ((getModelObject() != null && getModelObject().isShowOnTopLevel()) - || (!(getParent() instanceof PrismContainerValuePanel) && getParent()!=null + if (isShowOnTopLevel() || (getModelObject() != null && getModelObject().isVirtual()) || (!(getParent() instanceof PrismContainerValuePanel) && getParent()!=null && getParent().getParent() instanceof PrismContainerValuePanel)) { cssClasses = "top-level-prism-container"; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValuePanel.java index 232094e56ad..26ef65be7ca 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValuePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerValuePanel.java @@ -260,7 +260,9 @@ private void populateNonContainer(ListItem item) { if(item.getModelObject() instanceof ResourceAttributeWrapper) { typeName = new QName("ResourceAttributeDefinition"); } - Panel panel = getPageBase().initItemPanel("property", typeName, item.getModel(), visibilityHandler); + + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(visibilityHandler); + Panel panel = getPageBase().initItemPanel("property", typeName, item.getModel(), builder.build()); panel.setOutputMarkupId(true); panel.add(new VisibleEnableBehaviour() { @@ -289,7 +291,8 @@ private void populateContainer(ListItem container) { container.setOutputMarkupId(true); PrismContainerWrapper itemWrapper = container.getModelObject(); try { - Panel panel = getPageBase().initItemPanel("container", itemWrapper.getTypeName(), container.getModel(), visibilityHandler); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(visibilityHandler); + Panel panel = getPageBase().initItemPanel("container", itemWrapper.getTypeName(), container.getModel(), builder.build()); panel.setOutputMarkupId(true); panel.add(new VisibleBehaviour(() -> { CVW parent = PrismContainerValuePanel.this.getModelObject(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerWrapperImpl.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerWrapperImpl.java index ab66761c860..a5cf0b96308 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerWrapperImpl.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismContainerWrapperImpl.java @@ -73,16 +73,6 @@ public boolean isExpanded() { return expanded; } - @Override - public void setShowOnTopLevel(boolean setShowOnTopLevel) { - this.showOnTopLevel = setShowOnTopLevel; - } - - @Override - public boolean isShowOnTopLevel() { - return showOnTopLevel; - } - @Override public Class getCompileTimeClass() { return getItemDefinition().getCompileTimeClass(); @@ -343,9 +333,8 @@ public boolean isVisible(PrismContainerValueWrapper parent, ItemVisibilityHandle if (getComplexTypeDefinition().getTypeName().equals(MetadataType.COMPLEX_TYPE)) { return (getParent() != null && getParent().isShowMetadata()); } - boolean parentIsOnTopLevel = parent.getParent() != null && ((PrismContainerWrapper)parent.getParent()).isShowOnTopLevel(); - - return isVisibleByVisibilityHandler((parentIsOnTopLevel || parent.isExpanded()), visibilityHandler); + + return isVisibleByVisibilityHandler(parent.isExpanded(), visibilityHandler); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValuePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValuePanel.java index 710839f3958..3714174b2ca 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValuePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismObjectValuePanel.java @@ -36,11 +36,11 @@ public class PrismObjectValuePanel extends BasePanel> model, ItemVisibilityHandler visibilityHandler) { + public PrismObjectValuePanel(String id, IModel> model, ItemPanelSettings settings) { super(id, model); - this.visibilityHandler = visibilityHandler; + this.settings = settings; } @Override @@ -56,7 +56,7 @@ private void initLayout() { protected void createValuePanel(String panelId, IModel> valueModel) { - PrismContainerValuePanel> valueWrapper = new PrismContainerValuePanel<>(panelId, valueModel, visibilityHandler); + PrismContainerValuePanel> valueWrapper = new PrismContainerValuePanel<>(panelId, valueModel, settings.getVisibilityHandler()); valueWrapper.setOutputMarkupId(true); add(valueWrapper); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyPanel.java index e5cde625177..44bdd12f5df 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismPropertyPanel.java @@ -67,8 +67,8 @@ public class PrismPropertyPanel extends ItemPanel> model, ItemVisibilityHandler visibilitytHandler) { - super(id, model, visibilitytHandler); + public PrismPropertyPanel(String id, IModel> model, ItemPanelSettings settings) { + super(id, model, settings); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferencePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferencePanel.java index ce31a6eb121..03b992b5053 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferencePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/PrismReferencePanel.java @@ -54,8 +54,8 @@ public class PrismReferencePanel extends ItemPanel> model, ItemVisibilityHandler visibilityHandler) { - super(id, model, visibilityHandler); + public PrismReferencePanel(String id, IModel> model, ItemPanelSettings settings) { + super(id, model, settings); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProfilingClassLoggerPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProfilingClassLoggerPanel.java index deb77f2c97c..11f60e8e404 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProfilingClassLoggerPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ProfilingClassLoggerPanel.java @@ -28,8 +28,8 @@ */ public class ProfilingClassLoggerPanel extends PrismContainerPanel { - public ProfilingClassLoggerPanel(String id, IModel> model, ItemVisibilityHandler visibilitytHandler) { - super(id, model, itemWrapper -> checkVisibility(itemWrapper, visibilitytHandler)); + public ProfilingClassLoggerPanel(String id, IModel> model, ItemPanelSettings settings) { + super(id, model, new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkVisibility(itemWrapper, settings.getVisibilityHandler())).build()); } private static ItemVisibility checkVisibility(ItemWrapper itemWrapper, ItemVisibilityHandler visibilitytHandler) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeDefinitionPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeDefinitionPanel.java index ac459927348..e2935d991d2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeDefinitionPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ResourceAttributeDefinitionPanel.java @@ -43,8 +43,8 @@ public class ResourceAttributeDefinitionPanel extends PrismPropertyPanel { * @param id * @param model */ - public ResourceAttributeDefinitionPanel(String id, IModel> model, ItemVisibilityHandler visibilitytHandler) { - super(id, (IModel)model, visibilitytHandler); + public ResourceAttributeDefinitionPanel(String id, IModel> model, ItemPanelSettings settings) { + super(id, (IModel)model, settings); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ShadowPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ShadowPanel.java index 3b64dd245c6..ae3f2f5d15d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ShadowPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/ShadowPanel.java @@ -71,23 +71,28 @@ private void initLayout() { try { + + ItemPanelSettingsBuilder attributesSettingsBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); Panel attributesPanel = getPageBase().initItemPanel(ID_ATTRIBUTES, ShadowAttributesType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ATTRIBUTES), - itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); + attributesSettingsBuilder.build()); add(attributesPanel); - - Panel associationsPanel = getPageBase().initItemPanel(ID_ASSOCIATIONS, ShadowAssociationType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ASSOCIATION), - itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); + + ItemPanelSettingsBuilder associationBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); + Panel associationsPanel = getPageBase().initItemPanel(ID_ASSOCIATIONS, ShadowAssociationType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ASSOCIATION), + associationBuilder.build()); associationsPanel.add(new VisibleBehaviour(() -> checkAssociationsVisibility())); add(associationsPanel); - + + ItemPanelSettingsBuilder activationBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); Panel activationPanel = getPageBase().initItemPanel(ID_ACTIVATION, ActivationType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ShadowType.F_ACTIVATION), - itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); + activationBuilder.build()); activationPanel.add(new VisibleBehaviour(() -> isActivationSupported())); add(activationPanel); - + + ItemPanelSettingsBuilder passwordSettingsBuilder = new ItemPanelSettingsBuilder().visibilityHandler(itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); Panel passwordPanel = getPageBase().initItemPanel(ID_PASSWORD, PasswordType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), ItemPath.create(ShadowType.F_CREDENTIALS, CredentialsType.F_PASSWORD)), - itemWrapper -> checkShadowContainerVisibility(itemWrapper, getModel())); + passwordSettingsBuilder.build()); passwordPanel.add(new VisibleBehaviour(() -> isCredentialsSupported())); add(passwordPanel); } catch (SchemaException e) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/ExpressionPropertyPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/ExpressionPropertyPanel.java index d31136fcb26..55edb881b78 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/ExpressionPropertyPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/prism/component/ExpressionPropertyPanel.java @@ -56,8 +56,8 @@ public class ExpressionPropertyPanel extends PrismPropertyPanel private boolean isExpanded; - public ExpressionPropertyPanel(String id, IModel> model, ItemVisibilityHandler visibilitytHandler) { - super(id, model, visibilitytHandler); + public ExpressionPropertyPanel(String id, IModel> model, ItemPanelSettings settings) { + super(id, model, settings); isExpanded = model.getObject() != null && CollectionUtils.isNotEmpty(model.getObject().getValues()); //todo how to set displayOrder ? to display expression property the last, in the same way as containers } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java index 25c9e37bfb2..da34189c16f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java @@ -23,6 +23,7 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -684,7 +685,9 @@ private Fragment createSpecificContainersFragment(String contentAreaId, IModel

activationModel = PrismContainerWrapperModel.fromContainerValueWrapper(model, AssignmentType.F_ACTIVATION); try { - Panel activationContainer = getPageBase().initItemPanel(ID_ACTIVATION_PANEL, ActivationType.COMPLEX_TYPE, activationModel, itemWrapper -> getActivationVisibileItems(itemWrapper.getPath(), assignmentPath)); + ItemPanelSettingsBuilder settings = new ItemPanelSettingsBuilder(); + settings.visibilityHandler(itemWrapper -> getActivationVisibileItems(itemWrapper.getPath(), assignmentPath)); + Panel activationContainer = getPageBase().initItemPanel(ID_ACTIVATION_PANEL, ActivationType.COMPLEX_TYPE, activationModel, settings.build()); specificContainers.add(activationContainer); } catch (SchemaException e) { LOGGER.error("Cannot create panel for activation, {}", e.getMessage(), e); @@ -719,8 +722,10 @@ protected Panel getSpecificContainerPanel(IModel wrapperModel = getSpecificContainerModel(modelObject); - Panel constraintsContainerPanel = getPageBase().initItemPanel(ID_SPECIFIC_CONTAINER, wrapperModel.getObject().getTypeName(), - wrapperModel, itemWrapper -> getSpecificContainersItemsVisibility(itemWrapper, assignmentPath)); + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder(); + builder.visibilityHandler(itemWrapper -> getSpecificContainersItemsVisibility(itemWrapper, assignmentPath)); + Panel constraintsContainerPanel = getPageBase().initItemPanel(ID_SPECIFIC_CONTAINER, wrapperModel.getObject().getTypeName(), + wrapperModel, builder.build()); constraintsContainerPanel.setOutputMarkupId(true); return constraintsContainerPanel; } catch (SchemaException e) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/UploadDownloadPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/UploadDownloadPanel.java index 6cf194d3e51..374ccc2cf95 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/UploadDownloadPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/UploadDownloadPanel.java @@ -24,9 +24,13 @@ import java.io.IOException; import java.io.InputStream; import java.net.URLConnection; +import java.util.ArrayList; +import java.util.List; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; + +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -59,7 +63,20 @@ public UploadDownloadPanel(String id, boolean isReadOnly) { } private void initLayout(final boolean isReadOnly) { - final FileUploadField fileUpload = new FileUploadField(ID_INPUT_FILE); + final FileUploadField fileUpload = new FileUploadField(ID_INPUT_FILE) { + private static final long serialVersionUID = 1L; + + @Override + public String[] getInputAsArray() { + List input = new ArrayList<>(); + try { + input.add(new String (IOUtils.toByteArray(getStream()))); + } catch (IOException e) { + LOGGER.error("Unable to define file content type, ", e.getLocalizedMessage()); + } + return input.toArray(new String[input.size()]); + } + }; Form form = this.findParent(Form.class); fileUpload.add(new AjaxFormSubmitBehavior(form, "change") { private static final long serialVersionUID = 1L; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectTabPanel.java index dae48d5f7c5..b898af692da 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/AbstractObjectTabPanel.java @@ -17,6 +17,8 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; import org.apache.commons.lang.StringUtils; import org.apache.wicket.MarkupContainer; import org.apache.wicket.ajax.AjaxRequestTarget; @@ -140,7 +142,10 @@ protected Panel addPrismPropertyPanel(MarkupContainer parentComponent, String id try { //FIXME : really always visible? - Panel panel = getPageBase().initItemPanel(id, typeName, PrismPropertyWrapperModel.fromContainerWrapper(getObjectWrapperModel(), propertyPath), wrapper -> ItemVisibility.VISIBLE); + ItemPanelSettingsBuilder settingsBuilder = new ItemPanelSettingsBuilder(); + settingsBuilder.visibilityHandler(wrapper -> ItemVisibility.VISIBLE); + + Panel panel = getPageBase().initItemPanel(id, typeName, PrismPropertyWrapperModel.fromContainerWrapper(getObjectWrapperModel(), propertyPath), settingsBuilder.build()); parentComponent.add(panel); return panel; } catch (SchemaException e) { 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 48857bf4534..1bcf136daff 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 @@ -18,6 +18,8 @@ import java.util.ArrayList; import java.util.List; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; +import com.evolveum.midpoint.web.component.prism.ItemVisibility; import org.apache.wicket.markup.html.panel.Panel; import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType; import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentHolderType; @@ -72,14 +74,18 @@ protected void onInitialize() { private void initLayout() { try { + + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(w -> ItemVisibility.AUTO).showOnTopLevel(true); + builder.headerVisibility(false); + Panel main = getPageBase().initItemPanel(ID_MAIN_PANEL, getObjectWrapper().getTypeName(), - PrismContainerWrapperModel.fromContainerWrapper(getObjectWrapperModel(), ItemPath.EMPTY_PATH), null, true); + PrismContainerWrapperModel.fromContainerWrapper(getObjectWrapperModel(), ItemPath.EMPTY_PATH), builder.build()); add(main); Panel activation = getPageBase().initItemPanel(ID_ACTIVATION_PANEL, ActivationType.COMPLEX_TYPE, - PrismContainerWrapperModel.fromContainerWrapper(getObjectWrapperModel(), FocusType.F_ACTIVATION), null, true); + PrismContainerWrapperModel.fromContainerWrapper(getObjectWrapperModel(), FocusType.F_ACTIVATION), builder.build()); add(activation); Panel password = getPageBase().initItemPanel(ID_PASSWORD_PANEL, PasswordType.COMPLEX_TYPE, - PrismContainerWrapperModel.fromContainerWrapper(getObjectWrapperModel(), ItemPath.create(UserType.F_CREDENTIALS, CredentialsType.F_PASSWORD)), null, true); + PrismContainerWrapperModel.fromContainerWrapper(getObjectWrapperModel(), ItemPath.create(UserType.F_CREDENTIALS, CredentialsType.F_PASSWORD)), builder.build()); add(password); } catch (SchemaException e) { LOGGER.error("Could not create focus details panel. Reason: {}", e.getMessage(), e); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java index 5f63206bbbd..d2423ff44ec 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagePanel.java @@ -18,6 +18,12 @@ import java.util.List; +import com.evolveum.midpoint.gui.impl.prism.ItemPanel; +import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.web.component.prism.ItemVisibility; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -27,6 +33,7 @@ import org.apache.wicket.markup.html.form.EnumChoiceRenderer; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; @@ -83,9 +90,14 @@ public class DefinitionStagePanel extends BasePanel { private static final String ID_STOP_REVIEW_ON_HELP = "stopReviewOnHelp"; // TODO remove pageBase from the constructor -- replace with delayed layout initialization - public DefinitionStagePanel(String id, IModel model, PageBase pageBase) { + public DefinitionStagePanel(String id, IModel model) { super(id, model); - initLayout(pageBase); + } + + @Override + protected void onInitialize() { + super.onInitialize(); + initLayout(getPageBase()); } protected void initLayout(PageBase pageBase) { @@ -161,20 +173,22 @@ public boolean isEnabled() { useObjectManagerDetails.add(allowSelf); useObjectManagerDetails.add(WebComponentUtil.createHelp(ID_USE_OBJECT_MANAGER_ALLOW_SELF_HELP)); - //TODO TODO TODO -// PrismPropertyPanel defaultOwnerRefPanel = new NoOffsetPrismReferencePanel(ID_DEFAULT_REVIEWER_REF, -// new PropertyModel<>(getModel(), StageDefinitionDto.F_REVIEWER_DTO + "." + AccessCertificationReviewerDto.F_DEFAULT_REVIEWERS), -// null); -// defaultOwnerRefPanel.setLabelContainerVisible(false); -// add(defaultOwnerRefPanel); -// add(WebComponentUtil.createHelp(ID_DEFAULT_REVIEWER_REF_HELP)); -// -// PrismPropertyPanel additionalOwnerRefPanel = new NoOffsetPrismReferencePanel(ID_ADDITIONAL_REVIEWER_REF, -// new PropertyModel<>(getModel(), StageDefinitionDto.F_REVIEWER_DTO + "." + AccessCertificationReviewerDto.F_ADDITIONAL_REVIEWERS), -// null); -// additionalOwnerRefPanel.setLabelContainerVisible(false); -// add(additionalOwnerRefPanel); - add(WebComponentUtil.createHelp(ID_ADDITIONAL_REVIEWER_REF_HELP)); + + try { + ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder().visibilityHandler(iw -> ItemVisibility.AUTO); + Panel defaultOwnerRefPanel = pageBase.initItemPanel(ID_DEFAULT_REVIEWER_REF, ObjectReferenceType.COMPLEX_TYPE, + new PropertyModel<>(getModel(), StageDefinitionDto.F_REVIEWER_DTO + "." + AccessCertificationReviewerDto.F_DEFAULT_REVIEWERS), builder.build()); + add(defaultOwnerRefPanel); + add(WebComponentUtil.createHelp(ID_DEFAULT_REVIEWER_REF_HELP)); + + Panel additionalOwnerRefPanel = pageBase.initItemPanel(ID_ADDITIONAL_REVIEWER_REF, ObjectReferenceType.COMPLEX_TYPE, + new PropertyModel<>(getModel(), StageDefinitionDto.F_REVIEWER_DTO + "." + AccessCertificationReviewerDto.F_ADDITIONAL_REVIEWERS), builder.build()); + add(additionalOwnerRefPanel); + add(WebComponentUtil.createHelp(ID_ADDITIONAL_REVIEWER_REF_HELP)); + } catch (SchemaException e) { + + } + DropDownChoice outcomeStrategy1 = new DropDownChoice<>(ID_OUTCOME_STRATEGY, diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagesPanel.java index b94ccf77cf2..83dfb22415f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagesPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/DefinitionStagesPanel.java @@ -201,7 +201,7 @@ private AbstractTab createTab(final StageDefinitionDto definitionDto, final Page return new AbstractTab(new Model<>(definitionDto.getName())) { @Override public WebMarkupContainer getPanel(String panelId) { - return new DefinitionStagePanel(panelId, new Model(definitionDto), parentPage); + return new DefinitionStagePanel(panelId, new Model(definitionDto)); } }; } @@ -212,7 +212,7 @@ private StageDefinitionDto createNewStageDefinitionDto(){ AccessCertificationStageDefinitionType def = new AccessCertificationStageDefinitionType(parentPage.getPrismContext()); def.setNumber(getModel().getObject().size() + 1); def.setName(DEFAULT_STAGE_NAME_PREFIX + def.getNumber()); - return new StageDefinitionDto(def, parentPage.getPrismContext()); + return new StageDefinitionDto(def, parentPage); } catch (SchemaException e) { throw new IllegalStateException(e); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinition.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinition.java index 3a9fbfa7621..ae5e586d5cb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinition.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinition.java @@ -124,7 +124,7 @@ private CertDefinitionDto loadDefinition(String definitionOid) { WebModelServiceUtils.loadObject(AccessCertificationDefinitionType.class, definitionOid, options, PageCertDefinition.this, task, result); AccessCertificationDefinitionType definition = PrismObjectValue.asObjectable(definitionObject); - definitionDto = new CertDefinitionDto(definition, this, getPrismContext()); + definitionDto = new CertDefinitionDto(definition, this); result.recordSuccessIfUnknown(); } catch (Exception ex) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't get definition", ex); @@ -146,7 +146,7 @@ private CertDefinitionDto createDefinition() throws SchemaException { stage.setNumber(1); stage.setReviewerSpecification(new AccessCertificationReviewerSpecificationType(getPrismContext())); definition.getStageDefinition().add(stage); - return new CertDefinitionDto(definition, this, getPrismContext()); + return new CertDefinitionDto(definition, this); } //endregion diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/StageEditorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/StageEditorPanel.java index ad5c3e2df24..4142af48369 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/StageEditorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/StageEditorPanel.java @@ -86,7 +86,7 @@ private void nameClickPerformed(AjaxRequestTarget target) { tabsList.add(new AbstractTab(tabNameModel) { @Override public WebMarkupContainer getPanel(String panelId) { - return new DefinitionStagePanel(panelId, getModel(), getPageBase()); + return new DefinitionStagePanel(panelId, getModel()); } }); tabbedPanel.setSelectedTab(tabsList.size() - 1); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/AccessCertificationReviewerDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/AccessCertificationReviewerDto.java index a2486d06380..2fcfc4bd8de 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/AccessCertificationReviewerDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/AccessCertificationReviewerDto.java @@ -1,20 +1,25 @@ package com.evolveum.midpoint.web.page.admin.certification.dto; -import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationReviewerSpecificationType.F_ADDITIONAL_REVIEWER_REF; -import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationReviewerSpecificationType.F_DEFAULT_REVIEWER_REF; +import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.prism.ItemStatus; +import com.evolveum.midpoint.gui.api.prism.ItemWrapper; +import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; +import com.evolveum.midpoint.gui.impl.factory.WrapperContext; +import com.evolveum.midpoint.prism.PrismContext; +import com.evolveum.midpoint.prism.PrismReference; +import com.evolveum.midpoint.prism.PrismReferenceDefinition; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.schema.util.ObjectTypeUtil; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.exception.SchemaException; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import com.evolveum.midpoint.prism.PrismContext; -import com.evolveum.midpoint.prism.PrismReference; -import com.evolveum.midpoint.prism.PrismReferenceDefinition; -import com.evolveum.midpoint.util.exception.SchemaException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationDefinitionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationReviewerSpecificationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationStageDefinitionType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType; +import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationReviewerSpecificationType.F_ADDITIONAL_REVIEWER_REF; +import static com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationReviewerSpecificationType.F_DEFAULT_REVIEWER_REF; /** * Created by Kate on 15.12.2015. @@ -40,13 +45,12 @@ public class AccessCertificationReviewerDto implements Serializable { private boolean useObjectApprover; private ManagerSearchDto useObjectManager; private boolean useObjectManagerPresent; - - //TODO TODO TODO -// private ReferenceWrapper defaultReviewers; -// private ReferenceWrapper additionalReviewers; + + private ItemWrapper defaultReviewers; + private ItemWrapper additionalReviewers; private List reviewerExpressionList; - public AccessCertificationReviewerDto(AccessCertificationReviewerSpecificationType reviewerType, PrismContext prismContext) throws SchemaException { + public AccessCertificationReviewerDto(AccessCertificationReviewerSpecificationType reviewerType, ModelServiceLocator pageBase) throws SchemaException { final PrismReference defaultReviewersReference; final PrismReference additionalReviewersReference; if (reviewerType != null) { @@ -64,21 +68,24 @@ public AccessCertificationReviewerDto(AccessCertificationReviewerSpecificationTy } else { useObjectManager = new ManagerSearchDto(null); useObjectManagerPresent = false; - PrismReferenceDefinition defReviewerDef = prismContext.getSchemaRegistry().findItemDefinitionByFullPath(AccessCertificationDefinitionType.class, + PrismReferenceDefinition defReviewerDef = pageBase.getPrismContext().getSchemaRegistry().findItemDefinitionByFullPath(AccessCertificationDefinitionType.class, PrismReferenceDefinition.class, AccessCertificationDefinitionType.F_STAGE_DEFINITION, AccessCertificationStageDefinitionType.F_REVIEWER_SPECIFICATION, F_DEFAULT_REVIEWER_REF); defaultReviewersReference = defReviewerDef.instantiate(); - PrismReferenceDefinition additionalReviewerDef = prismContext.getSchemaRegistry().findItemDefinitionByFullPath(AccessCertificationDefinitionType.class, + PrismReferenceDefinition additionalReviewerDef = pageBase.getPrismContext().getSchemaRegistry().findItemDefinitionByFullPath(AccessCertificationDefinitionType.class, PrismReferenceDefinition.class, AccessCertificationDefinitionType.F_STAGE_DEFINITION, AccessCertificationStageDefinitionType.F_REVIEWER_SPECIFICATION, F_ADDITIONAL_REVIEWER_REF); additionalReviewersReference = additionalReviewerDef.instantiate(); reviewerExpressionList = new ArrayList<>(); } - - - //TODO TODO TODO -// setDefaultReviewers(new ReferenceWrapper(null, defaultReviewersReference, false, ValueStatus.NOT_CHANGED, prismContext)); -// setAdditionalReviewers(new ReferenceWrapper(null, additionalReviewersReference, false, ValueStatus.NOT_CHANGED, prismContext)); + + + Task task = pageBase.createSimpleTask("Create reviewers wrappers"); + OperationResult result = task.getResult(); + WrapperContext ctx = new WrapperContext(task, result); + setDefaultReviewers(pageBase.createItemWrapper(defaultReviewersReference, ItemStatus.NOT_CHANGED, ctx)); + setAdditionalReviewers(pageBase.createItemWrapper(additionalReviewersReference, ItemStatus.NOT_CHANGED, ctx)); + } public String getName() { @@ -154,29 +161,29 @@ public void setReviewerExpressionList( this.reviewerExpressionList = reviewerExpressionList; } - //TODO TODO TODO -// public ReferenceWrapper getDefaultReviewers() { -// return defaultReviewers; -// } -// -// public void setDefaultReviewers(ReferenceWrapper defaultReviewers) { -// this.defaultReviewers = defaultReviewers; -// } -// -// public ReferenceWrapper getAdditionalReviewers() { -// return additionalReviewers; -// } -// -// public void setAdditionalReviewers(ReferenceWrapper additionalReviewers) { -// this.additionalReviewers = additionalReviewers; -// } -// -// public List getDefaultReviewersAsObjectReferenceList(PrismContext prismContext) throws SchemaException { -// return ObjectTypeUtil.getAsObjectReferenceTypeList(defaultReviewers.getUpdatedItem(prismContext)); -// } -// -// public List getAdditionalReviewersAsObjectReferenceList(PrismContext prismContext) throws SchemaException { -// return ObjectTypeUtil.getAsObjectReferenceTypeList(additionalReviewers.getUpdatedItem(prismContext)); -// } + + public ItemWrapper getDefaultReviewers() { + return defaultReviewers; + } + + public void setDefaultReviewers(ItemWrapper defaultReviewers) { + this.defaultReviewers = defaultReviewers; + } + + public ItemWrapper getAdditionalReviewers() { + return additionalReviewers; + } + + public void setAdditionalReviewers(ItemWrapper additionalReviewers) { + this.additionalReviewers = additionalReviewers; + } + + public List getDefaultReviewersAsObjectReferenceList(PrismContext prismContext) throws SchemaException { + return ObjectTypeUtil.getAsObjectReferenceTypeList((PrismReference)defaultReviewers.getItem()); + } + + public List getAdditionalReviewersAsObjectReferenceList(PrismContext prismContext) throws SchemaException { + return ObjectTypeUtil.getAsObjectReferenceTypeList((PrismReference) additionalReviewers.getItem()); + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/CertDefinitionDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/CertDefinitionDto.java index ed842d048ec..36cffa46587 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/CertDefinitionDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/CertDefinitionDto.java @@ -17,6 +17,7 @@ package com.evolveum.midpoint.web.page.admin.certification.dto; import com.evolveum.midpoint.gui.api.page.PageBase; +import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.prism.PrismObject; @@ -82,16 +83,16 @@ public class CertDefinitionDto implements Serializable { //private List stopReviewOn, advanceToNextStageOn; private ObjectViewDto owner; - public CertDefinitionDto(AccessCertificationDefinitionType definition, PageBase page, PrismContext prismContext) + public CertDefinitionDto(AccessCertificationDefinitionType definition, ModelServiceLocator modelServiceLocator) throws SchemaException { this.oldDefinition = definition.clone(); this.definition = definition; owner = loadOwnerReference(definition.getOwnerRef()); - definitionScopeDto = createDefinitionScopeDto(definition.getScopeDefinition(), page.getPrismContext()); + definitionScopeDto = createDefinitionScopeDto(definition.getScopeDefinition(), modelServiceLocator.getPrismContext()); stageDefinition = new ArrayList<>(); for (AccessCertificationStageDefinitionType stageDef : definition.getStageDefinition()) { - stageDefinition.add(createStageDefinitionDto(stageDef, prismContext)); + stageDefinition.add(createStageDefinitionDto(stageDef, modelServiceLocator)); } stageDefinition.sort(Comparator.comparing(StageDefinitionDto::getNumber)); if (definition.getRemediationDefinition() != null) { @@ -315,9 +316,9 @@ private DefinitionScopeDto createDefinitionScopeDto(AccessCertificationScopeType } private StageDefinitionDto createStageDefinitionDto(AccessCertificationStageDefinitionType stageDefObj, - PrismContext prismContext) + ModelServiceLocator serviceLocator) throws SchemaException { - StageDefinitionDto dto = new StageDefinitionDto(stageDefObj, prismContext); + StageDefinitionDto dto = new StageDefinitionDto(stageDefObj, serviceLocator); return dto; } @@ -416,10 +417,10 @@ private AccessCertificationReviewerSpecificationType createAccessCertificationRe } reviewerObject.getReviewerExpression().addAll(CloneUtil.cloneCollectionMembers(reviewerDto.getReviewerExpressionList())); reviewerObject.getDefaultReviewerRef().clear(); - //TODO TODO TODO -// reviewerObject.getDefaultReviewerRef().addAll(reviewerDto.getDefaultReviewersAsObjectReferenceList(prismContext)); -// reviewerObject.getAdditionalReviewerRef().clear(); -// reviewerObject.getAdditionalReviewerRef().addAll(reviewerDto.getAdditionalReviewersAsObjectReferenceList(prismContext)); + + reviewerObject.getDefaultReviewerRef().addAll(reviewerDto.getDefaultReviewersAsObjectReferenceList(prismContext)); + reviewerObject.getAdditionalReviewerRef().clear(); + reviewerObject.getAdditionalReviewerRef().addAll(reviewerDto.getAdditionalReviewersAsObjectReferenceList(prismContext)); } return reviewerObject; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/StageDefinitionDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/StageDefinitionDto.java index 5792d81f4d4..24e6dff28c4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/StageDefinitionDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/dto/StageDefinitionDto.java @@ -16,6 +16,7 @@ package com.evolveum.midpoint.web.page.admin.certification.dto; +import com.evolveum.midpoint.gui.api.util.ModelServiceLocator; import com.evolveum.midpoint.prism.PrismContext; import com.evolveum.midpoint.schema.util.CertCampaignTypeUtil; import com.evolveum.midpoint.util.exception.SchemaException; @@ -56,7 +57,7 @@ public class StageDefinitionDto implements Serializable { private List advanceToNextStageOnRaw; private List timedActionsTypes; - public StageDefinitionDto(AccessCertificationStageDefinitionType stageDefObj, PrismContext prismContext) throws SchemaException { + public StageDefinitionDto(AccessCertificationStageDefinitionType stageDefObj, ModelServiceLocator modelServiceLocator) throws SchemaException { if (stageDefObj != null) { setNumber(stageDefObj.getNumber()); setName(stageDefObj.getName()); @@ -67,14 +68,14 @@ public StageDefinitionDto(AccessCertificationStageDefinitionType stageDefObj, Pr setDeadlineRounding(stageDefObj.getDeadlineRounding()); setNotifyBeforeDeadline(convertDurationListToString(stageDefObj.getNotifyBeforeDeadline())); setNotifyOnlyWhenNoDecision(Boolean.TRUE.equals(stageDefObj.isNotifyOnlyWhenNoDecision())); - setReviewerDto(new AccessCertificationReviewerDto(stageDefObj.getReviewerSpecification(), prismContext)); + setReviewerDto(new AccessCertificationReviewerDto(stageDefObj.getReviewerSpecification(), modelServiceLocator)); setOutcomeStrategy(stageDefObj.getOutcomeStrategy()); setOutcomeIfNoReviewers(stageDefObj.getOutcomeIfNoReviewers()); setStopReviewOnRaw(new ArrayList<>(stageDefObj.getStopReviewOn())); setAdvanceToNextStageOnRaw(new ArrayList<>(stageDefObj.getAdvanceToNextStageOn())); setTimedActionsTypes(new ArrayList<>(stageDefObj.getTimedActions())); } else { - setReviewerDto(new AccessCertificationReviewerDto(null, prismContext)); + setReviewerDto(new AccessCertificationReviewerDto(null, modelServiceLocator)); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSchedulingTabPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSchedulingTabPanel.html index f1c08c93ecd..bf3669b4cd3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSchedulingTabPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/server/TaskSchedulingTabPanel.html @@ -79,7 +79,7 @@ - diff --git a/gui/admin-gui/src/main/resources/initial-objects/021-archetype-system-role.xml b/gui/admin-gui/src/main/resources/initial-objects/021-archetype-system-role.xml index c7df9ead0e0..0f379c684ad 100644 --- a/gui/admin-gui/src/main/resources/initial-objects/021-archetype-system-role.xml +++ b/gui/admin-gui/src/main/resources/initial-objects/021-archetype-system-role.xml @@ -30,7 +30,7 @@ System Roles - fa fa-street-view + fe fe-role_icon red diff --git a/gui/admin-gui/src/main/resources/initial-objects/022-archetype-business-role.xml b/gui/admin-gui/src/main/resources/initial-objects/022-archetype-business-role.xml index 29907ed9757..7d1de922815 100644 --- a/gui/admin-gui/src/main/resources/initial-objects/022-archetype-business-role.xml +++ b/gui/admin-gui/src/main/resources/initial-objects/022-archetype-business-role.xml @@ -47,7 +47,7 @@ Business Roles - fa fa-street-view + fe fe-role_icon green diff --git a/gui/admin-gui/src/main/resources/static/css/font-evosome.css b/gui/admin-gui/src/main/resources/static/css/font-evosome.css index c487b4f9cbf..c1ab4f3fe2e 100755 --- a/gui/admin-gui/src/main/resources/static/css/font-evosome.css +++ b/gui/admin-gui/src/main/resources/static/css/font-evosome.css @@ -106,9 +106,6 @@ .fe-case:before { content: "\e91a"; } -.fe-case-object:before { - content: "\e91a"; -} .fe-delegate:before { content: "\e91b"; } @@ -121,12 +118,12 @@ .fe-no-line:before { content: "\e91e"; } -.fe-slash:before { - content: "\e91e"; -} .fe-file:before { content: "\e91f"; } .fe-no-file:before { content: "\e920"; } +.fe-role_icon:before { + content: "\e921"; +} diff --git a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.eot b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.eot index 61b908531e5..c33a676bfaf 100755 Binary files a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.eot and b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.eot differ diff --git a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.svg b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.svg index 826c2214964..03825d4d418 100755 --- a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.svg +++ b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.svg @@ -40,4 +40,5 @@ + \ No newline at end of file diff --git a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.ttf b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.ttf index f04c73ed283..b7c7c53402a 100755 Binary files a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.ttf and b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.ttf differ diff --git a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.woff b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.woff index 29431520061..5b0f212bb21 100755 Binary files a/gui/admin-gui/src/main/resources/static/fonts/font-evosome.woff and b/gui/admin-gui/src/main/resources/static/fonts/font-evosome.woff differ diff --git a/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiIntegrationTest.java b/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiIntegrationTest.java index b9c14b4d956..d3841cb59cf 100644 --- a/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiIntegrationTest.java +++ b/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiIntegrationTest.java @@ -33,14 +33,14 @@ import javax.servlet.ServletException; import javax.xml.namespace.QName; +import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.gui.api.prism.ItemWrapper; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; import com.evolveum.midpoint.gui.impl.factory.ItemWrapperFactory; import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; import com.evolveum.midpoint.gui.impl.factory.WrapperContext; import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; -import com.evolveum.midpoint.prism.PrismObjectDefinition; -import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.prism.*; import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.schema.MidPointPrismContextFactory; import com.evolveum.midpoint.schema.constants.MidPointConstants; @@ -71,8 +71,6 @@ import com.evolveum.midpoint.model.api.authentication.CompiledUserProfile; import com.evolveum.midpoint.model.api.interaction.DashboardService; import com.evolveum.midpoint.model.test.AbstractModelIntegrationTest; -import com.evolveum.midpoint.prism.PrismContext; -import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.path.ItemName; import com.evolveum.midpoint.prism.path.ItemPath; import com.evolveum.midpoint.prism.util.PrismAsserts; @@ -293,6 +291,14 @@ public PrismObjectWrapperFactory findObjectWrapperFact return registry.getObjectWrapperFactory(objectDef); } + @Override + public IW createItemWrapper(I item, ItemStatus status, WrapperContext ctx) throws SchemaException { + ItemWrapperFactory factory = (ItemWrapperFactory) registry.findWrapperFactory(item.getDefinition()); + + ctx.setCreateIfEmpty(true); + return factory.createWrapper(item, status, ctx); + } + @Override public VW createValueWrapper(IW parentWrapper, PV newValue, ValueStatus status, WrapperContext context) throws SchemaException { ItemWrapperFactory factory = (ItemWrapperFactory) registry.findWrapperFactory(parentWrapper); diff --git a/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiUnitTest.java b/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiUnitTest.java index fbb1d3254e2..a5889b3379b 100644 --- a/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiUnitTest.java +++ b/gui/admin-gui/src/test/java/com/evolveum/midpoint/web/AbstractGuiUnitTest.java @@ -18,10 +18,12 @@ import java.util.Locale; +import com.evolveum.midpoint.gui.api.prism.ItemStatus; import com.evolveum.midpoint.gui.api.prism.ItemWrapper; import com.evolveum.midpoint.gui.impl.factory.PrismObjectWrapperFactory; import com.evolveum.midpoint.gui.impl.factory.WrapperContext; import com.evolveum.midpoint.gui.impl.prism.PrismValueWrapper; +import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.PrismObjectDefinition; import com.evolveum.midpoint.prism.PrismValue; import com.evolveum.midpoint.util.exception.SchemaException; @@ -129,6 +131,11 @@ public PrismObjectWrapperFactory findObjectWrapperFact return null; } + @Override + public IW createItemWrapper(I item, ItemStatus status, WrapperContext ctx) throws SchemaException { + return null; + } + @Override public VW createValueWrapper(IW parentWrapper, PV newValue, ValueStatus status, WrapperContext context) throws SchemaException { return null;