Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed May 25, 2017
2 parents 0778545 + 21af8fc commit 086fb43
Show file tree
Hide file tree
Showing 15 changed files with 123 additions and 32 deletions.
Expand Up @@ -103,6 +103,7 @@ public class GuiStyleConstants {
public static final String CLASS_ICON_SORT_ALPHA_ASC = "fa fa-sort-alpha-asc";
public static final String CLASS_ICON_SHOW_EMPTY_FIELDS = "fa fa-square-o";
public static final String CLASS_ICON_NOT_SHOW_EMPTY_FIELDS = "fa fa-square";
public static final String CLASS_ICON_SHOW_METADATA = "fa fa-asterisk";
public static final String CLASS_ICON_SUPERUSER = "fa fa-shield";
public static final String CLASS_ICON_NO_OBJECTS = "fa fa-times";
public static final String CLASS_ICON_ACTIVATION_ACTIVE = "fa fa-check";
Expand Down
Expand Up @@ -209,6 +209,7 @@ public static AssignmentEditorDto createDtoFromObject(ObjectType object, UserDto

AssignmentType assignment = new AssignmentType();
assignment.setTargetRef(targetRef);
assignment.setDescription(object.getDescription());

return new AssignmentEditorDto(status, assignment, pageBase);
}
Expand Down
Expand Up @@ -686,7 +686,7 @@ public void onClick(AjaxRequestTarget target) {
public MetadataType getObject() {
return getModelObject().getOldValue().getValue().getMetadata();
}
}, "row");
}, "", "row");
}
metadataPanel.setOutputMarkupId(true);
metadataPanel.add(new VisibleEnableBehaviour(){
Expand Down
Expand Up @@ -21,7 +21,7 @@
<div class="container-fluid prism-container">

<div wicket:id="headerContainer">
<span class="prism-title"><wicket:message key="AssignmentEditorPanel.metadataBlock"/></span>
<span class="prism-title" wicket:id="metadataLabel"></span>
</div>
<div class="prism-properties">

Expand Down
Expand Up @@ -53,19 +53,22 @@ public class MetadataPanel extends BasePanel<MetadataType>{
private static final String ID_HEADER_CONTAINER = "headerContainer";
private static final String ID_METADATA_PROPERTY_KEY = "metadataPropertyKey";
private static final String ID_METADATA_FILED = "metadataField";
private static final String ID_METADATA_LABEL = "metadataLabel";
private static final String DOT_CLASS = MetadataPanel.class.getSimpleName() + ".";
private static final String OPERATION_LOAD_USER = DOT_CLASS + "loadObject";

private String additionalHeaderStyle = "";
private String header = "";

public MetadataPanel(String id, IModel<MetadataType> model) {
super(id, model);
initLayout();
}

public MetadataPanel(String id, IModel<MetadataType> model, String additionalHeaderStyle){
public MetadataPanel(String id, IModel<MetadataType> model, String header, String additionalHeaderStyle){
super(id, model);
this.additionalHeaderStyle = additionalHeaderStyle;
this.header = header;
initLayout();
}

Expand All @@ -79,6 +82,11 @@ private void initLayout(){
headerContainer.add(new AttributeAppender("class", "prism-header " + additionalHeaderStyle));
metadataBlock.add(headerContainer);

Label metadataHeader = new Label(ID_METADATA_LABEL,
createStringResource("AssignmentEditorPanel.metadataBlock", header != null ? header : ""));
metadataHeader.setOutputMarkupId(true);
headerContainer.add(metadataHeader);

RepeatingView metadataRowRepeater = new RepeatingView(ID_METADATA_ROW);
metadataBlock.add(metadataRowRepeater);
for (QName qname : metadataFieldsList){
Expand Down
Expand Up @@ -25,6 +25,7 @@

<div wicket:id="inner" class="inner">
<div wicket:id="innerLabel" class="inner-label"></div>
<div wicket:id="innerDescription" class="inner-description"></div>
</div>
<div class="icon">
<i wicket:id="typeIcon"></i>
Expand Down
Expand Up @@ -61,6 +61,7 @@ public class MultiButtonTable extends BasePanel<List<AssignmentEditorDto>> {
private static final String ID_ITEM_BUTTON_CONTAINER = "itemButtonContainer";
private static final String ID_INNER = "inner";
private static final String ID_INNER_LABEL = "innerLabel";
private static final String ID_INNER_DESCRIPTION = "innerDescription";
private static final String ID_TYPE_ICON = "typeIcon";
private static final String ID_ALREADY_ASSIGNED_ICON = "alreadyAssignedIcon";
private static final String ID_ADD_TO_CART_LINK = "addToCartLink";
Expand Down Expand Up @@ -147,6 +148,10 @@ public boolean isEnabled(){
Label nameLabel = new Label(ID_INNER_LABEL, assignment.getName());
inner.add(nameLabel);

Label descriptionLabel = new Label(ID_INNER_DESCRIPTION, assignment.getDescription());
descriptionLabel.setOutputMarkupId(true);
inner.add(descriptionLabel);

AjaxLink detailsLink = new AjaxLink(ID_DETAILS_LINK) {
@Override
public void onClick(AjaxRequestTarget ajaxRequestTarget) {
Expand Down
Expand Up @@ -68,6 +68,7 @@ public class ObjectWrapper<O extends ObjectType> implements Serializable, Reviva
private boolean showEmpty;
private boolean minimalized;
private boolean sorted;
private boolean showMetadata = false;
private boolean selectable;
private boolean selected;

Expand Down Expand Up @@ -220,6 +221,14 @@ public void setSorted(boolean sorted) {
this.sorted = sorted;
}

public boolean isShowMetadata() {
return showMetadata;
}

public void setShowMetadata(boolean showMetadata) {
this.showMetadata = showMetadata;
}

public boolean isShowEmpty() {
return showEmpty;
}
Expand Down
Expand Up @@ -19,8 +19,9 @@
<wicket:panel>
<span class="prism-title" wicket:id="label"/>
<div class="box-tools pull-right">
<button wicket:id="sortProperties" wicket:message="title:PrismObjectPanel.sortProperties" class="btn btn-box-tool" data-toggle="tooltip"><i class="fa fa-sort-alpha-asc"></i></button>
<button wicket:id="showEmptyFields" wicket:message="title:PrismObjectPanel.showEmpty" class="btn btn-box-tool" data-toggle="tooltip" trigger="hover" about="showEmptyFields"><i class="fa fa-arrows-alt"></i></button>
<button wicket:id="showMetadata" class="btn btn-box-tool" ><i class="fa fa-asterisk"></i></button>
<button wicket:id="sortProperties" wicket:message="title:PrismObjectPanel.sortProperties" class="btn btn-box-tool" ><i class="fa fa-sort-alpha-asc"></i></button>
<button wicket:id="showEmptyFields" wicket:message="title:PrismObjectPanel.showEmpty" class="btn btn-box-tool" trigger="hover" about="showEmptyFields"><i class="fa fa-arrows-alt"></i></button>
</div>
</wicket:panel>
</html>
Expand Up @@ -17,12 +17,14 @@
package com.evolveum.midpoint.web.component.prism;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.togglebutton.ToggleIconButton;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
Expand All @@ -33,18 +35,19 @@
*
* WARNING: super ugly code ahead
*/
public class PrismHeaderPanel extends Panel {
public class PrismHeaderPanel extends BasePanel {
private static final long serialVersionUID = 1L;

private static final String ID_SHOW_EMPTY_FIELDS = "showEmptyFields";
private static final String ID_SORT_PROPERTIES = "sortProperties";
private static final String ID_SHOW_METADATA = "showMetadata";
private static final String ID_LABEL = "label";

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


public PrismHeaderPanel(String id, IModel model) {
super(id);
super(id, model);

initLayout(model);
}
Expand All @@ -60,6 +63,29 @@ public boolean isVisible() {
}
};

ToggleIconButton showMetadataButton = new ToggleIconButton(ID_SHOW_METADATA,
GuiStyleConstants.CLASS_ICON_SHOW_METADATA, GuiStyleConstants.CLASS_ICON_SHOW_METADATA) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
ObjectWrapper objectWrapper = getObjectWrapper(model);
objectWrapper.setShowMetadata(!objectWrapper.isShowMetadata());
onButtonClick(target);
}

@Override
public boolean isOn() {
return getObjectWrapper(model).isShowMetadata();
}
};
showMetadataButton.add(new AttributeModifier("title",
getObjectWrapper(model).isShowMetadata() ?
createStringResource("PrismObjectPanel.hideMetadata") :
createStringResource("PrismObjectPanel.showMetadata")));
showMetadataButton.add(buttonsVisibleBehaviour);
add(showMetadataButton);

ToggleIconButton showEmptyFieldsButton = new ToggleIconButton(ID_SHOW_EMPTY_FIELDS,
GuiStyleConstants.CLASS_ICON_SHOW_EMPTY_FIELDS, GuiStyleConstants.CLASS_ICON_NOT_SHOW_EMPTY_FIELDS) {
private static final long serialVersionUID = 1L;
Expand All @@ -68,8 +94,6 @@ public boolean isVisible() {
public void onClick(AjaxRequestTarget target) {
ObjectWrapper objectWrapper = getObjectWrapper(model);
objectWrapper.setShowEmpty(!objectWrapper.isShowEmpty());
//
// target.appendJavaScript("document.getElementsByClassName('tooltip').style.visibility = 'hidden';");

onButtonClick(target);
}
Expand Down
Expand Up @@ -21,8 +21,8 @@
<div class="row prism-header" wicket:id="header"/>
<div class="row" wicket:id="containers">
<div class="container-fluid prism-container" wicket:id="container"/>
<div wicket:id="containerMetadata"/>
</div>
<div class="row" wicket:id="metadataContainer"></div>
</div>
</wicket:panel>
</html>
Expand Up @@ -18,24 +18,29 @@

import java.util.List;

import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.web.component.assignment.MetadataPanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MetadataType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.cxf.common.util.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.resource.ResourceReference;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

import javax.xml.namespace.QName;

/**
* @author lazyman
Expand All @@ -48,7 +53,7 @@ public class PrismObjectPanel<O extends ObjectType> extends Panel {
private static final String ID_HEADER = "header";
private static final String ID_CONTAINERS = "containers";
private static final String ID_CONTAINER = "container";
private static final String ID_METADATA_CONTAINER = "metadataContainer";
private static final String ID_CONTAINER_METADATA = "containerMetadata";

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

Expand Down Expand Up @@ -99,10 +104,48 @@ protected IModel<List<ContainerWrapper>> createContainerModel(IModel<ObjectWrapp
return new PropertyModel<>(model, ObjectWrapper.PROPERTY_CONTAINERS);
}

protected void createContainerPanel(ListItem<ContainerWrapper> item, Form form){
protected PrismContainerPanel createContainerPanel(ListItem<ContainerWrapper> item, Form form){
PrismContainerPanel panel = new PrismContainerPanel(ID_CONTAINER, item.getModel(), true, form, pageBase);
panel.setOutputMarkupPlaceholderTag(true);
item.add(panel);
return panel;
}

protected void createMetadataPanel(IModel<ObjectWrapper<O>> model, ListItem<ContainerWrapper> item, PrismContainerPanel containerPanel){
//check if metadata container exists for
//the current item and create metadata panel if yes
Component metadataPanel;
Model<Boolean> metadataVisibility = Model.of(false); //becomes visible only in case metadata exists
ItemPath metadataContainerPath = item.getModelObject().isMain() ?
new ItemPath(ObjectType.F_METADATA) :
new ItemPath(item.getModelObject().getPath(), ObjectType.F_METADATA);

if (model.getObject().findContainerWrapper(metadataContainerPath) != null){
ContainerWrapper<MetadataType> metadataContainer = model.getObject().findContainerWrapper(metadataContainerPath);
metadataVisibility.setObject(true);

String containerName = item.getModelObject().isMain() ?
"Object" : StringUtils.capitalize(item.getModelObject().getPath().last().toString());
metadataPanel = new MetadataPanel(ID_CONTAINER_METADATA, new AbstractReadOnlyModel<MetadataType>() {
@Override
public MetadataType getObject() {
return metadataContainer.getItem().getRealValue();
}
}, containerName, "");
} else {
metadataPanel = new WebMarkupContainer(ID_CONTAINER_METADATA);
}
metadataPanel.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return containerPanel.isVisible()
&& metadataVisibility.getObject()
&& model.getObject().isShowMetadata()
&& !ContainerStatus.ADDING.equals(model.getObject().getStatus());
}
});
metadataPanel.setOutputMarkupId(true);
item.add(metadataPanel);
}

private void addOrReplaceContainers(IModel<ObjectWrapper<O>> model, final Form form, boolean isToBeReplaced){
Expand All @@ -112,25 +155,12 @@ private void addOrReplaceContainers(IModel<ObjectWrapper<O>> model, final Form f

@Override
protected void populateItem(ListItem<ContainerWrapper> item) {
createContainerPanel(item, form);
PrismContainerPanel containerPanel = createContainerPanel(item, form);
createMetadataPanel(model, item, containerPanel);
}
};
containers.setReuseItems(true);

MetadataPanel metadataPanel = new MetadataPanel(ID_METADATA_CONTAINER, new AbstractReadOnlyModel<MetadataType>() {
@Override
public MetadataType getObject() {
return model.getObject().getObject().asObjectable().getMetadata();
}
});
metadataPanel.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return !ContainerStatus.ADDING.equals(model.getObject().getStatus());
}
});
addOrReplace(metadataPanel);

if (isToBeReplaced) {
replace(containers);
} else {
Expand Down
Expand Up @@ -59,7 +59,7 @@ AssignmentEditorPanel.targetError=Assignment target was not found. Either target
AssignmentEditorPanel.target=Target
AssignmentEditorPanel.tenantRef=Tenant
AssignmentEditorPanel.undefined=Undefined
AssignmentEditorPanel.metadataBlock=Metadata
AssignmentEditorPanel.metadataBlock={0} Metadata
MetadataPanel.requestTimestamp=Request timestamp
MetadataPanel.requestorRef=Requester
MetadataPanel.createTimestamp=Create timestamp
Expand Down Expand Up @@ -2323,6 +2323,8 @@ PrismObjectPanel.minimize=Minimize
PrismObjectPanel.protectedAccount=Protected account
PrismObjectPanel.showEmpty=Show empty fields
PrismObjectPanel.sortProperties=Sort properties
PrismObjectPanel.showMetadata=Show metadata
PrismObjectPanel.hideMetadata=Hide metadata
prismOptionButtonPanel.hideEmpty=Hide empty fields
prismOptionButtonPanel.maximize=Maximize
prismOptionButtonPanel.minimize=Minimize
Expand Down
Expand Up @@ -59,7 +59,7 @@ AssignmentEditorPanel.targetError=Assignment target was not found. Either target
AssignmentEditorPanel.target=Target
AssignmentEditorPanel.tenantRef=Tenant
AssignmentEditorPanel.undefined=Undefined
AssignmentEditorPanel.metadataBlock=Metadata
AssignmentEditorPanel.metadataBlock={0} Metadata
MetadataPanel.requestTimestamp=Request timestamp
MetadataPanel.requestorRef=Requester
MetadataPanel.createTimestamp=Create timestamp
Expand Down
11 changes: 10 additions & 1 deletion gui/admin-gui/src/main/webapp/less/midpoint-theme.less
Expand Up @@ -1117,7 +1117,7 @@ dd.stacktrace::before {
.shopping-cart-item-box {

.inner {
min-height: 120px;
height: 120px;
cursor: pointer;
}

Expand All @@ -1128,6 +1128,15 @@ dd.stacktrace::before {
padding-right: 12px;
padding-bottom: 10px;
}
.inner-description {
font-size: 10px;
padding-left: 12px;
padding-right: 12px;
max-width: 70%;
max-height: 50%;
overflow: hidden;
text-overflow: ellipsis
}
}

.shopping-cart-item-box-footer {
Expand Down

0 comments on commit 086fb43

Please sign in to comment.