Skip to content

Commit

Permalink
MID-8175 fixed confirmation dialogs for user list page
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Oct 10, 2022
1 parent ab78c69 commit e9e7cb9
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 133 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -159,19 +159,24 @@ private void buttonMenuItemClickPerformed(int id, List<ButtonInlineMenuItem> but
if (id >= buttonMenuItems.size()){
return;
}

ButtonInlineMenuItem menuItem = buttonMenuItems.get(id);
if (menuItem.getAction() != null) {
// TODO: getConfirmationMessageModel is called here and again in showConfirmationPopup, but these are not getters,
// but both create model (perhaps not very expensive, but it still seems like waste.
if (menuItem.showConfirmationDialog() && menuItem.getConfirmationMessageModel() != null) {
showConfirmationPopup(menuItem, target);
} else {
if (menuItem.isSubmit()){
menuItem.getAction().onSubmit(target);
} else {
menuItem.getAction().onClick(target);
}
}
InlineMenuItemAction action = menuItem.getAction();
if (action == null) {
return;
}

// TODO: getConfirmationMessageModel is called here and again in showConfirmationPopup, but these are not getters,
// but both create model (perhaps not very expensive, but it still seems like waste.
if (menuItem.showConfirmationDialog() && menuItem.getConfirmationMessageModel() != null) {
showConfirmationPopup(menuItem, target);
return;
}

if (menuItem.isSubmit()){
action.onSubmit(target);
} else {
action.onClick(target);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,21 +86,26 @@ public void onClick(AjaxRequestTarget target) {
}

@Override
public CompositedIconBuilder getIconCompositedBuilder(){
public boolean showConfirmationDialog() {
return isShowConfirmationDialog((ColumnMenuAction) getAction());
}

@Override
public CompositedIconBuilder getIconCompositedBuilder() {
return getDefaultCompositedIconBuilder(getEnableActionDefaultIcon(objectType));
}

@Override
public IModel<String> getConfirmationMessageModel(){
public IModel<String> getConfirmationMessageModel() {
String actionName = parentPage.createStringResource("pageUsers.message.enableAction").getString();
return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}

};
enableItem.setVisibilityChecker(FocusListInlineMenuHelper::isObjectDisabled);
menu.add(enableItem);

ButtonInlineMenuItem disableItem = new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.disable")) {

private static final long serialVersionUID = 1L;

@Override
Expand All @@ -115,22 +120,29 @@ public void onClick(AjaxRequestTarget target) {
}

@Override
public IModel<String> getConfirmationMessageModel(){
public boolean showConfirmationDialog() {
return isShowConfirmationDialog((ColumnMenuAction) getAction());
}

@Override
public IModel<String> getConfirmationMessageModel() {
String actionName = parentPage.createStringResource("pageUsers.message.disableAction").getString();
return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}

@Override
public CompositedIconBuilder getIconCompositedBuilder(){
public CompositedIconBuilder getIconCompositedBuilder() {
CompositedIconBuilder builder = getDefaultCompositedIconBuilder(getEnableActionDefaultIcon(objectType));
builder.appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_BAN), IconCssStyle.BOTTOM_RIGHT_STYLE);
return builder; }
return builder;
}

};
disableItem.setVisibilityChecker(FocusListInlineMenuHelper::isObjectEnabled);
menu.add(disableItem);

menu.add(new ButtonInlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.reconcile")) {

private static final long serialVersionUID = 1L;

@Override
Expand All @@ -145,19 +157,25 @@ public void onClick(AjaxRequestTarget target) {
}

@Override
public CompositedIconBuilder getIconCompositedBuilder(){
public boolean showConfirmationDialog() {
return isShowConfirmationDialog((ColumnMenuAction) getAction());
}

@Override
public CompositedIconBuilder getIconCompositedBuilder() {
return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_RECONCILE_MENU_ITEM);
}

@Override
public IModel<String> getConfirmationMessageModel(){
public IModel<String> getConfirmationMessageModel() {
String actionName = parentPage.createStringResource("pageUsers.message.reconcileAction").getString();
return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}

});

menu.add(new InlineMenuItem(parentPage.createStringResource("FocusListInlineMenuHelper.menu.delete")) {

private static final long serialVersionUID = 1L;

@Override
Expand All @@ -172,21 +190,28 @@ public void onClick(AjaxRequestTarget target) {
}

@Override
public IModel<String> getConfirmationMessageModel(){
public boolean showConfirmationDialog() {
return isShowConfirmationDialog((ColumnMenuAction) getAction());
}

@Override
public IModel<String> getConfirmationMessageModel() {
String actionName = parentPage.createStringResource("pageUsers.message.deleteAction").getString();
return FocusListInlineMenuHelper.this.getConfirmationMessageModel((ColumnMenuAction) getAction(), actionName);
}
});
return menu;
}

private String getEnableActionDefaultIcon(Class<F> type){
private String getEnableActionDefaultIcon(Class<F> type) {
String iconClass = "";
if (type.equals(RoleType.class)) {
if (type.equals(UserType.class)) {
iconClass = GuiStyleConstants.CLASS_OBJECT_USER_ICON;
} else if (type.equals(RoleType.class)) {
iconClass = GuiStyleConstants.CLASS_OBJECT_ROLE_ICON;
} else if (type.equals(ServiceType.class)){
} else if (type.equals(ServiceType.class)) {
iconClass = GuiStyleConstants.CLASS_OBJECT_SERVICE_ICON;
} else if (type.equals(OrgType.class)){
} else if (type.equals(OrgType.class)) {
iconClass = GuiStyleConstants.CLASS_OBJECT_ORG_ICON;
}
return iconClass;
Expand Down Expand Up @@ -245,7 +270,7 @@ private void updateActivationPerformed(AjaxRequestTarget target, boolean enablin
objectClass, object.getValue().getOid(), enabling, parentPage.getPrismContext());
parentPage.getModelService().executeChanges(MiscUtil.createCollection(objectDelta), null, task, subResult);
subResult.recordSuccess();
} catch (CommonException|RuntimeException ex) {
} catch (CommonException | RuntimeException ex) {
subResult.recomputeStatus();
if (enabling) {
subResult.recordFatalError("FocusListInlineMenuHelper.message.enable.fatalError", ex);
Expand Down Expand Up @@ -282,7 +307,7 @@ private void reconcilePerformed(AjaxRequestTarget target, IModel<SelectableBean<
Collection<ObjectDelta<? extends ObjectType>> deltas = MiscUtil.createCollection(delta);
parentPage.getModelService().executeChanges(deltas, parentPage.executeOptions().reconcile(), task, opResult);
opResult.computeStatusIfUnknown();
} catch (CommonException|RuntimeException ex) {
} catch (CommonException | RuntimeException ex) {
opResult.recomputeStatus();
opResult.recordFatalError(
parentPage.createStringResource("FocusListInlineMenuHelper.message.reconcile.fatalError", focus).getString(), ex);
Expand All @@ -298,14 +323,14 @@ private void reconcilePerformed(AjaxRequestTarget target, IModel<SelectableBean<
focusListComponent.clearCache();
}


private String getOperationName(String suffix) {
return parentPage.getClass().getName() + "." + suffix;
}

/**
* This method check selection in table. If selectedObject != null than it
* returns only this object.
*
* @return list of selected objects
*/
private List<SelectableBean<F>> getObjectsToActOn(AjaxRequestTarget target, IModel<SelectableBean<F>> selectedObject) {
Expand Down Expand Up @@ -354,11 +379,12 @@ public static boolean isObjectDisabled(IModel<?> rowModel, boolean isHeader) {

return ActivationStatusType.DISABLED == focusObject.getActivation().getEffectiveStatus();
}
protected boolean isShowConfirmationDialog(ColumnMenuAction action){

protected boolean isShowConfirmationDialog(ColumnMenuAction action) {
return false;
}

protected IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName){
protected IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName) {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ protected void initLayout() {
Form mainForm = new MidpointForm(ID_MAIN_FORM);
add(mainForm);

MainObjectListPanel<RoleType> table = new MainObjectListPanel<RoleType>(ID_TABLE, RoleType.class) {
MainObjectListPanel<RoleType> table = new MainObjectListPanel<>(ID_TABLE, RoleType.class) {

@Override
protected UserProfileStorage.TableId getTableId() {
Expand All @@ -90,10 +90,11 @@ protected UserProfileStorage.TableId getTableId() {
@Override
protected List<InlineMenuItem> createInlineMenu() {
FocusListInlineMenuHelper<RoleType> listInlineMenuHelper = new FocusListInlineMenuHelper<RoleType>(RoleType.class, PageRoles.this, this){

private static final long serialVersionUID = 1L;

protected boolean isShowConfirmationDialog(ColumnMenuAction action){
return PageRoles.this.isShowConfirmationDialog(action);
return PageRoles.this.getObjectListPanel().getSelectedObjectsCount() > 0;
}

protected IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName){
Expand All @@ -103,28 +104,16 @@ protected IModel<String> getConfirmationMessageModel(ColumnMenuAction action, St
};
return listInlineMenuHelper.createRowActions(getType());
}

// @Override
// protected List<IColumn<SelectableBean<RoleType>, String>> createDefaultColumns() {
// return ColumnUtils.getDefaultRoleColumns();
// }

};
table.setOutputMarkupId(true);
mainForm.add(table);
}

private IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName){
private IModel<String> getConfirmationMessageModel(ColumnMenuAction action, String actionName) {
return WebComponentUtil.createAbstractRoleConfirmationMessage(actionName, action, getObjectListPanel(), this);

}

private MainObjectListPanel<RoleType> getObjectListPanel() {
return (MainObjectListPanel<RoleType>) get(createComponentPath(ID_MAIN_FORM, ID_TABLE));
}

private boolean isShowConfirmationDialog(ColumnMenuAction action){
return action.getRowModel() != null ||
getObjectListPanel().getSelectedObjectsCount() > 0;
}
}

0 comments on commit e9e7cb9

Please sign in to comment.