simplified mote selection in visualizer skins
This commit is contained in:
parent
b34e92dfba
commit
faf2943e02
3 changed files with 22 additions and 60 deletions
|
@ -203,9 +203,10 @@ public class Visualizer extends VisPlugin {
|
||||||
String[] skins = gui.getProjectConfig().getStringArrayValue(Visualizer.class, "SKINS");
|
String[] skins = gui.getProjectConfig().getStringArrayValue(Visualizer.class, "SKINS");
|
||||||
if (skins != null) {
|
if (skins != null) {
|
||||||
for (String skinClass: skins) {
|
for (String skinClass: skins) {
|
||||||
logger.info("Registering external visualizer skin: " + skinClass);
|
|
||||||
Class<? extends VisualizerSkin> skin = gui.tryLoadClass(this, VisualizerSkin.class, skinClass);
|
Class<? extends VisualizerSkin> skin = gui.tryLoadClass(this, VisualizerSkin.class, skinClass);
|
||||||
registerVisualizerSkin(skin);
|
if (registerVisualizerSkin(skin)) {
|
||||||
|
logger.info("Registered external visualizer skin: " + skinClass);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,6 +413,7 @@ public class Visualizer extends VisPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleMouseMove(e, true);
|
handleMouseMove(e, true);
|
||||||
|
repaint();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -597,11 +599,12 @@ public class Visualizer extends VisPlugin {
|
||||||
moteMenuActions.remove(menuAction);
|
moteMenuActions.remove(menuAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerVisualizerSkin(Class<? extends VisualizerSkin> skin) {
|
public static boolean registerVisualizerSkin(Class<? extends VisualizerSkin> skin) {
|
||||||
if (visualizerSkins.contains(skin)) {
|
if (visualizerSkins.contains(skin)) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
visualizerSkins.add(skin);
|
visualizerSkins.add(skin);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void unregisterVisualizerSkin(Class<? extends VisualizerSkin> skin) {
|
public static void unregisterVisualizerSkin(Class<? extends VisualizerSkin> skin) {
|
||||||
|
@ -1102,6 +1105,13 @@ public class Visualizer extends VisPlugin {
|
||||||
logger.fatal("Drag and drop not implemented: " + file);
|
logger.fatal("Drag and drop not implemented: " + file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Selected mote
|
||||||
|
*/
|
||||||
|
public Mote getSelectedMote() {
|
||||||
|
return clickedMote;
|
||||||
|
}
|
||||||
|
|
||||||
public Collection<Element> getConfigXML() {
|
public Collection<Element> getConfigXML() {
|
||||||
ArrayList<Element> config = new ArrayList<Element>();
|
ArrayList<Element> config = new ArrayList<Element>();
|
||||||
Element element;
|
Element element;
|
||||||
|
|
|
@ -35,9 +35,6 @@ import java.awt.Color;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.awt.event.MouseListener;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
@ -59,22 +56,6 @@ public class DGRMVisualizerSkin implements VisualizerSkin {
|
||||||
private Simulation simulation = null;
|
private Simulation simulation = null;
|
||||||
private Visualizer visualizer = null;
|
private Visualizer visualizer = null;
|
||||||
|
|
||||||
private Mote selectedMote = null;
|
|
||||||
|
|
||||||
private MouseListener selectMoteMouseListener = new MouseAdapter() {
|
|
||||||
public void mouseClicked(MouseEvent e) {
|
|
||||||
Mote[] motes = visualizer.findMotesAtPosition(e.getX(), e.getY());
|
|
||||||
if (motes == null || motes.length == 0) {
|
|
||||||
selectedMote = null;
|
|
||||||
visualizer.repaint();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
selectedMote = motes[0];
|
|
||||||
visualizer.repaint();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public void setActive(Simulation simulation, Visualizer vis) {
|
public void setActive(Simulation simulation, Visualizer vis) {
|
||||||
if (!(simulation.getRadioMedium() instanceof DirectedGraphMedium)) {
|
if (!(simulation.getRadioMedium() instanceof DirectedGraphMedium)) {
|
||||||
logger.fatal("Cannot activate DGRM skin for unknown radio medium: " + simulation.getRadioMedium());
|
logger.fatal("Cannot activate DGRM skin for unknown radio medium: " + simulation.getRadioMedium());
|
||||||
|
@ -82,9 +63,6 @@ public class DGRMVisualizerSkin implements VisualizerSkin {
|
||||||
}
|
}
|
||||||
this.simulation = simulation;
|
this.simulation = simulation;
|
||||||
this.visualizer = vis;
|
this.visualizer = vis;
|
||||||
|
|
||||||
/* Register mouse listener */
|
|
||||||
visualizer.getCurrentCanvas().addMouseListener(selectMoteMouseListener);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInactive() {
|
public void setInactive() {
|
||||||
|
@ -92,12 +70,10 @@ public class DGRMVisualizerSkin implements VisualizerSkin {
|
||||||
/* Skin was never activated */
|
/* Skin was never activated */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove mouse listener */
|
|
||||||
visualizer.getCurrentCanvas().removeMouseListener(selectMoteMouseListener);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color[] getColorOf(Mote mote) {
|
public Color[] getColorOf(Mote mote) {
|
||||||
|
Mote selectedMote = visualizer.getSelectedMote();
|
||||||
if (mote == selectedMote) {
|
if (mote == selectedMote) {
|
||||||
return new Color[] { Color.CYAN };
|
return new Color[] { Color.CYAN };
|
||||||
}
|
}
|
||||||
|
@ -105,6 +81,7 @@ public class DGRMVisualizerSkin implements VisualizerSkin {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void paintBeforeMotes(Graphics g) {
|
public void paintBeforeMotes(Graphics g) {
|
||||||
|
Mote selectedMote = visualizer.getSelectedMote();
|
||||||
if (simulation == null
|
if (simulation == null
|
||||||
|| selectedMote == null
|
|| selectedMote == null
|
||||||
|| selectedMote.getInterfaces().getRadio() == null) {
|
|| selectedMote.getInterfaces().getRadio() == null) {
|
||||||
|
|
|
@ -83,29 +83,8 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
private Visualizer visualizer = null;
|
private Visualizer visualizer = null;
|
||||||
private UDGM radioMedium = null;
|
private UDGM radioMedium = null;
|
||||||
|
|
||||||
private Mote selectedMote = null;
|
|
||||||
|
|
||||||
private Box top, ratioRX, ratioTX, rangeTX, rangeINT;
|
private Box top, ratioRX, ratioTX, rangeTX, rangeINT;
|
||||||
|
|
||||||
private MouseListener selectMoteMouseListener = new MouseAdapter() {
|
|
||||||
public void mousePressed(MouseEvent e) {
|
|
||||||
Mote[] motes = visualizer.findMotesAtPosition(e.getX(), e.getY());
|
|
||||||
if (motes == null || motes.length == 0) {
|
|
||||||
selectedMote = null;
|
|
||||||
rangeTX.setVisible(false);
|
|
||||||
rangeINT.setVisible(false);
|
|
||||||
ratioRX.setVisible(false);
|
|
||||||
ratioTX.setVisible(false);
|
|
||||||
top.setVisible(false);
|
|
||||||
visualizer.repaint();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
selectedMote = motes[0];
|
|
||||||
visualizer.repaint();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public void setActive(Simulation simulation, Visualizer vis) {
|
public void setActive(Simulation simulation, Visualizer vis) {
|
||||||
if (!(simulation.getRadioMedium() instanceof UDGM)) {
|
if (!(simulation.getRadioMedium() instanceof UDGM)) {
|
||||||
logger.fatal("Cannot activate UDGM skin for unknown radio medium: " + simulation.getRadioMedium());
|
logger.fatal("Cannot activate UDGM skin for unknown radio medium: " + simulation.getRadioMedium());
|
||||||
|
@ -193,9 +172,6 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Register mouse listener */
|
|
||||||
visualizer.getCurrentCanvas().addMouseListener(selectMoteMouseListener);
|
|
||||||
|
|
||||||
/* Register menu actions */
|
/* Register menu actions */
|
||||||
visualizer.registerSimulationMenuAction(RangeMenuAction.class);
|
visualizer.registerSimulationMenuAction(RangeMenuAction.class);
|
||||||
visualizer.registerSimulationMenuAction(SuccessRatioMenuAction.class);
|
visualizer.registerSimulationMenuAction(SuccessRatioMenuAction.class);
|
||||||
|
@ -245,9 +221,6 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove mouse listener */
|
|
||||||
visualizer.getCurrentCanvas().removeMouseListener(selectMoteMouseListener);
|
|
||||||
|
|
||||||
/* Remove spinners etc */
|
/* Remove spinners etc */
|
||||||
visualizer.getCurrentCanvas().remove(top);
|
visualizer.getCurrentCanvas().remove(top);
|
||||||
|
|
||||||
|
@ -257,6 +230,7 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color[] getColorOf(Mote mote) {
|
public Color[] getColorOf(Mote mote) {
|
||||||
|
Mote selectedMote = visualizer.getSelectedMote();
|
||||||
if (mote == selectedMote) {
|
if (mote == selectedMote) {
|
||||||
return new Color[] { Color.CYAN };
|
return new Color[] { Color.CYAN };
|
||||||
}
|
}
|
||||||
|
@ -264,6 +238,7 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void paintBeforeMotes(Graphics g) {
|
public void paintBeforeMotes(Graphics g) {
|
||||||
|
Mote selectedMote = visualizer.getSelectedMote();
|
||||||
if (simulation == null
|
if (simulation == null
|
||||||
|| selectedMote == null
|
|| selectedMote == null
|
||||||
|| selectedMote.getInterfaces().getRadio() == null) {
|
|| selectedMote.getInterfaces().getRadio() == null) {
|
||||||
|
|
Loading…
Reference in a new issue