Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Apr 8, 2020
2 parents a5dc747 + a0603ce commit deb5d22
Show file tree
Hide file tree
Showing 6 changed files with 935 additions and 876 deletions.
@@ -1,86 +1,96 @@
/*
* Copyright (c) 2018 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.component;

import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings;
import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.DisplayNamePanel;
import com.evolveum.midpoint.gui.api.prism.ItemWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.ItemVisibility;

/**
* @author skublik
*/

public abstract class MultivalueContainerDetailsPanel<C extends Containerable> extends BasePanel<PrismContainerValueWrapper<C>> {
private static final long serialVersionUID = 1L;

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

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

@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
setOutputMarkupId(true);
}

protected abstract DisplayNamePanel<C> createDisplayNamePanel(String displayNamePanelId);

private void initLayout(){

DisplayNamePanel<C> displayNamePanel = createDisplayNamePanel(ID_DISPLAY_NAME);

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

addBasicContainerValuePanel(ID_BASIC_PANEL);
add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL));
}

protected WebMarkupContainer getSpecificContainers(String contentAreaId) {
return new WebMarkupContainer(contentAreaId);
}

protected void addBasicContainerValuePanel(String idPanel){
add(getBasicContainerValuePanel(idPanel));
}

protected Panel getBasicContainerValuePanel(String idPanel){
ItemPanelSettings settings = new ItemPanelSettingsBuilder()
.visibilityHandler(wrapper -> getBasicTabVisibity(wrapper))
.showOnTopLevel(true)
.editabilityHandler(wrapper -> getBasicTabEditability(wrapper))
.build();
Panel containerValue = getPageBase().initContainerValuePanel(idPanel, getModel(), settings);
return containerValue;
}

protected ItemVisibility getBasicTabVisibity(ItemWrapper<?, ?, ?, ?> itemWrapper) { //, ItemPath parentPath) {
return ItemVisibility.AUTO;
}

protected boolean getBasicTabEditability(ItemWrapper<?,?,?,?> itemWrapper) {
return true;
}

}
/*
* Copyright (c) 2018 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.component;

import com.evolveum.midpoint.gui.impl.prism.ItemMandatoryHandler;
import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettings;
import com.evolveum.midpoint.gui.impl.prism.ItemPanelSettingsBuilder;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.DisplayNamePanel;
import com.evolveum.midpoint.gui.api.prism.ItemWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismContainerValueWrapper;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.prism.ItemVisibility;

/**
* @author skublik
*/

public abstract class MultivalueContainerDetailsPanel<C extends Containerable> extends BasePanel<PrismContainerValueWrapper<C>> {
private static final long serialVersionUID = 1L;

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

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

@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
setOutputMarkupId(true);
}

protected abstract DisplayNamePanel<C> createDisplayNamePanel(String displayNamePanelId);

private void initLayout(){

DisplayNamePanel<C> displayNamePanel = createDisplayNamePanel(ID_DISPLAY_NAME);

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

addBasicContainerValuePanel(ID_BASIC_PANEL);
add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL));
}

protected WebMarkupContainer getSpecificContainers(String contentAreaId) {
return new WebMarkupContainer(contentAreaId);
}

protected void addBasicContainerValuePanel(String idPanel){
add(getBasicContainerValuePanel(idPanel));
}

protected Panel getBasicContainerValuePanel(String idPanel){
ItemPanelSettingsBuilder builder = new ItemPanelSettingsBuilder()
.visibilityHandler(wrapper -> getBasicTabVisibity(wrapper))
.showOnTopLevel(true)
.editabilityHandler(wrapper -> getBasicTabEditability(wrapper));

if (getMandatoryHandler() != null) {
builder.mandatoryHandler(getMandatoryHandler());
}

ItemPanelSettings settings = builder.build();
Panel containerValue = getPageBase().initContainerValuePanel(idPanel, getModel(), settings);
return containerValue;
}

protected ItemVisibility getBasicTabVisibity(ItemWrapper<?, ?, ?, ?> itemWrapper) { //, ItemPath parentPath) {
return ItemVisibility.AUTO;
}

protected boolean getBasicTabEditability(ItemWrapper<?,?,?,?> itemWrapper) {
return true;
}

protected ItemMandatoryHandler getMandatoryHandler() {
return null;
}

}
Expand Up @@ -14,6 +14,8 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.prism.ItemWrapper;
import com.evolveum.midpoint.gui.impl.prism.ItemMandatoryHandler;
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -168,14 +170,44 @@ protected DisplayNamePanel<ObjectPolicyConfigurationType> createDisplayNamePanel
new ItemRealValueModel<ObjectPolicyConfigurationType>(item.getModel());
return new DisplayNamePanel<ObjectPolicyConfigurationType>(displayNamePanelId, displayNameModel);
}

@Override
protected ItemMandatoryHandler getMandatoryHandler() {
return wrapper -> getMandatoryOverrideFor(wrapper);

}
};
return detailsPanel;
}

private boolean getMandatoryOverrideFor(ItemWrapper<?, ?, ?, ?> itemWrapper) {
ItemPath conflictResolutionPath = ItemPath.create(SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION,
ObjectPolicyConfigurationType.F_CONFLICT_RESOLUTION, ConflictResolutionType.F_ACTION);
if (conflictResolutionPath.equivalent(itemWrapper.getPath().namedSegmentsOnly())) {
return false;
}

ItemPath adminGuiConfigDetails = ItemPath.create(SystemConfigurationType.F_DEFAULT_OBJECT_POLICY_CONFIGURATION,
ObjectPolicyConfigurationType.F_ADMIN_GUI_CONFIGURATION, ArchetypeAdminGuiConfigurationType.F_OBJECT_DETAILS);

ItemPath detailsType = ItemPath.create(adminGuiConfigDetails, GuiObjectDetailsPageType.F_TYPE);
if (detailsType.equivalent(itemWrapper.getPath().namedSegmentsOnly())) {
return false;
}

ItemPath formType = ItemPath.create(adminGuiConfigDetails, GuiObjectDetailsPageType.F_FORMS, ObjectFormType.F_TYPE);
if (formType.equivalent(itemWrapper.getPath().namedSegmentsOnly())) {
return false;
}

return itemWrapper.isMandatory();
}

private MultivalueContainerListPanelWithDetailsPanel<ObjectPolicyConfigurationType, S> getMultivalueContainerListPanel(){
return ((MultivalueContainerListPanelWithDetailsPanel<ObjectPolicyConfigurationType, S>)get(ID_OBJECTS_POLICY));
}


private ObjectQuery createQuery() {
return getPageBase().getPrismContext().queryFor(ObjectPolicyConfigurationType.class)
.all()
Expand Down
Expand Up @@ -466,12 +466,11 @@ protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) {
}
};
gdprAssignmentPanel.setOutputMarkupId(true);
SwitchAssignmentTypePanel.this.addOrReplace(gdprAssignmentPanel);
target.add(SwitchAssignmentTypePanel.this);
switchAssignmentTypePerformed(target, gdprAssignmentPanel, ID_CONSENT_ASSIGNMENTS);
}
};
consentsButton.setOutputMarkupId(true);
consentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_SHOW_INDIRECT_ASSIGNMENTS)));
consentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_CONSENT_ASSIGNMENTS)));
consentsButton.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
Expand Down

0 comments on commit deb5d22

Please sign in to comment.