Skip to content

Commit

Permalink
MID-7442 some cleanup and improvements in sysconfig UI and other pane…
Browse files Browse the repository at this point in the history
…ls/panel instances
  • Loading branch information
1azyman committed Feb 22, 2022
1 parent fbde2fe commit 5d4a3bb
Show file tree
Hide file tree
Showing 26 changed files with 492 additions and 276 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,6 @@

package com.evolveum.midpoint.gui.api;

import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.evolveum.midpoint.gui.impl.util.GuiImplUtil;
import com.evolveum.midpoint.model.api.AdminGuiConfigurationMergeManager;
import com.evolveum.midpoint.model.api.authentication.CompiledGuiProfile;
Expand All @@ -41,6 +29,18 @@
import com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.xml.namespace.QName;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.util.*;

@Component
public class DefaultGuiConfigurationCompiler implements GuiProfileCompilable {

Expand Down Expand Up @@ -264,7 +264,7 @@ private Set<Class<? extends Containerable>> findSupportedContainerables() {
for (Class<?> clazz : panelInstanceClasses) {
PanelInstances pis = clazz.getAnnotation(PanelInstances.class);
if (pis != null) {
Arrays.asList(pis.instances()).forEach(pi -> addSupportedContainerable(containerables, pi));
Arrays.asList(pis.value()).forEach(pi -> addSupportedContainerable(containerables, pi));
}

PanelInstance pi = clazz.getAnnotation(PanelInstance.class);
Expand Down Expand Up @@ -322,7 +322,7 @@ private List<ContainerPanelConfigurationType> getPanelsFor(Class<? extends Conta
for (Class<?> clazz : panelInstanceClasses) {
PanelInstances pis = clazz.getAnnotation(PanelInstances.class);
if (pis != null) {
Arrays.asList(pis.instances()).forEach(pi -> addPanelsFor(panels, containerable, clazz, pi));
Arrays.asList(pis.value()).forEach(pi -> addPanelsFor(panels, containerable, clazz, pi));
}

PanelInstance pi = clazz.getAnnotation(PanelInstance.class);
Expand Down Expand Up @@ -417,16 +417,31 @@ private ContainerPanelConfigurationType compileContainerPanelConfiguration(Class
config.setApplicableForOperation(panelInstance.applicableForOperation()[0]);
}

if (StringUtils.isNotEmpty(panelInstance.containerPath())) {
config.setPath(prismContext.itemPathParser().asItemPathType(panelInstance.containerPath()));
}
createDefaultVirtualContainer(config, panelInstance.containerPath());

if (StringUtils.isNotEmpty(panelInstance.type())) {
config.setType(QNameUtil.uriToQName(panelInstance.type(), SchemaConstantsGenerated.NS_COMMON));
}

return config;
}

private void createDefaultVirtualContainer(ContainerPanelConfigurationType config, String path) {
if (StringUtils.isEmpty(path)) {
return;
}

VirtualContainersSpecificationType container = new VirtualContainersSpecificationType();
if ("empty".equals(path)) {
container.setPath(new ItemPathType(ItemPath.EMPTY_PATH));
} else {
ItemPathType itemPath = prismContext.itemPathParser().asItemPathType(path);
container.setPath(itemPath);
}
container.setDisplayOrder(10);
config.getContainer().add(container);
}

private void addPanelTypeConfiguration(Class<?> clazz, ContainerPanelConfigurationType config) {
PanelType panelType = clazz.getAnnotation(PanelType.class);
if (panelType == null) {
Expand All @@ -439,28 +454,13 @@ private void addPanelTypeConfiguration(Class<?> clazz, ContainerPanelConfigurati
config.setType(def.getTypeName());
}
}
compileDefaultContainerSpecification(panelType, config);
createDefaultVirtualContainer(config, panelType.defaultContainerPath());

if (panelType.experimental() && BooleanUtils.isNotTrue(experimentalFeaturesEnabled)) {
config.setVisibility(UserInterfaceElementVisibilityType.HIDDEN);
}
}

private void compileDefaultContainerSpecification(PanelType panelType, ContainerPanelConfigurationType config) {
if (panelType.defaultContainerPath().isBlank()) {
return;
}
VirtualContainersSpecificationType defaultContainer = new VirtualContainersSpecificationType();
if ("empty".equals(panelType.defaultContainerPath())) {
defaultContainer.setPath(new ItemPathType(ItemPath.EMPTY_PATH));
} else {
ItemPathType path = prismContext.itemPathParser().asItemPathType(panelType.defaultContainerPath());
defaultContainer.setPath(path);
}
defaultContainer.setDisplayOrder(10);
config.getContainer().add(defaultContainer);
}

private void compileDisplay(PanelInstance panelInstance, ContainerPanelConfigurationType config) {
PanelDisplay display = panelInstance.display();
if (display != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import java.io.Serializable;
import javax.annotation.PostConstruct;

import com.evolveum.midpoint.web.page.admin.reports.component.SimpleAceEditorPanel;

import org.apache.wicket.markup.html.panel.Panel;
import org.springframework.stereotype.Component;

Expand All @@ -19,7 +17,7 @@
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
import com.evolveum.midpoint.web.page.admin.reports.component.AceEditorPanel;
import com.evolveum.midpoint.web.page.admin.reports.component.SimpleAceEditorPanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;

@Component
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,34 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin.abstractrole.component;

import java.util.*;
import javax.xml.namespace.QName;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.ChooseMemberPopup;
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
Expand All @@ -24,8 +45,6 @@
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.util.PolyStringUtils;
import com.evolveum.midpoint.schema.GetOperationOptions;
Expand All @@ -35,7 +54,6 @@
import com.evolveum.midpoint.schema.constants.RelationTypes;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.web.security.util.GuiAuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DisplayableValue;
import com.evolveum.midpoint.util.QNameUtil;
Expand All @@ -45,7 +63,6 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.PanelDisplay;
import com.evolveum.midpoint.web.application.PanelInstance;
import com.evolveum.midpoint.web.application.PanelInstances;
import com.evolveum.midpoint.web.application.PanelType;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.CompositedIconButtonDto;
Expand All @@ -65,54 +82,31 @@
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
import com.evolveum.midpoint.web.page.admin.roles.AbstractRoleCompositedSearchItem;
import com.evolveum.midpoint.web.page.admin.roles.SearchBoxConfigurationHelper;
import com.evolveum.midpoint.web.security.util.GuiAuthorizationConstants;
import com.evolveum.midpoint.web.session.MemberPanelStorage;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.SessionStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.export.AbstractExportableColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import java.util.*;

@PanelType(name = "members")
@PanelInstances(instances = {
@PanelInstance(identifier = "roleMembers",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80)),
@PanelInstance(identifier = "roleGovernance",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90)),
@PanelInstance(identifier = "serviceMembers",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80)),
@PanelInstance(identifier = "serviceGovernance",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
})
@PanelInstance(identifier = "roleMembers",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80))
@PanelInstance(identifier = "roleGovernance",
applicableForType = RoleType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
@PanelInstance(identifier = "serviceMembers",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80))
@PanelInstance(identifier = "serviceGovernance",
applicableForType = ServiceType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
@PanelDisplay(label = "Members", order = 60)
public class AbstractRoleMemberPanel<R extends AbstractRoleType> extends AbstractObjectMainPanel<R, FocusDetailsModels<R>> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@

package com.evolveum.midpoint.gui.impl.page.admin.archetype.component;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.xml.namespace.QName;

import org.apache.wicket.ajax.AjaxRequestTarget;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.page.admin.abstractrole.component.AbstractRoleMemberPanel;
Expand All @@ -15,29 +22,19 @@
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.web.application.PanelDisplay;
import com.evolveum.midpoint.web.application.PanelInstance;
import com.evolveum.midpoint.web.application.PanelInstances;
import com.evolveum.midpoint.web.application.PanelType;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.ajax.AjaxRequestTarget;

import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@PanelType(name = "archetypeMembers")
@PanelInstances(instances = {
@PanelInstance(identifier = "archetypeMembers",
applicableForType = ArchetypeType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80)),
@PanelInstance(identifier = "archetypeGovernance",
applicableForType = ArchetypeType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
})
@PanelInstance(identifier = "archetypeMembers",
applicableForType = ArchetypeType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.members", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 80))
@PanelInstance(identifier = "archetypeGovernance",
applicableForType = ArchetypeType.class,
applicableForOperation = OperationTypeType.MODIFY,
display = @PanelDisplay(label = "pageRole.governance", icon = GuiStyleConstants.CLASS_GROUP_ICON, order = 90))
public class ArchetypeMembersPanel extends AbstractRoleMemberPanel<ArchetypeType> {

public ArchetypeMembersPanel(String id, FocusDetailsModels model, ContainerPanelConfigurationType config) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,20 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.application.PanelDisplay;
import com.evolveum.midpoint.web.application.PanelInstance;
import com.evolveum.midpoint.web.application.PanelInstances;
import com.evolveum.midpoint.web.application.PanelType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

@PanelType(name = "basic", defaultContainerPath = "empty")
@PanelInstances(instances = {
@PanelInstance(identifier = "basic",
applicableForType = AssignmentHolderType.class,
excludeTypes = { TaskType.class, ResourceType.class },
defaultPanel = true,
display = @PanelDisplay(label = "pageAdminFocus.basic", icon = GuiStyleConstants.CLASS_CIRCLE_FULL, order = 10)),
@PanelInstance(identifier = "basic",
applicableForType = ResourceType.class,
applicableForOperation = OperationTypeType.ADD,
defaultPanel = true,
display = @PanelDisplay(label = "pageAdminFocus.basic", icon = GuiStyleConstants.CLASS_CIRCLE_FULL, order = 10))
}
)
@PanelInstance(identifier = "basic",
applicableForType = AssignmentHolderType.class,
excludeTypes = { TaskType.class, ResourceType.class },
defaultPanel = true,
display = @PanelDisplay(label = "pageAdminFocus.basic", icon = GuiStyleConstants.CLASS_CIRCLE_FULL, order = 10))
@PanelInstance(identifier = "basic",
applicableForType = ResourceType.class,
applicableForOperation = OperationTypeType.ADD,
defaultPanel = true,
display = @PanelDisplay(label = "pageAdminFocus.basic", icon = GuiStyleConstants.CLASS_CIRCLE_FULL, order = 10))
public class AssignmentHolderBasicPanel<AH extends AssignmentHolderType> extends AbstractObjectMainPanel<AH, ObjectDetailsModels<AH>> {

private static final String ID_MAIN_PANEL = "properties";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="details"></div>
<div wicket:id="details"/>
</wicket:panel>
</html>

0 comments on commit 5d4a3bb

Please sign in to comment.