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>