From ab6d5a475138c65abb6f3c4ac635375f5ff63e75 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Fri, 22 Jun 2018 11:15:12 +0200 Subject: [PATCH] MID-4229 multi button columns and panels mess rewrite, refactor almost done --- .../component/data/MenuMultiButtonPanel.java | 57 +++--- .../web/component/data/MultiButtonPanel.html | 21 --- .../web/component/data/MultiButtonPanel.java | 176 ------------------ .../data/column/InlineMenuButtonColumn.java | 134 ++++++------- .../data/column/MultiButtonColumn.java | 148 --------------- .../objectdetails/ObjectHistoryTabPanel.java | 1 - .../admin/certification/PageCertCampaign.java | 58 +++--- .../certification/PageCertDecisions.java | 64 +++---- 8 files changed, 142 insertions(+), 517 deletions(-) delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.html delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java delete mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java index 1342f138d82..7bbdf2a117f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MenuMultiButtonPanel.java @@ -19,52 +19,51 @@ import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto; import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import org.apache.wicket.model.IModel; import java.io.Serializable; import java.util.List; /** - * Created by honchar - *

- * todo rewrite + * @author honchar + * @author Viliam Repan (lazyman) */ -public class MenuMultiButtonPanel extends MultiButtonPanel { - private static final long serialVersionUID = 1L; +public class MenuMultiButtonPanel extends MultiButtonPanel2 { - private static final String ID_INLINE_MENU_PANEL = "inlineMenuPanel"; - private static final String ID_MENU_ITEM_BODY = "menuItemBody"; - private static final String ID_MENU_BUTTON_CONTAINER = "menuButtonContainer"; + private static final long serialVersionUID = 1L; - public MenuMultiButtonPanel(String id, int buttonsCount, IModel model, IModel> menuItemsModel) { - super(id, buttonsCount, model, menuItemsModel); + private static final String ID_INLINE_MENU_PANEL = "inlineMenuPanel"; + + private IModel> menuItems; + + public MenuMultiButtonPanel(String id, IModel model, int numberOfButtons, IModel> menuItems) { + super(id, model, numberOfButtons); + + this.menuItems = menuItems; } @Override - protected void initLayout() { - super.initLayout(); - + protected void onInitialize() { + super.onInitialize(); + + initLayout(); + } + + private void initLayout() { DropdownButtonPanel inlineMenu = new DropdownButtonPanel(ID_INLINE_MENU_PANEL, - new DropdownButtonDto(null, null, null, menuItemsModel.getObject())) { - private static final long serialVersionUID = 1L; - - @Override - protected String getSpecialButtonClass() { - return "btn-xs btn-default"; - } - - }; + new DropdownButtonDto(null, null, null, menuItems.getObject())) { - inlineMenu.add(new VisibleEnableBehaviour() { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @Override - public boolean isVisible() { - return !(numberOfButtons <= 2) || menuItemsModel.getObject().size() > 2; + @Override + protected String getSpecialButtonClass() { + return "btn-xs btn-default"; } - }); + + }; add(inlineMenu); + inlineMenu.add(new VisibleBehaviour(() -> !(getNumberOfButtons() <= 2) || menuItems.getObject().size() > 2)); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.html deleted file mode 100644 index 53fc652760c..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file 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 deleted file mode 100644 index 9890fa52fca..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/MultiButtonPanel.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2010-2017 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.util.logging.Trace; -import com.evolveum.midpoint.util.logging.TraceManager; -import com.evolveum.midpoint.web.component.AjaxButton; -import com.evolveum.midpoint.web.component.AjaxIconButton; -import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; -import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.AbstractReadOnlyModel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; - -import java.util.List; - -/** - * @author shood - * @author mederly - *

- * todo rewrite, Overcomplicated code. - */ -@Deprecated -public class MultiButtonPanel extends BasePanel { - private static final long serialVersionUID = 1L; - - protected static final Trace LOGGER = TraceManager.getTrace(MultiButtonPanel.class); - - private static final String ID_BUTTONS = "buttons"; - - protected IModel> menuItemsModel = null; - protected int numberOfButtons; - - public MultiButtonPanel(String id, int numberOfButtons, IModel model, IModel> menuItemsModel) { - super(id, model); - this.numberOfButtons = numberOfButtons; - this.menuItemsModel = menuItemsModel; - initLayout(); - } - - public MultiButtonPanel(String id, int numberOfButtons, IModel model) { - super(id, model); - this.numberOfButtons = numberOfButtons; - initLayout(); - } - - protected void initLayout() { - RepeatingView buttons = new RepeatingView(ID_BUTTONS); - add(buttons); - for (int id = 0; id < numberOfButtons; id++) { - final int finalId = getButtonId(id); - AjaxIconButton button = new AjaxIconButton(String.valueOf(finalId), - createIconModel(finalId), - Model.of(getButtonTitle(finalId))) { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - clickPerformed(finalId, target, MultiButtonPanel.this.getModel()); - } - - @Override - protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { - super.updateAjaxAttributes(attributes); - attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.BUBBLE); - } - - }; - - button.add(new VisibleEnableBehaviour() { - - private static final long serialVersionUID = 1L; - - @Override - public boolean isEnabled() { - return MultiButtonPanel.this.isButtonEnabled(finalId, MultiButtonPanel.this.getModel()); - } - - @Override - public boolean isVisible() { - return MultiButtonPanel.this.isButtonVisible(finalId, MultiButtonPanel.this.getModel()); - } - }); - - button.add(AttributeAppender.append("class", getButtonCssClass(finalId))); - if (!isButtonEnabled(finalId, getModel())) { - button.add(AttributeAppender.append("class", "disabled")); - } - - buttons.add(button); - } - } - - private IModel createIconModel(int id) { - return new AbstractReadOnlyModel() { - private static final long serialVersionUID = 1L; - - @Override - public String getObject() { - return getButtonIconCss(id); - } - }; - } - - public String getButtonIconCss(int id) { - return ""; - } - - // looks like this one is not really used - public String getCaption(int id) { - return String.valueOf(id); - } - - public boolean isButtonEnabled(int id, IModel model) { - return true; - } - - public boolean isButtonVisible(int id, IModel model) { - return true; - } - - protected String getButtonCssClass(int id) { - StringBuilder sb = new StringBuilder(); - sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" "); - sb.append(getButtonColorCssClass(id)).append(" ").append(getButtonSizeCssClass(id)); - if (!isButtonEnabled(id, getModel())) { - sb.append(" disabled"); - } - return sb.toString(); - } - - public String getButtonSizeCssClass(int id) { - return DoubleButtonColumn.BUTTON_SIZE_CLASS.DEFAULT.toString(); - } - - protected int getButtonId(int id) { - return id; - } - - public String getButtonTitle(int id) { - return ""; - } - - public String getButtonColorCssClass(int id) { - return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString(); - } - - public void clickPerformed(int id, AjaxRequestTarget target, IModel model) { - } - - public AjaxButton getButton(int id) { - return (AjaxButton) get(ID_BUTTONS).get(String.valueOf(id)); - } - -} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java index 43f61d76ac6..5c9b4230c15 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/InlineMenuButtonColumn.java @@ -18,20 +18,22 @@ import com.evolveum.midpoint.gui.api.model.LoadableModel; 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.AjaxIconButton; import com.evolveum.midpoint.web.component.data.MenuMultiButtonPanel; import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; import com.evolveum.midpoint.web.component.util.SelectableBean; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType; import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType; import org.apache.wicket.Component; 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.markup.repeater.Item; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import java.io.Serializable; @@ -41,20 +43,23 @@ import static com.evolveum.midpoint.web.component.data.column.ColumnUtils.createStringResource; /** - * Created by honchar. - * - * todo rewrite + * @author honchar + * @author Viliam Repan (lazyman) + *

+ * TODO Still needs more cleanup. Why button column has to understand activation, focus objects or handle modal windows? That should not be here definitely. */ -public class InlineMenuButtonColumn extends MultiButtonColumn{ - private static final long serialVersionUID = 1L; - - protected static final Trace LOGGER = TraceManager.getTrace(InlineMenuButtonColumn.class); +public class InlineMenuButtonColumn extends AbstractColumn { + + private static final long serialVersionUID = 1L; + + private int buttonsNumber; + protected List menuItems; - protected List menuItems; private PageBase pageBase; - public InlineMenuButtonColumn(List menuItems, int buttonsNumber, PageBase pageBase){ - super(null, menuItems.size() < 2 ? menuItems.size() : buttonsNumber); + public InlineMenuButtonColumn(List menuItems, int buttonsNumber, PageBase pageBase) { + super(null); + this.buttonsNumber = menuItems.size() < 2 ? menuItems.size() : buttonsNumber; this.menuItems = menuItems; this.pageBase = pageBase; } @@ -62,8 +67,7 @@ public InlineMenuButtonColumn(List menuItems, int buttonsNumber, @Override public void populateItem(final Item> cellItem, String componentId, final IModel rowModel) { - this.rowModel = rowModel; - cellItem.add(getPanel(componentId, rowModel, this.numberOfButtons, this.menuItems)); + cellItem.add(getPanel(componentId, rowModel, this.buttonsNumber, this.menuItems)); } @Override @@ -73,61 +77,31 @@ public Component getHeader(String componentId) { } private Component getPanel(String componentId, IModel rowModel, - int numberOfButtons, List menuItems){ - panel = new MenuMultiButtonPanel(componentId, numberOfButtons, rowModel, createMenuModel(rowModel, menuItems)) { - private static final long serialVersionUID = 1L; - - @Override - public String getCaption(int id) { - return ""; - } - - @Override - public String getButtonTitle(int id) { - return InlineMenuButtonColumn.this.getButtonTitle(id, menuItems); - } - - @Override - protected String getButtonCssClass(int id) { - return InlineMenuButtonColumn.this.getButtonCssClass(id, menuItems); - } - - @Override - public String getButtonIconCss(int id) { - return InlineMenuButtonColumn.this.getButtonIconCss(id, menuItems); - } - - @Override - protected int getButtonId(int id){ - return id; - } + int numberOfButtons, List menuItems) { + return new MenuMultiButtonPanel(componentId, rowModel, numberOfButtons, createMenuModel(rowModel, menuItems)) { - @Override - public boolean isButtonVisible(int id, IModel model) { - return InlineMenuButtonColumn.this.isButtonVisible(id, model); - } - - @Override - public String getButtonSizeCssClass(int id) { - return InlineMenuButtonColumn.this.getButtonSizeCssClass(id); - } - - @Override - public String getButtonColorCssClass(int id) { - return InlineMenuButtonColumn.this.getButtonColorCssClass(id, menuItems); - } + private static final long serialVersionUID = 1L; @Override - public void clickPerformed(int id, AjaxRequestTarget target, IModel model) { - setRowModelToAction(rowModel, menuItems); - InlineMenuButtonColumn.this.menuItemClickPerformed(id, target, model, menuItems); + protected AjaxIconButton createButton(int index, String componentId, IModel model) { + AjaxIconButton btn = buildDefaultButton(componentId, + new Model<>(getButtonIconCss(index, menuItems)), + new Model<>(getButtonTitle(index, menuItems)), + new Model<>(getButtonCssClass(index, menuItems) + getButtonColorCssClass(index, menuItems)), + target -> { + setRowModelToAction(rowModel, menuItems); + menuItemClickPerformed(index, target, model, menuItems); + }); + btn.showTitleAsLabel(false); + btn.add(new VisibleBehaviour(() -> isButtonVisible(index, model))); + + return btn; } }; - return panel; } - private void setRowModelToAction(IModel rowModel, List menuItems){ - for (InlineMenuItem menuItem : menuItems){ + private void setRowModelToAction(IModel rowModel, List menuItems) { + for (InlineMenuItem menuItem : menuItems) { if (menuItem.getAction() != null) { ((ColumnMenuAction) menuItem.getAction()).setRowModel(rowModel); } @@ -139,14 +113,14 @@ private IModel> createMenuModel(final IModel rowModel, L @Override public List load() { - if (rowModel == null){ + if (rowModel == null) { return menuItems; } if (rowModel.getObject() == null || !(rowModel.getObject() instanceof InlineMenuable)) { return new ArrayList<>(); } - for (InlineMenuItem item : ((InlineMenuable)rowModel.getObject()).getMenuItems()) { + for (InlineMenuItem item : ((InlineMenuable) rowModel.getObject()).getMenuItems()) { if (!(item.getAction() instanceof ColumnMenuAction)) { continue; } @@ -154,7 +128,7 @@ public List load() { ColumnMenuAction action = (ColumnMenuAction) item.getAction(); action.setRowModel(rowModel); } - return ((InlineMenuable)rowModel.getObject()).getMenuItems(); + return ((InlineMenuable) rowModel.getObject()).getMenuItems(); } }; } @@ -195,24 +169,23 @@ public void yesPerformed(AjaxRequestTarget target) { pageBase.showMainPopup(dialog, target); } - @Override public boolean isButtonVisible(int id, IModel model) { - if (model == null || model.getObject() == null){ + if (model == null || model.getObject() == null) { return true; } if (id == InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.ENABLE.getMenuItemId() && model.getObject() instanceof SelectableBean && - ((SelectableBean) model.getObject()).getValue() instanceof FocusType){ - FocusType focus = (FocusType)((SelectableBean) model.getObject()).getValue(); - if (focus.getActivation() == null){ + ((SelectableBean) model.getObject()).getValue() instanceof FocusType) { + FocusType focus = (FocusType) ((SelectableBean) model.getObject()).getValue(); + if (focus.getActivation() == null) { return false; } return ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus()); } else if (id == InlineMenuItem.FOCUS_LIST_INLINE_MENU_ITEM_ID.DISABLE.getMenuItemId() && model.getObject() instanceof SelectableBean && - ((SelectableBean) model.getObject()).getValue() instanceof FocusType){ - FocusType focus = (FocusType)((SelectableBean) model.getObject()).getValue(); - if (focus.getActivation() == null){ + ((SelectableBean) model.getObject()).getValue() instanceof FocusType) { + FocusType focus = (FocusType) ((SelectableBean) model.getObject()).getValue(); + if (focus.getActivation() == null) { return true; } return !ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus()); @@ -221,15 +194,14 @@ public boolean isButtonVisible(int id, IModel model) { } public String getButtonColorCssClass(int id, List menuItems) { - for (InlineMenuItem menuItem : menuItems){ - if (menuItem.getId() == id){ + for (InlineMenuItem menuItem : menuItems) { + if (menuItem.getId() == id) { return menuItem.getButtonColorCssClass(); } } return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString(); } - @Override public String getButtonSizeCssClass(int id) { return DoubleButtonColumn.BUTTON_SIZE_CLASS.EXTRA_SMALL.toString(); } @@ -246,8 +218,8 @@ protected String getButtonCssClass(int id, List menuItems) { } protected String getButtonIconCss(int id, List menuItems) { - for (InlineMenuItem menuItem : menuItems){ - if (menuItem.getId() == id){ + for (InlineMenuItem menuItem : menuItems) { + if (menuItem.getId() == id) { return menuItem.getButtonIconCssClass() + " fa-fw"; //temporary size fix, should be moved somewhere... } } @@ -265,11 +237,11 @@ public String getButtonTitle(int id, List menuItems) { return ""; } - protected int getHeaderNumberOfButtons(){ - return this.numberOfButtons; + protected int getHeaderNumberOfButtons() { + return this.buttonsNumber; } - protected List getHeaderMenuItems(){ + protected List getHeaderMenuItems() { return menuItems; } } 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 deleted file mode 100644 index d51c49af536..00000000000 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/column/MultiButtonColumn.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2010-2015 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.column; - -import com.evolveum.midpoint.web.component.data.MultiButtonPanel; -import org.apache.wicket.ajax.AjaxRequestTarget; -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.markup.repeater.Item; -import org.apache.wicket.model.IModel; - -import java.io.Serializable; -import java.util.List; - -/** - * @author shood - * @author mederly - */ -@Deprecated -public class MultiButtonColumn extends AbstractColumn { - - protected MultiButtonPanel panel; - - private List captions; - protected IModel rowModel; - protected int numberOfButtons; - - public MultiButtonColumn(int numberOfButtons) { - super(null); - this.numberOfButtons = numberOfButtons; - } - - public MultiButtonColumn(IModel displayModel, int numberOfButtons) { - super(displayModel); - this.numberOfButtons = numberOfButtons; - } - - @Override - public void populateItem(final Item> cellItem, String componentId, - final IModel rowModel) { - this.rowModel = rowModel; - - panel = new MultiButtonPanel(componentId, numberOfButtons, rowModel) { - - @Override - public String getCaption(int id) { - return MultiButtonColumn.this.getCaption(id); - } - - @Override - public String getButtonTitle(int id) { - return MultiButtonColumn.this.getButtonTitle(id); - } - - @Override - public boolean isButtonEnabled(int id, IModel model) { - return MultiButtonColumn.this.isButtonEnabled(id, model); - } - - @Override - public boolean isButtonVisible(int id, IModel model) { - return MultiButtonColumn.this.isButtonVisible(id, model); - } - - @Override - protected String getButtonCssClass(int id) { - return MultiButtonColumn.this.getButtonCssClass(id); - } - - @Override - public String getButtonSizeCssClass(int id) { - return MultiButtonColumn.this.getButtonSizeCssClass(id); - } - - @Override - public String getButtonColorCssClass(int id) { - return MultiButtonColumn.this.getButtonColorCssClass(id); - } - - @Override - public void clickPerformed(int id, AjaxRequestTarget target, IModel model) { - MultiButtonColumn.this.clickPerformed(id, target, model); - } - - - }; - cellItem.add(panel); - } - - public boolean isButtonEnabled(int id, IModel model) { - return true; - } - - protected String getButtonCssClass(int id) { - StringBuilder sb = new StringBuilder(); - sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" "); - sb.append(getButtonColorCssClass(id)).append(" ").append(getButtonSizeCssClass(id)); - if (!isButtonEnabled(id, getRowModel())) { - sb.append(" disabled"); - } - return sb.toString(); - } - - public boolean isButtonVisible(int id, IModel model) { - return true; - } - - public String getCaption(int id) { - return String.valueOf(id); - } - - public void clickPerformed(int id, AjaxRequestTarget target, IModel model) { - } - - public String getButtonColorCssClass(int id) { - return DoubleButtonColumn.BUTTON_COLOR_CLASS.DEFAULT.toString(); - } - - public String getButtonSizeCssClass(int id) { - return DoubleButtonColumn.BUTTON_SIZE_CLASS.SMALL.toString(); - } - - public MultiButtonPanel getButtonPanel(){ - return panel; - } - - public IModel getRowModel(){ - return rowModel; - } - - public String getButtonTitle(int id) { - return ""; - } - -} 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 6355bde2597..368491a400f 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 @@ -46,7 +46,6 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.DateLabelComponent; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn; -import com.evolveum.midpoint.web.component.data.column.MultiButtonColumn; import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.component.prism.ObjectWrapper; import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java index d7214b11d31..627b93e33b4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertCampaign.java @@ -32,11 +32,12 @@ import com.evolveum.midpoint.web.application.AuthorizationAction; import com.evolveum.midpoint.web.application.PageDescriptor; import com.evolveum.midpoint.web.component.AjaxButton; +import com.evolveum.midpoint.web.component.AjaxIconButton; import com.evolveum.midpoint.web.component.AjaxSubmitButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel2; import com.evolveum.midpoint.web.component.data.Table; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn.BUTTON_COLOR_CLASS; -import com.evolveum.midpoint.web.component.data.column.MultiButtonColumn; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignDto; @@ -48,12 +49,15 @@ 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.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder; +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.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; 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; @@ -314,34 +318,36 @@ private List> initColumns() { final AvailableResponses availableResponses = new AvailableResponses(this); final int responses = availableResponses.getCount(); - column = new MultiButtonColumn(new Model(), responses+1) { + column = new AbstractColumn(new Model<>()) { - @Override - public String getButtonTitle(int id) { - return availableResponses.getTitle(id); - } - - @Override - public boolean isButtonEnabled(int id, IModel model) { - return false; - } - - @Override - public boolean isButtonVisible(int id, IModel model) { - if (id < responses) { - return true; - } else { - return !availableResponses.isAvailable(model.getObject().getOverallOutcome()); - } - } + private static final long serialVersionUID = 1L; @Override - public String getButtonColorCssClass(int id) { - if (id < responses) { - return getDecisionButtonColor(getRowModel(), availableResponses.getResponseValues().get(id)); - } else { - return BUTTON_COLOR_CLASS.DANGER.toString(); - } + public void populateItem(Item> cellItem, String componentId, + IModel rowModel) { + + cellItem.add(new MultiButtonPanel2(componentId, rowModel, responses + 1) { + + private static final long serialVersionUID = 1L; + + @Override + protected AjaxIconButton createButton(int index, String componentId, IModel model) { + AjaxIconButton btn = null; + if (index < responses) { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + getDecisionButtonColor(model, availableResponses.getResponseValues().get(index))), + null); + } else { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + BUTTON_COLOR_CLASS.DANGER), + null); + btn.add(new VisibleBehaviour(() -> !availableResponses.isAvailable(model.getObject().getOverallOutcome()))); + } + btn.setEnabled(false); + + return btn; + } + }); } }; columns.add(column); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java index 4e1957148dd..6de8304d8d3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/certification/PageCertDecisions.java @@ -27,12 +27,16 @@ 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.DateLabelComponent; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; +import com.evolveum.midpoint.web.component.data.MultiButtonPanel2; import com.evolveum.midpoint.web.component.data.Table; import com.evolveum.midpoint.web.component.data.column.*; import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn.BUTTON_COLOR_CLASS; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; +import com.evolveum.midpoint.web.component.util.EnableBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleBehaviour; import com.evolveum.midpoint.web.page.admin.certification.dto.CertWorkItemDto; import com.evolveum.midpoint.web.page.admin.certification.dto.CertWorkItemDtoProvider; import com.evolveum.midpoint.web.page.admin.certification.dto.SearchingUtils; @@ -310,48 +314,38 @@ public void populateItem(Item> item, String comp final AvailableResponses availableResponses = new AvailableResponses(this); final int responses = availableResponses.getResponseKeys().size(); - column = new MultiButtonColumn(new Model<>(), responses+1) { + column = new AbstractColumn(new Model<>()) { - @Override - public String getButtonTitle(int id) { - return availableResponses.getTitle(id); - } + private static final long serialVersionUID = 1L; @Override - public boolean isButtonEnabled(int id, IModel model) { - if (id < responses) { - return !decisionEquals(model, availableResponses.getResponseValues().get(id)); - } else { - return false; - } - } + public void populateItem(Item> cellItem, String componentId, + IModel rowModel) { - @Override - public boolean isButtonVisible(int id, IModel model) { - if (id < responses) { - return true; - } else { - return !availableResponses.isAvailable(model.getObject().getResponse()); - } - } + cellItem.add(new MultiButtonPanel2(componentId, rowModel, responses + 1) { - @Override - public String getButtonColorCssClass(int id) { - if (id < responses) { - return getDecisionButtonColor(getRowModel(), availableResponses.getResponseValues().get(id)); - } else { - return BUTTON_COLOR_CLASS.DANGER.toString(); - } - } + private static final long serialVersionUID = 1L; - @Override - public void clickPerformed(int id, AjaxRequestTarget target, - IModel model) { - if (id < responses) { // should be always the case - recordActionPerformed(target, model.getObject(), availableResponses.getResponseValues().get(id)); - } + @Override + protected AjaxIconButton createButton(int index, String componentId, IModel model) { + AjaxIconButton btn; + if (index < responses) { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + getDecisionButtonColor(model, availableResponses.getResponseValues().get(index))), + target -> + recordActionPerformed(target, model.getObject(), availableResponses.getResponseValues().get(index))); + btn.add(new EnableBehaviour(() -> !decisionEquals(model, availableResponses.getResponseValues().get(index)))); + } else { + btn = buildDefaultButton(componentId, null, new Model(availableResponses.getTitle(index)), + new Model<>("btn btn-sm " + BUTTON_COLOR_CLASS.DANGER), null); + btn.setEnabled(false); + btn.add(new VisibleBehaviour(() -> !availableResponses.isAvailable(model.getObject().getResponse()))); + } + + return btn; + } + }); } - }; columns.add(column);