Skip to content

Commit

Permalink
creating MultivalueContainerDetailsPanel class and using wicket:fragment
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Jul 10, 2018
1 parent 575b2d2 commit a1def64
Show file tree
Hide file tree
Showing 11 changed files with 357 additions and 66 deletions.
@@ -0,0 +1,26 @@
<!--
~ Copyright (c) 2010-2018 Evolveum
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<div wicket:id="displayName"/>
<div wicket:id="specificContainers" />
<div class="container-fluid prism-object" wicket:id="basicPanel" />
<!-- <div class="container-fluid prism-object" wicket:id="activationPanel" /> -->
</wicket:panel>
</body>
</html>
@@ -0,0 +1,134 @@
/*
* Copyright (c) 2010-2018 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
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.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
*/

public abstract class MultivalueContainerDetailsPanel<C extends Containerable> extends BasePanel<ContainerValueWrapper<C>> {
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 = "specificContainers";

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

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

protected abstract IModel<C> createDisplayNameModel();

protected QName getRelationForDisplayNamePanel() {
return null;
}

protected IModel<String> getKindIntentLabelModelForDisplayNamePanel(){
return Model.of("");
}

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.setOutputMarkupId(true);
add(displayNamePanel);

add(getBasicContainerValuePanel(ID_BASIC_PANEL));

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

createSpecificContainers(specificContainers);
}

protected abstract void createSpecificContainers(WebMarkupContainer specificContainers);

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

protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath) {
return ItemVisibility.AUTO;
}

}
Expand Up @@ -18,15 +18,14 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="items" class="main-form-panel">
<div wixket:id="search" class="row">
<div class="row" wixket:id="search"/>
<!-- <div wicket:id="relationContainer" class="col-xs-6">
<label class="col-xs-2 prism-property" ><wicket:message key="AbstractRoleAssignmentPanel.relationLabel" /></label>
<div class="col-xs-3" wicket:id="relation" />
</div>
<div class="col-xs-3 pull-right">
<div class="btn btn-default pull-right" wicket:id="showAllAssignmentsButton" />
</div>-->
</div>

<div class="row" >
<div class="col-md-12" wicket:id="itemsTable" style="margin: 5px 0;"/>
Expand Down
Expand Up @@ -19,9 +19,11 @@
import java.util.List;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
Expand All @@ -44,7 +46,7 @@
import com.evolveum.midpoint.web.component.prism.ContainerWrapper;
import com.evolveum.midpoint.web.component.prism.ContainerWrapperFactory;
import com.evolveum.midpoint.web.component.prism.ValueStatus;
import com.evolveum.midpoint.web.component.util.ContainerListDataProvider;
import com.evolveum.midpoint.web.component.util.MultivalueContainerListDataProvider;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage.TableId;
Expand Down Expand Up @@ -72,14 +74,11 @@ public abstract class MultivalueContainerListPanel<C extends Containerable> exte
private static final Trace LOGGER = TraceManager.getTrace(MultivalueContainerListPanel.class);

protected boolean itemDetailsVisible;
private List<ContainerValueWrapper<C>> detailsPanelItemsList = new ArrayList<>();

public MultivalueContainerListPanel(String id, IModel<ContainerWrapper<C>> model) {
super(id, model);
}

protected abstract void initPaging();

@Override
protected void onInitialize() {
super.onInitialize();
Expand All @@ -96,6 +95,12 @@ private void initLayout() {
setOutputMarkupId(true);

}

protected abstract void initPaging();

public void setItemDetailsVisible(boolean itemDetailsVisible) {
this.itemDetailsVisible = itemDetailsVisible;
}

private void initListPanel() {
WebMarkupContainer itemsContainer = new WebMarkupContainer(ID_ITEMS);
Expand Down Expand Up @@ -126,10 +131,8 @@ public boolean isVisible() {
});
itemsContainer.add(newObjectIcon);

WebMarkupContainer searchContainer = new WebMarkupContainer(ID_SEARCH_ITEM_PANEL);
itemsContainer.add(searchContainer);
createSearch(searchContainer);
createCustomLayout(itemsContainer);
itemsContainer.add(getSearchPanel(ID_SEARCH_ITEM_PANEL));
//createCustomLayout(itemsContainer);

itemsContainer.add(new VisibleEnableBehaviour() {

Expand All @@ -143,13 +146,13 @@ public boolean isVisible() {

}

protected abstract void createSearch(WebMarkupContainer searchContainer);
protected abstract Fragment getSearchPanel(String contentAreaId);

protected abstract boolean enableActionNewObject();

private BoxedTablePanel<ContainerValueWrapper<C>> initAssignmentTable() {

ContainerListDataProvider containersProvider = new ContainerListDataProvider(this, new PropertyModel<>(getModel(), "values")) {
MultivalueContainerListDataProvider containersProvider = new MultivalueContainerListDataProvider(this, new PropertyModel<>(getModel(), "values")) {
private static final long serialVersionUID = 1L;

@Override
Expand Down
Expand Up @@ -17,7 +17,17 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div wicket:id="assignments"/>
<div wicket:id="assignments">
</div>
<wicket:fragment wicket:id="searchFragment">
<div wicket:id="relationContainer" class="col-xs-6">
<label class="col-xs-2 prism-property" ><wicket:message key="AbstractRoleAssignmentPanel.relationLabel" /></label>
<div class="col-xs-3" wicket:id="relation" />
</div>
<div class="col-xs-3 pull-right">
<div class="btn btn-default pull-right" wicket:id="showAllAssignmentsButton" />
</div>
</wicket:fragment>
</wicket:panel>
<!-- <wicket:panel>
Expand Down
Expand Up @@ -32,20 +32,24 @@
import com.evolveum.midpoint.web.page.admin.users.component.AssignmentInfoDto;
import com.evolveum.midpoint.web.page.admin.users.component.AllAssignmentsPreviewDialog;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import com.evolveum.midpoint.gui.api.component.TypedAssignablePanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanel;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.path.ItemPath;
Expand All @@ -69,6 +73,7 @@ public class AbstractRoleAssignmentPanel extends AssignmentPanel {

private static final long serialVersionUID = 1L;

private static final String ID_SEARCH_FRAGMENT = "searchFragment";
private static final String ID_RELATION = "relation";
private static final String ID_RELATION_CONTAINER = "relationContainer";
private static final String ID_SHOW_ALL_ASSIGNMENTS_BUTTON = "showAllAssignmentsButton";
Expand All @@ -79,9 +84,11 @@ public AbstractRoleAssignmentPanel(String id, IModel<ContainerWrapper<Assignment
super(id, assignmentContainerWrapperModel);
}

protected void initCustomLayout(WebMarkupContainer assignmentsContainer){
protected Fragment getCustomSearchPanel(String contentAreaId){
Fragment searchContainer = new Fragment(contentAreaId, ID_SEARCH_FRAGMENT, this);

WebMarkupContainer relationContainer = new WebMarkupContainer(ID_RELATION_CONTAINER);

relationContainer.setOutputMarkupId(true);
relationContainer.add(new VisibleEnableBehaviour() {

Expand All @@ -93,7 +100,7 @@ public boolean isVisible() {
}

});
assignmentsContainer.addOrReplace(relationContainer);
searchContainer.addOrReplace(relationContainer);

DropDownChoicePanel<RelationTypes> relation = WebComponentUtil.createEnumPanel(RelationTypes.class, ID_RELATION,
WebComponentUtil.createReadonlyModelFromEnum(RelationTypes.class),
Expand Down Expand Up @@ -136,7 +143,7 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) {
showAllAssignments(ajaxRequestTarget);
}
};
assignmentsContainer.addOrReplace(showAllAssignmentsButton);
searchContainer.addOrReplace(showAllAssignmentsButton);
showAllAssignmentsButton.setOutputMarkupId(true);
showAllAssignmentsButton.add(new VisibleEnableBehaviour(){

Expand All @@ -146,6 +153,7 @@ public boolean isVisible(){
return showAllAssignmentsVisible();
}
});
return searchContainer;
}

private DropDownChoicePanel<RelationTypes> getRelationPanel() {
Expand Down Expand Up @@ -318,7 +326,7 @@ private QName getRelation() {

@Override
protected AbstractAssignmentDetailsPanel createDetailsPanel(String idAssignmentDetails, Form<?> form, IModel<ContainerValueWrapper<AssignmentType>> model) {
return new AbstractRoleAssignmentDetailsPanel(ID_ASSIGNMENT_DETAILS, form, model);
return new AbstractRoleAssignmentDetailsPanel(idAssignmentDetails, form, model);
}

private IModel<String> getTenantLabelModel(ContainerValueWrapper<AssignmentType> assignmentContainer){
Expand Down
Expand Up @@ -16,7 +16,10 @@

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<wicket:panel>
<div wicket:id="assignments"/>
</wicket:panel>
<!-- <wicket:panel>
<div wicket:id="items" class="main-form-panel">
Expand All @@ -39,5 +42,5 @@
</div>
</div>
</div>
</wicket:panel>
</wicket:panel>-->
</html>

0 comments on commit a1def64

Please sign in to comment.