[cooja] Reformatted Visualizer and skins code
This commit is contained in:
parent
ea979fa027
commit
cef3c4079d
4 changed files with 399 additions and 321 deletions
|
@ -26,7 +26,6 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.contikios.mrm;
|
package org.contikios.mrm;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
@ -51,6 +50,7 @@ import org.contikios.mrm.ChannelModel.TxPair;
|
||||||
@ClassDescription("Radio environment (MRM)")
|
@ClassDescription("Radio environment (MRM)")
|
||||||
@SupportedArguments(radioMediums = {MRM.class})
|
@SupportedArguments(radioMediums = {MRM.class})
|
||||||
public class MRMVisualizerSkin implements VisualizerSkin {
|
public class MRMVisualizerSkin implements VisualizerSkin {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(MRMVisualizerSkin.class);
|
private static final Logger logger = Logger.getLogger(MRMVisualizerSkin.class);
|
||||||
|
|
||||||
private Simulation simulation = null;
|
private Simulation simulation = null;
|
||||||
|
@ -128,6 +128,7 @@ public class MRMVisualizerSkin implements VisualizerSkin {
|
||||||
public Radio getFromRadio() {
|
public Radio getFromRadio() {
|
||||||
return selectedMote.getInterfaces().getRadio();
|
return selectedMote.getInterfaces().getRadio();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Radio getToRadio() {
|
public Radio getToRadio() {
|
||||||
return dRadio;
|
return dRadio;
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.contikios.cooja.plugins;
|
package org.contikios.cooja.plugins;
|
||||||
|
|
||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
|
@ -139,6 +138,7 @@ import org.contikios.cooja.plugins.skins.UDGMVisualizerSkin;
|
||||||
@ClassDescription("Network")
|
@ClassDescription("Network")
|
||||||
@PluginType(PluginType.SIM_STANDARD_PLUGIN)
|
@PluginType(PluginType.SIM_STANDARD_PLUGIN)
|
||||||
public class Visualizer extends VisPlugin implements HasQuickHelp {
|
public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private static final Logger logger = Logger.getLogger(Visualizer.class);
|
private static final Logger logger = Logger.getLogger(Visualizer.class);
|
||||||
|
|
||||||
|
@ -186,8 +186,9 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
private Selection selection;
|
private Selection selection;
|
||||||
|
|
||||||
/* Visualizers */
|
/* Visualizers */
|
||||||
private static final ArrayList<Class<? extends VisualizerSkin>> visualizerSkins =
|
private static final ArrayList<Class<? extends VisualizerSkin>> visualizerSkins
|
||||||
new ArrayList<>();
|
= new ArrayList<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
/* Register default visualizer skins */
|
/* Register default visualizer skins */
|
||||||
registerVisualizerSkin(IDVisualizerSkin.class);
|
registerVisualizerSkin(IDVisualizerSkin.class);
|
||||||
|
@ -213,20 +214,27 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
|
|
||||||
/* Popup menu */
|
/* Popup menu */
|
||||||
public static interface SimulationMenuAction {
|
public static interface SimulationMenuAction {
|
||||||
|
|
||||||
public boolean isEnabled(Visualizer visualizer, Simulation simulation);
|
public boolean isEnabled(Visualizer visualizer, Simulation simulation);
|
||||||
|
|
||||||
public String getDescription(Visualizer visualizer, Simulation simulation);
|
public String getDescription(Visualizer visualizer, Simulation simulation);
|
||||||
|
|
||||||
public void doAction(Visualizer visualizer, Simulation simulation);
|
public void doAction(Visualizer visualizer, Simulation simulation);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static interface MoteMenuAction {
|
public static interface MoteMenuAction {
|
||||||
|
|
||||||
public boolean isEnabled(Visualizer visualizer, Mote mote);
|
public boolean isEnabled(Visualizer visualizer, Mote mote);
|
||||||
|
|
||||||
public String getDescription(Visualizer visualizer, Mote mote);
|
public String getDescription(Visualizer visualizer, Mote mote);
|
||||||
|
|
||||||
public void doAction(Visualizer visualizer, Mote mote);
|
public void doAction(Visualizer visualizer, Mote mote);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayList<Class<? extends SimulationMenuAction>> simulationMenuActions =
|
private ArrayList<Class<? extends SimulationMenuAction>> simulationMenuActions
|
||||||
new ArrayList<>();
|
= new ArrayList<>();
|
||||||
private ArrayList<Class<? extends MoteMenuAction>> moteMenuActions =
|
private ArrayList<Class<? extends MoteMenuAction>> moteMenuActions
|
||||||
new ArrayList<>();
|
= new ArrayList<>();
|
||||||
|
|
||||||
public Visualizer(Simulation simulation, Cooja gui) {
|
public Visualizer(Simulation simulation, Cooja gui) {
|
||||||
super("Network", gui);
|
super("Network", gui);
|
||||||
|
@ -254,9 +262,11 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
viewMenu.removeAll();
|
viewMenu.removeAll();
|
||||||
populateSkinMenu(viewMenu);
|
populateSkinMenu(viewMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void menuDeselected(MenuEvent e) {
|
public void menuDeselected(MenuEvent e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void menuCanceled(MenuEvent e) {
|
public void menuCanceled(MenuEvent e) {
|
||||||
}
|
}
|
||||||
|
@ -308,6 +318,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
/* Main canvas */
|
/* Main canvas */
|
||||||
canvas = new JPanel() {
|
canvas = new JPanel() {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void paintComponent(Graphics g) {
|
public void paintComponent(Graphics g) {
|
||||||
super.paintComponent(g);
|
super.paintComponent(g);
|
||||||
|
@ -355,6 +366,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void moteWasRemoved(Mote mote) {
|
public void moteWasRemoved(Mote mote) {
|
||||||
Position pos = mote.getInterfaces().getPosition();
|
Position pos = mote.getInterfaces().getPosition();
|
||||||
|
@ -395,7 +407,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
/* Toggle highlight state */
|
/* Toggle highlight state */
|
||||||
if (highlightedMotes.contains(mote)) {
|
if (highlightedMotes.contains(mote)) {
|
||||||
highlightedMotes.remove(mote);
|
highlightedMotes.remove(mote);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
highlightedMotes.add(mote);
|
highlightedMotes.add(mote);
|
||||||
}
|
}
|
||||||
timer.setDelay(timer.getDelay() - 1);
|
timer.setDelay(timer.getDelay() - 1);
|
||||||
|
@ -433,6 +446,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
handleMousePress(e);
|
handleMousePress(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(MouseEvent e) {
|
public void mouseReleased(MouseEvent e) {
|
||||||
if (e.isPopupTrigger()) {
|
if (e.isPopupTrigger()) {
|
||||||
|
@ -454,7 +468,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
|
|
||||||
if (rot > 0) {
|
if (rot > 0) {
|
||||||
zoomToFactor(zoomFactor() / 1.2, new Point(x, y));
|
zoomToFactor(zoomFactor() / 1.2, new Point(x, y));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
zoomToFactor(zoomFactor() * 1.2, new Point(x, y));
|
zoomToFactor(zoomFactor() * 1.2, new Point(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,29 +493,36 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
public void dragEnter(DropTargetDragEvent dtde) {
|
public void dragEnter(DropTargetDragEvent dtde) {
|
||||||
if (acceptOrRejectDrag(dtde)) {
|
if (acceptOrRejectDrag(dtde)) {
|
||||||
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
|
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
dtde.rejectDrag();
|
dtde.rejectDrag();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dragExit(DropTargetEvent dte) {
|
public void dragExit(DropTargetEvent dte) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dropActionChanged(DropTargetDragEvent dtde) {
|
public void dropActionChanged(DropTargetDragEvent dtde) {
|
||||||
if (acceptOrRejectDrag(dtde)) {
|
if (acceptOrRejectDrag(dtde)) {
|
||||||
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
|
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
dtde.rejectDrag();
|
dtde.rejectDrag();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dragOver(DropTargetDragEvent dtde) {
|
public void dragOver(DropTargetDragEvent dtde) {
|
||||||
if (acceptOrRejectDrag(dtde)) {
|
if (acceptOrRejectDrag(dtde)) {
|
||||||
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
|
dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
dtde.rejectDrag();
|
dtde.rejectDrag();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drop(DropTargetDropEvent dtde) {
|
public void drop(DropTargetDropEvent dtde) {
|
||||||
Transferable transferable = dtde.getTransferable();
|
Transferable transferable = dtde.getTransferable();
|
||||||
|
@ -537,6 +559,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
|
|
||||||
handleDropFile(file, dtde.getLocation());
|
handleDropFile(file, dtde.getLocation());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean acceptOrRejectDrag(DropTargetDragEvent dtde) {
|
private boolean acceptOrRejectDrag(DropTargetDragEvent dtde) {
|
||||||
Transferable transferable = dtde.getTransferable();
|
Transferable transferable = dtde.getTransferable();
|
||||||
|
|
||||||
|
@ -564,7 +587,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
file = list.get(0);
|
file = list.get(0);
|
||||||
} catch (UnsupportedFlavorException | IOException e) {
|
}
|
||||||
|
catch (UnsupportedFlavorException | IOException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,7 +625,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
VisualizerSkin newSkin = skinClass.newInstance();
|
VisualizerSkin newSkin = skinClass.newInstance();
|
||||||
newSkin.setActive(Visualizer.this.simulation, Visualizer.this);
|
newSkin.setActive(Visualizer.this.simulation, Visualizer.this);
|
||||||
currentSkins.add(0, newSkin);
|
currentSkins.add(0, newSkin);
|
||||||
} catch (InstantiationException | IllegalAccessException e1) {
|
}
|
||||||
|
catch (InstantiationException | IllegalAccessException e1) {
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
repaint();
|
repaint();
|
||||||
|
@ -620,8 +645,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
if (skin.isEmpty()) {
|
if (skin.isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Class<? extends VisualizerSkin> skinClass =
|
Class<? extends VisualizerSkin> skinClass
|
||||||
simulation.getCooja().tryLoadClass(this, VisualizerSkin.class, skin);
|
= simulation.getCooja().tryLoadClass(this, VisualizerSkin.class, skin);
|
||||||
generateAndActivateSkin(skinClass);
|
generateAndActivateSkin(skinClass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -703,7 +728,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
});
|
});
|
||||||
menu.add(menuItem);
|
menu.add(menuItem);
|
||||||
}
|
}
|
||||||
} catch (InstantiationException | IllegalAccessException e1) {
|
}
|
||||||
|
catch (InstantiationException | IllegalAccessException e1) {
|
||||||
logger.fatal("Error: " + e1.getMessage(), e1);
|
logger.fatal("Error: " + e1.getMessage(), e1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -725,7 +751,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
});
|
});
|
||||||
menu.add(menuItem);
|
menu.add(menuItem);
|
||||||
}
|
}
|
||||||
} catch (InstantiationException | IllegalAccessException e1) {
|
}
|
||||||
|
catch (InstantiationException | IllegalAccessException e1) {
|
||||||
logger.fatal("Error: " + e1.getMessage(), e1);
|
logger.fatal("Error: " + e1.getMessage(), e1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -748,6 +775,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean showMoteToMoteRelations = true;
|
private boolean showMoteToMoteRelations = true;
|
||||||
|
|
||||||
private void populateSkinMenu(MenuElement menu) {
|
private void populateSkinMenu(MenuElement menu) {
|
||||||
/* Mote-to-mote relations */
|
/* Mote-to-mote relations */
|
||||||
JCheckBoxMenuItem moteRelationsItem = new JCheckBoxMenuItem("Mote relations", showMoteToMoteRelations);
|
JCheckBoxMenuItem moteRelationsItem = new JCheckBoxMenuItem("Mote relations", showMoteToMoteRelations);
|
||||||
|
@ -795,8 +823,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Class<VisualizerSkin> skinClass =
|
Class<VisualizerSkin> skinClass
|
||||||
(Class<VisualizerSkin>) menuItem.getClientProperty("skinclass");
|
= (Class<VisualizerSkin>) menuItem.getClientProperty("skinclass");
|
||||||
if (skinClass == null) {
|
if (skinClass == null) {
|
||||||
logger.fatal("Unknown visualizer skin class: " + skinClass);
|
logger.fatal("Unknown visualizer skin class: " + skinClass);
|
||||||
return;
|
return;
|
||||||
|
@ -805,7 +833,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
if (menuItem.isSelected()) {
|
if (menuItem.isSelected()) {
|
||||||
/* Create and activate new skin */
|
/* Create and activate new skin */
|
||||||
generateAndActivateSkin(skinClass);
|
generateAndActivateSkin(skinClass);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
/* Deactivate skin */
|
/* Deactivate skin */
|
||||||
VisualizerSkin skinToDeactivate = null;
|
VisualizerSkin skinToDeactivate = null;
|
||||||
for (VisualizerSkin skin : currentSkins) {
|
for (VisualizerSkin skin : currentSkins) {
|
||||||
|
@ -1014,7 +1043,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
private void beginMoveRequest(Mote motesToMove, boolean withTiming, boolean confirm) {
|
private void beginMoveRequest(Mote motesToMove, boolean withTiming, boolean confirm) {
|
||||||
if (withTiming) {
|
if (withTiming) {
|
||||||
moveStartTime = System.currentTimeMillis();
|
moveStartTime = System.currentTimeMillis();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
moveStartTime = -1;
|
moveStartTime = -1;
|
||||||
}
|
}
|
||||||
mouseActionState = MotesActionState.DEFAULT_PRESS;
|
mouseActionState = MotesActionState.DEFAULT_PRESS;
|
||||||
|
@ -1157,11 +1187,13 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
g.setColor(MOVE_COLOR);
|
g.setColor(MOVE_COLOR);
|
||||||
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
||||||
2 * MOTE_RADIUS);
|
2 * MOTE_RADIUS);
|
||||||
} else if (!highlightedMotes.isEmpty() && highlightedMotes.contains(mote)) {
|
}
|
||||||
|
else if (!highlightedMotes.isEmpty() && highlightedMotes.contains(mote)) {
|
||||||
g.setColor(HIGHLIGHT_COLOR);
|
g.setColor(HIGHLIGHT_COLOR);
|
||||||
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
||||||
2 * MOTE_RADIUS);
|
2 * MOTE_RADIUS);
|
||||||
} else if (moteColors.length >= 2) {
|
}
|
||||||
|
else if (moteColors.length >= 2) {
|
||||||
g.setColor(moteColors[0]);
|
g.setColor(moteColors[0]);
|
||||||
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
||||||
2 * MOTE_RADIUS);
|
2 * MOTE_RADIUS);
|
||||||
|
@ -1170,7 +1202,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
g.fillOval(x - MOTE_RADIUS / 2, y - MOTE_RADIUS / 2, MOTE_RADIUS,
|
g.fillOval(x - MOTE_RADIUS / 2, y - MOTE_RADIUS / 2, MOTE_RADIUS,
|
||||||
MOTE_RADIUS);
|
MOTE_RADIUS);
|
||||||
|
|
||||||
} else if (moteColors.length >= 1) {
|
}
|
||||||
|
else if (moteColors.length >= 1) {
|
||||||
g.setColor(moteColors[0]);
|
g.setColor(moteColors[0]);
|
||||||
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
g.fillOval(x - MOTE_RADIUS, y - MOTE_RADIUS, 2 * MOTE_RADIUS,
|
||||||
2 * MOTE_RADIUS);
|
2 * MOTE_RADIUS);
|
||||||
|
@ -1183,6 +1216,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Polygon arrowPoly = new Polygon();
|
private Polygon arrowPoly = new Polygon();
|
||||||
|
|
||||||
private void drawArrow(Graphics g, int xSource, int ySource, int xDest, int yDest, int delta) {
|
private void drawArrow(Graphics g, int xSource, int ySource, int xDest, int yDest, int delta) {
|
||||||
double dx = xSource - xDest;
|
double dx = xSource - xDest;
|
||||||
double dy = ySource - yDest;
|
double dy = ySource - yDest;
|
||||||
|
@ -1245,12 +1279,14 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
/* Scale viewport */
|
/* Scale viewport */
|
||||||
if (smallX == bigX) {
|
if (smallX == bigX) {
|
||||||
scaleX = 1;
|
scaleX = 1;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
scaleX = (bigX - smallX) / (canvas.getWidth());
|
scaleX = (bigX - smallX) / (canvas.getWidth());
|
||||||
}
|
}
|
||||||
if (smallY == bigY) {
|
if (smallY == bigY) {
|
||||||
scaleY = 1;
|
scaleY = 1;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
scaleY = (bigY - smallY) / (canvas.getHeight());
|
scaleY = (bigY - smallY) / (canvas.getHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1266,8 +1302,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
SwingUtilities.invokeLater(new Runnable() {
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Position viewMid =
|
Position viewMid
|
||||||
transformPixelToPosition(canvas.getWidth()/2, canvas.getHeight()/2);
|
= transformPixelToPosition(canvas.getWidth() / 2, canvas.getHeight() / 2);
|
||||||
double motesMidX = (smallXfinal + bigXfinal) / 2.0;
|
double motesMidX = (smallXfinal + bigXfinal) / 2.0;
|
||||||
double motesMidY = (smallYfinal + bigYfinal) / 2.0;
|
double motesMidY = (smallYfinal + bigYfinal) / 2.0;
|
||||||
|
|
||||||
|
@ -1325,6 +1361,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
public Position transformPixelToPosition(Point pixelPos) {
|
public Position transformPixelToPosition(Point pixelPos) {
|
||||||
return transformPixelToPosition(pixelPos.x, pixelPos.y);
|
return transformPixelToPosition(pixelPos.x, pixelPos.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Position transformPixelToPosition(int x, int y) {
|
public Position transformPixelToPosition(int x, int y) {
|
||||||
Position position = new Position(null);
|
Position position = new Position(null);
|
||||||
position.setCoordinates(
|
position.setCoordinates(
|
||||||
|
@ -1338,12 +1375,15 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
private int transformToPixelX(double x) {
|
private int transformToPixelX(double x) {
|
||||||
return (int) (viewportTransform.getScaleX() * x + viewportTransform.getTranslateX());
|
return (int) (viewportTransform.getScaleX() * x + viewportTransform.getTranslateX());
|
||||||
}
|
}
|
||||||
|
|
||||||
private int transformToPixelY(double y) {
|
private int transformToPixelY(double y) {
|
||||||
return (int) (viewportTransform.getScaleY() * y + viewportTransform.getTranslateY());
|
return (int) (viewportTransform.getScaleY() * y + viewportTransform.getTranslateY());
|
||||||
}
|
}
|
||||||
|
|
||||||
private double transformToPositionX(int x) {
|
private double transformToPositionX(int x) {
|
||||||
return (x - viewportTransform.getTranslateX()) / viewportTransform.getScaleX();
|
return (x - viewportTransform.getTranslateX()) / viewportTransform.getScaleX();
|
||||||
}
|
}
|
||||||
|
|
||||||
private double transformToPositionY(int y) {
|
private double transformToPositionY(int y) {
|
||||||
return (y - viewportTransform.getTranslateY()) / viewportTransform.getScaleY();
|
return (y - viewportTransform.getTranslateY()) / viewportTransform.getScaleY();
|
||||||
}
|
}
|
||||||
|
@ -1372,6 +1412,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
|
|
||||||
protected boolean isDropFileAccepted(File file) {
|
protected boolean isDropFileAccepted(File file) {
|
||||||
return true; /* TODO */
|
return true; /* TODO */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleDropFile(File file, Point point) {
|
protected void handleDropFile(File file, Point point) {
|
||||||
|
@ -1410,19 +1451,19 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
double[] matrix = new double[6];
|
double[] matrix = new double[6];
|
||||||
viewportTransform.getMatrix(matrix);
|
viewportTransform.getMatrix(matrix);
|
||||||
element.setText(
|
element.setText(
|
||||||
matrix[0] + " " +
|
matrix[0] + " "
|
||||||
matrix[1] + " " +
|
+ matrix[1] + " "
|
||||||
matrix[2] + " " +
|
+ matrix[2] + " "
|
||||||
matrix[3] + " " +
|
+ matrix[3] + " "
|
||||||
matrix[4] + " " +
|
+ matrix[4] + " "
|
||||||
matrix[5]
|
+ matrix[5]
|
||||||
);
|
);
|
||||||
config.add(element);
|
config.add(element);
|
||||||
|
|
||||||
/* Hide decorations */
|
/* Hide decorations */
|
||||||
BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI();
|
BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI();
|
||||||
if (ui.getNorthPane().getPreferredSize() == null ||
|
if (ui.getNorthPane().getPreferredSize() == null
|
||||||
ui.getNorthPane().getPreferredSize().height == 0) {
|
|| ui.getNorthPane().getPreferredSize().height == 0) {
|
||||||
element = new Element("hidden");
|
element = new Element("hidden");
|
||||||
config.add(element);
|
config.add(element);
|
||||||
}
|
}
|
||||||
|
@ -1461,9 +1502,11 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
if (wanted != null) {
|
if (wanted != null) {
|
||||||
logger.warn("Could not load visualizer: " + element.getText());
|
logger.warn("Could not load visualizer: " + element.getText());
|
||||||
}
|
}
|
||||||
} else if (element.getName().equals("moterelations")) {
|
}
|
||||||
|
else if (element.getName().equals("moterelations")) {
|
||||||
showMoteToMoteRelations = true;
|
showMoteToMoteRelations = true;
|
||||||
} else if (element.getName().equals("viewport")) {
|
}
|
||||||
|
else if (element.getName().equals("viewport")) {
|
||||||
try {
|
try {
|
||||||
String[] matrix = element.getText().split(" ");
|
String[] matrix = element.getText().split(" ");
|
||||||
viewportTransform.setTransform(
|
viewportTransform.setTransform(
|
||||||
|
@ -1475,11 +1518,13 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
Double.parseDouble(matrix[5])
|
Double.parseDouble(matrix[5])
|
||||||
);
|
);
|
||||||
resetViewport = 0;
|
resetViewport = 0;
|
||||||
} catch (NumberFormatException e) {
|
}
|
||||||
|
catch (NumberFormatException e) {
|
||||||
logger.warn("Bad viewport: " + e.getMessage());
|
logger.warn("Bad viewport: " + e.getMessage());
|
||||||
resetViewport();
|
resetViewport();
|
||||||
}
|
}
|
||||||
} else if (element.getName().equals("hidden")) {
|
}
|
||||||
|
else if (element.getName().equals("hidden")) {
|
||||||
BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI();
|
BasicInternalFrameUI ui = (BasicInternalFrameUI) getUI();
|
||||||
ui.getNorthPane().setPreferredSize(new Dimension(0, 0));
|
ui.getNorthPane().setPreferredSize(new Dimension(0, 0));
|
||||||
}
|
}
|
||||||
|
@ -1502,15 +1547,18 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class ButtonClickMoteMenuAction implements MoteMenuAction {
|
protected static class ButtonClickMoteMenuAction implements MoteMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
||||||
return mote.getInterfaces().getButton() != null
|
return mote.getInterfaces().getButton() != null
|
||||||
&& !mote.getInterfaces().getButton().isPressed();
|
&& !mote.getInterfaces().getButton().isPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Mote mote) {
|
public String getDescription(Visualizer visualizer, Mote mote) {
|
||||||
return "Click button on " + mote;
|
return "Click button on " + mote;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(Visualizer visualizer, Mote mote) {
|
public void doAction(Visualizer visualizer, Mote mote) {
|
||||||
mote.getInterfaces().getButton().clickButton();
|
mote.getInterfaces().getButton().clickButton();
|
||||||
|
@ -1518,14 +1566,17 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class DeleteMoteMenuAction implements MoteMenuAction {
|
protected static class DeleteMoteMenuAction implements MoteMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Mote mote) {
|
public String getDescription(Visualizer visualizer, Mote mote) {
|
||||||
return "Delete " + mote;
|
return "Delete " + mote;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(Visualizer visualizer, Mote mote) {
|
public void doAction(Visualizer visualizer, Mote mote) {
|
||||||
mote.getSimulation().removeMote(mote);
|
mote.getSimulation().removeMote(mote);
|
||||||
|
@ -1533,14 +1584,17 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class ShowLEDMoteMenuAction implements MoteMenuAction {
|
protected static class ShowLEDMoteMenuAction implements MoteMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
||||||
return mote.getInterfaces().getLED() != null;
|
return mote.getInterfaces().getLED() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Mote mote) {
|
public String getDescription(Visualizer visualizer, Mote mote) {
|
||||||
return "Show LEDs on " + mote;
|
return "Show LEDs on " + mote;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(Visualizer visualizer, Mote mote) {
|
public void doAction(Visualizer visualizer, Mote mote) {
|
||||||
Simulation simulation = mote.getSimulation();
|
Simulation simulation = mote.getSimulation();
|
||||||
|
@ -1552,8 +1606,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
/* Extract description (input to plugin) */
|
/* Extract description (input to plugin) */
|
||||||
String desc = Cooja.getDescriptionOf(mote.getInterfaces().getLED());
|
String desc = Cooja.getDescriptionOf(mote.getInterfaces().getLED());
|
||||||
|
|
||||||
MoteInterfaceViewer viewer =
|
MoteInterfaceViewer viewer
|
||||||
(MoteInterfaceViewer) simulation.getCooja().tryStartPlugin(
|
= (MoteInterfaceViewer) simulation.getCooja().tryStartPlugin(
|
||||||
MoteInterfaceViewer.class,
|
MoteInterfaceViewer.class,
|
||||||
simulation.getCooja(),
|
simulation.getCooja(),
|
||||||
simulation,
|
simulation,
|
||||||
|
@ -1567,6 +1621,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class ShowSerialMoteMenuAction implements MoteMenuAction {
|
protected static class ShowSerialMoteMenuAction implements MoteMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
||||||
for (MoteInterface intf : mote.getInterfaces().getInterfaces()) {
|
for (MoteInterface intf : mote.getInterfaces().getInterfaces()) {
|
||||||
|
@ -1576,10 +1631,12 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Mote mote) {
|
public String getDescription(Visualizer visualizer, Mote mote) {
|
||||||
return "Show serial port on " + mote;
|
return "Show serial port on " + mote;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(Visualizer visualizer, Mote mote) {
|
public void doAction(Visualizer visualizer, Mote mote) {
|
||||||
Simulation simulation = mote.getSimulation();
|
Simulation simulation = mote.getSimulation();
|
||||||
|
@ -1598,8 +1655,8 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
/* Extract description (input to plugin) */
|
/* Extract description (input to plugin) */
|
||||||
String desc = Cooja.getDescriptionOf(serialPort);
|
String desc = Cooja.getDescriptionOf(serialPort);
|
||||||
|
|
||||||
MoteInterfaceViewer viewer =
|
MoteInterfaceViewer viewer
|
||||||
(MoteInterfaceViewer) simulation.getCooja().tryStartPlugin(
|
= (MoteInterfaceViewer) simulation.getCooja().tryStartPlugin(
|
||||||
MoteInterfaceViewer.class,
|
MoteInterfaceViewer.class,
|
||||||
simulation.getCooja(),
|
simulation.getCooja(),
|
||||||
simulation,
|
simulation,
|
||||||
|
@ -1613,14 +1670,17 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class MoveMoteMenuAction implements MoteMenuAction {
|
protected static class MoveMoteMenuAction implements MoteMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
public boolean isEnabled(Visualizer visualizer, Mote mote) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Mote mote) {
|
public String getDescription(Visualizer visualizer, Mote mote) {
|
||||||
return "Move " + mote;
|
return "Move " + mote;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(Visualizer visualizer, Mote mote) {
|
public void doAction(Visualizer visualizer, Mote mote) {
|
||||||
visualizer.beginMoveRequest(mote, false, false);
|
visualizer.beginMoveRequest(mote, false, false);
|
||||||
|
@ -1628,15 +1688,18 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class ResetViewportAction implements SimulationMenuAction {
|
protected static class ResetViewportAction implements SimulationMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(Visualizer visualizer, Simulation simulation) {
|
public void doAction(Visualizer visualizer, Simulation simulation) {
|
||||||
visualizer.resetViewport = 1;
|
visualizer.resetViewport = 1;
|
||||||
visualizer.repaint();
|
visualizer.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Simulation simulation) {
|
public String getDescription(Visualizer visualizer, Simulation simulation) {
|
||||||
return "Reset viewport";
|
return "Reset viewport";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -1644,6 +1707,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class ToggleDecorationsMenuAction implements SimulationMenuAction {
|
protected static class ToggleDecorationsMenuAction implements SimulationMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doAction(final Visualizer visualizer, Simulation simulation) {
|
public void doAction(final Visualizer visualizer, Simulation simulation) {
|
||||||
if (!(visualizer.getUI() instanceof BasicInternalFrameUI)) {
|
if (!(visualizer.getUI() instanceof BasicInternalFrameUI)) {
|
||||||
|
@ -1651,11 +1715,12 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
}
|
}
|
||||||
BasicInternalFrameUI ui = (BasicInternalFrameUI) visualizer.getUI();
|
BasicInternalFrameUI ui = (BasicInternalFrameUI) visualizer.getUI();
|
||||||
|
|
||||||
if (ui.getNorthPane().getPreferredSize() == null ||
|
if (ui.getNorthPane().getPreferredSize() == null
|
||||||
ui.getNorthPane().getPreferredSize().height == 0) {
|
|| ui.getNorthPane().getPreferredSize().height == 0) {
|
||||||
/* Restore window decorations */
|
/* Restore window decorations */
|
||||||
ui.getNorthPane().setPreferredSize(null);
|
ui.getNorthPane().setPreferredSize(null);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
/* Hide window decorations */
|
/* Hide window decorations */
|
||||||
ui.getNorthPane().setPreferredSize(new Dimension(0, 0));
|
ui.getNorthPane().setPreferredSize(new Dimension(0, 0));
|
||||||
}
|
}
|
||||||
|
@ -1667,6 +1732,7 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(Visualizer visualizer, Simulation simulation) {
|
public String getDescription(Visualizer visualizer, Simulation simulation) {
|
||||||
if (!(visualizer.getUI() instanceof BasicInternalFrameUI)) {
|
if (!(visualizer.getUI() instanceof BasicInternalFrameUI)) {
|
||||||
|
@ -1674,12 +1740,13 @@ public class Visualizer extends VisPlugin implements HasQuickHelp {
|
||||||
}
|
}
|
||||||
BasicInternalFrameUI ui = (BasicInternalFrameUI) visualizer.getUI();
|
BasicInternalFrameUI ui = (BasicInternalFrameUI) visualizer.getUI();
|
||||||
|
|
||||||
if (ui.getNorthPane().getPreferredSize() == null ||
|
if (ui.getNorthPane().getPreferredSize() == null
|
||||||
ui.getNorthPane().getPreferredSize().height == 0) {
|
|| ui.getNorthPane().getPreferredSize().height == 0) {
|
||||||
return "Restore window decorations";
|
return "Restore window decorations";
|
||||||
}
|
}
|
||||||
return "Hide window decorations";
|
return "Hide window decorations";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
||||||
return visualizer.getUI() instanceof BasicInternalFrameUI;
|
return visualizer.getUI() instanceof BasicInternalFrameUI;
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.contikios.cooja.plugins.skins;
|
package org.contikios.cooja.plugins.skins;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
@ -53,6 +52,7 @@ import org.contikios.cooja.radiomediums.DirectedGraphMedium;
|
||||||
@ClassDescription("Radio environment (DGRM)")
|
@ClassDescription("Radio environment (DGRM)")
|
||||||
@SupportedArguments(radioMediums = {DirectedGraphMedium.class})
|
@SupportedArguments(radioMediums = {DirectedGraphMedium.class})
|
||||||
public class DGRMVisualizerSkin implements VisualizerSkin {
|
public class DGRMVisualizerSkin implements VisualizerSkin {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(DGRMVisualizerSkin.class);
|
private static final Logger logger = Logger.getLogger(DGRMVisualizerSkin.class);
|
||||||
|
|
||||||
private Simulation simulation = null;
|
private Simulation simulation = null;
|
||||||
|
@ -129,11 +129,19 @@ public class DGRMVisualizerSkin implements VisualizerSkin {
|
||||||
double pos_rssi = rssi + 100;
|
double pos_rssi = rssi + 100;
|
||||||
int lqi = ((DGRMDestinationRadio) r).lqi;
|
int lqi = ((DGRMDestinationRadio) r).lqi;
|
||||||
float red = (float) (1 - prob * pos_rssi / 90 * lqi / 100);
|
float red = (float) (1 - prob * pos_rssi / 90 * lqi / 100);
|
||||||
if(red > 1) red = 1;
|
if (red > 1) {
|
||||||
if(red < 0) red = 0;
|
red = 1;
|
||||||
|
}
|
||||||
|
if (red < 0) {
|
||||||
|
red = 0;
|
||||||
|
}
|
||||||
float green = (float) (prob * pos_rssi / 90 * lqi / 100);
|
float green = (float) (prob * pos_rssi / 90 * lqi / 100);
|
||||||
if(green > 1) green = 1;
|
if (green > 1) {
|
||||||
if(green < 0) green = 0;
|
green = 1;
|
||||||
|
}
|
||||||
|
if (green < 0) {
|
||||||
|
green = 0;
|
||||||
|
}
|
||||||
if (prob == 0.0d) {
|
if (prob == 0.0d) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.contikios.cooja.plugins.skins;
|
package org.contikios.cooja.plugins.skins;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
@ -87,6 +86,7 @@ import org.contikios.cooja.radiomediums.UDGM;
|
||||||
@ClassDescription("Radio environment (UDGM)")
|
@ClassDescription("Radio environment (UDGM)")
|
||||||
@SupportedArguments(radioMediums = {UDGM.class})
|
@SupportedArguments(radioMediums = {UDGM.class})
|
||||||
public class UDGMVisualizerSkin implements VisualizerSkin {
|
public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(UDGMVisualizerSkin.class);
|
private static final Logger logger = Logger.getLogger(UDGMVisualizerSkin.class);
|
||||||
|
|
||||||
private static final Color COLOR_TX = new Color(0, 255, 0, 100);
|
private static final Color COLOR_TX = new Color(0, 255, 0, 100);
|
||||||
|
@ -158,8 +158,8 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
txRangeSpinner.addChangeListener(new ChangeListener() {
|
txRangeSpinner.addChangeListener(new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
radioMedium.setTxRange(((SpinnerNumberModel)
|
radioMedium.setTxRange(((SpinnerNumberModel) txRangeSpinner.getModel())
|
||||||
txRangeSpinner.getModel()).getNumber().doubleValue());
|
.getNumber().doubleValue());
|
||||||
visualizer.repaint();
|
visualizer.repaint();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -167,8 +167,8 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
interferenceRangeSpinner.addChangeListener(new ChangeListener() {
|
interferenceRangeSpinner.addChangeListener(new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
radioMedium.setInterferenceRange(((SpinnerNumberModel)
|
radioMedium.setInterferenceRange(((SpinnerNumberModel) interferenceRangeSpinner.getModel())
|
||||||
interferenceRangeSpinner.getModel()).getNumber().doubleValue());
|
.getNumber().doubleValue());
|
||||||
visualizer.repaint();
|
visualizer.repaint();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -176,8 +176,8 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
successRatioTxSpinner.addChangeListener(new ChangeListener() {
|
successRatioTxSpinner.addChangeListener(new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
radioMedium.SUCCESS_RATIO_TX = ((SpinnerNumberModel)
|
radioMedium.SUCCESS_RATIO_TX = ((SpinnerNumberModel) successRatioTxSpinner.getModel())
|
||||||
successRatioTxSpinner.getModel()).getNumber().doubleValue();
|
.getNumber().doubleValue();
|
||||||
visualizer.repaint();
|
visualizer.repaint();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -185,8 +185,8 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
successRatioRxSpinner.addChangeListener(new ChangeListener() {
|
successRatioRxSpinner.addChangeListener(new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent e) {
|
||||||
radioMedium.SUCCESS_RATIO_RX = ((SpinnerNumberModel)
|
radioMedium.SUCCESS_RATIO_RX = ((SpinnerNumberModel) successRatioRxSpinner.getModel())
|
||||||
successRatioRxSpinner.getModel()).getNumber().doubleValue();
|
.getNumber().doubleValue();
|
||||||
visualizer.repaint();
|
visualizer.repaint();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -375,8 +375,8 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
if (m == selectedMote) {
|
if (m == selectedMote) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
double prob =
|
double prob
|
||||||
((UDGM) simulation.getRadioMedium()).getSuccessProbability(selectedRadio, m.getInterfaces().getRadio());
|
= ((UDGM) simulation.getRadioMedium()).getSuccessProbability(selectedRadio, m.getInterfaces().getRadio());
|
||||||
if (prob == 0.0d) {
|
if (prob == 0.0d) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -395,6 +395,7 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class RangeMenuAction implements SimulationMenuAction {
|
public static class RangeMenuAction implements SimulationMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -420,6 +421,7 @@ public class UDGMVisualizerSkin implements VisualizerSkin {
|
||||||
};
|
};
|
||||||
|
|
||||||
public static class SuccessRatioMenuAction implements SimulationMenuAction {
|
public static class SuccessRatioMenuAction implements SimulationMenuAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
public boolean isEnabled(Visualizer visualizer, Simulation simulation) {
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Add table
Reference in a new issue