You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by ia...@apache.org on 2015/06/10 16:06:47 UTC

[25/64] [abbrv] incubator-taverna-mobile git commit: Implemented the wireframes for mobile flash Screen, mobile login and mobile Dashboard

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/outputs/logs/manifest-merger-release-report.txt
----------------------------------------------------------------------
diff --git a/app/build/outputs/logs/manifest-merger-release-report.txt b/app/build/outputs/logs/manifest-merger-release-report.txt
new file mode 100644
index 0000000..0188927
--- /dev/null
+++ b/app/build/outputs/logs/manifest-merger-release-report.txt
@@ -0,0 +1,53 @@
+-- Merging decision tree log ---
+manifest
+ADDED from AndroidManifest.xml:22:1
+	package
+		ADDED from AndroidManifest.xml:23:5
+		INJECTED from AndroidManifest.xml:0:0
+		INJECTED from AndroidManifest.xml:0:0
+	android:versionName
+		INJECTED from AndroidManifest.xml:0:0
+		INJECTED from AndroidManifest.xml:0:0
+	xmlns:android
+		ADDED from AndroidManifest.xml:22:11
+	android:versionCode
+		INJECTED from AndroidManifest.xml:0:0
+		INJECTED from AndroidManifest.xml:0:0
+application
+ADDED from AndroidManifest.xml:25:5
+MERGED from com.android.support:appcompat-v7:22.0.0:22:5
+MERGED from com.android.support:support-v4:22.0.0:22:5
+	android:label
+		ADDED from AndroidManifest.xml:28:9
+	android:allowBackup
+		ADDED from AndroidManifest.xml:26:9
+	android:icon
+		ADDED from AndroidManifest.xml:27:9
+	android:theme
+		ADDED from AndroidManifest.xml:29:9
+activity#mobile.taverna.apache.com.org.apache.taverna.mobile.LoginActivity
+ADDED from AndroidManifest.xml:30:9
+	android:label
+		ADDED from AndroidManifest.xml:32:13
+	android:name
+		ADDED from AndroidManifest.xml:31:13
+intent-filter#android.intent.action.MAIN+android.intent.category.LAUNCHER
+ADDED from AndroidManifest.xml:33:13
+action#android.intent.action.MAIN
+ADDED from AndroidManifest.xml:34:17
+	android:name
+		ADDED from AndroidManifest.xml:34:25
+category#android.intent.category.LAUNCHER
+ADDED from AndroidManifest.xml:36:17
+	android:name
+		ADDED from AndroidManifest.xml:36:27
+uses-sdk
+INJECTED from AndroidManifest.xml:0:0 reason: use-sdk injection requested
+MERGED from com.android.support:appcompat-v7:22.0.0:20:5
+MERGED from com.android.support:support-v4:22.0.0:20:5
+	android:targetSdkVersion
+		INJECTED from AndroidManifest.xml:0:0
+		INJECTED from AndroidManifest.xml:0:0
+	android:minSdkVersion
+		INJECTED from AndroidManifest.xml:0:0
+		INJECTED from AndroidManifest.xml:0:0

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/debug/css/base-style.css
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/debug/css/base-style.css b/app/build/reports/tests/debug/css/base-style.css
new file mode 100644
index 0000000..33e20f1
--- /dev/null
+++ b/app/build/reports/tests/debug/css/base-style.css
@@ -0,0 +1,161 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/debug/css/style.css
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/debug/css/style.css b/app/build/reports/tests/debug/css/style.css
new file mode 100644
index 0000000..3dc4913
--- /dev/null
+++ b/app/build/reports/tests/debug/css/style.css
@@ -0,0 +1,84 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+.skipped, .skipped a {
+    color: #c09853;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/debug/index.html
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/debug/index.html b/app/build/reports/tests/debug/index.html
new file mode 100644
index 0000000..503f735
--- /dev/null
+++ b/app/build/reports/tests/debug/index.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Test Summary</title>
+<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="css/style.css" rel="stylesheet" type="text/css"/>
+<script src="js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Test Summary</h1>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">0</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">-</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">-</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody/>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>Generated by 
+<a href="http://www.gradle.org">Gradle 2.2.1</a> at Jun 6, 2015 1:22:47 AM</p>
+</div>
+</div>
+</body>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/debug/js/report.js
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/debug/js/report.js b/app/build/reports/tests/debug/js/report.js
new file mode 100644
index 0000000..a4455e4
--- /dev/null
+++ b/app/build/reports/tests/debug/js/report.js
@@ -0,0 +1,101 @@
+var tabs = new Object();
+
+function initTabs() {
+    var container = document.getElementById('tabs');
+    tabs.tabs = findTabs(container);
+    tabs.titles = findTitles(tabs.tabs);
+    tabs.headers = findHeaders(container);
+    tabs.select = select;
+    tabs.deselectAll = deselectAll;
+    tabs.select(0);
+    return true;
+}
+
+window.onload = initTabs;
+
+function switchTab() {
+    var id = this.id.substr(1);
+    for (var i = 0; i < tabs.tabs.length; i++) {
+        if (tabs.tabs[i].id == id) {
+            tabs.select(i);
+            break;
+        }
+    }
+    return false;
+}
+
+function select(i) {
+    this.deselectAll();
+    changeElementClass(this.tabs[i], 'tab selected');
+    changeElementClass(this.headers[i], 'selected');
+    while (this.headers[i].firstChild) {
+        this.headers[i].removeChild(this.headers[i].firstChild);
+    }
+    var h2 = document.createElement('H2');
+    h2.appendChild(document.createTextNode(this.titles[i]));
+    this.headers[i].appendChild(h2);
+}
+
+function deselectAll() {
+    for (var i = 0; i < this.tabs.length; i++) {
+        changeElementClass(this.tabs[i], 'tab deselected');
+        changeElementClass(this.headers[i], 'deselected');
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+        var a = document.createElement('A');
+        a.setAttribute('id', 'ltab' + i);
+        a.setAttribute('href', '#tab' + i);
+        a.onclick = switchTab;
+        a.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(a);
+    }
+}
+
+function changeElementClass(element, classValue) {
+    if (element.getAttribute('className')) {
+        /* IE */
+        element.setAttribute('className', classValue)
+    } else {
+        element.setAttribute('class', classValue)
+    }
+}
+
+function findTabs(container) {
+    return findChildElements(container, 'DIV', 'tab');
+}
+
+function findHeaders(container) {
+    var owner = findChildElements(container, 'UL', 'tabLinks');
+    return findChildElements(owner[0], 'LI', null);
+}
+
+function findTitles(tabs) {
+    var titles = new Array();
+    for (var i = 0; i < tabs.length; i++) {
+        var tab = tabs[i];
+        var header = findChildElements(tab, 'H2', null)[0];
+        header.parentNode.removeChild(header);
+        if (header.innerText) {
+            titles.push(header.innerText)
+        } else {
+            titles.push(header.textContent)
+        }
+    }
+    return titles;
+}
+
+function findChildElements(container, name, targetClass) {
+    var elements = new Array();
+    var children = container.childNodes;
+    for (var i = 0; i < children.length; i++) {
+        var child = children.item(i);
+        if (child.nodeType == 1 && child.nodeName == name) {
+            if (targetClass && child.className.indexOf(targetClass) < 0) {
+                continue;
+            }
+            elements.push(child);
+        }
+    }
+    return elements;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/release/css/base-style.css
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/release/css/base-style.css b/app/build/reports/tests/release/css/base-style.css
new file mode 100644
index 0000000..33e20f1
--- /dev/null
+++ b/app/build/reports/tests/release/css/base-style.css
@@ -0,0 +1,161 @@
+
+body {
+    margin: 0;
+    padding: 0;
+    font-family: sans-serif;
+    font-size: 12pt;
+}
+
+body, a, a:visited {
+    color: #303030;
+}
+
+#content {
+    padding-left: 50px;
+    padding-right: 50px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+}
+
+#content h1 {
+    font-size: 160%;
+    margin-bottom: 10px;
+}
+
+#footer {
+    margin-top: 100px;
+    font-size: 80%;
+    white-space: nowrap;
+}
+
+#footer, #footer a {
+    color: #a0a0a0;
+}
+
+ul {
+    margin-left: 0;
+}
+
+h1, h2, h3 {
+    white-space: nowrap;
+}
+
+h2 {
+    font-size: 120%;
+}
+
+ul.tabLinks {
+    padding-left: 0;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    overflow: auto;
+    min-width: 800px;
+    width: auto !important;
+    width: 800px;
+}
+
+ul.tabLinks li {
+    float: left;
+    height: 100%;
+    list-style: none;
+    padding-left: 10px;
+    padding-right: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    margin-bottom: 0;
+    -moz-border-radius: 7px;
+    border-radius: 7px;
+    margin-right: 25px;
+    border: solid 1px #d4d4d4;
+    background-color: #f0f0f0;
+}
+
+ul.tabLinks li:hover {
+    background-color: #fafafa;
+}
+
+ul.tabLinks li.selected {
+    background-color: #c5f0f5;
+    border-color: #c5f0f5;
+}
+
+ul.tabLinks a {
+    font-size: 120%;
+    display: block;
+    outline: none;
+    text-decoration: none;
+    margin: 0;
+    padding: 0;
+}
+
+ul.tabLinks li h2 {
+    margin: 0;
+    padding: 0;
+}
+
+div.tab {
+}
+
+div.selected {
+    display: block;
+}
+
+div.deselected {
+    display: none;
+}
+
+div.tab table {
+    min-width: 350px;
+    width: auto !important;
+    width: 350px;
+    border-collapse: collapse;
+}
+
+div.tab th, div.tab table {
+    border-bottom: solid #d0d0d0 1px;
+}
+
+div.tab th {
+    text-align: left;
+    white-space: nowrap;
+    padding-left: 6em;
+}
+
+div.tab th:first-child {
+    padding-left: 0;
+}
+
+div.tab td {
+    white-space: nowrap;
+    padding-left: 6em;
+    padding-top: 5px;
+    padding-bottom: 5px;
+}
+
+div.tab td:first-child {
+    padding-left: 0;
+}
+
+div.tab td.numeric, div.tab th.numeric {
+    text-align: right;
+}
+
+span.code {
+    display: inline-block;
+    margin-top: 0em;
+    margin-bottom: 1em;
+}
+
+span.code pre {
+    font-size: 11pt;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    background-color: #f7f7f7;
+    border: solid 1px #d0d0d0;
+    min-width: 700px;
+    width: auto !important;
+    width: 700px;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/release/css/style.css
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/release/css/style.css b/app/build/reports/tests/release/css/style.css
new file mode 100644
index 0000000..3dc4913
--- /dev/null
+++ b/app/build/reports/tests/release/css/style.css
@@ -0,0 +1,84 @@
+
+#summary {
+    margin-top: 30px;
+    margin-bottom: 40px;
+}
+
+#summary table {
+    border-collapse: collapse;
+}
+
+#summary td {
+    vertical-align: top;
+}
+
+.breadcrumbs, .breadcrumbs a {
+    color: #606060;
+}
+
+.infoBox {
+    width: 110px;
+    padding-top: 15px;
+    padding-bottom: 15px;
+    text-align: center;
+}
+
+.infoBox p {
+    margin: 0;
+}
+
+.counter, .percent {
+    font-size: 120%;
+    font-weight: bold;
+    margin-bottom: 8px;
+}
+
+#duration {
+    width: 125px;
+}
+
+#successRate, .summaryGroup {
+    border: solid 2px #d0d0d0;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+}
+
+#successRate {
+    width: 140px;
+    margin-left: 35px;
+}
+
+#successRate .percent {
+    font-size: 180%;
+}
+
+.success, .success a {
+    color: #008000;
+}
+
+div.success, #successRate.success {
+    background-color: #bbd9bb;
+    border-color: #008000;
+}
+
+.failures, .failures a {
+    color: #b60808;
+}
+
+.skipped, .skipped a {
+    color: #c09853;
+}
+
+div.failures, #successRate.failures {
+    background-color: #ecdada;
+    border-color: #b60808;
+}
+
+ul.linkList {
+    padding-left: 0;
+}
+
+ul.linkList li {
+    list-style: none;
+    margin-bottom: 5px;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/release/index.html
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/release/index.html b/app/build/reports/tests/release/index.html
new file mode 100644
index 0000000..503f735
--- /dev/null
+++ b/app/build/reports/tests/release/index.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<meta http-equiv="x-ua-compatible" content="IE=edge"/>
+<title>Test results - Test Summary</title>
+<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
+<link href="css/style.css" rel="stylesheet" type="text/css"/>
+<script src="js/report.js" type="text/javascript"></script>
+</head>
+<body>
+<div id="content">
+<h1>Test Summary</h1>
+<div id="summary">
+<table>
+<tr>
+<td>
+<div class="summaryGroup">
+<table>
+<tr>
+<td>
+<div class="infoBox" id="tests">
+<div class="counter">0</div>
+<p>tests</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="failures">
+<div class="counter">0</div>
+<p>failures</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="ignored">
+<div class="counter">0</div>
+<p>ignored</p>
+</div>
+</td>
+<td>
+<div class="infoBox" id="duration">
+<div class="counter">-</div>
+<p>duration</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</td>
+<td>
+<div class="infoBox success" id="successRate">
+<div class="percent">-</div>
+<p>successful</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div id="tabs">
+<ul class="tabLinks">
+<li>
+<a href="#tab0">Classes</a>
+</li>
+</ul>
+<div id="tab0" class="tab">
+<h2>Classes</h2>
+<table>
+<thead>
+<tr>
+<th>Class</th>
+<th>Tests</th>
+<th>Failures</th>
+<th>Ignored</th>
+<th>Duration</th>
+<th>Success rate</th>
+</tr>
+</thead>
+<tbody/>
+</table>
+</div>
+</div>
+<div id="footer">
+<p>Generated by 
+<a href="http://www.gradle.org">Gradle 2.2.1</a> at Jun 6, 2015 1:22:47 AM</p>
+</div>
+</div>
+</body>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/reports/tests/release/js/report.js
----------------------------------------------------------------------
diff --git a/app/build/reports/tests/release/js/report.js b/app/build/reports/tests/release/js/report.js
new file mode 100644
index 0000000..a4455e4
--- /dev/null
+++ b/app/build/reports/tests/release/js/report.js
@@ -0,0 +1,101 @@
+var tabs = new Object();
+
+function initTabs() {
+    var container = document.getElementById('tabs');
+    tabs.tabs = findTabs(container);
+    tabs.titles = findTitles(tabs.tabs);
+    tabs.headers = findHeaders(container);
+    tabs.select = select;
+    tabs.deselectAll = deselectAll;
+    tabs.select(0);
+    return true;
+}
+
+window.onload = initTabs;
+
+function switchTab() {
+    var id = this.id.substr(1);
+    for (var i = 0; i < tabs.tabs.length; i++) {
+        if (tabs.tabs[i].id == id) {
+            tabs.select(i);
+            break;
+        }
+    }
+    return false;
+}
+
+function select(i) {
+    this.deselectAll();
+    changeElementClass(this.tabs[i], 'tab selected');
+    changeElementClass(this.headers[i], 'selected');
+    while (this.headers[i].firstChild) {
+        this.headers[i].removeChild(this.headers[i].firstChild);
+    }
+    var h2 = document.createElement('H2');
+    h2.appendChild(document.createTextNode(this.titles[i]));
+    this.headers[i].appendChild(h2);
+}
+
+function deselectAll() {
+    for (var i = 0; i < this.tabs.length; i++) {
+        changeElementClass(this.tabs[i], 'tab deselected');
+        changeElementClass(this.headers[i], 'deselected');
+        while (this.headers[i].firstChild) {
+            this.headers[i].removeChild(this.headers[i].firstChild);
+        }
+        var a = document.createElement('A');
+        a.setAttribute('id', 'ltab' + i);
+        a.setAttribute('href', '#tab' + i);
+        a.onclick = switchTab;
+        a.appendChild(document.createTextNode(this.titles[i]));
+        this.headers[i].appendChild(a);
+    }
+}
+
+function changeElementClass(element, classValue) {
+    if (element.getAttribute('className')) {
+        /* IE */
+        element.setAttribute('className', classValue)
+    } else {
+        element.setAttribute('class', classValue)
+    }
+}
+
+function findTabs(container) {
+    return findChildElements(container, 'DIV', 'tab');
+}
+
+function findHeaders(container) {
+    var owner = findChildElements(container, 'UL', 'tabLinks');
+    return findChildElements(owner[0], 'LI', null);
+}
+
+function findTitles(tabs) {
+    var titles = new Array();
+    for (var i = 0; i < tabs.length; i++) {
+        var tab = tabs[i];
+        var header = findChildElements(tab, 'H2', null)[0];
+        header.parentNode.removeChild(header);
+        if (header.innerText) {
+            titles.push(header.innerText)
+        } else {
+            titles.push(header.textContent)
+        }
+    }
+    return titles;
+}
+
+function findChildElements(container, name, targetClass) {
+    var elements = new Array();
+    var children = container.childNodes;
+    for (var i = 0; i < children.length; i++) {
+        var child = children.item(i);
+        if (child.nodeType == 1 && child.nodeName == name) {
+            if (targetClass && child.className.indexOf(targetClass) < 0) {
+                continue;
+            }
+            elements.push(child);
+        }
+    }
+    return elements;
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/test-results/binary/testDebug/output.bin
----------------------------------------------------------------------
diff --git a/app/build/test-results/binary/testDebug/output.bin b/app/build/test-results/binary/testDebug/output.bin
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/test-results/binary/testDebug/output.bin.idx
----------------------------------------------------------------------
diff --git a/app/build/test-results/binary/testDebug/output.bin.idx b/app/build/test-results/binary/testDebug/output.bin.idx
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/app/build/test-results/binary/testDebug/output.bin.idx differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/test-results/binary/testDebug/results.bin
----------------------------------------------------------------------
diff --git a/app/build/test-results/binary/testDebug/results.bin b/app/build/test-results/binary/testDebug/results.bin
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/test-results/binary/testRelease/output.bin
----------------------------------------------------------------------
diff --git a/app/build/test-results/binary/testRelease/output.bin b/app/build/test-results/binary/testRelease/output.bin
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/test-results/binary/testRelease/output.bin.idx
----------------------------------------------------------------------
diff --git a/app/build/test-results/binary/testRelease/output.bin.idx b/app/build/test-results/binary/testRelease/output.bin.idx
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/app/build/test-results/binary/testRelease/output.bin.idx differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/build/test-results/binary/testRelease/results.bin
----------------------------------------------------------------------
diff --git a/app/build/test-results/binary/testRelease/results.bin b/app/build/test-results/binary/testRelease/results.bin
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/AndroidManifest.xml
----------------------------------------------------------------------
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 227c6a3..bcafa5f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,9 +18,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
-
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="mobile.taverna.apache.com.org.apache.taverna.mobile" >
+    package="org.apache.taverna.mobile" >
 
     <application
         android:allowBackup="true"
@@ -28,14 +27,28 @@ limitations under the License.
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name=".LoginActivity"
+            android:name=".activities.LoginActivity"
             android:label="@string/app_name" >
+        </activity>
+        <activity
+            android:name=".activities.FlashScreenActivity"
+            android:label="@string/title_activity_flash_screen" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+        <activity
+            android:name=".activities.DashboardMainActivity"
+            android:label="@string/title_activity_dashboard_main" >
+            <intent-filter>
+                <action android:name="android.intent.action.SEARCH"></action>
+            </intent-filter>
+            <meta-data android:name="android.app.searchable"
+                android:resource="@xml/searchable" />
+
+        </activity>
     </application>
 
 </manifest>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/ic_launcher-web.png
----------------------------------------------------------------------
diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png
new file mode 100644
index 0000000..a06ff39
Binary files /dev/null and b/app/src/main/ic_launcher-web.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/ic_poweredby-web.png
----------------------------------------------------------------------
diff --git a/app/src/main/ic_poweredby-web.png b/app/src/main/ic_poweredby-web.png
new file mode 100644
index 0000000..4248f9e
Binary files /dev/null and b/app/src/main/ic_poweredby-web.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/ic_quit-web.png
----------------------------------------------------------------------
diff --git a/app/src/main/ic_quit-web.png b/app/src/main/ic_quit-web.png
new file mode 100644
index 0000000..04a8771
Binary files /dev/null and b/app/src/main/ic_quit-web.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/ic_usage-web.png
----------------------------------------------------------------------
diff --git a/app/src/main/ic_usage-web.png b/app/src/main/ic_usage-web.png
new file mode 100644
index 0000000..550ffa6
Binary files /dev/null and b/app/src/main/ic_usage-web.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/ic_user-web.png
----------------------------------------------------------------------
diff --git a/app/src/main/ic_user-web.png b/app/src/main/ic_user-web.png
new file mode 100644
index 0000000..6849809
Binary files /dev/null and b/app/src/main/ic_user-web.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java b/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java
new file mode 100644
index 0000000..12f325a
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/activities/DashboardMainActivity.java
@@ -0,0 +1,181 @@
+package org.apache.taverna.mobile.activities;
+
+/**
+ * Apache Taverna Mobile
+* Copyright 2015 The Apache Software Foundation
+
+* This product includes software developed at
+* The Apache Software Foundation (http://www.apache.org/).
+
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+import android.app.SearchManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.SearchView;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.widget.Toast;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.fragments.DashboardFragment;
+import org.apache.taverna.mobile.fragments.NavigationDrawerFragment;
+import org.apache.taverna.mobile.fragments.WorkflowItemFragment;
+
+public class DashboardMainActivity extends ActionBarActivity
+        implements NavigationDrawerFragment.NavigationDrawerCallbacks, WorkflowItemFragment.OnWorkflowSelectedListener {
+
+    /**
+     * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
+     */
+    private NavigationDrawerFragment mNavigationDrawerFragment;
+
+    /**
+     * Used to store the last screen title. For use in {@link #restoreActionBar()}.
+     */
+    private CharSequence mTitle;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_dashboard_main);
+
+        mNavigationDrawerFragment = (NavigationDrawerFragment)
+                getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
+        mTitle = getTitle();
+
+        // Set up the drawer.
+        mNavigationDrawerFragment.setUp(
+                R.id.navigation_drawer,
+                (DrawerLayout) findViewById(R.id.drawer_layout));
+       //Handle search actions from a system sent intent
+        Intent searchIntent = getIntent();
+        if(searchIntent != null && Intent.ACTION_SEARCH.equals(searchIntent.getAction())){
+            //retrieve and process query then display results
+            String query = searchIntent.getStringExtra(SearchManager.QUERY);
+            Toast.makeText(this,"Query = "+query, Toast.LENGTH_SHORT).show();
+        }
+
+    }
+
+    @Override
+    public void onNavigationDrawerItemSelected(int position) {
+        // update the main content by replacing fragments
+        FragmentManager fragmentManager = getSupportFragmentManager();
+        switch(position+1){
+            case 1:
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, WorkflowItemFragment.newInstance("param1", "param2"))
+                        .setTransition(FragmentTransaction.TRANSIT_ENTER_MASK)
+                        .commit();
+                break;
+            case 2:
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, DashboardFragment.newInstance(position + 1))
+                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                        .commit();
+                break;
+            case 3:
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, DashboardFragment.newInstance(position + 1))
+                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                        .commit();
+                break;
+            case 4:
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, DashboardFragment.newInstance(position + 1))
+                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                        .commit();
+                break;
+            case 5:
+                fragmentManager.beginTransaction()
+                        .replace(R.id.container, DashboardFragment.newInstance(position + 1))
+                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                        .commit();
+                break;
+            default:
+                break;
+        }
+    }
+
+    public void onSectionAttached(int number) {
+        switch (number) {
+            case 1:
+                mTitle = getString(R.string.title_activity_dashboard_main);
+                break;
+            case 2:
+                mTitle = getString(R.string.title_openworkflow);
+                break;
+            case 3:
+                mTitle = getString(R.string.title_usage);
+                break;
+            case 4:
+                mTitle = getString(R.string.title_about);
+                break;
+            case 5:
+                mTitle = getString(R.string.title_exit);
+                break;
+        }
+    }
+
+    public void restoreActionBar() {
+        ActionBar actionBar = getSupportActionBar();
+        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+        actionBar.setDisplayShowTitleEnabled(true);
+        actionBar.setTitle(mTitle);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (!mNavigationDrawerFragment.isDrawerOpen()) {
+            // Only show items in the action bar relevant to this screen
+            // if the drawer is not showing. Otherwise, let the drawer
+            // decide what to show in the action bar.
+            MenuInflater mi = getMenuInflater();
+                mi.inflate(R.menu.dashboard_main, menu);
+            //get the searchview and set the searchable configuration
+            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
+            SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
+            //assuming this activity is the searchable activity
+            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
+            searchView.setSubmitButtonEnabled(true);
+            searchView.setIconifiedByDefault(false);
+
+            restoreActionBar();
+            return true;
+        }
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public void onWorkflowSelected(String id) {
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/activities/FlashScreenActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/activities/FlashScreenActivity.java b/app/src/main/java/org/apache/taverna/mobile/activities/FlashScreenActivity.java
new file mode 100644
index 0000000..db03d01
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/activities/FlashScreenActivity.java
@@ -0,0 +1,69 @@
+package org.apache.taverna.mobile.activities;
+
+/*
+* Apache Taverna Mobile
+* Copyright 2015 The Apache Software Foundation
+
+* This product includes software developed at
+* The Apache Software Foundation (http://www.apache.org/).
+
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+import android.content.Intent;
+import android.os.Handler;
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.apache.taverna.mobile.R;
+
+public class FlashScreenActivity extends ActionBarActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_flash_screen);
+        getSupportActionBar().hide();
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        return false;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+
+        return super.onOptionsItemSelected(item);
+    }
+    @Override
+    public void onResume(){
+        super.onResume();
+        Handler mhandler = new Handler();
+        mhandler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                startActivity(new Intent(FlashScreenActivity.this, LoginActivity.class));
+                (FlashScreenActivity.this).finish();
+            }
+        }, 2500);
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java b/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java
index c14f37a..dea87b0 100644
--- a/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java
+++ b/app/src/main/java/org/apache/taverna/mobile/activities/LoginActivity.java
@@ -25,6 +25,7 @@ package org.apache.taverna.mobile.activities;
 * under the License.
 */
 
+import android.content.Intent;
 import android.support.v7.app.ActionBarActivity;
 import android.support.v4.app.Fragment;
 import android.os.Bundle;
@@ -33,8 +34,9 @@ import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
 
-import mobile.taverna.apache.com.org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.R;
 
 
 public class LoginActivity extends ActionBarActivity {
@@ -43,49 +45,51 @@ public class LoginActivity extends ActionBarActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_login);
+        getSupportActionBar().hide();
         if (savedInstanceState == null) {
             getSupportFragmentManager().beginTransaction()
-                    .add(R.id.container, new PlaceholderFragment())
+                    .add(R.id.container, new LoginFragment())
                     .commit();
         }
     }
 
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        // Inflate the menu; this adds items to the action bar if it is present.
-        getMenuInflater().inflate(R.menu.menu_login, menu);
-        return true;
+        return false;
     }
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        // Handle action bar item clicks here. The action bar will
-        // automatically handle clicks on the Home/Up button, so long
-        // as you specify a parent activity in AndroidManifest.xml.
-        int id = item.getItemId();
-
-        //noinspection SimplifiableIfStatement
-        if (id == R.id.action_settings) {
-            return true;
-        }
-
-        return super.onOptionsItemSelected(item);
+      return super.onOptionsItemSelected(item);
     }
 
     /**
      * A placeholder fragment containing a simple view.
      */
-    public static class PlaceholderFragment extends Fragment {
+    public static class LoginFragment extends Fragment implements View.OnClickListener{
+
+        private View rootView;
 
-        public PlaceholderFragment() {
+        public LoginFragment() {
         }
 
         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                  Bundle savedInstanceState) {
-            View rootView = inflater.inflate(R.layout.fragment_login, container, false);
+            rootView = inflater.inflate(R.layout.fragment_login, container, false);
+            Button loginButton = (Button) rootView.findViewById(R.id.loginbutton);
+            loginButton.setOnClickListener(this);
             return rootView;
         }
+
+        @Override
+        public void onClick(View view) {
+            switch (view.getId()){
+                case R.id.loginbutton:
+                    startActivity(new Intent(getActivity(), DashboardMainActivity.class));
+                    break;
+
+            }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/adapters/SliderMenuAdapter.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/adapters/SliderMenuAdapter.java b/app/src/main/java/org/apache/taverna/mobile/adapters/SliderMenuAdapter.java
new file mode 100644
index 0000000..962e5e4
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/adapters/SliderMenuAdapter.java
@@ -0,0 +1,95 @@
+package org.apache.taverna.mobile.adapters;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import org.apache.taverna.mobile.R;
+
+import java.util.List;
+
+/**
+ * Created by root on 6/7/15.
+ */
+public class SliderMenuAdapter extends BaseAdapter{
+
+    private List<String> dataItems;
+    private Context context;
+
+    public SliderMenuAdapter(Context c,List<String> items){
+        dataItems = items;
+        context = c;
+    }
+
+    @Override
+    public int getCount() {
+        return dataItems.size();
+    }
+
+    @Override
+    public String getItem(int i) {
+        return dataItems.get(i);
+    }
+
+    @Override
+    public long getItemId(int i) {
+        return 0;
+    }
+
+    @Override
+    public View getView(int i, View view, ViewGroup viewGroup) {
+
+        View menuitemview = LayoutInflater.from(context).inflate(R.layout.menu_item_layout, viewGroup, false);
+       /* if(view != null ) {
+            ViewHolder vh = (ViewHolder) view.getTag();
+            if (vh == null) {
+                ViewHolder v = new ViewHolder(menuitemview);
+                view.setTag(v);
+                return getView(i,view,viewGroup);
+            } else {
+                vh.menuitem.setText(dataItems.get(i));
+                vh.menuicon.setImageResource(R.drawable.gear_icon);
+            }
+        }*/
+        ImageView menuicon = (ImageView) menuitemview.findViewById(R.id.menuIcon);
+        TextView menuitem = (TextView) menuitemview.findViewById(R.id.menuItemText);
+        switch(i +1){
+            case 1:
+                menuicon.setImageResource(R.drawable.gear_icon);
+                menuitem.setText(dataItems.get(i));
+                break;
+            case 2:
+                menuicon.setImageResource(android.R.drawable.ic_menu_agenda);
+                menuitem.setText(dataItems.get(i));
+                break;
+            case 3:
+                menuicon.setImageResource(R.mipmap.ic_usage);
+                menuitem.setText(dataItems.get(i));
+                break;
+            case 4:
+                menuicon.setImageResource(android.R.drawable.ic_dialog_info);
+                menuitem.setText(dataItems.get(i));
+                break;
+            case 5:
+                menuicon.setImageResource(android.R.drawable.ic_lock_power_off);
+                menuitem.setText(dataItems.get(i));
+                break;
+        }
+        return menuitemview;
+    }
+
+    public static class ViewHolder{
+        public final ImageView menuicon;
+        public final TextView menuitem;
+
+        public ViewHolder(View view){
+            menuicon = (ImageView) view.findViewById(R.id.menuIcon);
+            menuitem = (TextView) view.findViewById(R.id.menuItemText);
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/fragments/DashboardFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/DashboardFragment.java b/app/src/main/java/org/apache/taverna/mobile/fragments/DashboardFragment.java
new file mode 100644
index 0000000..3df220d
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/fragments/DashboardFragment.java
@@ -0,0 +1,77 @@
+package org.apache.taverna.mobile.fragments;
+
+/*
+* Apache Taverna Mobile
+* Copyright 2015 The Apache Software Foundation
+
+* This product includes software developed at
+* The Apache Software Foundation (http://www.apache.org/).
+
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.activities.DashboardMainActivity;
+
+/**
+ * Created by Larry Akah on 6/6/15.
+ */
+public class DashboardFragment extends Fragment{
+    /**
+     * The fragment argument representing the section number for this
+     * fragment.
+     */
+    private static final String ARG_SECTION_NUMBER = "SECTION_NUMBER";
+
+    /**
+     * Returns a new instance of this fragment for the given section
+     * number.
+     */
+    public static DashboardFragment newInstance(int sectionNumber) {
+        DashboardFragment fragment = new DashboardFragment();
+        Bundle args = new Bundle();
+        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    public DashboardFragment() {
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.fragment_dashboard_main, container, false);
+        return rootView;
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        ((DashboardMainActivity) activity).onSectionAttached(
+                getArguments().getInt(ARG_SECTION_NUMBER));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/fragments/NavigationDrawerFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/NavigationDrawerFragment.java b/app/src/main/java/org/apache/taverna/mobile/fragments/NavigationDrawerFragment.java
new file mode 100644
index 0000000..9ea5f6d
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/fragments/NavigationDrawerFragment.java
@@ -0,0 +1,326 @@
+package org.apache.taverna.mobile.fragments;
+
+/*
+* Apache Taverna Mobile
+* Copyright 2015 The Apache Software Foundation
+
+* This product includes software developed at
+* The Apache Software Foundation (http://www.apache.org/).
+
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+import android.support.v7.app.ActionBarActivity;
+import android.app.Activity;
+import android.support.v7.app.ActionBar;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.ActionBarDrawerToggle;
+import android.support.v4.view.GravityCompat;
+import android.support.v4.widget.DrawerLayout;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+import android.widget.Toast;
+
+import org.apache.taverna.mobile.R;
+import org.apache.taverna.mobile.adapters.SliderMenuAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Fragment used for managing interactions for and presentation of a navigation drawer.
+ * See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
+ * design guidelines</a> for a complete explanation of the behaviors implemented here.
+ */
+public class NavigationDrawerFragment extends Fragment {
+
+    /**
+     * Remember the position of the selected item.
+     */
+    private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
+
+    /**
+     * Per the design guidelines, you should show the drawer on launch until the user manually
+     * expands it. This shared preference tracks this.
+     */
+    private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
+
+    /**
+     * A pointer to the current callbacks instance (the Activity).
+     */
+    private NavigationDrawerCallbacks mCallbacks;
+
+    /**
+     * Helper component that ties the action bar to the navigation drawer.
+     */
+    private ActionBarDrawerToggle mDrawerToggle;
+
+    private DrawerLayout mDrawerLayout;
+    private ListView mDrawerListView;
+    private View mFragmentContainerView;
+
+    private int mCurrentSelectedPosition = 0;
+    private boolean mFromSavedInstanceState;
+    private boolean mUserLearnedDrawer;
+
+    public NavigationDrawerFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Read in the flag indicating whether or not the user has demonstrated awareness of the
+        // drawer. See PREF_USER_LEARNED_DRAWER for details.
+        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
+        mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, true);
+
+        if (savedInstanceState != null) {
+            mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
+            mFromSavedInstanceState = true;
+        }
+
+        // Select either the default item (0) or the last selected item.
+        selectItem(mCurrentSelectedPosition);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        // Indicate that this fragment would like to influence the set of actions in the action bar.
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View nview = inflater.inflate(R.layout.fragment_navigation_drawer, null, false);
+        if(nview == null){
+            nview = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
+        }
+
+        mDrawerListView = (ListView) nview.findViewById(R.id.navigation_drawer_listview);
+        //((ViewGroup) mDrawerListView.getParent()).removeView(mDrawerListView);
+        mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                selectItem(position);
+            }
+        });
+        List<String> mlist = new ArrayList<String>();
+        mlist.add(getString(R.string.title_explore));
+        mlist.add(getString(R.string.title_openworkflow));
+        mlist.add(getString(R.string.title_usage));
+        mlist.add(getString(R.string.title_about));
+        mlist.add(getString(R.string.title_exit));
+
+        mDrawerListView.setAdapter(new SliderMenuAdapter(getActivity(), mlist));
+       /* mDrawerListView.setAdapter(new ArrayAdapter<String>(
+                getActionBar().getThemedContext(),
+                android.R.layout.simple_list_item_activated_1,
+                android.R.id.text1,
+                new String[]{
+                        getString(R.string.title_explore),
+                        getString(R.string.title_openworkflow),
+                        getString(R.string.title_usage),
+                        getString(R.string.title_about),
+                        getString(R.string.title_exit),
+
+                }));*/
+        mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
+        //return mDrawerListView;
+        return nview;
+    }
+
+    public boolean isDrawerOpen() {
+        return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
+    }
+
+    /**
+     * Users of this fragment must call this method to set up the navigation drawer interactions.
+     *
+     * @param fragmentId   The android:id of this fragment in its activity's layout.
+     * @param drawerLayout The DrawerLayout containing this fragment's UI.
+     */
+    public void setUp(int fragmentId, DrawerLayout drawerLayout) {
+        mFragmentContainerView = getActivity().findViewById(fragmentId);
+        mDrawerLayout = drawerLayout;
+
+        // set a custom shadow that overlays the main content when the drawer opens
+        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
+        // set up the drawer's list view with items and click listener
+
+        ActionBar actionBar = getActionBar();
+        actionBar.setDisplayHomeAsUpEnabled(true);
+        actionBar.setHomeButtonEnabled(true);
+
+        // ActionBarDrawerToggle ties together the proper interactions
+        // between the navigation drawer and the action bar app icon.
+        mDrawerToggle = new ActionBarDrawerToggle(
+                getActivity(),                    /* host Activity */
+                mDrawerLayout,                    /* DrawerLayout object */
+                R.drawable.ic_drawer,             /* nav drawer image to replace 'Up' caret */
+                R.string.navigation_drawer_open,  /* "open drawer" description for accessibility */
+                R.string.navigation_drawer_close  /* "close drawer" description for accessibility */
+        ) {
+            @Override
+            public void onDrawerClosed(View drawerView) {
+                super.onDrawerClosed(drawerView);
+                if (!isAdded()) {
+                    return;
+                }
+
+                getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
+            }
+
+            @Override
+            public void onDrawerOpened(View drawerView) {
+                super.onDrawerOpened(drawerView);
+                if (!isAdded()) {
+                    return;
+                }
+
+              /*  if (!mUserLearnedDrawer) {
+                    // The user manually opened the drawer; store this flag to prevent auto-showing
+                    // the navigation drawer automatically in the future.
+                    mUserLearnedDrawer = true;
+                    SharedPreferences sp = PreferenceManager
+                            .getDefaultSharedPreferences(getActivity());
+                    sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
+                }
+*/
+                getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
+            }
+        };
+
+        // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer,
+        // per the navigation drawer design guidelines.
+        if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
+            mDrawerLayout.openDrawer(mFragmentContainerView);
+        }
+
+        // Defer code dependent on restoration of previous instance state.
+        mDrawerLayout.post(new Runnable() {
+            @Override
+            public void run() {
+                mDrawerToggle.syncState();
+            }
+        });
+
+        mDrawerLayout.setDrawerListener(mDrawerToggle);
+    }
+
+    private void selectItem(int position) {
+        mCurrentSelectedPosition = position;
+        if (mDrawerListView != null) {
+            mDrawerListView.setItemChecked(position, true);
+        }
+        if (mDrawerLayout != null) {
+            mDrawerLayout.closeDrawer(mFragmentContainerView);
+        }
+        if (mCallbacks != null) {
+            mCallbacks.onNavigationDrawerItemSelected(position);
+        }
+    }
+
+    /**
+     * Lifecycle Callback where the fragment could Ensure that the host activity implements the communication interface declared by the fragment
+     * @param activity the host activity within which the fragment is managed
+     */
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mCallbacks = (NavigationDrawerCallbacks) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        mCallbacks = null;
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+        // Forward the new configuration the drawer toggle component.
+        mDrawerToggle.onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // showGlobalContextActionBar, which controls the top-left area of the action bar.
+        if(isDrawerOpen())
+            showGlobalContextActionBar();
+        super.onCreateOptionsMenu(menu, inflater);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (mDrawerToggle.onOptionsItemSelected(item)) {
+            return true;
+        }
+
+        return super.onOptionsItemSelected(item);
+    }
+
+    /**
+     * Per the navigation drawer design guidelines, updates the action bar to show the global app
+     * 'context', rather than just what's in the current screen.
+     */
+    private void showGlobalContextActionBar() {
+        ActionBar actionBar = getActionBar();
+        actionBar.setDisplayShowTitleEnabled(true);
+        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+        actionBar.setTitle(R.string.app_name);
+    }
+
+    private ActionBar getActionBar() {
+        return ((ActionBarActivity) getActivity()).getSupportActionBar();
+    }
+
+    /**
+     * Callbacks interface that all activities using this fragment must implement.
+     */
+    public static interface NavigationDrawerCallbacks {
+        /**
+         * Called when an item in the navigation drawer is selected.
+         */
+        void onNavigationDrawerItemSelected(int position);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
new file mode 100644
index 0000000..3ca9c31
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/fragments/WorkflowItemFragment.java
@@ -0,0 +1,156 @@
+package org.apache.taverna.mobile.fragments;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ListAdapter;
+import android.widget.TextView;
+
+import org.apache.taverna.mobile.R;
+
+import org.apache.taverna.mobile.activities.DashboardMainActivity;
+import org.apache.taverna.mobile.fragments.dummy.DummyContent;
+
+/**
+ * A fragment representing a list of Items.
+ * <p/>
+ * Large screen devices (such as tablets) are supported by replacing the ListView
+ * with a GridView.
+ * <p/>
+ * Activities containing this fragment MUST implement the {@link org.apache.taverna.mobile.fragments.WorkflowItemFragment.OnWorkflowSelectedListener}
+ * interface.
+ */
+public class WorkflowItemFragment extends Fragment implements AbsListView.OnItemClickListener {
+
+    // TODO: Rename parameter arguments, choose names that match
+    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+    private static final String ARG_PARAM1 = "param1";
+    private static final String ARG_PARAM2 = "param2";
+
+    // TODO: Rename and change types of parameters
+    private String mParam1;
+    private String mParam2;
+
+    private OnWorkflowSelectedListener mListener;
+
+    /**
+     * The fragment's ListView/GridView.
+     */
+    private AbsListView mListView;
+
+    /**
+     * The Adapter which will be used to populate the ListView/GridView with
+     * Views.
+     */
+    private ListAdapter mAdapter;
+
+    // TODO: Rename and change types of parameters
+    public static WorkflowItemFragment newInstance(String param1, String param2) {
+        WorkflowItemFragment fragment = new WorkflowItemFragment();
+        Bundle args = new Bundle();
+        args.putString(ARG_PARAM1, param1);
+        args.putString(ARG_PARAM2, param2);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    /**
+     * Mandatory empty constructor for the fragment manager to instantiate the
+     * fragment (e.g. upon screen orientation changes).
+     */
+    public WorkflowItemFragment() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        if (getArguments() != null) {
+            mParam1 = getArguments().getString(ARG_PARAM1);
+            mParam2 = getArguments().getString(ARG_PARAM2);
+        }
+
+        // TODO: Change Adapter to display your content
+        mAdapter = new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
+                android.R.layout.simple_list_item_1, android.R.id.text1, DummyContent.ITEMS);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_item, container, false);
+
+        // Set the adapter
+        mListView = (AbsListView) view.findViewById(android.R.id.list);
+        ((AdapterView<ListAdapter>) mListView).setAdapter(mAdapter);
+
+        // Set OnItemClickListener so we can be notified on item clicks
+        mListView.setOnItemClickListener(this);
+
+        return view;
+    }
+
+    @Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnWorkflowSelectedListener) activity;
+            ((DashboardMainActivity) activity).onSectionAttached(1);
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString()
+                    + " must implement OnFragmentInteractionListener");
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        mListener = null;
+    }
+
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        if (null != mListener) {
+            // Notify the active callbacks interface (the activity, if the
+            // fragment is attached to one) that an item has been selected.
+            mListener.onWorkflowSelected(DummyContent.ITEMS.get(position).id);
+        }
+    }
+    /**
+     * The default content for this Fragment has a TextView that is shown when
+     * the list is empty. If you would like to change the text, call this method
+     * to supply the text it should use.
+     */
+    public void setEmptyText(CharSequence emptyText) {
+        View emptyView = mListView.getEmptyView();
+
+        if (emptyView instanceof TextView) {
+            ((TextView) emptyView).setText(emptyText);
+        }
+    }
+
+    /**
+     * This interface must be implemented by activities that contain this
+     * fragment to allow an interaction in this fragment to be communicated
+     * to the activity and potentially other fragments contained in that
+     * activity.
+     * <p/>
+     * See the Android Training lesson <a href=
+     * "http://developer.android.com/training/basics/fragments/communicating.html"
+     * >Communicating with Other Fragments</a> for more information.
+     */
+    public interface OnWorkflowSelectedListener {
+        // TODO: Update argument type and name
+        public void onWorkflowSelected(String id);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/java/org/apache/taverna/mobile/fragments/dummy/DummyContent.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/fragments/dummy/DummyContent.java b/app/src/main/java/org/apache/taverna/mobile/fragments/dummy/DummyContent.java
new file mode 100644
index 0000000..665ccaf
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/fragments/dummy/DummyContent.java
@@ -0,0 +1,55 @@
+package org.apache.taverna.mobile.fragments.dummy;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Helper class for providing sample content for user interfaces created by
+ * Android template wizards.
+ * <p/>
+ * TODO: Replace all uses of this class before publishing your app.
+ */
+public class DummyContent {
+
+    /**
+     * An array of sample (dummy) items.
+     */
+    public static List<DummyItem> ITEMS = new ArrayList<DummyItem>();
+
+    /**
+     * A map of sample (dummy) items, by ID.
+     */
+    public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>();
+
+    static {
+        // Add 3 sample items.
+        addItem(new DummyItem("1", "Item 1"));
+        addItem(new DummyItem("2", "Item 2"));
+        addItem(new DummyItem("3", "Item 3"));
+    }
+
+    private static void addItem(DummyItem item) {
+        ITEMS.add(item);
+        ITEM_MAP.put(item.id, item);
+    }
+
+    /**
+     * A dummy item representing a piece of content.
+     */
+    public static class DummyItem {
+        public String id;
+        public String content;
+
+        public DummyItem(String id, String content) {
+            this.id = id;
+            this.content = content;
+        }
+
+        @Override
+        public String toString() {
+            return content;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-hdpi/drawer_shadow.9.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-hdpi/drawer_shadow.9.png b/app/src/main/res/drawable-hdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..236bff5
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/drawer_shadow.9.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-hdpi/ic_drawer.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-hdpi/ic_drawer.png b/app/src/main/res/drawable-hdpi/ic_drawer.png
new file mode 100644
index 0000000..c59f601
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_drawer.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-mdpi/drawer_shadow.9.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-mdpi/drawer_shadow.9.png b/app/src/main/res/drawable-mdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..ffe3a28
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/drawer_shadow.9.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-mdpi/ic_drawer.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-mdpi/ic_drawer.png b/app/src/main/res/drawable-mdpi/ic_drawer.png
new file mode 100644
index 0000000..1ed2c56
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_drawer.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png b/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..fabe9d9
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-xhdpi/ic_drawer.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-xhdpi/ic_drawer.png b/app/src/main/res/drawable-xhdpi/ic_drawer.png
new file mode 100644
index 0000000..a5fa74d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_drawer.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png b/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
new file mode 100644
index 0000000..b91e9d7
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable-xxhdpi/ic_drawer.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable-xxhdpi/ic_drawer.png b/app/src/main/res/drawable-xxhdpi/ic_drawer.png
new file mode 100644
index 0000000..9c4685d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_drawer.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable/gear_icon.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/gear_icon.png b/app/src/main/res/drawable/gear_icon.png
new file mode 100755
index 0000000..ddcb55f
Binary files /dev/null and b/app/src/main/res/drawable/gear_icon.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable/sliding_header.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/sliding_header.png b/app/src/main/res/drawable/sliding_header.png
new file mode 100755
index 0000000..cbb3d9e
Binary files /dev/null and b/app/src/main/res/drawable/sliding_header.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/drawable/tavernalogo.png
----------------------------------------------------------------------
diff --git a/app/src/main/res/drawable/tavernalogo.png b/app/src/main/res/drawable/tavernalogo.png
new file mode 100644
index 0000000..4e81b99
Binary files /dev/null and b/app/src/main/res/drawable/tavernalogo.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/layout/activity_dashboard_main.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/activity_dashboard_main.xml b/app/src/main/res/layout/activity_dashboard_main.xml
new file mode 100644
index 0000000..0c02cc5
--- /dev/null
+++ b/app/src/main/res/layout/activity_dashboard_main.xml
@@ -0,0 +1,42 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
+<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/drawer_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="org.apache.taverna.mobile.activities.DashboardMainActivity">
+
+    <!-- As the main content view, the view below consumes the entire
+         space available using match_parent in both dimensions. -->
+    <FrameLayout
+        android:id="@+id/container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <!-- android:layout_gravity="start" tells DrawerLayout to treat
+         this as a sliding drawer on the left side for left-to-right
+         languages and on the right side for right-to-left languages.
+         If you're not building against API 17 or higher, use
+         android:layout_gravity="left" instead. -->
+    <fragment android:id="@+id/navigation_drawer"
+        android:layout_width="@dimen/navigation_drawer_width"
+        android:layout_height="match_parent"
+        android:layout_gravity="start"
+        android:name="org.apache.taverna.mobile.fragments.NavigationDrawerFragment"
+        tools:layout="@layout/fragment_navigation_drawer" />
+
+</android.support.v4.widget.DrawerLayout>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/layout/activity_flash_screen.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/activity_flash_screen.xml b/app/src/main/res/layout/activity_flash_screen.xml
new file mode 100644
index 0000000..8163bd6
--- /dev/null
+++ b/app/src/main/res/layout/activity_flash_screen.xml
@@ -0,0 +1,54 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
+    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    tools:context="org.apache.taverna.mobile.activities.FlashScreenActivity">
+
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/imageView"
+        android:src="@mipmap/ic_poweredby"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true"
+        android:scaleType="fitCenter"
+        android:contentDescription="@string/brand"
+        android:layout_alignLeft="@+id/imageView2"
+        android:layout_alignStart="@+id/imageView2" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/app_name"
+        android:id="@+id/textView"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:textSize="40sp" />
+
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/imageView2"
+        android:src="@mipmap/ic_launcher"
+        android:layout_below="@+id/textView"
+        android:layout_marginTop="39dp"
+        android:layout_alignRight="@+id/textView"
+        android:layout_alignEnd="@+id/textView"
+        android:layout_alignLeft="@+id/textView"
+        android:layout_alignStart="@+id/textView"
+        android:layout_above="@+id/imageView" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/brand"
+        android:id="@+id/textView2"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_marginBottom="35dp" />
+</RelativeLayout>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/layout/fragment_dashboard_main.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_dashboard_main.xml b/app/src/main/res/layout/fragment_dashboard_main.xml
new file mode 100644
index 0000000..4279e24
--- /dev/null
+++ b/app/src/main/res/layout/fragment_dashboard_main.xml
@@ -0,0 +1,22 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
+    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    tools:context="org.apache.taverna.mobile.activities.DashboardMainActivity$PlaceholderFragment">
+
+    <TextView android:id="@+id/section_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="New Button"
+        android:id="@+id/button"
+        android:layout_centerVertical="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentEnd="true" />
+
+</RelativeLayout>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/layout/fragment_item_grid.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_item_grid.xml b/app/src/main/res/layout/fragment_item_grid.xml
new file mode 100644
index 0000000..3bfb7d8
--- /dev/null
+++ b/app/src/main/res/layout/fragment_item_grid.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="org.apache.taverna.mobile.fragments.WorkflowItemFragment">
+
+    <GridView android:id="@android:id/list" android:layout_width="match_parent"
+        android:layout_height="match_parent" android:numColumns="2" />
+
+    <TextView android:id="@android:id/empty" android:layout_width="match_parent"
+        android:layout_height="match_parent" android:gravity="center" />
+
+</FrameLayout>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/c8764a09/app/src/main/res/layout/fragment_item_list.xml
----------------------------------------------------------------------
diff --git a/app/src/main/res/layout/fragment_item_list.xml b/app/src/main/res/layout/fragment_item_list.xml
new file mode 100644
index 0000000..44f54dc
--- /dev/null
+++ b/app/src/main/res/layout/fragment_item_list.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="org.apache.taverna.mobile.fragments.WorkflowItemFragment">
+
+    <ListView android:id="@android:id/list" android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <TextView android:id="@android:id/empty" android:layout_width="match_parent"
+        android:layout_height="match_parent" android:gravity="center" />
+
+</FrameLayout>