Skip to content

Commit

Permalink
Merge branch 'master' into schrodinger-separation
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Feb 23, 2021
2 parents 6ace94a + 717372a commit 7859b43
Show file tree
Hide file tree
Showing 25 changed files with 466 additions and 547 deletions.
Expand Up @@ -13,9 +13,11 @@

public class DropdownButtonDto implements Serializable {

/**
*
*/
public static final String F_INFO = "info";
public static final String F_ICON = "icon";
public static final String F_LABEL = "label";
public static final String F_ITEMS = "items";

private static final long serialVersionUID = 1L;
private String info;
private String icon;
Expand Down
@@ -1,135 +1,140 @@
/*
* Copyright (c) 2010-2017 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.api.component.button;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.Model;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.MenuLinkPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

/**
* Universal button to display drop-down menus. The button itself can have numerous decorations: icon, label and tag with count (info)
*
* @author katkav
*
*/
public class DropdownButtonPanel extends BasePanel<DropdownButtonDto> {

private static final long serialVersionUID = 1L;
private static final String ID_BUTTON_CONTAINER = "buttonContainer";
private static final String ID_INFO = "info";
private static final String ID_ICON = "icon";
private static final String ID_CARET = "caret";
private static final String ID_LABEL = "label";

private static final String ID_DROPDOWN_MENU = "dropDownMenu";
private static final String ID_MENU_ITEM = "menuItem";
private static final String ID_MENU_ITEM_BODY = "menuItemBody";


public DropdownButtonPanel(String id, DropdownButtonDto model) {
super(id);
initLayout(model);
}

private void initLayout(DropdownButtonDto dropdownButtonDto) {
WebMarkupContainer buttonContainer = new WebMarkupContainer(ID_BUTTON_CONTAINER);
buttonContainer.setOutputMarkupId(true);
buttonContainer.add(AttributeAppender.append("class", getSpecialButtonClass()));
add(buttonContainer);

Label info = new Label(ID_INFO, dropdownButtonDto.getInfo());
info.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return dropdownButtonDto.getInfo() != null;
}
});
buttonContainer.add(info);

Label label = new Label(ID_LABEL, dropdownButtonDto.getLabel());
label.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return dropdownButtonDto.getLabel() != null;
}
});
buttonContainer.add(label);

WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
icon.add(AttributeModifier.append("class", dropdownButtonDto.getIcon()));
icon.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return dropdownButtonDto.getIcon() != null;
}
});
buttonContainer.add(icon);

WebMarkupContainer caret = new WebMarkupContainer(ID_CARET);
caret.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return visibleCaret();
}
});
buttonContainer.add(caret);

WebMarkupContainer dropdownMenuContainer = new WebMarkupContainer(ID_DROPDOWN_MENU);
dropdownMenuContainer.setOutputMarkupId(true);
dropdownMenuContainer.add(AttributeAppender.append("class", getSpecialDropdownMenuClass()));
add(dropdownMenuContainer);

ListView<InlineMenuItem> li = new ListView<InlineMenuItem>(ID_MENU_ITEM, Model.ofList(dropdownButtonDto.getMenuItems())) {
private static final long serialVersionUID = 1L;

@Override
protected void populateItem(ListItem<InlineMenuItem> item) {
initMenuItem(item);
}
};

dropdownMenuContainer.add(li);
}

public WebMarkupContainer getButtonContainer() {
return (WebMarkupContainer)get(ID_BUTTON_CONTAINER);
}

protected boolean visibleCaret() {
return true;
}

private void initMenuItem(ListItem<InlineMenuItem> menuItem) {
MenuLinkPanel menuItemBody = new MenuLinkPanel(ID_MENU_ITEM_BODY, menuItem.getModel());
menuItemBody.add(new VisibleBehaviour(() -> menuItem.getModelObject().getVisible().getObject()));
menuItemBody.setRenderBodyOnly(true);
menuItem.add(menuItemBody);
}

protected String getSpecialButtonClass() {
return "btn-app";
}

protected String getSpecialDropdownMenuClass() {
return "pull-right";
}

}
/*
* Copyright (c) 2010-2017 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.api.component.button;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.MenuLinkPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

/**
* Universal button to display drop-down menus. The button itself can have numerous decorations: icon, label and tag with count (info)
*
* @author katkav
*
*/
public class DropdownButtonPanel extends BasePanel<DropdownButtonDto> {

private static final long serialVersionUID = 1L;
private static final String ID_BUTTON_CONTAINER = "buttonContainer";
private static final String ID_INFO = "info";
private static final String ID_ICON = "icon";
private static final String ID_CARET = "caret";
private static final String ID_LABEL = "label";

private static final String ID_DROPDOWN_MENU = "dropDownMenu";
private static final String ID_MENU_ITEM = "menuItem";
private static final String ID_MENU_ITEM_BODY = "menuItemBody";


public DropdownButtonPanel(String id, DropdownButtonDto model) {
super(id, Model.of(model));
}

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

private void initLayout() {
WebMarkupContainer buttonContainer = new WebMarkupContainer(ID_BUTTON_CONTAINER);
buttonContainer.setOutputMarkupId(true);
buttonContainer.add(AttributeAppender.append("class", getSpecialButtonClass()));
add(buttonContainer);

Label info = new Label(ID_INFO, new PropertyModel<>(getModel(), DropdownButtonDto.F_INFO));
info.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return getModelObject() != null && getModelObject().getInfo() != null;
}
});
buttonContainer.add(info);

Label label = new Label(ID_LABEL, new PropertyModel<>(getModel(), DropdownButtonDto.F_LABEL));
label.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return getModelObject() != null && getModelObject().getLabel() != null;
}
});
buttonContainer.add(label);

WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
icon.add(AttributeModifier.append("class", new PropertyModel<>(getModel(), DropdownButtonDto.F_ICON)));
icon.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return getModelObject() != null && getModelObject().getIcon() != null;
}
});
buttonContainer.add(icon);

WebMarkupContainer caret = new WebMarkupContainer(ID_CARET);
caret.add(new VisibleEnableBehaviour() {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return visibleCaret();
}
});
buttonContainer.add(caret);

WebMarkupContainer dropdownMenuContainer = new WebMarkupContainer(ID_DROPDOWN_MENU);
dropdownMenuContainer.setOutputMarkupId(true);
dropdownMenuContainer.add(AttributeAppender.append("class", getSpecialDropdownMenuClass()));
add(dropdownMenuContainer);

ListView<InlineMenuItem> li = new ListView<>(ID_MENU_ITEM, new PropertyModel<>(getModel(), DropdownButtonDto.F_ITEMS)) {

@Override
protected void populateItem(ListItem<InlineMenuItem> item) {
initMenuItem(item);
}
};

dropdownMenuContainer.add(li);
}

public WebMarkupContainer getButtonContainer() {
return (WebMarkupContainer)get(ID_BUTTON_CONTAINER);
}

protected boolean visibleCaret() {
return true;
}

private void initMenuItem(ListItem<InlineMenuItem> menuItem) {
MenuLinkPanel menuItemBody = new MenuLinkPanel(ID_MENU_ITEM_BODY, menuItem.getModel());
menuItemBody.setRenderBodyOnly(true);
menuItem.add(menuItemBody);
menuItem.add(new VisibleBehaviour(() -> menuItem.getModelObject().getVisible().getObject()));
}

protected String getSpecialButtonClass() {
return "btn-app";
}

protected String getSpecialDropdownMenuClass() {
return "pull-right";
}

}
Expand Up @@ -148,11 +148,11 @@ protected void onComponentTag(ComponentTag tag) {
password1.add(AttributeAppender.append("onfocus", "initPasswordValidation({\n"
+ "container: $('#progress-bar-container'),\n"
+ "hierarchy: {\n"
+ " '0': ['progress-bar-danger', '" + getPageBase().createStringResource("PasswordPanel.strength.veryWeak").getString() + "'],\n"
+ " '25': ['progress-bar-danger', '" + getPageBase().createStringResource("PasswordPanel.strength.weak").getString() + "'],\n"
+ " '50': ['progress-bar-warning', '" + getPageBase().createStringResource("PasswordPanel.strength.good").getString() + "'],\n"
+ " '75': ['progress-bar-success', '" + getPageBase().createStringResource("PasswordPanel.strength.strong").getString() + "'],\n"
+ " '100': ['progress-bar-success', '" + getPageBase().createStringResource("PasswordPanel.strength.veryStrong").getString() + "']\n"
+ " '0': ['progress-bar-danger', '" + PageBase.createStringResourceStatic(null, "PasswordPanel.strength.veryWeak").getString() + "'],\n"
+ " '25': ['progress-bar-danger', '" + getPageBase().createStringResourceStatic(null, "PasswordPanel.strength.weak").getString() + "'],\n"
+ " '50': ['progress-bar-warning', '" + getPageBase().createStringResourceStatic(null, "PasswordPanel.strength.good").getString() + "'],\n"
+ " '75': ['progress-bar-success', '" + getPageBase().createStringResourceStatic(null, "PasswordPanel.strength.strong").getString() + "'],\n"
+ " '100': ['progress-bar-success', '" + getPageBase().createStringResourceStatic(null, "PasswordPanel.strength.veryStrong").getString() + "']\n"
+ "}\n"
+ "})"));
password1.setRequired(false);
Expand Down
Expand Up @@ -23,6 +23,7 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.model.ReadOnlyModel;
import com.evolveum.midpoint.gui.api.prism.wrapper.*;
import com.evolveum.midpoint.gui.impl.prism.wrapper.PrismReferenceValueWrapperImpl;
import com.evolveum.midpoint.web.component.data.SelectableBeanContainerDataProvider;
Expand Down Expand Up @@ -3655,7 +3656,7 @@ public static <O extends ObjectType> DisplayType getDisplayTypeForObject(O obj,
if (obj == null) {
return null;
}
DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType(obj, pageBase);
DisplayType displayType = WebComponentUtil.getArchetypePolicyDisplayType(obj.asPrismObject(), pageBase);

if (displayType == null) {
displayType = WebComponentUtil.createDisplayType(createDefaultIcon(obj.asPrismObject()),
Expand Down Expand Up @@ -4008,8 +4009,16 @@ public static CompositedIconBuilder getAssignmentRelationIconBuilder(PageBase pa
}

public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(O object, PageBase pageBase) {
if (object == null) {
return null;
}

return getArchetypePolicyDisplayType(object.asPrismObject(), pageBase);
}

public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(PrismObject<O> object, PageBase pageBase) {
if (object != null) {
ArchetypePolicyType archetypePolicy = WebComponentUtil.getArchetypeSpecification(object.asPrismObject(), pageBase);
ArchetypePolicyType archetypePolicy = WebComponentUtil.getArchetypeSpecification(object, pageBase);
if (archetypePolicy != null) {
return archetypePolicy.getDisplay();
}
Expand All @@ -4018,25 +4027,28 @@ public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(O
}

public static IModel<String> getIconUrlModel(IconType icon) {
if (icon == null || StringUtils.isEmpty(icon.getImageUrl())) {
return Model.of();
}
String sUrl = icon.getImageUrl();
if (URI.create(sUrl).isAbsolute()) {
return Model.of(sUrl);
}
return new ReadOnlyModel<>(() -> {
if (icon == null || StringUtils.isEmpty(icon.getImageUrl())) {
return null;
}
String sUrl = icon.getImageUrl();
if (URI.create(sUrl).isAbsolute()) {
return sUrl;
}

List<String> segments = RequestCycle.get().getUrlRenderer().getBaseUrl().getSegments();
if (segments == null || segments.size() < 2) {
return Model.of(sUrl);
}
List<String> segments = RequestCycle.get().getUrlRenderer().getBaseUrl().getSegments();
if (segments == null || segments.size() < 2) {
return sUrl;
}

String prefix = StringUtils.repeat("../", segments.size() - 1);
if (!sUrl.startsWith("/")) {
return Model.of(prefix + sUrl);
}
String prefix = StringUtils.repeat("../", segments.size() - 1);
if (!sUrl.startsWith("/")) {
return prefix + sUrl;
}

return StringUtils.left(prefix, prefix.length() - 1) + sUrl;
});

return Model.of(StringUtils.left(prefix, prefix.length() - 1) + sUrl);
}

public static void deleteSyncTokenPerformed(AjaxRequestTarget target, ResourceType resourceType, PageBase pageBase) {
Expand Down

0 comments on commit 7859b43

Please sign in to comment.