}));
menuRepeater.add(new ContextMenuEntry(menuRepeater.newChildId(), "gantt.contextMenu.newSubActivity") {
@Override
void onSubmit()
{
final GanttTaskImpl root = (GanttTaskImpl) ganttChartData.getRootObject();
final Integer nextId = root.getNextId();
ganttObject.addChild(new GanttTaskImpl(nextId).setVisible(true).setTitle(getString("untitled")));
final Set<Serializable> openNodes = getOpenNodes();
openNodes.add(ganttObject.getId());
refreshTreeTable();
setOpenNodes(openNodes);
form.getParentPage().refresh();
};
});
menuRepeater.add(new ContextMenuEntry(menuRepeater.newChildId(), new Model<String>() {
@Override
public String getObject()
{
if (clipboard == ganttObject) {
return PFUserContext.getLocalizedString("gantt.action.moveToTop");
} else {
return PFUserContext.getLocalizedString("gantt.action.move");
}
};
}) {
@Override
public boolean isVisible()
{
if (clipboard == null) {
return false;
}
if (clipboard != ganttObject) {
return true;
}
final GanttTaskImpl root = (GanttTaskImpl) ganttChartData.getRootObject();
final GanttTask parent = root.findParent(ganttObject.getId());
return (root != parent);
}
@Override
void onSubmit()
{
if (clipboard == null) {
return;
}
final GanttTaskImpl root = (GanttTaskImpl) ganttChartData.getRootObject();
final GanttTask parent = root.findParent(clipboard.getId());
final TaskDO task = taskDao.getTaskTree().getTaskById((Integer) clipboard.getId());
parent.removeChild(clipboard);
if (clipboard == ganttObject) {
// Move to top level:
root.addChild(ganttObject);
final TaskDO rootTask = form.getData().getTask();
if (rootTask != null && task != null) {
task.setParentTask(rootTask);
taskDao.update(task);
}
} else {
// Move as a child of this Gantt activity:
ganttObject.addChild(clipboard);
final TaskDO parentTask = taskDao.getTaskTree().getTaskById((Integer) ganttObject.getId());
if (parentTask != null && task != null) {
task.setParentTask(parentTask);
taskDao.update(task);
}
getOpenNodes().add(ganttObject.getId());
}
final Set<Serializable> openNodes = getOpenNodes();
refreshTreeTable();
setOpenNodes(openNodes);
form.getParentPage().refresh();
};
@Override
protected void onBeforeRender()
{
if (clipboard != null) {
final TaskDO task = taskDao.getTaskTree().getTaskById((Integer) clipboard.getId());
if (task != null && onClick == null) {
// Question for safety before moving a task.
setOnClick("if (!showMoveTaskQuestionDialog()) return;");
}
}
super.onBeforeRender();
}
});
menuRepeater.add(new ContextMenuEntry(menuRepeater.newChildId(), "delete") {
@Override
public boolean isVisible()
{
return task == null;
}
@Override
void onSubmit()
{
final GanttTaskImpl root = (GanttTaskImpl) ganttChartData.getRootObject();
final GanttTask parent = root.findParent(ganttObject.getId());
parent.removeChild(ganttObject);
final Set<Serializable> openNodes = getOpenNodes();
refreshTreeTable();
setOpenNodes(openNodes);
form.getParentPage().refresh();
};
}.setOnClick("if (!showDeleteQuestionDialog()) return;"));
menuRepeater.add(new ContextMenuEntry(menuRepeater.newChildId(), "gantt.contextMenu.saveAsTask") {
@Override
public boolean isVisible()
{
return task == null;
}
@Override
void onSubmit()
{
final GanttTaskImpl root = (GanttTaskImpl) ganttChartData.getRootObject();
final GanttTask parent = root.findParent(ganttObject.getId());
final TaskDO parentTask = taskDao.getTaskTree().getTaskById((Integer) parent.getId());
if (parentTask == null) {
throw new UserException("gantt.error.parentObjectIsNotAPFTask");
}
TaskDO task = taskDao.getTaskTree().getTaskById((Integer) ganttObject.getId());