diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java new file mode 100644 index 000000000..63a214e78 --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java @@ -0,0 +1,55 @@ +package org.zkoss.ganttz.data; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +import org.zkoss.ganttz.util.WeakReferencedListeners; +import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; + +/** + * @author Lorenzo Tilve Álvaro + */ +public class Milestone extends Task { + + public Milestone() { + super(); + } + + public Milestone(ITaskFundamentalProperties fundamentalProperties) { + super(fundamentalProperties); + } + + private List tasks = new ArrayList(); + + private boolean expanded = false; + + @Override + public List getTasks() { + return tasks; + } + + @Override + public boolean isExpanded() { + return expanded; + } + + @Override + protected void setVisible(boolean visible) { + super.setVisible(visible); + if (!this.expanded) { + return; + } + for (Task task : tasks) { + task.setVisible(true); + } + } + + @Override + public boolean isLeaf() { + return false; + } + +} \ No newline at end of file diff --git a/ganttzk/src/main/resources/web/ganttz/img/milestone.png b/ganttzk/src/main/resources/web/ganttz/img/milestone.png new file mode 100644 index 000000000..5627f0b79 Binary files /dev/null and b/ganttzk/src/main/resources/web/ganttz/img/milestone.png differ diff --git a/ganttzk/src/main/resources/web/ganttz/img/milestone2.png b/ganttzk/src/main/resources/web/ganttz/img/milestone2.png new file mode 100644 index 000000000..597d80e78 Binary files /dev/null and b/ganttzk/src/main/resources/web/ganttz/img/milestone2.png differ diff --git a/ganttzk/src/main/resources/web/ganttz/milestone.dsp b/ganttzk/src/main/resources/web/ganttz/milestone.dsp new file mode 100644 index 000000000..6c70e57da --- /dev/null +++ b/ganttzk/src/main/resources/web/ganttz/milestone.dsp @@ -0,0 +1,15 @@ + +<%@ taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" %> +<%@ taglib uri="http://www.zkoss.org/dsp/zk/core" prefix="z" %> + + + + +
+
+
+
+
+
+
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/AddMilestoneCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/AddMilestoneCommand.java new file mode 100644 index 000000000..09a60dd40 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/AddMilestoneCommand.java @@ -0,0 +1,44 @@ +package org.navalplanner.web.planner; + +import org.navalplanner.business.planner.entities.Task; +import org.navalplanner.business.planner.entities.TaskElement; +import org.navalplanner.business.planner.entities.TaskGroup; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; + +import static org.navalplanner.web.I18nHelper._; + +@Component +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class AddMilestoneCommand implements IAddMilestoneCommand { + + private PlanningState planningState; + + @Override + public void setState(PlanningState planningState) { + this.planningState = planningState; + } + + @Override + public void doAction(IContextWithPlannerTask context, + TaskElement task) { + if (!(task instanceof TaskGroup)) { + return; + } +/* TaskGroup old = (TaskGroup) task; + if (!old.canBeMerged()) + return; + Task result = old.merge(); + context.replace(old, result); + planningState.removed(old); + planningState.added(result); */ + } + + @Override + public String getName() { + return _("Add Milestone"); + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IAddMilestoneCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IAddMilestoneCommand.java new file mode 100644 index 000000000..436a334c2 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IAddMilestoneCommand.java @@ -0,0 +1,10 @@ +package org.navalplanner.web.planner; + +import org.navalplanner.business.planner.entities.TaskElement; +import org.zkoss.ganttz.extensions.ICommandOnTask; + +public interface IAddMilestoneCommand extends ICommandOnTask { + + public void setState(PlanningState planningState); + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java index 47df86f1a..ceb5a90d7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java @@ -83,6 +83,10 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { mergeCommand.setState(planningState); configuration.addCommandOnTask(mergeCommand); + IAddMilestoneCommand addMilestoneCommand = getAddMilestoneCommand(); + addMilestoneCommand.setState(planningState); + configuration.addCommandOnTask(addMilestoneCommand); + IEditTaskCommand editTaskCommand = getEditTaskCommand(); editTaskCommand.setEditTaskController(editTaskController); configuration.setEditTaskCommand(editTaskCommand); @@ -168,6 +172,8 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { protected abstract IMergeTaskCommand getMergeTaskCommand(); + protected abstract IAddMilestoneCommand getAddMilestoneCommand(); + protected abstract IEditTaskCommand getEditTaskCommand(); protected abstract ICalendarAllocationCommand getCalendarAllocationCommand(); diff --git a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml index c92e99c8a..59fdc6027 100644 --- a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml +++ b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml @@ -23,6 +23,7 @@ + diff --git a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css index 90917650c..7fc741cb3 100644 --- a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css +++ b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css @@ -196,6 +196,17 @@ zkTasklist.GANTT_PANEL_LEFT = 300 background-color: transparent !important; } +.milestone_end { + background-image: + url("/navalplanner-webapp/zkau/web/ganttz/img/milestone2.png"); + height: 15px; + width: 15px; + float: right; + position:relative; + left: 8px; + top: -3px; +} + .row .closed { border-top: solid black 2px; }