From 128a29fd2d5b9233b0e5278cc1bb2eb8d18005f4 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Mon, 16 Jan 2012 15:53:29 +0100 Subject: [PATCH] Bug #1342: Show save button in Gantt view when it is disabled Add new method to ICommand to allow specify when a command is disabled or not. In a disabled command the method doAction is not going to be called when you click in the button. Set ISaveCommand to disabled when user doesn't have permissions to save the order or the order is marked as STORED. FEA: ItEr76S04BugFixing --- .../zkoss/ganttz/CommandContextualized.java | 18 +++++++------ .../ganttz/adapters/PlannerConfiguration.java | 9 ++++++- .../org/zkoss/ganttz/extensions/ICommand.java | 6 ++++- .../web/planner/order/ISaveCommand.java | 9 ++++++- .../web/planner/order/OrderPlanningModel.java | 14 ++++++++--- .../web/planner/order/SaveCommandBuilder.java | 25 ++++++++++++++++--- .../web/planner/reassign/ReassignCommand.java | 8 +++++- 7 files changed, 70 insertions(+), 19 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java b/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java index ee235995a..07f5f1721 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/CommandContextualized.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -62,13 +62,17 @@ class CommandContextualized { result.setImage(command.getImage()); result.setTooltiptext(command.getName()); } - result.addEventListener(Events.ON_CLICK, new EventListener() { + if (command.isDisabled()) { + result.setDisabled(true); + } else { + result.addEventListener(Events.ON_CLICK, new EventListener() { - @Override - public void onEvent(Event event) { - doAction(); - } - }); + @Override + public void onEvent(Event event) { + doAction(); + } + }); + } button = result; return result; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java index 951595be5..e9728222a 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -46,7 +46,9 @@ import org.zkoss.zk.ui.Component; /** * A object that defines several extension points for gantt planner + * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public class PlannerConfiguration implements IDisabilityConfiguration { @@ -79,6 +81,11 @@ public class PlannerConfiguration implements IDisabilityConfiguration { return ""; } + @Override + public boolean isDisabled() { + return false; + } + } private static class NullCommandOnTask implements ICommandOnTask { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommand.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommand.java index 95145a35d..d883748b3 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommand.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommand.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -25,7 +25,9 @@ package org.zkoss.ganttz.extensions; /** * An action that can be applied to the planner and it's wanted to be available * to the user
+ * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public interface ICommand { @@ -35,4 +37,6 @@ public interface ICommand { public String getImage(); + boolean isDisabled(); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/ISaveCommand.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/ISaveCommand.java index 610498bf9..c2f912f8a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/ISaveCommand.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/ISaveCommand.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -27,7 +27,9 @@ import org.zkoss.ganttz.extensions.ICommand; /** * Contract for {@link SaveCommandBuilder}
+ * * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ public interface ISaveCommand extends ICommand { @@ -54,4 +56,9 @@ public interface ISaveCommand extends ICommand { void save(IBeforeSaveActions beforeSaveActions, IAfterSaveActions afterSaveActions) throws ValidationException; + void setDisabled(boolean disabled); + + @Override + boolean isDisabled(); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java index 88e10741a..7dbdf44ef 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningModel.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -150,6 +150,7 @@ import org.zkoss.zul.Vbox; /** * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ @Component @Scope(BeanDefinition.SCOPE_PROTOTYPE) @@ -1007,10 +1008,10 @@ public class OrderPlanningModel implements IOrderPlanningModel { private ISaveCommand setupSaveCommand( PlannerConfiguration configuration, boolean writingAllowed) { - if (!writingAllowed) { - return null; - } ISaveCommand result = planningState.getSaveCommand(); + if (!writingAllowed) { + result.setDisabled(true); + } configuration.addGlobalCommand(result); return result; } @@ -1109,6 +1110,11 @@ public class OrderPlanningModel implements IOrderPlanningModel { return "/common/img/ico_back.png"; } + @Override + public boolean isDisabled() { + return false; + } + }; } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java index bedd5cae4..c783ce567 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/SaveCommandBuilder.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -27,7 +27,6 @@ import static org.libreplan.web.I18nHelper._; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Date; import java.util.List; import java.util.Set; import java.util.SortedSet; @@ -106,13 +105,14 @@ import org.zkoss.zul.Messagebox; /** * Builds a command that saves the changes in the taskElements. It can be * considered the final step in the conversation
- * + * * In the save operation it is also kept the consistency of the * LimitingResourceQueueDependencies with the Dependecies between the task of * the planning gantt. - * + * * @author Óscar González Fernández * @author Javier Moran Rua + * @author Manuel Rego Casasnovas */ @Component @Scope(BeanDefinition.SCOPE_SINGLETON) @@ -215,6 +215,8 @@ public class SaveCommandBuilder { private final List listeners = new ArrayList(); + private boolean disabled = false; + public SaveCommand(PlanningState planningState, PlannerConfiguration configuration) { this.state = planningState; @@ -239,6 +241,10 @@ public class SaveCommandBuilder { @Override public void doAction(IContext context) { + if (disabled) { + return; + } + save(null, new IAfterSaveActions() { @Override @@ -988,5 +994,16 @@ public class SaveCommandBuilder { } } } + + @Override + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } + + @Override + public boolean isDisabled() { + return disabled; + } + } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/reassign/ReassignCommand.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/reassign/ReassignCommand.java index 3faee9e1d..937050874 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/reassign/ReassignCommand.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/reassign/ReassignCommand.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. + * Copyright (C) 2010-2012 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -65,6 +65,7 @@ import org.zkoss.zul.Messagebox; /** * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ @Component @Scope(BeanDefinition.SCOPE_PROTOTYPE) @@ -369,4 +370,9 @@ public class ReassignCommand implements IReassignCommand { return context.getRelativeTo().getDesktop(); } + @Override + public boolean isDisabled() { + return false; + } + }