Skip to content

Commit

Permalink
showing mulivalue containers
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Jul 17, 2018
1 parent 0273220 commit e2783ca
Show file tree
Hide file tree
Showing 23 changed files with 786 additions and 627 deletions.
Expand Up @@ -160,6 +160,7 @@ public class GuiStyleConstants {
public static final String CLASS_POLICY_RULES_ICON_COLORED = "fa fa-balance-scale"; //TODO

public static final String CLASS_VALUE_POLICY_ICON = "fa fa-asterisk";

public static final String CLASS_SYSTEM_CONFIGURATION_ICON = "fa fa-cog";

}
Expand Up @@ -26,20 +26,28 @@
import org.apache.wicket.model.PropertyModel;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.page.admin.configuration.component.ObjectPolicyConfigurationTabPanel;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ConstructionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectPolicyConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;

public class DisplayNamePanel<C extends Containerable> extends BasePanel<C>{

private static final long serialVersionUID = 1L;

private static final Trace LOGGER = TraceManager.getTrace(DisplayNamePanel.class);

private final static String ID_TYPE_IMAGE = "typeImage";
private final static String ID_DISPLAY_NAME = "displayName";
Expand All @@ -59,7 +67,7 @@ private void initLayout() {
typeImage.setOutputMarkupId(true);
typeImage.add(AttributeModifier.append("class", createImageModel()));
add(typeImage);

Label name = new Label(ID_DISPLAY_NAME, createHeaderModel());
name.setOutputMarkupId(true);
add(name);
Expand All @@ -79,8 +87,19 @@ private void initLayout() {
kindIntent.setOutputMarkupId(true);
kindIntent.add(new VisibleBehaviour(() -> isKindIntentVisible(kindIntentLabelModel)));
add(kindIntent);

add(new Label(ID_DESCRIPTION, new PropertyModel<String>(getModel(), ObjectType.F_DESCRIPTION.getLocalPart())));

if(getModel().getObject().asPrismContainerValue().contains(ObjectType.F_DESCRIPTION)) {
add(new Label(ID_DESCRIPTION, new PropertyModel<String>(getModel(), ObjectType.F_DESCRIPTION.getLocalPart())));
} else {
add(new Label(ID_DESCRIPTION, Model.of("")));
}
}

private boolean isObjectPolicyConfigurationType() {
if(QNameUtil.match(ObjectPolicyConfigurationType.COMPLEX_TYPE, getModelObject().asPrismContainerValue().getComplexTypeDefinition().getTypeName())) {
return true;
}
return false;
}

private String createImageModel() {
Expand All @@ -103,6 +122,17 @@ private IModel<String> createHeaderModel() {
if (ObjectType.class.isAssignableFrom(getModelObject().getClass())) {
return Model.of(WebComponentUtil.getEffectiveName((ObjectType) getModelObject(), AbstractRoleType.F_DISPLAY_NAME));
}
if (isObjectPolicyConfigurationType()) {
QName typeValue = WebComponentUtil.getValue(getModel().getObject().asPrismContainerValue(), ObjectPolicyConfigurationType.F_TYPE, QName.class);
ObjectReferenceType objectTemplate = ((ObjectPolicyConfigurationType)getModel().getObject()).getObjectTemplateRef();
if(objectTemplate == null){
return Model.of("");
}
String objectTemplateNameValue = objectTemplate.getTargetName().toString();
StringBuilder sb = new StringBuilder();
sb.append(typeValue.getLocalPart()).append(" - ").append(objectTemplateNameValue);
return Model.of(sb.toString());
}
PrismProperty<String> name = getModelObject().asPrismContainerValue().findProperty(ObjectType.F_NAME);
if (name == null || name.isEmpty()) {
return Model.of("");
Expand Down
Expand Up @@ -1446,7 +1446,9 @@ public static <T extends ObjectType> String createDefaultColoredIcon(QName objec
return GuiStyleConstants.CLASS_OBJECT_SHADOW_ICON_COLORED;
} else if (QNameUtil.match(PolicyRuleType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_POLICY_RULES_ICON_COLORED;
} else {
} else if (QNameUtil.match(ObjectPolicyConfigurationType.COMPLEX_TYPE, objectType)) {
return GuiStyleConstants.CLASS_SYSTEM_CONFIGURATION_ICON;
}else {
return "";
}
}
Expand Down
Expand Up @@ -20,7 +20,6 @@
<div wicket:id="displayName"/>
<div class="container-fluid prism-object" wicket:id="basicPanel" />
<div wicket:id="specificContainersPanel" />
<!-- <div class="container-fluid prism-object" wicket:id="activationPanel" /> -->
</wicket:panel>
</body>
</html>
Expand Up @@ -15,46 +15,19 @@
*/
package com.evolveum.midpoint.gui.impl.component;

import java.util.ArrayList;
import java.util.List;

import javax.xml.namespace.QName;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.DisplayNamePanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.assignment.AbstractAssignmentDetailsPanel;
import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.ContainerValuePanel;
import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper;
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
import com.evolveum.midpoint.web.component.prism.ItemVisibility;
import com.evolveum.midpoint.web.component.prism.ItemWrapper;
import com.evolveum.midpoint.web.component.prism.PrismContainerPanel;
import com.evolveum.midpoint.web.component.prism.PropertyOrReferenceWrapper;
import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ConstructionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyRuleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType;

/**
* @author skublik
Expand All @@ -64,12 +37,11 @@ public abstract class MultivalueContainerDetailsPanel<C extends Containerable> e
private static final long serialVersionUID = 1L;

private final static String ID_DISPLAY_NAME = "displayName";
// private final static String ID_ACTIVATION_PANEL = "activationPanel";
private final static String ID_BASIC_PANEL = "basicPanel";
protected final static String ID_SPECIFIC_CONTAINERS_PANEL = "specificContainersPanel";

public MultivalueContainerDetailsPanel(String id, IModel<ContainerValueWrapper<C>> assignmentModel){
super(id, assignmentModel);
public MultivalueContainerDetailsPanel(String id, IModel<ContainerValueWrapper<C>> model){
super(id, model);
}

@Override
Expand All @@ -79,52 +51,27 @@ protected void onInitialize() {
setOutputMarkupId(true);
}

protected abstract IModel<C> createDisplayNameModel();

protected QName getRelationForDisplayNamePanel() {
return null;
}

protected IModel<String> getKindIntentLabelModelForDisplayNamePanel(){
return Model.of("");
}
protected abstract DisplayNamePanel<C> createDisplayNamePanel(String displayNamePanelId);

protected void initLayout(){

final IModel<C> displayNameModel = createDisplayNameModel();

DisplayNamePanel<C> displayNamePanel = new DisplayNamePanel<C>(ID_DISPLAY_NAME, displayNameModel) {

@Override
protected QName getRelation() {
return getRelationForDisplayNamePanel();
}

@Override
protected IModel<String> getKindIntentLabelModel() {
return getKindIntentLabelModelForDisplayNamePanel();
}

};
DisplayNamePanel<C> displayNamePanel = createDisplayNamePanel(ID_DISPLAY_NAME);

displayNamePanel.setOutputMarkupId(true);
add(displayNamePanel);

add(getBasicContainerValuePanel(ID_BASIC_PANEL));

// WebMarkupContainer specificContainers = new WebMarkupContainer(ID_SPECIFIC_CONTAINERS);
// specificContainers.setOutputMarkupId(true);
// add(specificContainers);

add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL));
}

protected abstract Fragment getSpecificContainers(String contentAreaId);

protected <O extends ObjectType> ContainerValuePanel<C> getBasicContainerValuePanel(String idPanel){
protected ContainerValuePanel<C> getBasicContainerValuePanel(String idPanel){
Form form = new Form<>("form");
ItemPath itemPath = getModelObject().getPath();
return new ContainerValuePanel(idPanel, getModel(), true, form,
IModel<ContainerValueWrapper<C>> model = getModel();
model.getObject().setShowEmpty(true, true);
return new ContainerValuePanel<C>(idPanel, getModel(), true, form,
itemWrapper -> getBasicTabVisibity(itemWrapper, itemPath), getPageBase());
}

Expand Down

0 comments on commit e2783ca

Please sign in to comment.