From 178b4ea5d150555aef4ccfbb810401c7d83a39b7 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Thu, 27 May 2010 18:27:55 +0200 Subject: [PATCH] ItEr58S10CUAsignacionRecursosLimitantesItEr57S11: Move queue element position inside queue or between queues --- .../LimitingResourceQueueModel.java | 8 +++++ .../LimitingResourcesController.java | 35 ++++++++++--------- .../LimitingResourcesPanel.java | 5 +++ .../web/limitingresources/QueueComponent.java | 14 +++++++- 4 files changed, 45 insertions(+), 17 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java index 7e479bd3a..49caa1a18 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java @@ -750,9 +750,17 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { Validate.notNull(queue); Validate.notNull(startTime); + removeDaysAssignmentsIfAny(beingEdited); return assignLimitingResourceQueueElementToQueueAt(beingEdited, queue, startTime); } + public void removeDaysAssignmentsIfAny(LimitingResourceQueueElement element) { + final ResourceAllocation resourceAllocation = element.getResourceAllocation(); + if (!resourceAllocation.getAssignments().isEmpty()) { + resourceAllocation.removeLimitingDayAssignments(); + } + } + @Override public void init(LimitingResourceQueueElement element) { beingEdited = retrieveQueueElementFromModel(element); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java index 13627a942..343f7c517 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java @@ -372,7 +372,7 @@ public class LimitingResourcesController implements Composer { @Override public void onEvent(Event event) throws Exception { - manualAllocateLimitingResourceQueueElement(element); + showManualAllocationWindow(element.getOriginal()); } }); return result; @@ -430,21 +430,6 @@ public class LimitingResourcesController implements Composer { } } - private void manualAllocateLimitingResourceQueueElement(LimitingResourceQueueElementDTO dto) { - LimitingResourceQueueElement element = dto.getOriginal(); - try { - setAssignableQueues(element); - limitingResourceQueueModel.init(element); - manualAllocationWindow.doModal(); - } catch (SuspendNotAllowedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - private void showErrorMessage(String error) { try { Messagebox.show(error, _("Error"), Messagebox.OK, Messagebox.ERROR); @@ -466,6 +451,20 @@ public class LimitingResourcesController implements Composer { } + private void showManualAllocationWindow(LimitingResourceQueueElement element) { + try { + setAssignableQueues(element); + limitingResourceQueueModel.init(element); + manualAllocationWindow.doModal(); + } catch (SuspendNotAllowedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + public List getLimitingResourceQueues() { return limitingResourceQueueModel.getLimitingResourceQueues(); } @@ -766,4 +765,8 @@ public class LimitingResourcesController implements Composer { return "{\"color\": \"blue\", \"bgcolor\": \"white\"}"; } + public void moveTask(LimitingResourceQueueElement element) { + showManualAllocationWindow(element); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java index f2dd38812..baa0cb460 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java @@ -360,4 +360,9 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { dependencyList.removeDependencyComponents(task); } + public void moveQueueTask(QueueTask queueTask) { + limitingResourcesController.moveTask(queueTask.getLimitingResourceQueueElement()); + queueTask.detach(); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java index 677e1c623..4cccdcb5e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/QueueComponent.java @@ -258,10 +258,22 @@ public class QueueComponent extends XulElement implements unnasign(choosen); } }); + menuBuilder.item(_("Move"), "", + new ItemAction() { + @Override + public void onEvent(QueueTask choosen, Event event) { + moveQueueTask(choosen); + } + }); divElement.setContext(menuBuilder.createWithoutSettingContext()); } } + private void moveQueueTask(QueueTask queueTask) { + LimitingResourcesPanel panel = LimitingResourcesPanel.getLimitingResourcesPanel(this); + panel.moveQueueTask(queueTask); + } + private void unnasign(QueueTask choosen) { final LimitingResourcesPanel panel = LimitingResourcesPanel .getLimitingResourcesPanel(choosen.getParent()); @@ -279,4 +291,4 @@ public class QueueComponent extends XulElement implements appendContextMenus(); } -} \ No newline at end of file +}