ozone widget framework introduction and quick start tutorial · notice: proprietary and...
TRANSCRIPT
![Page 1: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/1.jpg)
NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential information which is solely the property of Geocent. This material shall not be used, reproduced, copied, disclosed, transmitted, in whole or in part, without the express consent of Geocent. © 2009 All rights reserved
OZONE Widget Framework Introduction and Quick Start Tutorial
February 17, 2012
![Page 2: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/2.jpg)
OZONE Widget Framework
“A framework for visually organizing and laying out lightweight web applica;ons (widget) within a user’s browser.”
![Page 3: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/3.jpg)
Government Open Source So:ware (GOSS)
§ Released under the DoD Community Source Usage Agreement Version 1.1 by
the Department of Defense. § Not a pure FOSS (Free Open Source So:ware) project such as those covered
by popular OSS (Open Source So:ware) licenses including GPL, LGPL, MIT. § DisseminaRon is limited to U.S. Government Agencies and their contractors in
accordance with provisions of DoD DirecRve 5230.25.
Computer soBware available in source code form, for which the source code and certain other rights normally reserved for the development agency, are provided broadly.
![Page 4: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/4.jpg)
NaRonal Defense AuthorizaRon Act for Fiscal Year 2012
(Sec. 923) Requires the Director of the Defense InformaRon Systems Agency to implement a mechanism to publish and maintain on the public Internet specified informaRon on and resources for the Ozone Widget Framework in order to permit individuals and companies to develop, integrate, and test analysis tools and applicaRons for use by DOD and elements of the intelligence community. Requires such Director to encourage and foster the use of such Framework by the computer industry and commercial informaRon technology vendors.
H.R. 1540
![Page 5: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/5.jpg)
OZONE Widget Framework
OZONE Marketplace (OMP)
§ Thin client registry of
applicaRons and services similar to commercial applicaRon stores.
§ Can be uRlized with OWF or as an independent applicaRon.
OZONE Widget Framework (OWF)
§ Framework for visually
organizing and laying out lightweight web applicaRons (widgets) within user's browser.
§ Provides infrastructure services to facilitate development of workflows and presentaRon-‐Rer applicaRon integraRon.
![Page 6: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/6.jpg)
OZONE Widget Framework
![Page 7: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/7.jpg)
OZONE Widgets
§ Typically developed as a standard Java WAR.
§ Exist within OZONE Widget Framework as IFrame.
§ By referencing hosted OWF library file applicaRon may leverage OWF funcRonality.
§ AlternaRve deployments may include staRc HTML pages on external web servers.
§ AlternaRve deployments may include server specific soluRons such as .NET soluRons on IIS, PHP applicaRons on Apache through mod_php, etc…
![Page 8: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/8.jpg)
OZONE Widgets
OZONE Widget API
EvenRng API
Preferences API
Logging API
Widget Launcher
API
Drag and Drop API
Chrome API
§ Primarily developed with the Dojo Javascript library. Accessible via the owfdojo object.
§ All APIs are available by referencing the hosted OWF library Javascript file.
![Page 9: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/9.jpg)
OZONE Widget Development
Tutorials assumes the following: § The developer will be developing an OZONE widget packaged as a Java WAR.
§ The widget will be deployed directly to an instance of Jefy also running the OWF server applicaRon. OWF is accessible at the url:
hEps://localhost:8443/owf
§ The widget will uRlize the Maven build system on top of Java 1.6+
![Page 10: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/10.jpg)
Anatomy of an OZONE Widget
§ Looks exactly like a servlet-‐based Java WAR project.
§ Developed exactly like a servlet-‐based Java WAR project.
§ If the developer is especially clever the widget can funcRon both within and external to the OWF applicaRon.
§ Can be iniRalized uRlizing the standard Maven webapp-‐javaee6 archetype.
or
§ In Netbeans the developer need only create a new Maven Web ApplicaRon project.
![Page 11: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/11.jpg)
Example EmptyWidget Project
§ Bare-‐bones skeleton project.
§ Contains seings to build and deploy both project WAR and required Jefy context files to a local Jefy instance.
§ Deploys to Jefy as hEps://localhost:8443/EmptyWidget
§ Can be easily imported into Netbeans or built using command line tools. Normal Build mvn clean install
Build and Deploy mvn clean install –Pdeploy-‐jeEy
![Page 12: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/12.jpg)
<?xml version="1.0" encoding="UTF-8"?> <Web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/Web-app_2_4.xsd"> <display-name>${project.name}</display-name> <context-param> <description>OWF Context Path</description> <param-name>owf-context-path</param-name> <param-value>${owf.context.path}</param-value> </context-param> </Web-app>
EmptyWidget – web.xml
![Page 13: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/13.jpg)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Example Empty OWF Widget</title> <% String owfContextPath = application.getInitParameter("owf-context-path"); %> <link rel="stylesheet” href="<%= owfContextPath %>/css/widgetContents.css” type="text/css"/> <script type="text/javascript” src="<%= owfContextPath %>/js/owf-widget.js"></script> <link rel="stylesheet" href="css/style.css" type="text/css"/> <script type="text/javascript” src="js/index.js"></script> </head> <body>Develop Me! </body> </html>
EmptyWidget – index.jsp
![Page 14: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/14.jpg)
OZONE Widget Deployment
1. Click Launch Menu Bufon
2. Double Click Widget Edit Icon
![Page 15: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/15.jpg)
OZONE Widget Deployment
1. Enter Widget InformaRon
2. Click Apply Bufon
![Page 16: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/16.jpg)
OZONE Widget Deployment
1. Click Add Bufon
2. Select Test Admin 1
![Page 17: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/17.jpg)
OZONE Widget Deployment
1. Double Click Empty Widget Icon
![Page 18: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/18.jpg)
OZONE Widget Deployment
![Page 19: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/19.jpg)
OZONE Widget Development
Widgets developed and deployed in this method are nothing more than a standard Java WAR which can be accessed at the appropriate applicaRon context URL.
![Page 20: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/20.jpg)
Example PreferencesWidget Project
§ Simple project to demonstrate both storing and loading of preferences with
the OWF API.
§ Contains seings to build and deploy both project WAR and required Jefy context files to a local Jefy instance.
§ Deploys to Jefy as hEps://localhost:8443/PreferencesWidget
§ Can be easily imported into Netbeans or built using command line tools.
Normal Build mvn clean install
Build and Deploy mvn clean install –Pdeploy-‐jeEy
![Page 21: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/21.jpg)
OZONE Widget Framework -‐ Preferences
§ URlizes the Ozone.pref.PrefServer class.
§ User preferences are managed through the setUserPreference and getUserPreference methods.
§ Preferences are simply a string stored in OWF that is uniquely mapped to a user, namespace, and name combinaRon.
§ It is suggested that non-‐trivial preferences be represented as JSON strings for storage and retrieval. If it can be represented as JSON is can be stored as a preference.
§ Supplied Dojo library provides mechanism for parsing and conversion of JSON strings via the toJson and fromJson methods.
![Page 22: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/22.jpg)
function savePreferences(preferences) { Ozone.pref.PrefServer.setUserPreference({ namespace: "com.geocent.owf.example.bookmarkWidget", name: "widgetPreferences”, value: owfdojo.toJson(preferences), onSuccess: function() { [INSERT BUSINESS LOGIC HERE] }, onFailure: function(error, status) { if (status != 404) { Ozone.util.ErrorDlg.show("Error saving preferences."); } } }); }
PreferencesWidget – Saving Preferences
“Store the JSON value of the preferences object within the preferences system for this user under the namespace com.geocent.owf.example.bookmarkWidget and iden;fied by the name widgetPreferences. When successfully stored execute the onSuccess func;on.”
![Page 23: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/23.jpg)
function loadPreferences() { Ozone.pref.PrefServer.getUserPreference({ namespace: "com.geocent.owf.example.bookmarkWidget", name: "widgetPreferences”, onSuccess: function(storedPreferences) { var preferences = owfdojo.fromJson(storedPreferences.value); if( preferences != undefined && preferences != null ) { [INSERT BUSINESS LOGIC HERE] } }, onFailure: function(error, status) { if (status != 404) { Ozone.util.ErrorDlg.show("Error loading preferences."); } } }); }
PreferencesWidget – Loading Preferences
“Load from the preferences system for this user the preference under the namespace com.geocent.owf.example.bookmarkWidget and iden;fied by the name widgetPreferences. When successfully retrieved execute the onSuccess func;on.”
![Page 24: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/24.jpg)
PreferencesWidget
![Page 25: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/25.jpg)
PreferencesWidget – Lifecycle
Load Widget
Load Preferences
Get Bookmarks
From Preferences
Display Widget
Get Bookmarks
Save Preferences
Update Bookmarks In Preferences
Click Add
Click Remove
Add Bookmark To Internal List
Remove Bookmarks
From Internal List
![Page 26: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/26.jpg)
PreferencesWidget – Demo
Code Walkthrough
and
Widget DemonstraRon
![Page 27: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/27.jpg)
Example CommunicaRonWidget Project
§ Two part project to demonstrate the evenRng communicaRon framework
and widget launcher framework with the OWF API.
§ Contains seings to build and deploy both project WARs and required Jefy context files to a local Jefy instance.
§ Deploys to Jefy as hEps://localhost:8443/ComWidgetAnnouncer and hEps://localhost:8443/ComWidgetReceiver.
§ Can be easily imported into Netbeans or built using command line tools from the common parent Communica;onWidget project.
Normal Build mvn clean install
Build and Deploy mvn clean install –Pdeploy-‐jeEy
![Page 28: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/28.jpg)
OZONE Widget Framework -‐ EvenRng
§ URlizes the Ozone.even;ng.Widget class.
§ EvenRng messaging is managed through the subscribe and publish methods.
§ Message payloads are published to a specified channel name and are received at all widgets that are subscribed to that channel.
![Page 29: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/29.jpg)
OZONE Widget Framework -‐ EvenRng
§ FuncRonally message payload are passed from the originaRng widget’s
containing IFrame, to the parent OWF dashboard, down into the subscribed widgets’ containing IFrames.
OriginaRng Widget
OWF Dashboard
Subscribed Widgets
Since data is internally transmifed within the OZONE Widget Framework via via HTTP GET and POST requests developers should limit payload sizes to 2KB to fit within Internet Explorer’s limitaRons. For more informaRon see: hfp://support.microso:.com/kb/208427
![Page 30: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/30.jpg)
OZONE Widget Framework – Widget Launching
§ URlizes the Ozone.launcher.WidgetLauncher classes.
§ Widget launching is executed using the launchWidget method..
§ The GUID of the target widget to launch much be known in order to launch the target widget. If this informaRon is not known the widget informaRon can be discovered using the Ozone.pref.PrefServer.findWidgets method.
§ The findWidgets method can perform searches on any combinaRon of the widgetName, widgetVersion, and widgetGuid fields uRlizing the % character as a wildcard match.
![Page 31: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/31.jpg)
Ozone.pref.PrefServer.findWidgets({ searchParams: { widgetName: “Widget Name” }, onSuccess: function(widgets) {
processWidgets(widgets); }, onFailure: function(error, status) { if (status != 404) { Ozone.util.ErrorDlg.show("Error finding widgets."); } } });
ComWidgetAnnouncer – Finding a Widget
“Find all widgets whose ;tle is Widget Name. When the search succesfully completes execute the onSuccess func;on.”
![Page 32: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/32.jpg)
function processWidgets(widgets) { if(widgets.length == 1) {
var widgetEventingController = Ozone.eventing.Widget.getInstance(); Ozone.launcher.WidgetLauncher.getInstance(widgetEventingController) .launchWidget({ guid: widgets[0].id, launchOnlyIfClosed: true
}); } }
ComWidgetAnnouncer – Launching a Widget
“Only launch the widget if one and only one is found. Get the widget even;ng controller singleton and launch the first located widget if and only if the widget is currently closed.”
![Page 33: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/33.jpg)
var widgetEventingController = Ozone.eventing.Widget.getInstance(); widgetEventingController.publish(
"com.geocent.owf.example.announcer”, owfdojo.toJson({ timestamp: (new Date()).getTime() })
);
ComWidgetAnnouncer – Publishing a Message
“Get the widget even;ng controller singleton and publish the string representa;on of a JSON object containing the current ;mestamp to the channel com.geocent.owf.example.announcer”
![Page 34: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/34.jpg)
var widgetEventingController = Ozone.eventing.Widget.getInstance(); widgetEventingController.subscribe(
"com.geocent.owf.example.announcer”, function(sender, msg, channel) { var messageData = owfdojo.fromJson(msg);
[INSERT BUSINESS LOGIC HERE] }
);
ComWidgetReceiver – Subscribing to a Channel
“Get the widget even;ng controller singleton and subscribe to the channel com.geocent.owf.example.announcer. When a message is receives process the message with the inline handler.”
![Page 35: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/35.jpg)
ComWidgetAnnouncer / ComWidgetReceiver
![Page 36: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/36.jpg)
ComWidgetAnnouncer / ComWidgetReceiver – Lifecycle
Load Announcer
Display Receiver
Receiver Loaded?
Find Widget
Launch Found Widget
Subscribe to
Channel
Receive on
Channel
Display Message
N
Set Timeout
Timeout Expired
Display Message
Publish to Channel
ComWidgetAnnouncer ComWidgetReceiver
Y
![Page 37: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/37.jpg)
ComWidgetAnnouncer / ComWidgetReceiver – Demo
Code Walkthrough
and
Widget DemonstraRon
![Page 38: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/38.jpg)
OZONE Widget Development
QuesRons?
![Page 39: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/39.jpg)
More InformaRon
OZONE Widget Framework Pages § Google Groups – ozone-‐developers
hfp://groups.google.com/group/ozone-‐developers § OWF GOSS Project Page
hfp://owfgoss.org § So:wareForge Project Page
hfps://so:ware.forge.mil/sf/projects/ozone_widget_framework_owf Contact InformaFon § OWF Community Support and GOSS Infrastructure QuesRons
goss-‐[email protected] § Me (Any other quesRons)
[email protected] [email protected]
![Page 40: OZONE Widget Framework Introduction and Quick Start Tutorial · NOTICE: Proprietary and Confidential This material is proprietary to Geocent. It contains trade secrets and confidential](https://reader036.vdocuments.us/reader036/viewer/2022071001/5fbd46dc9cc4d35b705ea221/html5/thumbnails/40.jpg)