Skip to content

Commit

Permalink
Inline menu buttons are implemented in Roles, Services, Resources lis…
Browse files Browse the repository at this point in the history
…ts tables.
  • Loading branch information
KaterynaHonchar committed Jan 25, 2017
1 parent 8e5e8d3 commit 75a6ba5
Show file tree
Hide file tree
Showing 8 changed files with 135 additions and 86 deletions.
Expand Up @@ -122,6 +122,9 @@ public class GuiStyleConstants {
//menu items icons classes
public static final String CLASS_THREE_DOTS = "fa fa-ellipsis-h";
public static final String CLASS_RECONCILE_MENU_ITEM = "fa fa-exchange";
public static final String CLASS_TEST_CONNECTION_MENU_ITEM = "fa fa-question";
public static final String CLASS_DELETE_MENU_ITEM = "fa fa-minus";
public static final String CLASS_EDIT_MENU_ITEM = "fa fa-edit";

public static final String CLASS_BUTTON_TOGGLE_OFF = "btn-default";
public static final String CLASS_BUTTON_TOGGLE_ON = "btn-info";
Expand Down
Expand Up @@ -49,7 +49,7 @@ public MenuMultiButtonPanel(String id, int buttonsNumber, IModel<T> model, IMode
protected void initLayout() {
super.initLayout();

add(new InlineMenu(ID_INLINE_MENU_PANEL, menuItemsModel){
InlineMenu inlineMenu = new InlineMenu(ID_INLINE_MENU_PANEL, menuItemsModel){
@Override
protected String getIconClass(){
return "fa fa-ellipsis-h";
Expand All @@ -74,7 +74,14 @@ protected String getMenuItemContainerStyle(){
return "margin-left: -37px; margin-bottom: -3px; list-style: none;";
}

};
inlineMenu.add(new VisibleEnableBehaviour(){
@Override
public boolean isVisible(){
return !(numberOfButtons < 2);
}
});
add(inlineMenu);

}
}
Expand Up @@ -39,7 +39,7 @@ public class MultiButtonPanel<T> extends BasePanel<T> {
private static final String ID_BUTTONS = "buttons";

protected IModel<List<InlineMenuItem>> menuItemsModel = null;
int numberOfButtons;
protected int numberOfButtons;

public MultiButtonPanel(String id, int numberOfButtons, IModel<T> model, IModel<List<InlineMenuItem>> menuItemsModel){
super(id, model);
Expand Down
Expand Up @@ -39,7 +39,10 @@ public static enum INLINE_MENU_ITEM_ID{
ENABLE(0), DISABLE(1), RECONCILE(2),
UNLOCK(3), DELETE(4), MERGE(5),
HEADER_ENABLE(0), HEADER_RECONCILE(1),
HEADER_DISABLE(2);
HEADER_DISABLE(2), TEST_CONNECTION(0),
HEADER_TEST_CONNECTION(1),
EDIT_XML(1), HEADER_DELETE(0), DELETE_RESOURCE(2),
DELETE_SYNC_TOKEN(3), EDIT_USING_WIZARD(4);

private int menuItemId = -1;

Expand Down
Expand Up @@ -16,6 +16,7 @@

package com.evolveum.midpoint.web.component.util;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
Expand All @@ -29,16 +30,19 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
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.page.admin.configuration.component.HeaderMenuAction;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
Expand Down Expand Up @@ -81,87 +85,76 @@ public FocusListInlineMenuHelper(@NotNull Class<F> objectClass, @NotNull PageBas
this.focusListComponent = focusListComponent;
}

public List<InlineMenuItem> initInlineMenu() {
List<InlineMenuItem> headerMenuItems = new ArrayList<>();
headerMenuItems.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable"), true,
new HeaderMenuAction(parentPage) {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
updateActivationPerformed(target, true, null);
}
}));

headerMenuItems.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable"), true,
new HeaderMenuAction(parentPage) {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
updateActivationPerformed(target, false, null);
}
}));

headerMenuItems.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.reconcile"), true,
new HeaderMenuAction(parentPage) {
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
reconcilePerformed(target, null);
}
}));

headerMenuItems.add(new InlineMenuItem());

headerMenuItems.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.delete"), true,
new HeaderMenuAction(parentPage) {

@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
deletePerformed(target, null);
}
}));

return headerMenuItems;
}

public List<InlineMenuItem> createRowActions() {
public List<InlineMenuItem> createRowActions(boolean isHeader) {
List<InlineMenuItem> menu = new ArrayList<>();
menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.enable"),
new Model<Boolean>(false), new Model<Boolean>(false), false,
new ColumnMenuAction<SelectableBean<F>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<F> rowDto = getRowModel().getObject();
updateActivationPerformed(target, true, rowDto.getValue());
if (getRowModel() == null){
updateActivationPerformed(target, true, null);
} else {
SelectableBean<F> rowDto = getRowModel().getObject();
updateActivationPerformed(target, true, rowDto.getValue());
}
}
}));
}, isHeader ? InlineMenuItem.INLINE_MENU_ITEM_ID.HEADER_ENABLE.getMenuItemId()
: InlineMenuItem.INLINE_MENU_ITEM_ID.ENABLE.getMenuItemId(),
GuiStyleConstants.CLASS_OBJECT_USER_ICON,
DoubleButtonColumn.BUTTON_COLOR_CLASS.SUCCESS.toString()));

menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable"),
isHeader ? new Model<Boolean>(true) : new Model<Boolean>(false),
isHeader ? new Model<Boolean>(true) : new Model<Boolean>(false),
false,
new ColumnMenuAction<SelectableBean<F>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<F> rowDto = getRowModel().getObject();
updateActivationPerformed(target, false, rowDto.getValue());
if (getRowModel() == null){
updateActivationPerformed(target, false, null);
} else {
SelectableBean<F> rowDto = getRowModel().getObject();
updateActivationPerformed(target, false, rowDto.getValue());
}
}
}));

}, isHeader ? InlineMenuItem.INLINE_MENU_ITEM_ID.HEADER_DISABLE.getMenuItemId()
: InlineMenuItem.INLINE_MENU_ITEM_ID.DISABLE.getMenuItemId(),
GuiStyleConstants.CLASS_OBJECT_USER_ICON,
DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));
menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.reconcile"),
new Model<Boolean>(false), new Model<Boolean>(false), false,
new ColumnMenuAction<SelectableBean<F>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<F> rowDto = getRowModel().getObject();
reconcilePerformed(target, rowDto.getValue());
if (getRowModel() == null){
reconcilePerformed(target, null);
} else {
SelectableBean<F> rowDto = getRowModel().getObject();
reconcilePerformed(target, rowDto.getValue());
}
}
}));
}, isHeader ? InlineMenuItem.INLINE_MENU_ITEM_ID.HEADER_RECONCILE.getMenuItemId()
: InlineMenuItem.INLINE_MENU_ITEM_ID.RECONCILE.getMenuItemId(),
GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString()));


menu.add(new InlineMenuItem());

menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.delete"),
new ColumnMenuAction<SelectableBean<F>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<F> rowDto = getRowModel().getObject();
deletePerformed(target, rowDto.getValue());
if (getRowModel() == null){
deletePerformed(target, null);
} else {
SelectableBean<F> rowDto = getRowModel().getObject();
deletePerformed(target, rowDto.getValue());
}
}
}));
return menu;
Expand Down
Expand Up @@ -20,6 +20,8 @@
import java.util.Collection;
import java.util.List;

import com.evolveum.midpoint.web.component.data.column.DoubleButtonColumn;
import com.evolveum.midpoint.web.component.data.column.InlineMenuButtonColumn;
import com.evolveum.midpoint.web.component.dialog.ConfirmationPanel;
import com.evolveum.midpoint.web.component.search.*;
import com.evolveum.midpoint.web.session.PageStorage;
Expand All @@ -33,6 +35,7 @@
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
Expand Down Expand Up @@ -152,7 +155,7 @@ private void initLayout() {

@Override
protected List<InlineMenuItem> createInlineMenu() {
return PageResources.this.createRowMenuItems();
return PageResources.this.createRowMenuItems(false);
}

@Override
Expand All @@ -178,31 +181,46 @@ protected void newObjectPerformed(AjaxRequestTarget target) {

}

private List<InlineMenuItem> createRowMenuItems() {
private List<InlineMenuItem> createRowMenuItems(boolean isHeader) {

List<InlineMenuItem> menuItems = new ArrayList<>();

menuItems.add(new InlineMenuItem(createStringResource("PageResources.inlineMenuItem.test"),
new Model<Boolean>(false), new Model<Boolean>(false), false,
new ColumnMenuAction<SelectableBean<ResourceType>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<ResourceType> rowDto = getRowModel().getObject();
testResourcePerformed(target, rowDto.getValue());
SelectableBean<ResourceType> rowDto = getRowModel().getObject();
testResourcePerformed(target, rowDto.getValue());
}
}));
}, isHeader ? InlineMenuItem.INLINE_MENU_ITEM_ID.HEADER_TEST_CONNECTION.getMenuItemId()
: InlineMenuItem.INLINE_MENU_ITEM_ID.TEST_CONNECTION.getMenuItemId(),
GuiStyleConstants.CLASS_TEST_CONNECTION_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString()));

This comment has been minimized.

Copy link
@nguyenhoan

nguyenhoan Feb 18, 2017

Hi @KaterynaHonchar
We are a team of researchers from Iowa State, The University of Texs at Dallas and Oregon State University, USA. We are investigating common/repeated code changes.
We have four short questions regarding the change in the image below which is part of this commit.
image

Questions:

Q1- Is the change at these lines similar to any other changes (from other locations of the same commit or from other commits)? (yes, no, not sure)

Q2- Can you briefly describe the change and why you made it? (for example, checking parameter before calling the method to avoid a Null Pointer Exception)

Q3- Can you give it a name? (for example, Null Check)

Q4- Would you like to have this change automated by a tool? (Yes, No, Already automated)

The data collected from the answers will never be associated with you or your project. Our questions are about recurring code changes from the developer community, not about personal information. All the data is merged across recurring changes from GitHub repositories. We will publish aggregated data from the trends of the whole community.
We have a long tradition of developing refactoring tools and contributing them freely to the Eclipse, Netbeans, Android Studio under their respective FLOSS licenses. For example, look at some of our recently released refactoring tools: http://refactoring.info/tools/

Thank you,
Hoan Nguyen https://sites.google.com/site/nguyenanhhoan/
Michael Hilton http://web.engr.oregonstate.edu/~hiltonm/
Tien Nguyen http://www.utdallas.edu/~tien.n.nguyen/
Danny Dig http://eecs.oregonstate.edu/people/dig-danny

menuItems.add(new InlineMenuItem(createStringResource("PageBase.button.delete"),
new Model<Boolean>(true), new Model<Boolean>(true), false,
new ColumnMenuAction<SelectableBean<ResourceType>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<ResourceType> rowDto = getRowModel().getObject();
deleteResourcePerformed(target, rowDto.getValue());
if (getRowModel() == null){
deleteResourcePerformed(target, null);
} else {
SelectableBean<ResourceType> rowDto = getRowModel().getObject();
deleteResourcePerformed(target, rowDto.getValue());
}
}
}));
}, isHeader ? InlineMenuItem.INLINE_MENU_ITEM_ID.HEADER_DELETE.getMenuItemId()
: InlineMenuItem.INLINE_MENU_ITEM_ID.DELETE_RESOURCE.getMenuItemId(),
GuiStyleConstants.CLASS_DELETE_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.DANGER.toString()));

menuItems.add(new InlineMenuItem(createStringResource("pageResources.inlineMenuItem.deleteSyncToken"),
isHeader ? new Model<Boolean>(false) : new Model<Boolean>(true),
isHeader ? new Model<Boolean>(false) : new Model<Boolean>(true),
false,
new ColumnMenuAction<SelectableBean<ResourceType>>() {

@Override
Expand All @@ -214,6 +232,9 @@ public void onClick(AjaxRequestTarget target) {
}));

menuItems.add(new InlineMenuItem(createStringResource("pageResources.inlineMenuItem.editResource"),
isHeader ? new Model<Boolean>(false) : new Model<Boolean>(true),
isHeader ? new Model<Boolean>(false) : new Model<Boolean>(true),
false,
new ColumnMenuAction<SelectableBean<ResourceType>>() {

@Override
Expand All @@ -223,14 +244,17 @@ public void onClick(AjaxRequestTarget target) {
}
}));
menuItems.add(new InlineMenuItem(createStringResource("pageResources.button.editAsXml"),
new Model<Boolean>(false), new Model<Boolean>(false), false,
new ColumnMenuAction<SelectableBean<ResourceType>>() {

@Override
public void onClick(AjaxRequestTarget target) {
SelectableBean<ResourceType> rowDto = getRowModel().getObject();
editAsXmlPerformed(rowDto.getValue());
}
}));
}, InlineMenuItem.INLINE_MENU_ITEM_ID.EDIT_XML.getMenuItemId(),
GuiStyleConstants.CLASS_EDIT_MENU_ITEM,
DoubleButtonColumn.BUTTON_COLOR_CLASS.INFO.toString()));

return menuItems;
}
Expand All @@ -243,24 +267,19 @@ private List<IColumn<SelectableBean<ResourceType>, String>> initResourceColumns(
columns.add(new PropertyColumn(createStringResource("pageResources.version"),
SelectableBean.F_VALUE + ".connector.connectorVersion"));

InlineMenuHeaderColumn menu = new InlineMenuHeaderColumn(initInlineMenu());
columns.add(menu);

return columns;
}

private List<InlineMenuItem> initInlineMenu() {
List<InlineMenuItem> headerMenuItems = new ArrayList<>();
headerMenuItems.add(new InlineMenuItem(createStringResource("PageBase.button.delete"),
new HeaderMenuAction(this) {
columns.add(new InlineMenuButtonColumn<SelectableBean<ResourceType>>(createRowMenuItems(false), 2){
@Override
protected int getHeaderNumberOfButtons() {
return 1;
}

@Override
public void onClick(AjaxRequestTarget target) {
deleteResourcePerformed(target, null);
}
}));
@Override
protected List<InlineMenuItem> getHeaderMenuItems() {
return createRowMenuItems(true);
}
});

return headerMenuItems;
return columns;
}

private void resourceDetailsPerformed(AjaxRequestTarget target, String oid) {
Expand Down

0 comments on commit 75a6ba5

Please sign in to comment.