Skip to content

Commit

Permalink
name-link panel to navigate to the object (not finished)
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Oct 3, 2019
1 parent b9d2504 commit f8cc1c3
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 11 deletions.
Expand Up @@ -11,6 +11,9 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.web.component.data.IconedObjectNamePanel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
Expand Down Expand Up @@ -39,9 +42,6 @@
import com.evolveum.midpoint.web.component.form.ValueChoosePanel;
import com.evolveum.midpoint.web.component.message.FeedbackAlerts;
import com.evolveum.midpoint.web.util.ExpressionValidator;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AbstractRoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;

/**
* @author katka
Expand Down Expand Up @@ -76,6 +76,16 @@ protected Component createValuePanel(ListItem<PrismReferenceValueWrapperImpl<R>>
Panel panel = componentFactory.createPanel(panelCtx);
item.add(panel);
return panel;
} else if (getModelObject() != null && QNameUtil.match(CaseType.F_PARENT_REF, getModelObject().getPath().asSingleName())) {
FeedbackAlerts feedback = new FeedbackAlerts(ID_FEEDBACK);
feedback.setOutputMarkupId(true);
item.add(feedback);
IconedObjectNamePanel iconedObjectNamePanel =
new IconedObjectNamePanel(ID_VALUE, (ObjectReferenceType) item.getModelObject().getRealValue());
iconedObjectNamePanel.setOutputMarkupId(true);
item.add(iconedObjectNamePanel);

return iconedObjectNamePanel;
} else {
FeedbackAlerts feedback = new FeedbackAlerts(ID_FEEDBACK);
feedback.setOutputMarkupId(true);
Expand Down
Expand Up @@ -19,7 +19,9 @@
<wicket:panel>
<div>
<div class="pull-left" wicket:id="icon" />
<div style="padding-left: 20px;" wicket:id="name" />
<a style="padding-left: 10px;" wicket:id="nameLink" >
<span wicket:id="nameLinkText"/>
</a>
</div>
</wicket:panel>
</html>
Expand Up @@ -16,13 +16,18 @@
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.data.column.ImagePanel;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import javax.xml.namespace.QName;


/**
* Created by honchar
Expand All @@ -31,7 +36,8 @@ public class IconedObjectNamePanel<AHT extends AssignmentHolderType> extends Bas
private static final long serialVersionUID = 1L;

private static final String ID_ICON = "icon";
private static final String ID_NAME = "name";
private static final String ID_NAME = "nameLink";
private static final String ID_NAME_TEXT = "nameLinkText";

private static final String DOT_CLASS = IconedObjectNamePanel.class.getName() + ".";
private static final String OPERATION_LOAD_REFERENCED_OBJECT = DOT_CLASS + "loadReferencedObject";
Expand Down Expand Up @@ -61,10 +67,11 @@ public void initReferencedObjectModel() {
referencedObjectModel = new LoadableModel<AHT>() {
@Override
protected AHT load() {
if (objectReference != null) {
if (objectReference != null && objectReference.getType() != null &&
StringUtils.isNotEmpty(objectReference.getOid())) {
PageBase pageBase = IconedObjectNamePanel.this.getPageBase();
OperationResult result = new OperationResult(OPERATION_LOAD_REFERENCED_OBJECT);
PrismObject<AHT> assignmentHolder = WebModelServiceUtils.resolveReferenceNoFetch(objectReference, pageBase,
PrismObject<AHT> assignmentHolder = WebModelServiceUtils.loadObject(objectReference, pageBase,
pageBase.createSimpleTask(OPERATION_LOAD_REFERENCED_OBJECT), result);
return assignmentHolder != null ? assignmentHolder.asObjectable() : null;
} else {
Expand All @@ -91,11 +98,26 @@ private void initLayout(){
// imagePanel.add(new VisibleBehaviour(() -> displayType != null && displayType.getIcon() != null && StringUtils.isNotEmpty(displayType.getIcon().getCssClass())));
add(imagePanel);

Label nameLabel = new Label(ID_NAME, Model.of(WebComponentUtil.getEffectiveName(referencedObjectModel.getObject(), AbstractRoleType.F_DISPLAY_NAME)));
nameLabel.setOutputMarkupId(true);
add(nameLabel);
AjaxLink<AHT> nameLink = new AjaxLink<AHT>(ID_NAME, referencedObjectModel) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
if (referencedObjectModel != null && referencedObjectModel.getObject() != null) {
WebComponentUtil.dispatchToObjectDetailsPage(referencedObjectModel.getObject().asPrismObject(),
IconedObjectNamePanel.this);
}
}
};
// nameLink.add(new EnableBehaviour(() -> referencedObjectModel != null && referencedObjectModel.getObject() != null));
// && !new QName("dummy").getLocalPart().equals(
// referencedObjectModel.getObject().asPrismContainer().getElementName().getLocalPart())));
nameLink.setOutputMarkupId(true);
add(nameLink);

Label nameLinkText = new Label(ID_NAME_TEXT, Model.of(WebComponentUtil.getEffectiveName(referencedObjectModel.getObject(),
AbstractRoleType.F_DISPLAY_NAME)));
nameLinkText.setOutputMarkupId(true);
nameLink.add(nameLinkText);

//todo navigate to object icon or name label as link ?
}

}

0 comments on commit f8cc1c3

Please sign in to comment.