Andrea Campanella
Committed by Gerrit Code Review

ONOS-3182 added swap functionality

Change-Id: Idc521a330c5bb3c0e0a47f66a90dfa95855e610f
...@@ -84,6 +84,7 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { ...@@ -84,6 +84,7 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler {
84 return ImmutableSet.of( 84 return ImmutableSet.of(
85 new SetSrcHandler(), 85 new SetSrcHandler(),
86 new SetDstHandler(), 86 new SetDstHandler(),
87 + new SwapSrcDstHandler(),
87 new NextPathHandler(), 88 new NextPathHandler(),
88 new PrevPathHandler() 89 new PrevPathHandler()
89 ); 90 );
...@@ -124,6 +125,20 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler { ...@@ -124,6 +125,20 @@ public class PathPainterTopovMessageHandler extends UiMessageHandler {
124 } 125 }
125 } 126 }
126 127
128 + private final class SwapSrcDstHandler extends RequestHandler {
129 + public SwapSrcDstHandler() {
130 + super(PAINTER_SWAP_SRC_DST);
131 + }
132 +
133 + @Override
134 + public void process(long sid, ObjectNode payload) {
135 + ElementId temp = src;
136 + src = dst;
137 + dst = temp;
138 + findAndSendPaths();
139 + }
140 + }
141 +
127 private final class NextPathHandler extends RequestHandler { 142 private final class NextPathHandler extends RequestHandler {
128 public NextPathHandler() { 143 public NextPathHandler() {
129 super(PAINTER_NEXT_PATH); 144 super(PAINTER_NEXT_PATH);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
28 // constants 28 // constants
29 var srcMessage = 'ppTopovSetSrc', 29 var srcMessage = 'ppTopovSetSrc',
30 dstMessage = 'ppTopovSetDst', 30 dstMessage = 'ppTopovSetDst',
31 + swapMessage = 'ppTopovSwapSrcDst',
31 modeMessage = 'ppTopovSetMode', 32 modeMessage = 'ppTopovSetMode',
32 nextPathMessage = 'ppTopovNextPath', 33 nextPathMessage = 'ppTopovNextPath',
33 prevPathMessage = 'ppTopovPrevPath'; 34 prevPathMessage = 'ppTopovPrevPath';
...@@ -58,11 +59,16 @@ ...@@ -58,11 +59,16 @@
58 flash.flash('Destination node: ' + node.id); 59 flash.flash('Destination node: ' + node.id);
59 } 60 }
60 61
61 - function nextPath(node) { 62 + function swapSrcDst() {
63 + wss.sendEvent(swapMessage)
64 + flash.flash('Source and destination swap');
65 + }
66 +
67 + function nextPath() {
62 wss.sendEvent(nextPathMessage); 68 wss.sendEvent(nextPathMessage);
63 } 69 }
64 70
65 - function prevPath(node) { 71 + function prevPath() {
66 wss.sendEvent(prevPathMessage); 72 wss.sendEvent(prevPathMessage);
67 } 73 }
68 74
...@@ -97,7 +103,8 @@ ...@@ -97,7 +103,8 @@
97 setDst: setDst, 103 setDst: setDst,
98 setMode: setMode, 104 setMode: setMode,
99 nextPath: nextPath, 105 nextPath: nextPath,
100 - prevPath: prevPath 106 + prevPath: prevPath,
107 + swapSrcDst: swapSrcDst
101 }; 108 };
102 }]); 109 }]);
103 }()); 110 }());
......
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
16 var overlay = { 16 var overlay = {
17 // NOTE: this must match the ID defined in AppUiTopovOverlay 17 // NOTE: this must match the ID defined in AppUiTopovOverlay
18 overlayId: 'pp-overlay', 18 overlayId: 'pp-overlay',
19 - // FIXME: new icon for the overlay 19 + glyphId: 'topo',
20 - glyphId: '*star4',
21 tooltip: 'Path Painter Topo Overlay', 20 tooltip: 'Path Painter Topo Overlay',
22 21
23 // These glyphs get installed using the overlayId as a prefix. 22 // These glyphs get installed using the overlayId as a prefix.
...@@ -68,7 +67,6 @@ ...@@ -68,7 +67,6 @@
68 // FIXME: use into [ and ] instead of 1 and 2 67 // FIXME: use into [ and ] instead of 1 and 2
69 // FIXME: new icons for src/dst 68 // FIXME: new icons for src/dst
70 // TODO: add keys for shortest paths & disjoint paths modes 69 // TODO: add keys for shortest paths & disjoint paths modes
71 - // TODO: add key for src/dst swap; with its own icon
72 keyBindings: { 70 keyBindings: {
73 1: { 71 1: {
74 cb: function () { pps.setSrc(selection); }, 72 cb: function () { pps.setSrc(selection); },
...@@ -80,6 +78,11 @@ ...@@ -80,6 +78,11 @@
80 tt: 'Set destination node', 78 tt: 'Set destination node',
81 gid: 'triangleDown' 79 gid: 'triangleDown'
82 }, 80 },
81 + 3: {
82 + cb: function () { pps.swapSrcDst(); },
83 + tt: 'Swap source and destination nodes',
84 + gid: 'refresh'
85 + },
83 leftArrow: { 86 leftArrow: {
84 cb: function () { pps.prevPath(); }, 87 cb: function () { pps.prevPath(); },
85 tt: 'Highlight previous path', 88 tt: 'Highlight previous path',
...@@ -92,7 +95,7 @@ ...@@ -92,7 +95,7 @@
92 }, 95 },
93 96
94 _keyOrder: [ 97 _keyOrder: [
95 - '1', '2', 'leftArrow', 'rightArrow' 98 + '1', '2', '3', 'leftArrow', 'rightArrow'
96 ] 99 ]
97 }, 100 },
98 101
......
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
167 167
168 // generate radio button set for overlays; start with 'none' 168 // generate radio button set for overlays; start with 'none'
169 var rset = [{ 169 var rset = [{
170 - gid: 'topo', 170 + gid: 'unknown',
171 tooltip: 'No Overlay', 171 tooltip: 'No Overlay',
172 cb: function () { 172 cb: function () {
173 tov.tbSelection(null, switchOverlayActions); 173 tov.tbSelection(null, switchOverlayActions);
......