diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/LeftPane.java b/ganttzk/src/main/java/org/zkoss/ganttz/LeftPane.java index 9690048c3..f3a074fae 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/LeftPane.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/LeftPane.java @@ -23,6 +23,7 @@ package org.zkoss.ganttz; import java.util.Collection; import java.util.List; +import org.zkoss.ganttz.adapters.IDisabilityConfiguration; import org.zkoss.ganttz.data.Position; import org.zkoss.ganttz.data.Task; import org.zkoss.zk.ui.Component; @@ -39,20 +40,25 @@ public class LeftPane extends HtmlMacroComponent { private LeftTasksTree leftTasksTree; + private final IDisabilityConfiguration disabilityConfiguration; + public void setGoingDownInLastArrowCommand( CommandContextualized goingDownInLastArrowCommand) { this.leftTasksTree .setGoingDownInLastArrowCommand(goingDownInLastArrowCommand); } - public LeftPane(List topLevelTasks) { + public LeftPane(IDisabilityConfiguration disabilityConfiguration, + List topLevelTasks) { this.topLevelTasks = topLevelTasks; + this.disabilityConfiguration = disabilityConfiguration; } @Override public void afterCompose() { super.afterCompose(); - leftTasksTree = new LeftTasksTree(topLevelTasks); + leftTasksTree = new LeftTasksTree(disabilityConfiguration, + topLevelTasks); getContainer().appendChild(leftTasksTree); leftTasksTree.afterCompose(); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java index 7c2d22d38..6cb65a177 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java @@ -34,6 +34,7 @@ import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.zkoss.ganttz.LeftTasksTreeRow.ILeftTasksTreeNavigator; +import org.zkoss.ganttz.adapters.IDisabilityConfiguration; import org.zkoss.ganttz.data.Position; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.data.TaskContainer; @@ -76,7 +77,8 @@ public class LeftTasksTree extends HtmlMacroComponent { final int[] path = tasksTreeModel.getPath(tasksTreeModel.getRoot(), task); String cssClass = "depth_" + path.length; - LeftTasksTreeRow leftTasksTreeRow = LeftTasksTreeRow.create(task, + LeftTasksTreeRow leftTasksTreeRow = LeftTasksTreeRow.create( + disabilityConfiguration, task, new TreeNavigator(tasksTreeModel, task)); if (task.isContainer()) { expandWhenOpened((TaskContainer) task, item); @@ -314,7 +316,11 @@ public class LeftTasksTree extends HtmlMacroComponent { private CommandContextualized goingDownInLastArrowCommand; - public LeftTasksTree(List tasks) { + private final IDisabilityConfiguration disabilityConfiguration; + + public LeftTasksTree(IDisabilityConfiguration disabilityConfiguration, + List tasks) { + this.disabilityConfiguration = disabilityConfiguration; this.tasks = tasks; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java index 8669185ec..c59cf9ebd 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java @@ -29,6 +29,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.zkoss.ganttz.adapters.IDisabilityConfiguration; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.util.Locales; @@ -68,13 +69,19 @@ public class LeftTasksTreeRow extends GenericForwardComposer { private final ILeftTasksTreeNavigator leftTasksTreeNavigator; - public static LeftTasksTreeRow create(Task bean, + private final IDisabilityConfiguration disabilityConfiguration; + + public static LeftTasksTreeRow create( + IDisabilityConfiguration disabilityConfiguration, Task bean, ILeftTasksTreeNavigator taskDetailnavigator) { - return new LeftTasksTreeRow(bean, taskDetailnavigator); + return new LeftTasksTreeRow(disabilityConfiguration, bean, + taskDetailnavigator); } - private LeftTasksTreeRow(Task task, + private LeftTasksTreeRow(IDisabilityConfiguration disabilityConfiguration, + Task task, ILeftTasksTreeNavigator leftTasksTreeNavigator) { + this.disabilityConfiguration = disabilityConfiguration; this.task = task; this.dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locales .getCurrent()); @@ -356,13 +363,23 @@ public class LeftTasksTreeRow extends GenericForwardComposer { getNameBox().setValue(task.getName()); getNameBox().setTooltiptext(task.getName()); getStartDateBox().setValue(task.getBeginDate()); - getStartDateBox().setDisabled(!task.canBeExplicitlyMoved()); + getStartDateBox().setDisabled(!canChangeStartDate()); getEndDateBox().setValue(task.getEndDate()); - getEndDateBox().setDisabled(!task.canBeExplicitlyResized()); + getEndDateBox().setDisabled(!canChangeEndDate()); getStartDateTextBox().setValue(asString(task.getBeginDate())); getEndDateTextBox().setValue(asString(task.getEndDate())); } + private boolean canChangeStartDate() { + return disabilityConfiguration.isMovingTasksEnabled() + && task.canBeExplicitlyMoved(); + } + + private boolean canChangeEndDate() { + return disabilityConfiguration.isResizingTasksEnabled() + && task.canBeExplicitlyResized(); + } + private String asString(Date date) { return dateFormat.format(date); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index f806fd026..cec4f4248 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -333,7 +333,8 @@ public class Planner extends HtmlMacroComponent { private void setupComponents() { insertGlobalCommands(); - this.leftPane = new LeftPane(this.diagramGraph.getTopLevelTasks()); + this.leftPane = new LeftPane(disabilityConfiguration, this.diagramGraph + .getTopLevelTasks()); this.ganttPanel = new GanttPanel(this.context, commandsOnTasksContextualized, doubleClickCommand, disabilityConfiguration);