Thomas Vachuska

Preparing for dynamic GUI extensibility.

Change-Id: Ic25143bb9ad8919d7c9e70d932dde528a9227e6a
...@@ -92,7 +92,7 @@ public class UiExtension { ...@@ -92,7 +92,7 @@ public class UiExtension {
92 * @return resource input stream 92 * @return resource input stream
93 */ 93 */
94 public InputStream resource(String viewId, String path) { 94 public InputStream resource(String viewId, String path) {
95 - InputStream is = classLoader.getResourceAsStream(prefix + "views/" + viewId + "/" + path); 95 + InputStream is = classLoader.getResourceAsStream(viewId + "/" + path);
96 return is; 96 return is;
97 } 97 }
98 98
......
...@@ -57,32 +57,44 @@ ...@@ -57,32 +57,44 @@
57 <build> 57 <build>
58 <plugins> 58 <plugins>
59 <plugin> 59 <plugin>
60 - <artifactId>maven-resources-plugin</artifactId> 60 + <groupId>org.apache.felix</groupId>
61 - <version>2.7</version> 61 + <artifactId>maven-bundle-plugin</artifactId>
62 - <executions> 62 + <extensions>true</extensions>
63 - <execution> 63 + <configuration>
64 - <id>copy-resources</id> 64 + <instructions>
65 - <phase>prepare-package</phase> 65 + <_wab>src/main/webapp/</_wab>
66 - <goals> 66 + <Include-Resource>src/main/webapp/app/view,{maven-resources}</Include-Resource>
67 - <goal>copy-resources</goal> 67 + <Bundle-SymbolicName>
68 - </goals> 68 + ${project.groupId}.${project.artifactId}
69 - <configuration> 69 + </Bundle-SymbolicName>
70 - <outputDirectory>${basedir}/target/classes/WEB-INF/classes/app/view</outputDirectory> 70 + <Import-Package>
71 - <resources> 71 + org.slf4j,
72 - <resource> 72 + org.osgi.framework,
73 - <directory>src/main/webapp/app/view</directory> 73 + javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext,
74 - <filtering>true</filtering> 74 + com.sun.jersey.api,
75 - <excludes> 75 + com.sun.jersey.spi.container.servlet,
76 - <exclude>_sdh/**</exclude> 76 + com.sun.jersey.server.impl.container.servlet,
77 - <exclude>test/**</exclude> 77 + com.fasterxml.jackson.databind,
78 - </excludes> 78 + com.fasterxml.jackson.databind.node,
79 - </resource> 79 + com.google.common.base.*,
80 - </resources> 80 + com.google.common.collect.*,
81 - </configuration> 81 + com.google.common.io.*,
82 - </execution> 82 + org.eclipse.jetty.websocket.*,
83 - </executions> 83 + org.onlab.util.*,
84 + org.onlab.osgi.*,
85 + org.onlab.packet.*,
86 + org.onlab.rest.*,
87 + org.onosproject.*
88 + </Import-Package>
89 + <Web-ContextPath>${web.context}</Web-ContextPath>
90 + </instructions>
91 + </configuration>
84 </plugin> 92 </plugin>
93 +
85 </plugins> 94 </plugins>
86 </build> 95 </build>
96 + <!--
97 +
98 +-->
87 99
88 </project> 100 </project>
......
...@@ -31,6 +31,7 @@ import java.io.SequenceInputStream; ...@@ -31,6 +31,7 @@ import java.io.SequenceInputStream;
31 31
32 import static com.google.common.collect.ImmutableList.of; 32 import static com.google.common.collect.ImmutableList.of;
33 import static com.google.common.io.ByteStreams.toByteArray; 33 import static com.google.common.io.ByteStreams.toByteArray;
34 +import static org.onosproject.ui.impl.MainViewResource.SCRIPT;
34 35
35 /** 36 /**
36 * Resource for serving the dynamically composed onos.js. 37 * Resource for serving the dynamically composed onos.js.
...@@ -38,30 +39,35 @@ import static com.google.common.io.ByteStreams.toByteArray; ...@@ -38,30 +39,35 @@ import static com.google.common.io.ByteStreams.toByteArray;
38 @Path("/") 39 @Path("/")
39 public class MainExtResource extends AbstractInjectionResource { 40 public class MainExtResource extends AbstractInjectionResource {
40 41
41 - private static final String MAIN_JS = "/onos-template.js"; 42 + private static final String MAIN_JS = "templates/onos-template.js";
42 - private static final String NAV_HTML = "/nav-template.html"; 43 + private static final String NAV_HTML = "templates/nav-template.html";
44 +
45 + private static final String INJECT_VIEW_IDS_START = "// {INJECTED-VIEW-IDS-START}";
46 + private static final String INJECT_VIEW_IDS_END = "// {INJECTED-VIEW-IDS-END}";
47 +
48 + private static final String INJECT_VIEW_ITEMS_START = "<!-- {INJECTED-VIEW-NAV-START} -->";
49 + private static final String INJECT_VIEW_ITEMS_END = "<!-- {INJECTED-VIEW-NAV-END} -->";
43 50
44 - private static final String INJECT_VIEW_IDS = "// {INJECTED-VIEW-IDS}";
45 - private static final String INJECT_VIEW_ITEMS = "<!-- {INJECTED-VIEW-NAV} -->";
46 51
47 private static final String NAV_FORMAT = 52 private static final String NAV_FORMAT =
48 " <li> <a ng-click=\"navCtrl.hideNav()\" href=\"#/%s\">%s</a></li>"; 53 " <li> <a ng-click=\"navCtrl.hideNav()\" href=\"#/%s\">%s</a></li>";
49 54
50 @Path("/onos.js") 55 @Path("/onos.js")
51 @GET 56 @GET
52 - @Produces(MediaType.TEXT_HTML) 57 + @Produces(SCRIPT)
53 public Response getMainModule() throws IOException { 58 public Response getMainModule() throws IOException {
54 UiExtensionService service = get(UiExtensionService.class); 59 UiExtensionService service = get(UiExtensionService.class);
55 InputStream jsTemplate = getClass().getClassLoader().getResourceAsStream(MAIN_JS); 60 InputStream jsTemplate = getClass().getClassLoader().getResourceAsStream(MAIN_JS);
56 String js = new String(toByteArray(jsTemplate)); 61 String js = new String(toByteArray(jsTemplate));
57 62
58 - int p1 = split(js, 0, INJECT_VIEW_IDS); 63 + int p1s = split(js, 0, INJECT_VIEW_IDS_START);
59 - int p2 = split(js, p1, null); 64 + int p1e = split(js, 0, INJECT_VIEW_IDS_END);
65 + int p2s = split(js, p1e, null);
60 66
61 StreamEnumeration streams = 67 StreamEnumeration streams =
62 - new StreamEnumeration(of(stream(js, 0, p1), 68 + new StreamEnumeration(of(stream(js, 0, p1s),
63 includeViewIds(service), 69 includeViewIds(service),
64 - stream(js, p1, p2))); 70 + stream(js, p1e, p2s)));
65 71
66 return Response.ok(new SequenceInputStream(streams)).build(); 72 return Response.ok(new SequenceInputStream(streams)).build();
67 } 73 }
...@@ -85,13 +91,14 @@ public class MainExtResource extends AbstractInjectionResource { ...@@ -85,13 +91,14 @@ public class MainExtResource extends AbstractInjectionResource {
85 InputStream navTemplate = getClass().getClassLoader().getResourceAsStream(NAV_HTML); 91 InputStream navTemplate = getClass().getClassLoader().getResourceAsStream(NAV_HTML);
86 String js = new String(toByteArray(navTemplate)); 92 String js = new String(toByteArray(navTemplate));
87 93
88 - int p1 = split(js, 0, INJECT_VIEW_ITEMS); 94 + int p1s = split(js, 0, INJECT_VIEW_ITEMS_START);
89 - int p2 = split(js, p1, null); 95 + int p1e = split(js, 0, INJECT_VIEW_ITEMS_END);
96 + int p2s = split(js, p1e, null);
90 97
91 StreamEnumeration streams = 98 StreamEnumeration streams =
92 - new StreamEnumeration(of(stream(js, 0, p1), 99 + new StreamEnumeration(of(stream(js, 0, p1s),
93 includeNavItems(service), 100 includeNavItems(service),
94 - stream(js, p1, p2))); 101 + stream(js, p1e, p2s)));
95 102
96 return Response.ok(new SequenceInputStream(streams)).build(); 103 return Response.ok(new SequenceInputStream(streams)).build();
97 } 104 }
......
...@@ -37,12 +37,14 @@ import static com.google.common.io.ByteStreams.toByteArray; ...@@ -37,12 +37,14 @@ import static com.google.common.io.ByteStreams.toByteArray;
37 @Path("/") 37 @Path("/")
38 public class MainIndexResource extends AbstractInjectionResource { 38 public class MainIndexResource extends AbstractInjectionResource {
39 39
40 - private static final String INDEX = "/index-template.html"; 40 + private static final String INDEX = "templates/index-template.html";
41 41
42 - private static final String INJECT_CSS = "<!-- {INJECTED-STYLESHEETS} -->"; 42 + private static final String INJECT_CSS_START = "<!-- {INJECTED-STYLESHEETS-START} -->";
43 - private static final String INJECT_JS = "<!-- {INJECTED-JAVASCRIPT} -->"; 43 + private static final String INJECT_CSS_END = "<!-- {INJECTED-STYLESHEETS-END} -->";
44 +
45 + private static final String INJECT_JS_START = "<!-- {INJECTED-JAVASCRIPT-START} -->";
46 + private static final String INJECT_JS_END = "<!-- {INJECTED-JAVASCRIPT-END} -->";
44 47
45 - @Path("/")
46 @GET 48 @GET
47 @Produces(MediaType.TEXT_HTML) 49 @Produces(MediaType.TEXT_HTML)
48 public Response getMainIndex() throws IOException { 50 public Response getMainIndex() throws IOException {
...@@ -50,16 +52,18 @@ public class MainIndexResource extends AbstractInjectionResource { ...@@ -50,16 +52,18 @@ public class MainIndexResource extends AbstractInjectionResource {
50 InputStream indexTemplate = getClass().getClassLoader().getResourceAsStream(INDEX); 52 InputStream indexTemplate = getClass().getClassLoader().getResourceAsStream(INDEX);
51 String index = new String(toByteArray(indexTemplate)); 53 String index = new String(toByteArray(indexTemplate));
52 54
53 - int p1 = split(index, 0, INJECT_JS); 55 + int p1s = split(index, 0, INJECT_JS_START);
54 - int p2 = split(index, p1, INJECT_CSS); 56 + int p1e = split(index, p1s, INJECT_JS_END);
55 - int p3 = split(index, p2, null); 57 + int p2s = split(index, p1e, INJECT_CSS_START);
58 + int p2e = split(index, p2s, INJECT_CSS_END);
59 + int p3s = split(index, p2e, null);
56 60
57 StreamEnumeration streams = 61 StreamEnumeration streams =
58 - new StreamEnumeration(of(stream(index, 0, p1), 62 + new StreamEnumeration(of(stream(index, 0, p1s),
59 includeJs(service), 63 includeJs(service),
60 - stream(index, p1, p2), 64 + stream(index, p1e, p2s),
61 includeCss(service), 65 includeCss(service),
62 - stream(index, p2, p3))); 66 + stream(index, p2e, p3s)));
63 67
64 return Response.ok(new SequenceInputStream(streams)).build(); 68 return Response.ok(new SequenceInputStream(streams)).build();
65 } 69 }
......
...@@ -33,9 +33,9 @@ import static javax.ws.rs.core.MediaType.TEXT_HTML; ...@@ -33,9 +33,9 @@ import static javax.ws.rs.core.MediaType.TEXT_HTML;
33 @Path("/") 33 @Path("/")
34 public class MainViewResource extends AbstractInjectionResource { 34 public class MainViewResource extends AbstractInjectionResource {
35 35
36 - private static final String CONTENT_TYPE = "Content-Type"; 36 + static final String CONTENT_TYPE = "Content-Type";
37 - private static final String STYLESHEET = "text/css"; 37 + static final String STYLESHEET = "text/css";
38 - private static final String SCRIPT = "text/javascript"; 38 + static final String SCRIPT = "text/javascript";
39 39
40 @Path("{view}/{resource}") 40 @Path("{view}/{resource}")
41 @GET 41 @GET
......
...@@ -54,7 +54,8 @@ public class UiExtensionManager implements UiExtensionService { ...@@ -54,7 +54,8 @@ public class UiExtensionManager implements UiExtensionService {
54 new UiView("topo", "Topology View"), 54 new UiView("topo", "Topology View"),
55 new UiView("device", "Devices")); 55 new UiView("device", "Devices"));
56 56
57 - private final UiExtension core = new UiExtension(coreViews, getClass().getClassLoader()); 57 + private final UiExtension core = new UiExtension(coreViews, "core",
58 + getClass().getClassLoader());
58 59
59 @Activate 60 @Activate
60 public void activate() { 61 public void activate() {
......
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <!-- 2 <!--
3 - ~ Copyright 2015 Open Networking Laboratory 3 +~ Copyright 2014,2015 Open Networking Laboratory
4 - ~ 4 +~
5 - ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 +~ Licensed under the Apache License, Version 2.0 (the "License");
6 - ~ you may not use this file except in compliance with the License. 6 +~ you may not use this file except in compliance with the License.
7 - ~ You may obtain a copy of the License at 7 +~ You may obtain a copy of the License at
8 - ~ 8 +~
9 - ~ http://www.apache.org/licenses/LICENSE-2.0 9 +~ http://www.apache.org/licenses/LICENSE-2.0
10 - ~ 10 +~
11 - ~ Unless required by applicable law or agreed to in writing, software 11 +~ Unless required by applicable law or agreed to in writing, software
12 - ~ distributed under the License is distributed on an "AS IS" BASIS, 12 +~ distributed under the License is distributed on an "AS IS" BASIS,
13 - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 +~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 - ~ See the License for the specific language governing permissions and 14 +~ See the License for the specific language governing permissions and
15 - ~ limitations under the License. 15 +~ limitations under the License.
16 - --> 16 +-->
17 <html> 17 <html>
18 <head> 18 <head>
19 <meta charset="utf-8"> 19 <meta charset="utf-8">
20 - <link rel="shortcut icon" href="data/img/onos-logo.png"> 20 + <link rel="shortcut icon" href="../data/img/onos-logo.png">
21 <title>ONOS Angular</title> 21 <title>ONOS Angular</title>
22 22
23 <!-- Third party library code included here --> 23 <!-- Third party library code included here -->
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
35 35
36 <script src="app/fw/util/util.js"></script> 36 <script src="app/fw/util/util.js"></script>
37 <script src="app/fw/util/fn.js"></script> 37 <script src="app/fw/util/fn.js"></script>
38 + <script src="app/fw/util/random.js"></script>
38 <script src="app/fw/util/theme.js"></script> 39 <script src="app/fw/util/theme.js"></script>
39 <script src="app/fw/util/keys.js"></script> 40 <script src="app/fw/util/keys.js"></script>
40 41
...@@ -57,9 +58,14 @@ ...@@ -57,9 +58,14 @@
57 58
58 <script src="app/fw/widget/widget.js"></script> 59 <script src="app/fw/widget/widget.js"></script>
59 <script src="app/fw/widget/table.js"></script> 60 <script src="app/fw/widget/table.js"></script>
61 + <script src="app/fw/widget/toolbar.js"></script>
62 + <script src="app/fw/widget/button.js"></script>
60 63
61 <script src="app/fw/layer/layer.js"></script> 64 <script src="app/fw/layer/layer.js"></script>
62 <script src="app/fw/layer/panel.js"></script> 65 <script src="app/fw/layer/panel.js"></script>
66 + <script src="app/fw/layer/flash.js"></script>
67 + <script src="app/fw/layer/quickhelp.js"></script>
68 + <script src="app/fw/layer/veil.js"></script>
63 69
64 <!-- Framework and library stylesheets included here --> 70 <!-- Framework and library stylesheets included here -->
65 <!-- TODO: use a single catenated-minified file here --> 71 <!-- TODO: use a single catenated-minified file here -->
...@@ -69,31 +75,56 @@ ...@@ -69,31 +75,56 @@
69 <link rel="stylesheet" href="app/fw/svg/glyph.css"> 75 <link rel="stylesheet" href="app/fw/svg/glyph.css">
70 <link rel="stylesheet" href="app/fw/svg/icon.css"> 76 <link rel="stylesheet" href="app/fw/svg/icon.css">
71 <link rel="stylesheet" href="app/fw/layer/panel.css"> 77 <link rel="stylesheet" href="app/fw/layer/panel.css">
78 + <link rel="stylesheet" href="app/fw/layer/flash.css">
79 + <link rel="stylesheet" href="app/fw/layer/quickhelp.css">
80 + <link rel="stylesheet" href="app/fw/layer/veil.css">
72 <link rel="stylesheet" href="app/fw/nav/nav.css"> 81 <link rel="stylesheet" href="app/fw/nav/nav.css">
73 82
74 <!-- This is where contributed javascript will get injected --> 83 <!-- This is where contributed javascript will get injected -->
75 - <!-- {INJECTED-JAVASCRIPT} --> 84 + <!-- {INJECTED-JAVASCRIPT-START} -->
85 + <script src="app/view/sample/sample.js"></script>
86 + <script src="app/view/topo/topo.js"></script>
87 + <script src="app/view/topo/topoEvent.js"></script>
88 + <script src="app/view/topo/topoFilter.js"></script>
89 + <script src="app/view/topo/topoForce.js"></script>
90 + <script src="app/view/topo/topoInst.js"></script>
91 + <script src="app/view/topo/topoModel.js"></script>
92 + <script src="app/view/topo/topoOblique.js"></script>
93 + <script src="app/view/topo/topoPanel.js"></script>
94 + <script src="app/view/topo/topoSelect.js"></script>
95 + <script src="app/view/topo/topoTraffic.js"></script>
96 + <script src="app/view/device/device.js"></script>
97 + <!-- {INJECTED-JAVASCRIPT-END} -->
98 +
76 99
77 <!-- This is where contributed stylesheets will get injected --> 100 <!-- This is where contributed stylesheets will get injected -->
78 - <!-- {INJECTED-STYLESHEETS} --> 101 + <!-- {INJECTED-STYLESHEETS-START} -->
102 + <link rel="stylesheet" href="app/view/sample/sample.css">
103 + <link rel="stylesheet" href="app/view/topo/topo.css">
104 + <link rel="stylesheet" href="app/view/device/device.css">
105 + <!-- TODO: inject style-sheet refs server-side -->
106 + <!-- {INJECTED-STYLESHEETS-END} -->
107 +
79 </head> 108 </head>
80 <body class="light" ng-app="onosApp"> 109 <body class="light" ng-app="onosApp">
81 - <div id="frame" ng-controller="OnosCtrl as onosCtrl"> 110 +<div id="frame" ng-controller="OnosCtrl as onosCtrl">
82 - <div id="mast" 111 + <div id="mast"
83 - ng-controller="MastCtrl as mastCtrl" 112 + ng-controller="MastCtrl as mastCtrl"
84 - ng-include="'app/fw/mast/mast.html'"></div> 113 + ng-include="'app/fw/mast/mast.html'"></div>
85 - 114 +
86 - <div id="view" ng-view></div> 115 + <div id="view" ng-view></div>
87 - 116 +
88 - <div id="nav" 117 + <div id="nav"
89 - ng-controller="NavCtrl as navCtrl" 118 + ng-controller="NavCtrl as navCtrl"
90 - ng-include="'dyn/nav/nav.html'"></div> 119 + ng-include="'dyn/nav/nav.html'"></div>
91 - 120 +
92 - <div id="floatpanels"></div> 121 + <div id="floatpanels"></div>
93 - <div id="alerts"></div> 122 + <div id="alerts"></div>
94 - <div id="flash"></div> 123 + <div id="flash"></div>
95 - <div id="quickhelp"></div> 124 + <div id="quickhelp"></div>
96 - <div id="deathmask"></div> 125 + <div id="veil"
97 - </div> 126 + resize
127 + ng-style="resizeWithOffset(0, 0)"></div>
128 +</div>
98 </body> 129 </body>
99 </html> 130 </html>
......
...@@ -3,5 +3,6 @@ ...@@ -3,5 +3,6 @@
3 <h3>(Note - this is temporary)</h3> 3 <h3>(Note - this is temporary)</h3>
4 4
5 <ul> 5 <ul>
6 - <!-- {INJECTED-VIEW-NAV} --> 6 + <!-- {INJECTED-VIEW-NAV-START} -->
7 + <!-- {INJECTED-VIEW-NAV-END} -->
7 </ul> 8 </ul>
......
1 /* 1 /*
2 - * Copyright 2015 Open Networking Laboratory 2 + * Copyright 2014,2015 Open Networking Laboratory
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
...@@ -36,8 +36,11 @@ ...@@ -36,8 +36,11 @@
36 // view IDs.. note the first view listed is loaded at startup 36 // view IDs.. note the first view listed is loaded at startup
37 var viewIds = [ 37 var viewIds = [
38 // TODO: inject view IDs server side 38 // TODO: inject view IDs server side
39 - // {INJECTED-VIEW-IDS} 39 + // {INJECTED-VIEW-IDS-START}
40 - // (end of injected views) 40 + 'sample',
41 + 'topo',
42 + 'device',
43 + // {INJECTED-VIEW-IDS-END}
41 44
42 // dummy entry 45 // dummy entry
43 '' 46 ''
...@@ -62,27 +65,32 @@ ...@@ -62,27 +65,32 @@
62 .controller('OnosCtrl', [ 65 .controller('OnosCtrl', [
63 '$log', '$route', '$routeParams', '$location', 66 '$log', '$route', '$routeParams', '$location',
64 'KeyService', 'ThemeService', 'GlyphService', 'PanelService', 67 'KeyService', 'ThemeService', 'GlyphService', 'PanelService',
68 + 'FlashService', 'QuickHelpService',
65 69
66 - function ($log, $route, $routeParams, $location, ks, ts, gs, ps) { 70 + function ($log, $route, $routeParams, $location,
67 - var self = this; 71 + ks, ts, gs, ps, flash, qhs) {
72 + var self = this;
68 73
69 - self.$route = $route; 74 + self.$route = $route;
70 - self.$routeParams = $routeParams; 75 + self.$routeParams = $routeParams;
71 - self.$location = $location; 76 + self.$location = $location;
72 - self.version = '1.1.0'; 77 + self.version = '1.1.0';
73 78
74 - // initialize services... 79 + // initialize services...
75 - ts.init(); 80 + ts.init();
76 - ks.installOn(d3.select('body')); 81 + ks.installOn(d3.select('body'));
77 - gs.init(); 82 + ks.bindQhs(qhs);
78 - ps.init(); 83 + gs.init();
84 + ps.init();
85 + flash.initFlash();
86 + qhs.initQuickHelp();
79 87
80 - $log.log('OnosCtrl has been created'); 88 + $log.log('OnosCtrl has been created');
81 89
82 - $log.debug('route: ', self.$route); 90 + $log.debug('route: ', self.$route);
83 - $log.debug('routeParams: ', self.$routeParams); 91 + $log.debug('routeParams: ', self.$routeParams);
84 - $log.debug('location: ', self.$location); 92 + $log.debug('location: ', self.$location);
85 - }]) 93 + }])
86 94
87 .config(['$routeProvider', function ($routeProvider) { 95 .config(['$routeProvider', function ($routeProvider) {
88 // If view ID not provided, route to the first view in the list. 96 // If view ID not provided, route to the first view in the list.
...@@ -94,8 +102,9 @@ ...@@ -94,8 +102,9 @@
94 function viewCtrlName(vid) { 102 function viewCtrlName(vid) {
95 return 'Ov' + capitalize(vid) + 'Ctrl'; 103 return 'Ov' + capitalize(vid) + 'Ctrl';
96 } 104 }
105 +
97 function viewTemplateUrl(vid) { 106 function viewTemplateUrl(vid) {
98 - return 'view/' + vid + '/' + vid + '.html'; 107 + return 'app/view/' + vid + '/' + vid + '.html';
99 } 108 }
100 109
101 // Add routes for each defined view. 110 // Add routes for each defined view.
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
59 </init-param> 59 </init-param>
60 <init-param> 60 <init-param>
61 <param-name>com.sun.jersey.config.property.classnames</param-name> 61 <param-name>com.sun.jersey.config.property.classnames</param-name>
62 - <param-value>org.onosproject.gui.impl.MainIndexResource</param-value> 62 + <param-value>org.onosproject.ui.impl.MainIndexResource</param-value>
63 </init-param> 63 </init-param>
64 <load-on-startup>1</load-on-startup> 64 <load-on-startup>1</load-on-startup>
65 </servlet> 65 </servlet>
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
78 </init-param> 78 </init-param>
79 <init-param> 79 <init-param>
80 <param-name>com.sun.jersey.config.property.classnames</param-name> 80 <param-name>com.sun.jersey.config.property.classnames</param-name>
81 - <param-value>org.onosproject.gui.impl.MainExtResource</param-value> 81 + <param-value>org.onosproject.ui.impl.MainExtResource</param-value>
82 </init-param> 82 </init-param>
83 <load-on-startup>1</load-on-startup> 83 <load-on-startup>1</load-on-startup>
84 </servlet> 84 </servlet>
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
81 <link rel="stylesheet" href="fw/nav/nav.css"> 81 <link rel="stylesheet" href="fw/nav/nav.css">
82 82
83 <!-- This is where contributed javascript will get injected --> 83 <!-- This is where contributed javascript will get injected -->
84 - <!-- {INJECTED-JAVASCRIPT} --> 84 + <!-- {INJECTED-JAVASCRIPT-START} -->
85 <script src="view/sample/sample.js"></script> 85 <script src="view/sample/sample.js"></script>
86 <script src="view/topo/topo.js"></script> 86 <script src="view/topo/topo.js"></script>
87 <script src="view/topo/topoEvent.js"></script> 87 <script src="view/topo/topoEvent.js"></script>
...@@ -94,34 +94,37 @@ ...@@ -94,34 +94,37 @@
94 <script src="view/topo/topoSelect.js"></script> 94 <script src="view/topo/topoSelect.js"></script>
95 <script src="view/topo/topoTraffic.js"></script> 95 <script src="view/topo/topoTraffic.js"></script>
96 <script src="view/device/device.js"></script> 96 <script src="view/device/device.js"></script>
97 - <!-- TODO: inject javascript refs server-side --> 97 + <!-- {INJECTED-JAVASCRIPT-END} -->
98 +
98 99
99 <!-- This is where contributed stylesheets will get injected --> 100 <!-- This is where contributed stylesheets will get injected -->
100 - <!-- {INJECTED-STYLESHEETS} --> 101 + <!-- {INJECTED-STYLESHEETS-START} -->
101 <link rel="stylesheet" href="view/sample/sample.css"> 102 <link rel="stylesheet" href="view/sample/sample.css">
102 <link rel="stylesheet" href="view/topo/topo.css"> 103 <link rel="stylesheet" href="view/topo/topo.css">
103 <link rel="stylesheet" href="view/device/device.css"> 104 <link rel="stylesheet" href="view/device/device.css">
104 <!-- TODO: inject style-sheet refs server-side --> 105 <!-- TODO: inject style-sheet refs server-side -->
106 + <!-- {INJECTED-STYLESHEETS-END} -->
107 +
105 </head> 108 </head>
106 <body class="light" ng-app="onosApp"> 109 <body class="light" ng-app="onosApp">
107 - <div id="frame" ng-controller="OnosCtrl as onosCtrl"> 110 +<div id="frame" ng-controller="OnosCtrl as onosCtrl">
108 - <div id="mast" 111 + <div id="mast"
109 - ng-controller="MastCtrl as mastCtrl" 112 + ng-controller="MastCtrl as mastCtrl"
110 - ng-include="'fw/mast/mast.html'"></div> 113 + ng-include="'fw/mast/mast.html'"></div>
111 - 114 +
112 - <div id="view" ng-view></div> 115 + <div id="view" ng-view></div>
113 - 116 +
114 - <div id="nav" 117 + <div id="nav"
115 - ng-controller="NavCtrl as navCtrl" 118 + ng-controller="NavCtrl as navCtrl"
116 - ng-include="'fw/nav/nav.html'"></div> 119 + ng-include="'fw/nav/nav.html'"></div>
117 - 120 +
118 - <div id="floatpanels"></div> 121 + <div id="floatpanels"></div>
119 - <div id="alerts"></div> 122 + <div id="alerts"></div>
120 - <div id="flash"></div> 123 + <div id="flash"></div>
121 - <div id="quickhelp"></div> 124 + <div id="quickhelp"></div>
122 - <div id="veil" 125 + <div id="veil"
123 - resize 126 + resize
124 - ng-style="resizeWithOffset(0, 0)"></div> 127 + ng-style="resizeWithOffset(0, 0)"></div>
125 - </div> 128 +</div>
126 </body> 129 </body>
127 </html> 130 </html>
......
...@@ -36,11 +36,11 @@ ...@@ -36,11 +36,11 @@
36 // view IDs.. note the first view listed is loaded at startup 36 // view IDs.. note the first view listed is loaded at startup
37 var viewIds = [ 37 var viewIds = [
38 // TODO: inject view IDs server side 38 // TODO: inject view IDs server side
39 - // {INJECTED-VIEW-IDS} 39 + // {INJECTED-VIEW-IDS-START}
40 'sample', 40 'sample',
41 'topo', 41 'topo',
42 'device', 42 'device',
43 - // (end of injected views) 43 + // {INJECTED-VIEW-IDS-END}
44 44
45 // dummy entry 45 // dummy entry
46 '' 46 ''
...@@ -67,30 +67,30 @@ ...@@ -67,30 +67,30 @@
67 'KeyService', 'ThemeService', 'GlyphService', 'PanelService', 67 'KeyService', 'ThemeService', 'GlyphService', 'PanelService',
68 'FlashService', 'QuickHelpService', 68 'FlashService', 'QuickHelpService',
69 69
70 - function ($log, $route, $routeParams, $location, 70 + function ($log, $route, $routeParams, $location,
71 - ks, ts, gs, ps, flash, qhs) { 71 + ks, ts, gs, ps, flash, qhs) {
72 - var self = this; 72 + var self = this;
73 73
74 - self.$route = $route; 74 + self.$route = $route;
75 - self.$routeParams = $routeParams; 75 + self.$routeParams = $routeParams;
76 - self.$location = $location; 76 + self.$location = $location;
77 - self.version = '1.1.0'; 77 + self.version = '1.1.0';
78 78
79 - // initialize services... 79 + // initialize services...
80 - ts.init(); 80 + ts.init();
81 - ks.installOn(d3.select('body')); 81 + ks.installOn(d3.select('body'));
82 - ks.bindQhs(qhs); 82 + ks.bindQhs(qhs);
83 - gs.init(); 83 + gs.init();
84 - ps.init(); 84 + ps.init();
85 - flash.initFlash(); 85 + flash.initFlash();
86 - qhs.initQuickHelp(); 86 + qhs.initQuickHelp();
87 87
88 - $log.log('OnosCtrl has been created'); 88 + $log.log('OnosCtrl has been created');
89 89
90 - $log.debug('route: ', self.$route); 90 + $log.debug('route: ', self.$route);
91 - $log.debug('routeParams: ', self.$routeParams); 91 + $log.debug('routeParams: ', self.$routeParams);
92 - $log.debug('location: ', self.$location); 92 + $log.debug('location: ', self.$location);
93 - }]) 93 + }])
94 94
95 .config(['$routeProvider', function ($routeProvider) { 95 .config(['$routeProvider', function ($routeProvider) {
96 // If view ID not provided, route to the first view in the list. 96 // If view ID not provided, route to the first view in the list.
...@@ -102,6 +102,7 @@ ...@@ -102,6 +102,7 @@
102 function viewCtrlName(vid) { 102 function viewCtrlName(vid) {
103 return 'Ov' + capitalize(vid) + 'Ctrl'; 103 return 'Ov' + capitalize(vid) + 'Ctrl';
104 } 104 }
105 +
105 function viewTemplateUrl(vid) { 106 function viewTemplateUrl(vid) {
106 return 'view/' + vid + '/' + vid + '.html'; 107 return 'view/' + vid + '/' + vid + '.html';
107 } 108 }
......