diff --git a/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java b/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java index 2a7dd7b4a..eceb30c1f 100644 --- a/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java +++ b/ganttzk-demo-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java @@ -102,6 +102,11 @@ public class DataForPlanner { return null; } + @Override + public boolean isApplicableTo(ITaskFundamentalProperties task) { + return true; + } + }); configuration.setDoubleClickCommand(new ICommandOnTask() { @@ -123,6 +128,11 @@ public class DataForPlanner { return null; } + @Override + public boolean isApplicableTo(ITaskFundamentalProperties task) { + return true; + } + }); return configuration; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java b/ganttzk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java index 37e0be5ae..8224691b9 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java @@ -93,7 +93,8 @@ public class CommandOnTaskContextualized { } public boolean accepts(TaskComponent taskComponent) { - return true; + T domainObject = domainObjectFor(taskComponent.getTask()); + return commandOnTask.isApplicableTo(domainObject); } } 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 01780190c..6c6626fb8 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java @@ -73,6 +73,11 @@ public class PlannerConfiguration implements IDisabilityConfiguration { return null; } + @Override + public boolean isApplicableTo(T task) { + return true; + } + } private IAdapterToTaskFundamentalProperties adapter; diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java index dca265d71..0da5dcef2 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java @@ -28,4 +28,11 @@ public interface ICommandOnTask { public void doAction(IContextWithPlannerTask context, T task); + /** + * @param task + * @return true if and only if this command is applicable to + * task + */ + public boolean isApplicableTo(T task); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationCommand.java index 87d8e3419..db5bf6fa1 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationCommand.java @@ -48,7 +48,7 @@ public class ResourceAllocationCommand implements IResourceAllocationCommand { @Override public void doAction(IContextWithPlannerTask context, TaskElement task) { - if (task instanceof Task) { + if (isApplicableTo(task)) { this.resourceAllocationController.showWindow((Task) task, context .getTask(), planningState); } @@ -72,5 +72,9 @@ public class ResourceAllocationCommand implements IResourceAllocationCommand { return "/common/img/ico_allocation.png"; } + @Override + public boolean isApplicableTo(TaskElement task) { + return task instanceof Task; + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationCommand.java index 03f28fb40..06e83f700 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/calendar/CalendarAllocationCommand.java @@ -46,7 +46,7 @@ public class CalendarAllocationCommand implements ICalendarAllocationCommand { @Override public void doAction(IContextWithPlannerTask context, TaskElement task) { - if (task instanceof Task) { + if (isApplicableTo(task)) { this.calendarAllocationController.showWindow((Task) task, context .getTask()); } @@ -68,4 +68,9 @@ public class CalendarAllocationCommand implements ICalendarAllocationCommand { return "/common/img/ico_calendar.png"; } + @Override + public boolean isApplicableTo(TaskElement task) { + return task instanceof Task; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/AddMilestoneCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/AddMilestoneCommand.java index d58c6fe56..3cf694e35 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/AddMilestoneCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/AddMilestoneCommand.java @@ -104,4 +104,9 @@ public class AddMilestoneCommand implements IAddMilestoneCommand { return "/common/img/milestone.png"; } + @Override + public boolean isApplicableTo(TaskElement task) { + return true; + } + } \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/DeleteMilestoneCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/DeleteMilestoneCommand.java index 715748a28..4a45fef7a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/DeleteMilestoneCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/milestone/DeleteMilestoneCommand.java @@ -42,7 +42,7 @@ public class DeleteMilestoneCommand implements IDeleteMilestoneCommand { @Override public void doAction(IContextWithPlannerTask context, TaskElement task) { - if (task instanceof TaskMilestone) { + if (isApplicableTo(task)) { planningState.removed(task); context.remove(task); } @@ -63,4 +63,9 @@ public class DeleteMilestoneCommand implements IDeleteMilestoneCommand { this.planningState = planningState; } + @Override + public boolean isApplicableTo(TaskElement task) { + return task instanceof TaskMilestone; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java index eb2619ab2..6ee6fc221 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/PlanningTabCreator.java @@ -119,6 +119,11 @@ public class PlanningTabCreator { public String getIcon() { return "/common/img/ico_planificador.png"; } + + @Override + public boolean isApplicableTo(TaskElement task) { + return true; + } }; commands.add(scheduleCommand); companyPlanningController.setAdditional(commands); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskCommand.java index 9fafd14c5..65cb24251 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/taskedition/EditTaskCommand.java @@ -84,4 +84,9 @@ public class EditTaskCommand implements IEditTaskCommand { return "/common/img/ico_editar.png"; } + @Override + public boolean isApplicableTo(TaskElement task) { + return true; + } + }