Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feature/gui-wrapper' into featur…
Browse files Browse the repository at this point in the history
…e/gui-wrapper
  • Loading branch information
mederly committed Jun 10, 2019
2 parents f128bc2 + de43464 commit 1ed52a6
Show file tree
Hide file tree
Showing 11 changed files with 92 additions and 33 deletions.
Expand Up @@ -43,7 +43,7 @@ public interface ItemWrapper<V extends PrismValue, I extends Item<V, ID>, ID ext

String debugDump(int indent);

boolean isVisible(ItemVisibilityHandler visibilityHandler);
boolean isVisible(boolean parentShowEmpty, boolean parentExpanded, ItemVisibilityHandler visibilityHandler);

boolean checkRequired(PageBase pageBase);

Expand Down
Expand Up @@ -17,10 +17,12 @@
xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<wicket:child />
<div wicket:id="displayName"/>
<div class="container-fluid prism-object top-level-prism-container" wicket:id="basicPanel" />
<div wicket:id="specificContainersPanel" />
<div style="border-bottom: 2px solid #ddd; padding-top: 20px;">
<wicket:child />
<div wicket:id="displayName"/>
<div class="container-fluid prism-object top-level-prism-container" wicket:id="basicPanel" />
<div wicket:id="specificContainersPanel" />
</div>
</wicket:panel>
</body>
</html>
Expand Up @@ -109,7 +109,9 @@ public PrismContainerValueWrapper<C> createValueWrapper(PrismContainerWrapper<C>
ItemWrapperFactory<?,?,?> factory = registry.findWrapperFactory(def);

ItemWrapper<?, ?, ?, ?> wrapper = factory.createWrapper(containerValueWrapper, def, context);
wrappers.add(wrapper);
if (wrapper != null) {
wrappers.add(wrapper);
}
}

containerValueWrapper.getItems().addAll((Collection) wrappers);
Expand Down
Expand Up @@ -364,27 +364,27 @@ public void setShowEmpty(boolean isShowEmpty, boolean recursive) {
}

@Override
public boolean isVisible(ItemVisibilityHandler visibilityHandler) {
public boolean isVisible(boolean parentShowEmpty, boolean parentExpanded, ItemVisibilityHandler visibilityHandler) {

if (!isVisibleByVisibilityHandler(visibilityHandler)) {
if (!isVisibleByVisibilityHandler(parentExpanded, visibilityHandler)) {
return false;
}

ID def = getItemDefinition();
switch (findObjectStatus()) {
case NOT_CHANGED:
return isVisibleForModify(def);
return isVisibleForModify(parentShowEmpty, def);
case ADDED:
return isVisibleForAdd(def);
return isVisibleForAdd(parentShowEmpty, def);
case DELETED:
return false;
}

return false;
}

protected boolean isVisibleByVisibilityHandler(ItemVisibilityHandler visibilityHandler) {
if (getParent() != null && !getParent().isExpanded()) {
protected boolean isVisibleByVisibilityHandler(boolean parentExpanded, ItemVisibilityHandler visibilityHandler) {
if (!parentExpanded) {
return false;
}

Expand All @@ -407,16 +407,16 @@ protected boolean isVisibleByVisibilityHandler(ItemVisibilityHandler visibilityH

}

private boolean isVisibleForModify(ID def) {
if (parent != null && parent.isShowEmpty()) {
private boolean isVisibleForModify(boolean parentShowEmpty, ID def) {
if (parentShowEmpty) {
return def.canRead();
}

return def.canRead() && (def.isEmphasized() || !isEmpty());
}

private boolean isVisibleForAdd(ID def) {
if (parent != null && parent.isShowEmpty()) {
private boolean isVisibleForAdd(boolean parentShowEmpty, ID def) {
if (parentShowEmpty) {
return def.canAdd();
}

Expand Down
Expand Up @@ -154,7 +154,8 @@ private <PV extends PrismValue, I extends Item<PV, ID>, ID extends ItemDefinitio

@Override
public List<IW> getObject() {
List<? extends ItemWrapper<?, ?, ?, ?>> nonContainers = getModelObject().getNonContainers();
CVW containerValueWrapper = getModelObject();
List<? extends ItemWrapper<?, ?, ?, ?>> nonContainers = containerValueWrapper.getNonContainers();

Locale locale = WebModelServiceUtils.getLocale();
if (locale == null) {
Expand All @@ -170,7 +171,7 @@ public List<IW> getObject() {
int visibleProperties = 0;

for (ItemWrapper<?,?,?,?> item : nonContainers) {
if (item.isVisible(null)) {
if (item.isVisible(containerValueWrapper.isShowEmpty(), containerValueWrapper.isExpanded(), visibilityHandler)) {
visibleProperties++;
}

Expand Down Expand Up @@ -211,7 +212,8 @@ public boolean isEnabled() {

@Override
public boolean isVisible() {
return item.getModelObject().isVisible(visibilityHandler);
CVW parent = PrismContainerValuePanel.this.getModelObject();
return item.getModelObject().isVisible(parent.isShowEmpty(), parent.isExpanded(), visibilityHandler);
}
});
item.add(panel);
Expand Down Expand Up @@ -269,7 +271,10 @@ protected void populateItem(final ListItem<IW> item) {
try {
Panel panel = getPageBase().initItemPanel("container", itemWrapper.getTypeName(), item.getModel(), visibilityHandler);
panel.setOutputMarkupId(true);
panel.add(new VisibleBehaviour(() -> item.getModelObject().isVisible(visibilityHandler)));
panel.add(new VisibleBehaviour(() -> {
CVW parent = PrismContainerValuePanel.this.getModelObject();
return item.getModelObject().isVisible(parent.isShowEmpty(), parent.isExpanded(), visibilityHandler);
}));
item.add(panel);
} catch (SchemaException e) {
throw new SystemException("Cannot instantiate panel for: " + itemWrapper.getDisplayName());
Expand Down Expand Up @@ -471,7 +476,7 @@ private void onSortClicked(AjaxRequestTarget target) {
CVW wrapper = getModelObject();
wrapper.setSorted(!wrapper.isSorted());

wrapper.sort();
//wrapper.sort();

refreshPanel(target);
}
Expand Down
Expand Up @@ -86,7 +86,7 @@ public interface PrismContainerValueWrapper<C extends Containerable> extends Pri
boolean isShowEmpty();
void setShowEmpty(boolean setShowEmpty);

void sort();
//void sort();

<ID extends ItemDelta> void applyDelta(ID delta) throws SchemaException;
PrismContainerValue<C> getValueToAdd() throws SchemaException;
Expand Down
Expand Up @@ -410,11 +410,11 @@ public boolean isShowEmpty() {
@Override
public void setShowEmpty(boolean showEmpty) {
this.showEmpty = showEmpty;
computeStripes();
//computeStripes();
}


@Override
/* @Override
public void sort() {
Locale locale = WebModelServiceUtils.getLocale();
if (locale == null) {
Expand Down Expand Up @@ -455,5 +455,5 @@ private void computeStripes() {
}
}
}
}*/
}
Expand Up @@ -336,13 +336,13 @@ protected ItemPath getDeltaPathForStatus(ItemStatus status) {
}

@Override
public boolean isVisible(ItemVisibilityHandler visibilityHandler) {
public boolean isVisible(boolean parentShowEmpty, boolean parentExpanded, ItemVisibilityHandler visibilityHandler) {

if (getComplexTypeDefinition().getTypeName().equals(MetadataType.COMPLEX_TYPE)) {
return (getParent() != null && getParent().isShowMetadata());
}

return isVisibleByVisibilityHandler(visibilityHandler);
return isVisibleByVisibilityHandler(parentExpanded, visibilityHandler);
}


Expand Down
Expand Up @@ -242,7 +242,8 @@ public void itemPerformedForDefaultAction(AjaxRequestTarget target,
IModel<PrismContainerValueWrapper<ShadowType>> rowModel,
List<PrismContainerValueWrapper<ShadowType>> listItems) {

if(((ShadowWrapper)rowModel.getObject().getParent()).isLoadWithNoFetch()) {
if(rowModel != null && rowModel.getObject() != null
&& ((ShadowWrapper)rowModel.getObject().getParent()).isLoadWithNoFetch()) {
((PageAdminFocus) getPage()).loadFullShadow((PrismObjectValueWrapper)rowModel.getObject(), target);
}

Expand Down
Expand Up @@ -17,5 +17,12 @@

<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div wicket:id="approvalCasePanel" />
<!--<div wicket:id="historyPanel" />-->
<div class="box box-info" wicket:id="historyContainer">
<div class="box-header">
<h3 class="box-title"><wicket:message key="workItemPanel.approvalHistory"/></h3> <i wicket:id="approvalHistoryHelp" wicket:message="title:workItemPanel.approvalHistoryHelp"/>
</div>
<div class="box-body">
<div wicket:id="historyPanel" />
</div>
</div>
</wicket:panel>
Expand Up @@ -18,25 +18,35 @@
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.schema.util.WfContextUtil;
import com.evolveum.midpoint.web.component.form.Form;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectTabPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.wf.DecisionsPanel;
import com.evolveum.midpoint.web.component.wf.SwitchableApprovalProcessPreviewsPanel;
import com.evolveum.midpoint.web.page.admin.workflow.EvaluatedTriggerGroupListPanel;
import com.evolveum.midpoint.web.page.admin.workflow.dto.EvaluatedTriggerGroupDto;
import com.evolveum.midpoint.web.component.wf.processes.itemApproval.ItemApprovalHistoryPanel;
import com.evolveum.midpoint.web.page.admin.workflow.dto.DecisionDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.CaseType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ItemApprovalProcessStateType;
import org.apache.commons.collections.CollectionUtils;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.Model;

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

/**
* Created by honchar
*/
public class ApprovalCaseTabPanel extends AbstractObjectTabPanel<CaseType> {
private static final long serialVersionUID = 1L;

private static String ID_APPROVAL_CASE_PANEL = "approvalCasePanel";
private static String ID_HISTORY_PANEL = "historyPanel";
private static final String ID_APPROVAL_CASE_PANEL = "approvalCasePanel";
private static final String ID_HISTORY_CONTAINER = "historyContainer";
private static final String ID_HISTORY_PANEL = "historyPanel";
private static final String ID_HISTORY_HELP = "approvalHistoryHelp";

public ApprovalCaseTabPanel(String id, Form<PrismObjectWrapper<CaseType>> mainForm, LoadableModel<PrismObjectWrapper<CaseType>> objectWrapperModel, PageBase pageBase) {
super(id, mainForm, objectWrapperModel);
Expand All @@ -53,6 +63,38 @@ private void initLayout(){
Model.of(WfContextUtil.isInStageBeforeLastOne(getObjectWrapper().getObject().asObjectable())), getPageBase());
approvalPanel.setOutputMarkupId(true);
add(approvalPanel);

List<DecisionDto> decisionList = calculateDecisionList();
WebMarkupContainer historyContainer = new WebMarkupContainer(ID_HISTORY_CONTAINER);
historyContainer.setOutputMarkupId(true);
historyContainer.add(WebComponentUtil.createHelp(ID_HISTORY_HELP));
historyContainer.add(new VisibleBehaviour(() -> !CollectionUtils.isEmpty(decisionList)));
add(historyContainer);

DecisionsPanel historyPanel = new DecisionsPanel(ID_HISTORY_PANEL,
Model.ofList(decisionList), UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL,
(int) getPageBase().getItemsPerPage(UserProfileStorage.TableId.PAGE_WORK_ITEM_HISTORY_PANEL));
historyPanel.setOutputMarkupId(true);
historyContainer.add(historyPanel);
}

public List<DecisionDto> calculateDecisionList() {
List<DecisionDto> rv = new ArrayList<>();
CaseType parentCase = getObjectWrapper().getObject().asObjectable();
if (parentCase == null) {
return rv;
}

if (parentCase.getEvent() != null && !parentCase.getEvent().isEmpty()) {
parentCase.getEvent().forEach(e -> CollectionUtils.addIgnoreNull(rv, DecisionDto.create(e, ApprovalCaseTabPanel.this.getPageBase())));
} else {
ItemApprovalProcessStateType instanceState = WfContextUtil.getItemApprovalProcessInfo(parentCase.getWorkflowContext());
if (instanceState != null) {
//todo where we can take decisions now?
// instanceState.getDecisions().forEach(d -> CollectionUtils.addIgnoreNull(rv, DecisionDto.create(d)));
}
}
return rv;
}

}

0 comments on commit 1ed52a6

Please sign in to comment.