diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java index 80e19e9c7fb..2ab6ef2aaec 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/DisplayNamePanel.java @@ -58,9 +58,7 @@ protected void onInitialize() { } private void initLayout() { - WebMarkupContainer typeImage = new WebMarkupContainer(ID_TYPE_IMAGE); - typeImage.setOutputMarkupId(true); - typeImage.add(AttributeModifier.append("class", createImageModel())); + WebMarkupContainer typeImage = createTypeImagePanel(ID_TYPE_IMAGE); add(typeImage); Label name = new Label(ID_DISPLAY_NAME, createHeaderModel()); @@ -117,6 +115,13 @@ protected void populateItem(ListItem item) { // add(new Label(ID_PENDING_OPERATION, getPendingOperationLabelModel())); } + protected WebMarkupContainer createTypeImagePanel(String idTypeImage) { + WebMarkupContainer typeImage = new WebMarkupContainer(idTypeImage); + typeImage.setOutputMarkupId(true); + typeImage.add(AttributeModifier.append("class", createImageModel())); + return typeImage; + } + private boolean isObjectPolicyConfigurationType() { return QNameUtil.match( ObjectPolicyConfigurationType.COMPLEX_TYPE, diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java index 1ed3b099e7c..5afd65b4df5 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java @@ -3495,7 +3495,7 @@ public static DisplayType getDisplayTypeForObject(O obj, //TODO unify createAccountIcon with createCompositeIconForObject public static CompositedIcon createCompositeIconForObject(O obj, OperationResult result, PageBase pageBase) { if (obj instanceof ShadowType) { - return createAccountIcon((ShadowType) obj, pageBase); + return createAccountIcon((ShadowType) obj, pageBase, true); } DisplayType basicIconDisplayType = getDisplayTypeForObject(obj, result, pageBase); @@ -3525,7 +3525,7 @@ public static CompositedIcon createCompositeIconForObject return builder.build(); } - public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageBase) { + public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageBase, boolean isColumn) { List triggerType = shadow.getTrigger(); String iconCssClass = WebComponentUtil.createShadowIcon(shadow.asPrismObject()); CompositedIconBuilder builder = new CompositedIconBuilder(); @@ -3533,14 +3533,23 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB if (StringUtils.isNotBlank(title)) { IconType icon = new IconType(); icon.setCssClass("fa fa-clock-o " + GuiStyleConstants.BLUE_COLOR); - builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_FOR_COLUMN_STYLE); + } else { + builder.appendLayerIcon(icon, IconCssStyle.TOP_RIGHT_STYLE); + } + } builder.setBasicIcon(iconCssClass, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); if (BooleanUtils.isTrue(shadow.isDead())) { IconType icon = new IconType(); icon.setCssClass("fa fa-times-circle " + GuiStyleConstants.RED_COLOR); - builder.appendLayerIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + } else { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_STYLE); + } builder.setTitle(pageBase.createStringResource("FocusProjectionsTabPanel.deadShadow").getString() + (StringUtils.isNotBlank(title) ? ("\n" + title) : "")); return builder.build(); @@ -3559,7 +3568,11 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB || (lockoutExpirationTimestamp != null && pageBase.getClock().isPast((lockoutExpirationTimestamp)))) { IconType icon = new IconType(); icon.setCssClass("fa fa-lock " + GuiStyleConstants.RED_COLOR); - builder.appendLayerIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + } else { + builder.setBasicIcon(icon, IconCssStyle.BOTTOM_RIGHT_STYLE); + } builder.setTitle(pageBase.createStringResource("LockoutStatusType.LOCKED").getString() + (StringUtils.isNotBlank(title) ? ("\n" + title) : "")); return builder.build(); @@ -3575,10 +3588,18 @@ public static CompositedIcon createAccountIcon(ShadowType shadow, PageBase pageB switch (value) { case DISABLED: - appendIcon(builder, "fe fe-slash " + GuiStyleConstants.RED_COLOR, IconCssStyle.CENTER_FOR_COLUMN_STYLE); + if (isColumn) { + appendIcon(builder, "fe fe-slash " + GuiStyleConstants.RED_COLOR, IconCssStyle.CENTER_FOR_COLUMN_STYLE); + } else { + appendIcon(builder, "fe fe-slash " + GuiStyleConstants.RED_COLOR, IconCssStyle.CENTER_STYLE); + } return builder.build(); case ARCHIVED: - appendIcon(builder, "fa fa-archive " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + if (isColumn) { + appendIcon(builder, "fa fa-archive " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_FOR_COLUMN_STYLE); + } else { + appendIcon(builder, "fa fa-archive " + GuiStyleConstants.RED_COLOR, IconCssStyle.BOTTOM_RIGHT_STYLE); + } return builder.build(); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java index 6e931cedb96..47c860f2fc3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java @@ -47,13 +47,13 @@ protected void onInitialize() { private void initLayout() { + addBasicContainerValuePanel(ID_BASIC_PANEL); + add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL)); + DisplayNamePanel displayNamePanel = createDisplayNamePanel(ID_DISPLAY_NAME); displayNamePanel.setOutputMarkupId(true); add(displayNamePanel); - - addBasicContainerValuePanel(ID_BASIC_PANEL); - add(getSpecificContainers(ID_SPECIFIC_CONTAINERS_PANEL)); } protected WebMarkupContainer getSpecificContainers(String contentAreaId) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html index 6aee8dab5c0..916acd64999 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.html @@ -12,7 +12,7 @@
- +
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java index 6f0d5d11d09..e8af7d8dd46 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/ProjectionDisplayNamePanel.java @@ -9,6 +9,8 @@ import java.util.ArrayList; import java.util.List; +import com.evolveum.midpoint.gui.impl.component.data.column.CompositedIconPanel; + import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; @@ -72,10 +74,10 @@ protected IModel> getDescriptionLabelsModel() { } @Override - protected String createImageModel() { + protected WebMarkupContainer createTypeImagePanel(String idTypeImage) { if (getModelObject() == null) { - return ""; + return super.createTypeImagePanel(idTypeImage); } - return WebComponentUtil.createShadowIcon(getModelObject().asPrismObject()); + return new CompositedIconPanel(idTypeImage, WebComponentUtil.createAccountIcon(getModelObject(), getPageBase(), false)); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java index bfdafd2008c..c353c38aa27 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/FocusProjectionsTabPanel.java @@ -83,8 +83,6 @@ public class FocusProjectionsTabPanel extends AbstractObjec private static final long serialVersionUID = 1L; private static final String ID_SHADOW_TABLE = "shadowTable"; - private static final String ID_SHADOW_PANEL = "shadowPanel"; - protected static final String ID_SPECIFIC_CONTAINERS_FRAGMENT = "specificContainersFragment"; private static final String DOT_CLASS = FocusProjectionsTabPanel.class.getName() + "."; private static final String OPERATION_ADD_ACCOUNT = DOT_CLASS + "addShadow"; @@ -244,9 +242,13 @@ private MultivalueContainerDetailsPanel getMultivalueContainerDetail @Override protected DisplayNamePanel createDisplayNamePanel(String displayNamePanelId) { - ItemRealValueModel displayNameModel = - new ItemRealValueModel<>(item.getModel()); - return new ProjectionDisplayNamePanel(displayNamePanelId, displayNameModel); + IModel shadowModel = new IModel() { + @Override + public ShadowType getObject() { + return createShadowType(item.getModel()); + } + }; + return new ProjectionDisplayNamePanel(displayNamePanelId, shadowModel); } @Override @@ -287,34 +289,8 @@ protected CompositedIcon getCompositedIcon(IModel dead = rowModel.getObject().findProperty(ShadowType.F_DEAD); - if (dead != null && !dead.isEmpty()) { - shadow.setDead(dead.getValue().getRealValue()); - } - } catch (SchemaException e) { - LOGGER.error("Couldn't find property " + ShadowType.F_DEAD); - } - try { - PrismContainerWrapper activation = rowModel.getObject().findContainer(ShadowType.F_ACTIVATION); - if (activation != null && !activation.isEmpty()) { - shadow.setActivation(activation.getValue().getRealValue()); - } - } catch (SchemaException e) { - LOGGER.error("Couldn't find container " + ShadowType.F_ACTIVATION); - } - try { - PrismContainerWrapper triggers = rowModel.getObject().findContainer(ShadowType.F_TRIGGER); - if (triggers != null && !triggers.isEmpty()) { - for (PrismContainerValueWrapper trigger : triggers.getValues()) { - shadow.getTrigger().add(trigger.getRealValue()); - } - } - } catch (SchemaException e) { - LOGGER.error("Couldn't find container " + ShadowType.F_TRIGGER); - } - return WebComponentUtil.createAccountIcon(shadow, getPageBase()); + ShadowType shadow = createShadowType(rowModel); + return WebComponentUtil.createAccountIcon(shadow, getPageBase(), true); } }); @@ -372,6 +348,37 @@ public String getCssClass() { return columns; } + private ShadowType createShadowType(IModel> rowModel) { + ShadowType shadow = rowModel.getObject().getRealValue(); + try { + PrismPropertyWrapper dead = rowModel.getObject().findProperty(ShadowType.F_DEAD); + if (dead != null && !dead.isEmpty()) { + shadow.setDead(dead.getValue().getRealValue()); + } + } catch (SchemaException e) { + LOGGER.error("Couldn't find property " + ShadowType.F_DEAD); + } + try { + PrismContainerWrapper activation = rowModel.getObject().findContainer(ShadowType.F_ACTIVATION); + if (activation != null && !activation.isEmpty()) { + shadow.setActivation(activation.getValue().getRealValue()); + } + } catch (SchemaException e) { + LOGGER.error("Couldn't find container " + ShadowType.F_ACTIVATION); + } + try { + PrismContainerWrapper triggers = rowModel.getObject().findContainer(ShadowType.F_TRIGGER); + if (triggers != null && !triggers.isEmpty()) { + for (PrismContainerValueWrapper trigger : triggers.getValues()) { + shadow.getTrigger().add(trigger.getRealValue()); + } + } + } catch (SchemaException e) { + LOGGER.error("Couldn't find container " + ShadowType.F_TRIGGER); + } + return shadow; + } + private MultivalueContainerListPanelWithDetailsPanel getMultivalueContainerListPanel() { return ((MultivalueContainerListPanelWithDetailsPanel) get(ID_SHADOW_TABLE)); } diff --git a/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less b/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less index d3deb7e4bd4..546ec423cb3 100644 --- a/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less +++ b/gui/admin-gui/src/main/resources/static/less/midpoint/icon-style.less @@ -209,9 +209,9 @@ } i.center-layer { - font-size: 70% !important; + font-size: 90% !important; position: absolute; - top: 45%; + top: 40%; right: 0; left: 0; }