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 245613213..65076bbd5 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 @@ -149,6 +149,7 @@ import org.zkoss.zul.Vbox; /** * @author Óscar González Fernández + * @author Manuel Rego Casasnovas */ @Component @Scope(BeanDefinition.SCOPE_PROTOTYPE) @@ -1006,10 +1007,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; } @@ -1108,6 +1109,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; + } + }