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>