Thomas Vachuska

GUI -- Added category to the UiView abstraction.

Change-Id: I55fff4d242e8d6b8d8ce3d25e8f9355dc0ef976a
...@@ -39,6 +39,7 @@ import java.util.List; ...@@ -39,6 +39,7 @@ import java.util.List;
39 import java.util.Set; 39 import java.util.Set;
40 40
41 import static java.util.Collections.synchronizedSet; 41 import static java.util.Collections.synchronizedSet;
42 +import static org.onosproject.ui.UiView.Category.OTHER;
42 43
43 /** 44 /**
44 * Mechanism to stream data to the GUI. 45 * Mechanism to stream data to the GUI.
...@@ -52,7 +53,7 @@ public class IntentPerfUi { ...@@ -52,7 +53,7 @@ public class IntentPerfUi {
52 53
53 private final Set<StreamingControl> handlers = synchronizedSet(new HashSet<>()); 54 private final Set<StreamingControl> handlers = synchronizedSet(new HashSet<>());
54 55
55 - private List<UiView> views = ImmutableList.of(new UiView("intentPerf", "Intent Performance")); 56 + private List<UiView> views = ImmutableList.of(new UiView(OTHER, "intentPerf", "Intent Performance"));
56 private UiExtension uiExtension = new UiExtension(views, this::newHandlers, 57 private UiExtension uiExtension = new UiExtension(views, this::newHandlers,
57 getClass().getClassLoader()); 58 getClass().getClassLoader());
58 59
......
...@@ -24,21 +24,68 @@ import java.util.Objects; ...@@ -24,21 +24,68 @@ import java.util.Objects;
24 */ 24 */
25 public class UiView { 25 public class UiView {
26 26
27 + /**
28 + * Designates navigation menu category.
29 + */
30 + public enum Category {
31 + /**
32 + * Represents platform related views.
33 + */
34 + PLATFORM("Platform"),
35 +
36 + /**
37 + * Represents network-control related views.
38 + */
39 + NETWORK("Network"),
40 +
41 + /**
42 + * Represents miscellaneous views.
43 + */
44 + OTHER("Other");
45 +
46 + private final String label;
47 +
48 + Category(String label) {
49 + this.label = label;
50 + }
51 +
52 + /**
53 + * Returns display label for the category.
54 + *
55 + * @return display label
56 + */
57 + public String label() {
58 + return label;
59 + }
60 + }
61 +
27 private final String id; 62 private final String id;
28 private final String label; 63 private final String label;
64 + private final Category category;
29 65
30 /** 66 /**
31 * Creates a new user interface view descriptor. 67 * Creates a new user interface view descriptor.
32 * 68 *
33 - * @param id view identifier 69 + * @param category view category
34 - * @param label view label 70 + * @param id view identifier
71 + * @param label view label
35 */ 72 */
36 - public UiView(String id, String label) { 73 + public UiView(Category category, String id, String label) {
74 + this.category = category;
37 this.id = id; 75 this.id = id;
38 this.label = label; 76 this.label = label;
39 } 77 }
40 78
41 /** 79 /**
80 + * Returns the navigation category.
81 + *
82 + * @return navigation category
83 + */
84 + public Category category() {
85 + return category;
86 + }
87 +
88 + /**
42 * Returns the view identifier. 89 * Returns the view identifier.
43 * 90 *
44 * @return view id 91 * @return view id
...@@ -76,6 +123,7 @@ public class UiView { ...@@ -76,6 +123,7 @@ public class UiView {
76 @Override 123 @Override
77 public String toString() { 124 public String toString() {
78 return MoreObjects.toStringHelper(this) 125 return MoreObjects.toStringHelper(this)
126 + .add("category", category)
79 .add("id", id) 127 .add("id", id)
80 .add("label", label) 128 .add("label", label)
81 .toString(); 129 .toString();
......
...@@ -26,10 +26,10 @@ public class UiViewHidden extends UiView { ...@@ -26,10 +26,10 @@ public class UiViewHidden extends UiView {
26 /** 26 /**
27 * Creates a new user interface hidden view descriptor. 27 * Creates a new user interface hidden view descriptor.
28 * 28 *
29 - * @param id view identifier 29 + * @param id view identifier
30 */ 30 */
31 public UiViewHidden(String id) { 31 public UiViewHidden(String id) {
32 - super(id, null); 32 + super(Category.OTHER, id, null);
33 } 33 }
34 34
35 @Override 35 @Override
......
...@@ -22,6 +22,7 @@ import java.io.IOException; ...@@ -22,6 +22,7 @@ import java.io.IOException;
22 22
23 import static com.google.common.io.ByteStreams.toByteArray; 23 import static com.google.common.io.ByteStreams.toByteArray;
24 import static org.junit.Assert.*; 24 import static org.junit.Assert.*;
25 +import static org.onosproject.ui.UiView.Category.OTHER;
25 26
26 /** 27 /**
27 * Tests the default user interface extension descriptor. 28 * Tests the default user interface extension descriptor.
...@@ -30,26 +31,27 @@ public class UiExtensionTest { ...@@ -30,26 +31,27 @@ public class UiExtensionTest {
30 31
31 @Test 32 @Test
32 public void basics() throws IOException { 33 public void basics() throws IOException {
33 - UiExtension ext = new UiExtension(ImmutableList.of(new UiView("foo", "Foo View")), 34 + UiExtension ext = new UiExtension(ImmutableList.of(new UiView(OTHER, "foo", "Foo View")),
34 null, 35 null,
35 getClass().getClassLoader()); 36 getClass().getClassLoader());
36 String css = new String(toByteArray(ext.css())); 37 String css = new String(toByteArray(ext.css()));
37 assertTrue("incorrect css stream", css.contains("foo-css")); 38 assertTrue("incorrect css stream", css.contains("foo-css"));
38 String js = new String(toByteArray(ext.js())); 39 String js = new String(toByteArray(ext.js()));
39 assertTrue("incorrect js stream", js.contains("foo-js")); 40 assertTrue("incorrect js stream", js.contains("foo-js"));
40 - assertEquals("incorrect views stream", "foo", ext.views().get(0).id()); 41 + assertEquals("incorrect view id", "foo", ext.views().get(0).id());
42 + assertEquals("incorrect view category", OTHER, ext.views().get(0).category());
41 assertNull("incorrect handler factory", ext.messageHandlerFactory()); 43 assertNull("incorrect handler factory", ext.messageHandlerFactory());
42 } 44 }
43 45
44 @Test 46 @Test
45 public void withPath() throws IOException { 47 public void withPath() throws IOException {
46 - UiExtension ext = new UiExtension(ImmutableList.of(new UiView("foo", "Foo View")), 48 + UiExtension ext = new UiExtension(ImmutableList.of(new UiView(OTHER, "foo", "Foo View")),
47 null, "custom", getClass().getClassLoader()); 49 null, "custom", getClass().getClassLoader());
48 String css = new String(toByteArray(ext.css())); 50 String css = new String(toByteArray(ext.css()));
49 assertTrue("incorrect css stream", css.contains("custom-css")); 51 assertTrue("incorrect css stream", css.contains("custom-css"));
50 String js = new String(toByteArray(ext.js())); 52 String js = new String(toByteArray(ext.js()));
51 assertTrue("incorrect js stream", js.contains("custom-js")); 53 assertTrue("incorrect js stream", js.contains("custom-js"));
52 - assertEquals("incorrect views stream", "foo", ext.views().get(0).id()); 54 + assertEquals("incorrect view id", "foo", ext.views().get(0).id());
53 assertNull("incorrect handler factory", ext.messageHandlerFactory()); 55 assertNull("incorrect handler factory", ext.messageHandlerFactory());
54 } 56 }
55 } 57 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -4,4 +4,4 @@ export ONOS_NIC=192.168.56.* ...@@ -4,4 +4,4 @@ export ONOS_NIC=192.168.56.*
4 export OC1="192.168.56.11" 4 export OC1="192.168.56.11"
5 export OC2="192.168.56.12" 5 export OC2="192.168.56.12"
6 export OC3="192.168.56.13" 6 export OC3="192.168.56.13"
7 -export OCN="192.168.56.14" 7 +export OCN="192.168.56.7"
......
...@@ -44,7 +44,6 @@ public class MainNavResource extends AbstractInjectionResource { ...@@ -44,7 +44,6 @@ public class MainNavResource extends AbstractInjectionResource {
44 private static final String INJECT_VIEW_ITEMS_START = "<!-- {INJECTED-VIEW-NAV-START} -->"; 44 private static final String INJECT_VIEW_ITEMS_START = "<!-- {INJECTED-VIEW-NAV-START} -->";
45 private static final String INJECT_VIEW_ITEMS_END = "<!-- {INJECTED-VIEW-NAV-END} -->"; 45 private static final String INJECT_VIEW_ITEMS_END = "<!-- {INJECTED-VIEW-NAV-END} -->";
46 46
47 -
48 private static final String NAV_FORMAT = 47 private static final String NAV_FORMAT =
49 "<a ng-click=\"navCtrl.hideNav()\" href=\"#/%s\">%s</a>\n"; 48 "<a ng-click=\"navCtrl.hideNav()\" href=\"#/%s\">%s</a>\n";
50 49
......
...@@ -38,6 +38,8 @@ import java.util.Set; ...@@ -38,6 +38,8 @@ import java.util.Set;
38 38
39 import static com.google.common.collect.ImmutableList.of; 39 import static com.google.common.collect.ImmutableList.of;
40 import static java.util.stream.Collectors.toSet; 40 import static java.util.stream.Collectors.toSet;
41 +import static org.onosproject.ui.UiView.Category.NETWORK;
42 +import static org.onosproject.ui.UiView.Category.PLATFORM;
41 43
42 /** 44 /**
43 * Manages the user interface extensions. 45 * Manages the user interface extensions.
...@@ -60,14 +62,14 @@ public class UiExtensionManager implements UiExtensionService, SpriteService { ...@@ -60,14 +62,14 @@ public class UiExtensionManager implements UiExtensionService, SpriteService {
60 62
61 // Creates core UI extension 63 // Creates core UI extension
62 private static UiExtension createCoreExtension() { 64 private static UiExtension createCoreExtension() {
63 - List<UiView> coreViews = of(new UiView("topo", "Topology"), 65 + List<UiView> coreViews = of(new UiView(PLATFORM, "app", "Applications"),
64 - new UiView("device", "Devices"), 66 + new UiView(PLATFORM, "cluster", "Cluster Nodes"),
67 + new UiView(NETWORK, "topo", "Topology"),
68 + new UiView(NETWORK, "device", "Devices"),
65 new UiViewHidden("flow"), 69 new UiViewHidden("flow"),
66 - new UiView("link", "Links"), 70 + new UiView(NETWORK, "link", "Links"),
67 - new UiView("host", "Hosts"), 71 + new UiView(NETWORK, "host", "Hosts"),
68 - new UiView("intent", "Intents"), 72 + new UiView(NETWORK, "intent", "Intents"));
69 - new UiView("app", "Applications"),
70 - new UiView("cluster", "Cluster Nodes"));
71 73
72 UiMessageHandlerFactory messageHandlerFactory = 74 UiMessageHandlerFactory messageHandlerFactory =
73 () -> ImmutableList.of( 75 () -> ImmutableList.of(
......
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
106 // If view ID not provided, route to the first view in the list. 106 // If view ID not provided, route to the first view in the list.
107 $routeProvider 107 $routeProvider
108 .otherwise({ 108 .otherwise({
109 - redirectTo: '/' + viewIds[0] 109 + redirectTo: '/topo'
110 }); 110 });
111 111
112 function viewCtrlName(vid) { 112 function viewCtrlName(vid) {
......