diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuBuilder.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuBuilder.java index 3b710a4ec..f1c7d63c5 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuBuilder.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuBuilder.java @@ -35,6 +35,7 @@ import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.OpenEvent; import org.zkoss.zul.Menuitem; import org.zkoss.zul.Menupopup; +import org.zkoss.zul.Menuseparator; import org.zkoss.zul.impl.api.XulElement; public class MenuBuilder { @@ -121,16 +122,20 @@ public class MenuBuilder { } }); for (final Item item : items) { - Menuitem menuItem = item.createMenuItem(); - menuItem.addEventListener("onClick", new EventListener() { - - @Override - public void onEvent(Event event) throws Exception { - ItemAction action = item.action; - action.onEvent(referenced, event); - } - }); - result.appendChild(menuItem); + if (!item.name.equals("separator")) { + Menuitem menuItem = item.createMenuItem(); + menuItem.addEventListener("onClick", new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + ItemAction action = item.action; + action.onEvent(referenced, event); + } + }); + result.appendChild(menuItem); + } else { + Menuseparator separator = new Menuseparator(); + result.appendChild(separator); + } } insertInRootComponent(result); if (setContext) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index 10770aac8..8c75af9e8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -130,6 +130,8 @@ import org.zkoss.ganttz.adapters.PlannerConfiguration.IPrintAction; import org.zkoss.ganttz.adapters.PlannerConfiguration.IReloadChartListener; import org.zkoss.ganttz.data.GanttDiagramGraph.IGraphChangeListener; import org.zkoss.ganttz.extensions.ICommand; +import org.zkoss.ganttz.extensions.ICommandOnTask; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.zoom.DetailItem; import org.zkoss.ganttz.timetracker.zoom.IDetailItemModificator; @@ -326,6 +328,31 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { } } + private static class NullSeparatorCommandOnTask implements + ICommandOnTask { + + @Override + public String getName() { + return "separator"; + } + + @Override + public String getIcon() { + return null; + } + + @Override + public boolean isApplicableTo(T task) { + return true; + } + + @Override + public void doAction(IContextWithPlannerTask context, T task) { + // Do nothing + } + + } + @Override @Transactional(readOnly = true) public void setConfigurationToPlanner(final Planner planner, Order order, @@ -354,23 +381,27 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { configuration.addGlobalCommand(buildReassigningCommand()); - final IResourceAllocationCommand resourceAllocationCommand = - buildResourceAllocationCommand(editTaskController); - configuration.addCommandOnTask(resourceAllocationCommand); + NullSeparatorCommandOnTask separator = new NullSeparatorCommandOnTask(); + + final IResourceAllocationCommand resourceAllocationCommand = buildResourceAllocationCommand(editTaskController); + + final IAdvanceAssignmentPlanningCommand advanceAssignmentPlanningCommand = buildAdvanceAssignmentPlanningCommand(advanceAssignmentPlanningController); + + // Build context menu configuration.addCommandOnTask(buildMilestoneCommand()); configuration.addCommandOnTask(buildDeleteMilestoneCommand()); - configuration - .addCommandOnTask(buildCalendarAllocationCommand(calendarAllocationController)); + configuration.addCommandOnTask(separator); configuration .addCommandOnTask(buildTaskPropertiesCommand(editTaskController)); - - final IAdvanceAssignmentPlanningCommand advanceAssignmentPlanningCommand = - buildAdvanceAssignmentPlanningCommand(advanceAssignmentPlanningController); + configuration.addCommandOnTask(resourceAllocationCommand); + configuration + .addCommandOnTask(buildSubcontractCommand(editTaskController)); + configuration + .addCommandOnTask(buildCalendarAllocationCommand(calendarAllocationController)); + configuration.addCommandOnTask(separator); configuration.addCommandOnTask(advanceAssignmentPlanningCommand); configuration .addCommandOnTask(buildAdvanceConsolidationCommand(advanceConsolidationController)); - configuration - .addCommandOnTask(buildSubcontractCommand(editTaskController)); configuration.setDoubleClickCommand(resourceAllocationCommand); addPrintSupport(configuration, order);