Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Jan 25, 2017
2 parents 1f9ca15 + 498935a commit c0ae761
Show file tree
Hide file tree
Showing 10 changed files with 208 additions and 146 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,31 +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);

}

private void initMenuItem(ListItem<InlineMenuItem> menuItem) {
InlineMenuItem item = menuItem.getModelObject();

if (item.getVisible() != null && item.getVisible().getObject() != null) {
menuItem.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return item.getVisible().getObject();
}
});
}

WebMarkupContainer menuItemBody;
if (item.isMenuHeader() || item.isDivider()) {
menuItemBody = new MenuDividerPanel(ID_MENU_ITEM_BODY, menuItem.getModel());
} else {
menuItemBody = new MenuLinkPanel(ID_MENU_ITEM_BODY, menuItem.getModel());
}
menuItemBody.setRenderBodyOnly(true);
menuItem.add(menuItemBody);

}

}
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 @@ -38,7 +38,7 @@
* Created by honchar.
*/
public class InlineMenuButtonColumn<T extends Serializable> extends MultiButtonColumn<T>{
private List<InlineMenuItem> menuItems;
protected List<InlineMenuItem> menuItems;

public InlineMenuButtonColumn(List<InlineMenuItem> menuItems, int buttonsNumber){
super(null, menuItems.size() < 2 ? menuItems.size() : buttonsNumber);
Expand All @@ -49,34 +49,36 @@ public InlineMenuButtonColumn(List<InlineMenuItem> menuItems, int buttonsNumber)
public void populateItem(final Item<ICellPopulator<T>> cellItem, String componentId,
final IModel<T> rowModel) {
this.rowModel = rowModel;
cellItem.add(getPanel(componentId, rowModel));
cellItem.add(getPanel(componentId, rowModel, this.numberOfButtons, this.menuItems));
}

@Override
public Component getHeader(String componentId) {
return getPanel(componentId, null);

return getPanel(componentId, null, getHeaderNumberOfButtons(), getHeaderMenuItems());
}

private Component getPanel(String componentId, IModel<T> rowModel){
panel = new MenuMultiButtonPanel<T>(componentId, numberOfButtons, rowModel, createMenuModel(rowModel)) {
private Component getPanel(String componentId, IModel<T> rowModel,
int numberOfButtons, List<InlineMenuItem> menuItems){
panel = new MenuMultiButtonPanel<T>(componentId, numberOfButtons, rowModel, createMenuModel(rowModel, menuItems)) {

@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);
return InlineMenuButtonColumn.this.getButtonCssClass(id, menuItems);
}

@Override
protected int getButtonId(int id){
for (InlineMenuItem menuItem : menuItems){
if (menuItem.getId() == id){
return menuItem.getId();
}
}
return id;
}

Expand All @@ -92,27 +94,27 @@ public String getButtonSizeCssClass(int id) {

@Override
public String getButtonColorCssClass(int id) {
return InlineMenuButtonColumn.this.getButtonColorCssClass(id);
return InlineMenuButtonColumn.this.getButtonColorCssClass(id, menuItems);
}

@Override
public void clickPerformed(int id, AjaxRequestTarget target, IModel<T> model) {
setRowModelToAction(rowModel);
InlineMenuButtonColumn.this.menuItemClickPerformed(id, target, model);
setRowModelToAction(rowModel, menuItems);
InlineMenuButtonColumn.this.menuItemClickPerformed(id, target, model, menuItems);
}
};
return panel;
}

private void setRowModelToAction(IModel<T> rowModel){
private void setRowModelToAction(IModel<T> rowModel, List<InlineMenuItem> menuItems){
for (InlineMenuItem menuItem : menuItems){
if (menuItem.getAction() != null) {
((ColumnMenuAction) menuItem.getAction()).setRowModel(rowModel);
}
}
}

private IModel<List<InlineMenuItem>> createMenuModel(final IModel<T> rowModel) {
private IModel<List<InlineMenuItem>> createMenuModel(final IModel<T> rowModel, List<InlineMenuItem> menuItems) {
return new LoadableModel<List<InlineMenuItem>>(false) {

@Override
Expand All @@ -137,7 +139,7 @@ public List<InlineMenuItem> load() {
};
}

private void menuItemClickPerformed(int id, AjaxRequestTarget target, IModel<T> model){
private void menuItemClickPerformed(int id, AjaxRequestTarget target, IModel<T> model, List<InlineMenuItem> menuItems){
for (InlineMenuItem menuItem : menuItems) {
if (menuItem.getId() == id) {
if (menuItem.getAction() != null) {
Expand All @@ -156,18 +158,17 @@ public boolean isButtonVisible(int id, IModel<T> model) {
model.getObject() instanceof SelectableBean &&
((SelectableBean) model.getObject()).getValue() instanceof FocusType){
FocusType focus = (FocusType)((SelectableBean) model.getObject()).getValue();
return focus.getActivation() != null && ActivationStatusType.DISABLED.equals(focus.getActivation().getAdministrativeStatus());
return ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus());
} else if (id == InlineMenuItem.INLINE_MENU_ITEM_ID.DISABLE.getMenuItemId() &&
model.getObject() instanceof SelectableBean &&
((SelectableBean) model.getObject()).getValue() instanceof FocusType){
FocusType focus = (FocusType)((SelectableBean) model.getObject()).getValue();
return focus.getActivation() == null || !ActivationStatusType.DISABLED.equals(focus.getActivation().getAdministrativeStatus());
return !ActivationStatusType.DISABLED.equals(focus.getActivation().getEffectiveStatus());
}
return true;
}

@Override
public String getButtonColorCssClass(int id) {
public String getButtonColorCssClass(int id, List<InlineMenuItem> menuItems) {
for (InlineMenuItem menuItem : menuItems){
if (menuItem.getId() == id){
return menuItem.getButtonColorCssClass();
Expand All @@ -181,11 +182,10 @@ public String getButtonSizeCssClass(int id) {
return DoubleButtonColumn.BUTTON_SIZE_CLASS.EXTRA_SMALL.toString();
}

@Override
protected String getButtonCssClass(int id) {
protected String getButtonCssClass(int id, List<InlineMenuItem> menuItems) {
StringBuilder sb = new StringBuilder();
sb.append(DoubleButtonColumn.BUTTON_BASE_CLASS).append(" ");
sb.append(getButtonColorCssClass(id)).append(" ");
sb.append(getButtonColorCssClass(id, menuItems)).append(" ");
sb.append(getButtonSizeCssClass(id)).append(" ");
for (InlineMenuItem menuItem : menuItems){
if (menuItem.getId() == id){
Expand All @@ -195,4 +195,21 @@ protected String getButtonCssClass(int id) {
return sb.toString();
}

public String getButtonTitle(int id, List<InlineMenuItem> menuItems) {
for (InlineMenuItem menuItem : menuItems){
if (menuItem.getId() == id){
return menuItem.getLabel() != null && menuItem.getLabel().getObject() != null ?
menuItem.getLabel().getObject() : "";
}
}
return "";
}

protected int getHeaderNumberOfButtons(){
return this.numberOfButtons;
}

protected List<InlineMenuItem> getHeaderMenuItems(){
return menuItems;
}
}
Expand Up @@ -37,7 +37,12 @@ public class InlineMenuItem implements Serializable {

public static enum INLINE_MENU_ITEM_ID{
ENABLE(0), DISABLE(1), RECONCILE(2),
UNLOCK(3), DELETE(4), MERGE(5);
UNLOCK(3), DELETE(4), MERGE(5),
HEADER_ENABLE(0), HEADER_RECONCILE(1),
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

0 comments on commit c0ae761

Please sign in to comment.