From ef8705ff44182088aa25160706497a1cf97ea5ac Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Wed, 20 Jun 2018 19:42:57 +0200 Subject: [PATCH 1/3] MID-4229 multi button columns and panels mess rewrite --- .../web/component/AjaxIconButton.java | 24 ++- .../web/component/data/MultiButtonPanel.java | 1 + .../web/component/data/MultiButtonPanel2.html | 21 ++ .../web/component/data/MultiButtonPanel2.java | 66 ++++++ .../data/column/MultiButtonColumn.java | 1 + .../objectdetails/ObjectHistoryTabPanel.java | 191 +++++++++--------- 6 files changed, 206 insertions(+), 98 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java index b15df46284f..3ac81b52b8b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java @@ -31,6 +31,8 @@ public abstract class AjaxIconButton extends AjaxLink { private IModel title; + private boolean showTitleAsLabel; + public AjaxIconButton(String id, IModel icon, IModel title) { super(id, icon); @@ -50,11 +52,23 @@ protected void onInitialize() { public void onComponentTagBody(final MarkupStream markupStream, final ComponentTag openTag) { StringBuilder sb = new StringBuilder(); + String title = this.title.getObject(); + String icon = getModelObject(); if (StringUtils.isNotEmpty(icon)) { - sb.append(""); + sb.append(""); + } + + if (StringUtils.isEmpty(icon)) { + sb.append(title); } else { - sb.append(title.getObject()); + if (showTitleAsLabel) { + sb.append(title); + } } replaceComponentTagBody(markupStream, openTag, sb.toString()); @@ -68,4 +82,10 @@ protected void onComponentTag(ComponentTag tag) { tag.setType(XmlTag.TagType.OPEN); } } + + public AjaxIconButton showTitleAsLabel(boolean show) { + showTitleAsLabel = show; + + return this; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java index 35c5bc34e36..9890fa52fca 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java @@ -40,6 +40,7 @@ *

* todo rewrite, Overcomplicated code. */ +@Deprecated public class MultiButtonPanel extends BasePanel { private static final long serialVersionUID = 1L; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html new file mode 100644 index 00000000000..53fc652760c --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.html @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java new file mode 100644 index 00000000000..3855782d0aa --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.web.component.data; + +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.web.component.AjaxIconButton; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.wicket.model.IModel; + +/** + * Created by Viliam Repan (lazyman). + */ +public class MultiButtonPanel2 extends BasePanel { + + private static final String ID_BUTTONS = "buttons"; + + private int numberOfButtons; + + public MultiButtonPanel2(String id, IModel model, int numberOfButtons) { + super(id, model); + + this.numberOfButtons = numberOfButtons; + } + + @Override + protected void onInitialize() { + super.onInitialize(); + + initLayout(); + } + + public int getNumberOfButtons() { + return numberOfButtons; + } + + private void initLayout() { + RepeatingView buttons = new RepeatingView(ID_BUTTONS); + add(buttons); + + for (int id = 0; id < numberOfButtons; id++) { + AjaxIconButton button = createButton(id, buttons.newChildId(), getModel()); + if (button != null) { + buttons.add(button); + } + } + } + + protected AjaxIconButton createButton(int index, String componentId, IModel model) { + return null; + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java index 606ca686f49..d51c49af536 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java @@ -29,6 +29,7 @@ * @author shood * @author mederly */ +@Deprecated public class MultiButtonColumn extends AbstractColumn { protected MultiButtonPanel panel; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java index 7c73fe7cb0a..b35aaf78530 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java @@ -20,8 +20,16 @@ import java.util.List; import com.evolveum.midpoint.gui.api.GuiStyleConstants; +import com.evolveum.midpoint.web.component.AjaxIconButton; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel2; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -57,10 +65,10 @@ * Created by honchar. */ public class ObjectHistoryTabPanel extends AbstractObjectTabPanel { - - private static final long serialVersionUID = 1L; - - private static final String ID_MAIN_PANEL = "mainPanel"; + + private static final long serialVersionUID = 1L; + + private static final String ID_MAIN_PANEL = "mainPanel"; private static final Trace LOGGER = TraceManager.getTrace(ObjectHistoryTabPanel.class); private static final String DOT_CLASS = ObjectHistoryTabPanel.class.getName() + "."; private static final String OPERATION_RESTRUCT_OBJECT = DOT_CLASS + "restructObject"; @@ -80,101 +88,91 @@ private void initLayout(final LoadableModel> focusWrapperModel, @Override protected List> initColumns() { List> columns = super.initColumns(); - + IColumn column - = new MultiButtonColumn(new Model(), 2) { - private static final long serialVersionUID = 1L; + = new AbstractColumn(new Model<>()) { - private final DoubleButtonColumn.BUTTON_COLOR_CLASS[] colors = { - DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO, - DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS - }; + private static final long serialVersionUID = 1L; @Override - public String getCaption(int id) { - return ""; + public void populateItem(Item> cellItem, String componentId, + IModel rowModel) { + + cellItem.add(new MultiButtonPanel2(componentId, rowModel, 2) { + + private static final long serialVersionUID = 1L; + + @Override + protected AjaxIconButton createButton(int index, String componentId, IModel model) { + AjaxIconButton btn = null; + switch (index) { + case 0: + btn = new AjaxIconButton(componentId, new Model<>("fa fa-circle-o"), + page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectDataTitle")) { + + @Override + public void onClick(AjaxRequestTarget target) { + currentStateButtonClicked(target, focusWrapperModel.getObject().getOid(), + model.getObject().getEventIdentifier(), + WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE), + page.getCompileTimeClass()); + } + }; + btn.showTitleAsLabel(true) + .add(AttributeAppender.append("class", "btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO)); + break; + case 1: + btn = new AjaxIconButton(componentId, new Model<>(GuiStyleConstants.CLASS_FILE_TEXT), + page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle")) { + + @Override + public void onClick(AjaxRequestTarget target) { + viewObjectXmlButtonClicked(focusWrapperModel.getObject().getOid(), + model.getObject().getEventIdentifier(), + page.getCompileTimeClass(), + WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE)); + } + }; + btn.showTitleAsLabel(true) + .add(AttributeAppender.append("class", "btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS)); + break; + } + + return btn; + } + }); } + }; - @Override - public String getButtonTitle(int id) { - switch (id) { - case 0: - return page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectDataTitle").getString(); - case 1: - return page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle").getString(); - } - return ""; - } + columns.add(column); - @Override - public String getButtonColorCssClass(int id) { - return colors[id].toString(); - } + return columns; + } - @Override - protected String getButtonCssClass(int id) { - StringBuilder sb = new StringBuilder(); - sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" "); - sb.append(getButtonColorCssClass(id)).append(" "); - switch (id) { - case 0: - sb.append("fa fa-circle-o"); - break; - case 1: - sb.append(GuiStyleConstants.CLASS_FILE_TEXT); - break; - } - return sb.toString(); - } + @Override + protected void updateAuditSearchStorage(AuditSearchDto searchDto) { + getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(searchDto); + getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(0); - @Override - public void clickPerformed(int id, AjaxRequestTarget target, IModel model) { - switch (id) { - case 0: - currentStateButtonClicked(target, focusWrapperModel.getObject().getOid(), - model.getObject().getEventIdentifier(), - WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE), - page.getCompileTimeClass()); - break; - case 1: - viewObjectXmlButtonClicked(focusWrapperModel.getObject().getOid(), - model.getObject().getEventIdentifier(), - page.getCompileTimeClass(), - WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE)); - break; - } - } - }; - columns.add(column); + } + + @Override + protected void resetAuditSearchStorage() { + getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(createAuditSearchDto(focusWrapperModel.getObject().getObject().asObjectable())); - return columns; } - @Override - protected void updateAuditSearchStorage(AuditSearchDto searchDto) { - getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(searchDto); - getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(0); - - - } - - @Override - protected void resetAuditSearchStorage() { - getPageBase().getSessionStorage().getUserHistoryAuditLog().setSearchDto(createAuditSearchDto(focusWrapperModel.getObject().getObject().asObjectable())); - - } - - @Override - protected void updateCurrentPage(long current) { - getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(current); - - } - - @Override - protected long getCurrentPage() { - return getPageBase().getSessionStorage().getUserHistoryAuditLog().getPageNumber(); - } + @Override + protected void updateCurrentPage(long current) { + getPageBase().getSessionStorage().getUserHistoryAuditLog().setPageNumber(current); + + } + + @Override + protected long getCurrentPage() { + return getPageBase().getSessionStorage().getUserHistoryAuditLog().getPageNumber(); + } }; panel.setOutputMarkupId(true); @@ -182,13 +180,13 @@ protected long getCurrentPage() { } private AuditSearchDto createAuditSearchDto(F focus) { - AuditSearchDto searchDto = new AuditSearchDto(); - ObjectReferenceType ort = ObjectTypeUtil.createObjectRef(focus); - searchDto.setTargetNames(asList(ort)); - searchDto.setEventStage(AuditEventStageType.EXECUTION); - return searchDto; + AuditSearchDto searchDto = new AuditSearchDto(); + ObjectReferenceType ort = ObjectTypeUtil.createObjectRef(focus); + searchDto.setTargetNames(asList(ort)); + searchDto.setEventStage(AuditEventStageType.EXECUTION); + return searchDto; } - + private void currentStateButtonClicked(AjaxRequestTarget target, String oid, String eventIdentifier, String date, Class type) { //TODO cases for PageRoleHistory, PageOrgHistory if needed... @@ -196,7 +194,7 @@ private void currentStateButtonClicked(AjaxRequestTarget target, String oid, Str } private PrismObject getReconstructedObject(String oid, String eventIdentifier, - Class type){ + Class type) { OperationResult result = new OperationResult(OPERATION_RESTRUCT_OBJECT); try { Task task = getPageBase().createSimpleTask(OPERATION_RESTRUCT_OBJECT); @@ -208,7 +206,8 @@ private PrismObject getReconstructedObject(String oid, String eventIdentifier } return null; } - private void viewObjectXmlButtonClicked(String oid, String eventIdentifier, Class type, String date){ + + private void viewObjectXmlButtonClicked(String oid, String eventIdentifier, Class type, String date) { PrismObject object = getReconstructedObject(oid, eventIdentifier, type); String name = WebComponentUtil.getName(object); @@ -220,9 +219,9 @@ private void viewObjectXmlButtonClicked(String oid, String eventIdentifier, Clas public String getObject() { PrismContext context = getPageBase().getPrismContext(); String xml = ""; - try{ + try { xml = context.serializerFor(PrismContext.LANG_XML).serialize(object); - } catch (Exception ex){ + } catch (Exception ex) { LoggingUtils.logUnexpectedException(LOGGER, "Couldn't serialize object", ex); } return xml; From 41d2be4fbd7084224b5c3f33868c11b4dbbb46d6 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Wed, 20 Jun 2018 22:32:04 +0200 Subject: [PATCH 2/3] MID-4229 multi button columns and panels mess rewrite, refactor in progress --- .../web/component/AjaxIconButton.java | 15 ++++ .../component/data/AjaxEventProcessor.java | 30 ++++++++ .../web/component/data/MultiButtonPanel2.java | 25 ++++++- .../objectdetails/ObjectHistoryTabPanel.java | 42 ++++------- .../certification/PageCertDefinitions.java | 73 ++++++++++--------- .../web/security/MidPointApplication.java | 4 + 6 files changed, 129 insertions(+), 60 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/AjaxEventProcessor.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java index 3ac81b52b8b..7389a339afe 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/AjaxIconButton.java @@ -19,9 +19,12 @@ import org.apache.commons.lang.StringUtils; import org.apache.wicket.AttributeModifier; import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.behavior.Behavior; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.MarkupStream; import org.apache.wicket.markup.parser.XmlTag; +import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; /** @@ -29,6 +32,8 @@ */ public abstract class AjaxIconButton extends AjaxLink { + private static final long serialVersionUID = 1L; + private IModel title; private boolean showTitleAsLabel; @@ -37,6 +42,16 @@ public AjaxIconButton(String id, IModel icon, IModel title) { super(id, icon); this.title = title; + + add(AttributeAppender.append("class", new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public String getObject() { + return !AjaxIconButton.this.isEnabled() ? "disabled" : ""; + } + })); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/AjaxEventProcessor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/AjaxEventProcessor.java new file mode 100644 index 00000000000..05477404869 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/AjaxEventProcessor.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.web.component.data; + +import org.apache.wicket.ajax.AjaxRequestTarget; + +import java.io.Serializable; + +/** + * Created by Viliam Repan (lazyman). + */ +@FunctionalInterface +public interface AjaxEventProcessor extends Serializable { + + void onEventPerformed(AjaxRequestTarget target); +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java index 3855782d0aa..d1850eb9ee2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel2.java @@ -18,7 +18,8 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.web.component.AjaxIconButton; -import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.repeater.RepeatingView; import org.apache.wicket.model.IModel; @@ -27,6 +28,8 @@ */ public class MultiButtonPanel2 extends BasePanel { + private static final long serialVersionUID = 1L; + private static final String ID_BUTTONS = "buttons"; private int numberOfButtons; @@ -63,4 +66,24 @@ private void initLayout() { protected AjaxIconButton createButton(int index, String componentId, IModel model) { return null; } + + protected AjaxIconButton buildDefaultButton(String componentId, IModel icon, IModel title, + IModel cssClass, final AjaxEventProcessor onClickProcessor) { + AjaxIconButton btn = new AjaxIconButton(componentId, icon, title) { + + @Override + public void onClick(AjaxRequestTarget target) { + if (onClickProcessor != null) { + onClickProcessor.onEventPerformed(target); + } + } + }; + + btn.showTitleAsLabel(true); + if (cssClass != null) { + btn.add(AttributeAppender.append("class", cssClass)); + } + + return btn; + } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java index b35aaf78530..6355bde2597 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/objectdetails/ObjectHistoryTabPanel.java @@ -107,34 +107,24 @@ protected AjaxIconButton createButton(int index, String componentId, IModel("fa fa-circle-o"), - page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectDataTitle")) { - - @Override - public void onClick(AjaxRequestTarget target) { - currentStateButtonClicked(target, focusWrapperModel.getObject().getOid(), - model.getObject().getEventIdentifier(), - WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE), - page.getCompileTimeClass()); - } - }; - btn.showTitleAsLabel(true) - .add(AttributeAppender.append("class", "btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO)); + btn = buildDefaultButton(componentId, new Model<>("fa fa-circle-o"), + createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectDataTitle"), + new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO), + target -> + currentStateButtonClicked(target, focusWrapperModel.getObject().getOid(), + model.getObject().getEventIdentifier(), + WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE), + page.getCompileTimeClass())); break; case 1: - btn = new AjaxIconButton(componentId, new Model<>(GuiStyleConstants.CLASS_FILE_TEXT), - page.createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle")) { - - @Override - public void onClick(AjaxRequestTarget target) { - viewObjectXmlButtonClicked(focusWrapperModel.getObject().getOid(), - model.getObject().getEventIdentifier(), - page.getCompileTimeClass(), - WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE)); - } - }; - btn.showTitleAsLabel(true) - .add(AttributeAppender.append("class", "btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS)); + btn = buildDefaultButton(componentId, new Model<>(GuiStyleConstants.CLASS_FILE_TEXT), + createStringResource("ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle"), + new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS), + target -> + viewObjectXmlButtonClicked(focusWrapperModel.getObject().getOid(), + model.getObject().getEventIdentifier(), + page.getCompileTimeClass(), + WebComponentUtil.getLocalizedDate(model.getObject().getTimestamp(), DateLabelComponent.SHORT_NOTIME_STYLE))); break; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java index 7e6e46a8f3e..5d9914bec83 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDefinitions.java @@ -29,10 +29,13 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; +import com.evolveum.midpoint.web.component.AjaxIconButton; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel2; import com.evolveum.midpoint.web.component.data.column.*; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.dialog.Popupable; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.util.EnableBehaviour; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.page.admin.workflow.PageAdminWorkItems; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; @@ -40,9 +43,12 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationDefinitionType; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; @@ -150,42 +156,43 @@ private List, String>> column = new PropertyColumn(createStringResource("PageCertDefinitions.table.description"), "value.description"); columns.add(column); - column = new MultiButtonColumn>(new Model(), 3) { + column = new AbstractColumn, String>(new Model<>()) { - private final String[] captionKeys = { - "PageCertDefinitions.button.createCampaign", - "PageCertDefinitions.button.showCampaigns", - "PageCertDefinitions.button.deleteDefinition" - }; - - private final DoubleButtonColumn.BUTTON_COLOR_CLASS[] colors = { - DoubleButtonColumn.BUTTON_COLOR_CLASS.PRIMARY, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT, - DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER - }; - - @Override - public String getButtonTitle(int id) { - return PageCertDefinitions.this.createStringResource(captionKeys[id]).getString(); - } - - @Override - public String getButtonColorCssClass(int id) { - return colors[id].toString(); - } - - @Override - public void clickPerformed(int id, AjaxRequestTarget target, IModel> model) { - switch (id) { - case 0: createCampaignPerformed(target, model.getObject().getValue()); break; - case 1: showCampaignsPerformed(target, model.getObject().getValue()); break; - case 2: deleteConfirmation(target, model.getObject().getValue()); break; - } - } + private static final long serialVersionUID = 1L; @Override - public boolean isButtonEnabled(int id, IModel> model) { - return id != 0 || !Boolean.TRUE.equals(model.getObject().getValue().isAdHoc()); + public void populateItem(Item>> cellItem, String componentId, + IModel> rowModel) { + + cellItem.add(new MultiButtonPanel2>(componentId, rowModel, 3) { + + private static final long serialVersionUID = 1L; + + @Override + protected AjaxIconButton createButton(int index, String componentId, IModel> model) { + AjaxIconButton btn = null; + switch (index) { + case 0: + btn = buildDefaultButton(componentId, null, createStringResource("PageCertDefinitions.button.createCampaign"), + new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.PRIMARY), + target -> createCampaignPerformed(target, model.getObject().getValue())); + btn.add(new EnableBehaviour(() -> !Boolean.TRUE.equals(model.getObject().getValue().isAdHoc()))); + break; + case 1: + btn = buildDefaultButton(componentId, null, createStringResource("PageCertDefinitions.button.showCampaigns"), + new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT), + target -> showCampaignsPerformed(target, model.getObject().getValue())); + break; + case 2: + btn = buildDefaultButton(componentId, null, createStringResource("PageCertDefinitions.button.deleteDefinition"), + new Model<>("btn btn-sm " + DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER), + target -> deleteConfirmation(target, model.getObject().getValue())); + break; + } + + return btn; + } + }); } }; columns.add(column); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java index 8daf521c58e..a0565a130bb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/security/MidPointApplication.java @@ -66,6 +66,9 @@ import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession; import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication; import org.apache.wicket.core.request.mapper.MountedMapper; +import org.apache.wicket.core.util.objects.checker.CheckingObjectOutputStream; +import org.apache.wicket.core.util.objects.checker.IObjectChecker; +import org.apache.wicket.core.util.objects.checker.ObjectSerializationChecker; import org.apache.wicket.core.util.resource.locator.IResourceStreamLocator; import org.apache.wicket.core.util.resource.locator.caching.CachingResourceStreamLocator; import org.apache.wicket.markup.head.PriorityFirstComparator; @@ -77,6 +80,7 @@ import org.apache.wicket.request.resource.PackageResourceReference; import org.apache.wicket.request.resource.SharedResourceReference; import org.apache.wicket.resource.loader.IStringResourceLoader; +import org.apache.wicket.serialize.java.JavaSerializer; import org.apache.wicket.settings.ApplicationSettings; import org.apache.wicket.settings.ResourceSettings; import org.apache.wicket.spring.injection.annot.SpringComponentInjector; From b37ef7a7fd32d3abf7e7c9d2d7e4aa31e8445f71 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Thu, 21 Jun 2018 10:49:12 +0200 Subject: [PATCH 3/3] Changing max RAM default to 4GB ... to survive huge AD+exchange schema. --- dist/src/main/bin/midpoint.bat | 2 +- dist/src/main/bin/midpoint.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/src/main/bin/midpoint.bat b/dist/src/main/bin/midpoint.bat index 12be71bef7c..d74026dd21b 100644 --- a/dist/src/main/bin/midpoint.bat +++ b/dist/src/main/bin/midpoint.bat @@ -49,7 +49,7 @@ echo Using JAVA_OPTS: "%JAVA_OPTS%" echo Using parameters: "%*" echo. echo Starting midPoint. -start /b %RUN_JAVA% -jar %JAVA_OPTS% -Xms2048M -Xmx2048M -Dpython.cachedir="%MIDPOINT_HOME%\tmp" -Djavax.net.ssl.trustStore="%MIDPOINT_HOME%\keystore.jceks" -Djavax.net.ssl.trustStoreType=jceks -Dmidpoint.home="%MIDPOINT_HOME%" "%LIB_DIR%\midpoint.war" %* > "%BOOT_OUT%" 2>&1 +start /b %RUN_JAVA% -jar %JAVA_OPTS% -Xms2048M -Xmx4096M -Dpython.cachedir="%MIDPOINT_HOME%\tmp" -Djavax.net.ssl.trustStore="%MIDPOINT_HOME%\keystore.jceks" -Djavax.net.ssl.trustStoreType=jceks -Dmidpoint.home="%MIDPOINT_HOME%" "%LIB_DIR%\midpoint.war" %* > "%BOOT_OUT%" 2>&1 goto end :doStop diff --git a/dist/src/main/bin/midpoint.sh b/dist/src/main/bin/midpoint.sh index b4fc65a8330..cd36382a77a 100755 --- a/dist/src/main/bin/midpoint.sh +++ b/dist/src/main/bin/midpoint.sh @@ -50,7 +50,7 @@ if [ -z "$MIDPOINT_HOME" ] ; then fi JAVA_OPTS="$JAVA_OPTS -Xms2048M --Xmx2048M +-Xmx4096M -Dpython.cachedir=$MIDPOINT_HOME/tmp -Djavax.net.ssl.trustStore=$MIDPOINT_HOME/keystore.jceks -Djavax.net.ssl.trustStoreType=jceks