From 3ada5671ef60bdda540a7f3febe2b176247752e1 Mon Sep 17 00:00:00 2001 From: Enrico Joerns Date: Fri, 6 Jun 2014 11:31:36 +0200 Subject: [PATCH] [cooja] plugins/Visualizer: Fixed node selection in Delete menu handling Previously if multiple motes were selected and the context menu of a non-selected mote was used to delete, not the clicked mote but the other selected ones were removed. This behavior is fixed so that if another mote is clicked only this is deleted. --- .../contikios/cooja/plugins/Visualizer.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/tools/cooja/java/org/contikios/cooja/plugins/Visualizer.java b/tools/cooja/java/org/contikios/cooja/plugins/Visualizer.java index 903183203..1fc0ab410 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/Visualizer.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/Visualizer.java @@ -1584,21 +1584,25 @@ public class Visualizer extends VisPlugin implements HasQuickHelp { @Override public String getDescription(Visualizer visualizer, Mote mote) { - if (visualizer.getSelectedMotes().size() == 1) { - return "Delete " + mote; - } else { + if (visualizer.getSelectedMotes().contains(mote) && visualizer.getSelectedMotes().size() > 1) { return "Delete selected Motes"; + } else { + return "Delete " + mote; } } @Override public void doAction(Visualizer visualizer, Mote mote) { - if (visualizer.getSelectedMotes().size() == 1) { - mote.getSimulation().removeMote(mote); - } else { - for (Mote m: visualizer.getSelectedMotes()) { - mote.getSimulation().removeMote(m); - } + + /* If the currently clicked mote is note in the current mote selection, + * select it exclusively */ + if (!visualizer.getSelectedMotes().contains(mote)) { + visualizer.getSelectedMotes().clear(); + visualizer.getSelectedMotes().add(mote); + } + + for (Mote m : visualizer.getSelectedMotes()) { + mote.getSimulation().removeMote(m); } } };