Merge commit 'b19a0947fb72dc069540561ffeb6983ee318fcb9' into revo
9
.gitignore
vendored
@ -64,13 +64,16 @@ ground/uavobjgenerator/uavobjgenerator.pro.user
|
|||||||
ground/uavobjects/uavobjects.pro.user
|
ground/uavobjects/uavobjects.pro.user
|
||||||
ground/ground.pro.user
|
ground/ground.pro.user
|
||||||
|
|
||||||
# Ignore GNU global tags files
|
|
||||||
GPATH
|
GPATH
|
||||||
GRTAGS
|
GRTAGS
|
||||||
GSYMS
|
GSYMS
|
||||||
GTAGS
|
GTAGS
|
||||||
/.cproject
|
|
||||||
/.project
|
|
||||||
|
|
||||||
plane
|
plane
|
||||||
quad
|
quad
|
||||||
|
|
||||||
|
# Ignore auto generated java files
|
||||||
|
androidgcs/bin/
|
||||||
|
androidgcs/gen/
|
||||||
|
/.cproject
|
||||||
|
/.project
|
||||||
|
10
androidgcs/.classpath
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="tests"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
0
androidgcs/.metadata/.lock
Normal file
83
androidgcs/.metadata/.log
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
!SESSION 2012-02-04 14:21:36.086 -----------------------------------------------
|
||||||
|
eclipse.buildId=unknown
|
||||||
|
java.version=1.6.0_29
|
||||||
|
java.vendor=Apple Inc.
|
||||||
|
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US
|
||||||
|
Framework arguments: -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -keyring /Users/jcotton81/.eclipse_keyring -showlocation
|
||||||
|
Command-line arguments: -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -data /Users/jcotton81/Documents/Programming/OpenPilot/androidgcs -product org.eclipse.epp.package.cpp.product -keyring /Users/jcotton81/.eclipse_keyring -showlocation
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.core.net 1 0 2012-02-04 14:21:41.864
|
||||||
|
!MESSAGE System property http.nonProxyHosts has been set to local|*.local|169.254/16|*.169.254/16 by an external source. This value will be overwritten using the values from the preferences
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.ui.intro.universal 4 0 2012-02-04 14:21:44.892
|
||||||
|
!MESSAGE /Users/jcotton81/Documents/Programming/eclipse/Eclipse.app/Contents/MacOS/introData.xml (No such file or directory)
|
||||||
|
!STACK 0
|
||||||
|
java.io.FileNotFoundException: /Users/jcotton81/Documents/Programming/eclipse/Eclipse.app/Contents/MacOS/introData.xml (No such file or directory)
|
||||||
|
at java.io.FileInputStream.open(Native Method)
|
||||||
|
at java.io.FileInputStream.<init>(FileInputStream.java:120)
|
||||||
|
at java.io.FileInputStream.<init>(FileInputStream.java:79)
|
||||||
|
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
|
||||||
|
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
|
||||||
|
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653)
|
||||||
|
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
|
||||||
|
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
|
||||||
|
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
|
||||||
|
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
|
||||||
|
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
|
||||||
|
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
|
||||||
|
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.IntroData.parse(IntroData.java:159)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.IntroData.initialize(IntroData.java:63)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.IntroData.<init>(IntroData.java:47)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.CustomizationContentsArea.loadData(CustomizationContentsArea.java:624)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.CustomizationContentsArea.addPages(CustomizationContentsArea.java:489)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.CustomizationContentsArea.createContents(CustomizationContentsArea.java:453)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.CustomizationDialog.createDialogArea(CustomizationDialog.java:44)
|
||||||
|
at org.eclipse.jface.dialogs.Dialog.createContents(Dialog.java:760)
|
||||||
|
at org.eclipse.jface.window.Window.create(Window.java:431)
|
||||||
|
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
|
||||||
|
at org.eclipse.jface.window.Window.open(Window.java:790)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.CustomizeAction.run(CustomizeAction.java:35)
|
||||||
|
at org.eclipse.ui.internal.intro.universal.CustomizeAction.run(CustomizeAction.java:29)
|
||||||
|
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
|
||||||
|
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
|
||||||
|
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
|
||||||
|
at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
|
||||||
|
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
|
||||||
|
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3543)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1250)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1273)
|
||||||
|
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
|
||||||
|
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1079)
|
||||||
|
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3441)
|
||||||
|
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3100)
|
||||||
|
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
|
||||||
|
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
|
||||||
|
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
|
||||||
|
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
|
||||||
|
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
|
||||||
|
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
|
||||||
|
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
|
||||||
|
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
|
||||||
|
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
|
||||||
|
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
|
||||||
|
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:597)
|
||||||
|
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
|
||||||
|
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
|
||||||
|
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
|
||||||
|
!SESSION 2012-02-04 15:23:30.048 -----------------------------------------------
|
||||||
|
eclipse.buildId=unknown
|
||||||
|
java.version=1.6.0_29
|
||||||
|
java.vendor=Apple Inc.
|
||||||
|
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US
|
||||||
|
Framework arguments: -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -keyring /Users/jcotton81/.eclipse_keyring -showlocation
|
||||||
|
Command-line arguments: -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -product org.eclipse.epp.package.cpp.product -data /Users/jcotton81/Documents/Programming/OpenPilot/androidgcs -product org.eclipse.epp.package.cpp.product -keyring /Users/jcotton81/.eclipse_keyring -showlocation
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.core.net 1 0 2012-02-04 15:23:34.575
|
||||||
|
!MESSAGE System property http.nonProxyHosts has been set to local|*.local|169.254/16|*.169.254/16 by an external source. This value will be overwritten using the values from the preferences
|
BIN
androidgcs/.metadata/.mylyn/repositories.xml.zip
Normal file
BIN
androidgcs/.metadata/.mylyn/tasks.xml.zip
Normal file
1
androidgcs/.metadata/.plugins/org.eclipse.cdt.core/.log
Normal file
@ -0,0 +1 @@
|
|||||||
|
*** SESSION Feb 04, 2012 14:21:39.72 -------------------------------------------
|
@ -0,0 +1 @@
|
|||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
spelling_locale_initialized=true
|
||||||
|
useAnnotationsPrefPage=true
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
useQuickDiffPrefPage=true
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
version=1
|
||||||
|
eclipse.preferences.version=1
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 14:21:44 CST 2012
|
||||||
|
org.eclipse.epp.usagedata.recording.last-upload=1328386904231
|
||||||
|
eclipse.preferences.version=1
|
@ -0,0 +1,15 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
useQuickDiffPrefPage=true
|
||||||
|
proposalOrderMigrated=true
|
||||||
|
tabWidthPropagated=true
|
||||||
|
content_assist_proposals_background=255,255,255
|
||||||
|
org.eclipse.jdt.ui.javadoclocations.migrated=true
|
||||||
|
useAnnotationsPrefPage=true
|
||||||
|
org.eclipse.jface.textfont=1|Monaco|11.0|0|COCOA|1|;
|
||||||
|
org.eclipse.jdt.internal.ui.navigator.layout=2
|
||||||
|
org.eclipse.jdt.ui.editor.tab.width=
|
||||||
|
org.eclipse.jdt.ui.formatterprofiles.version=11
|
||||||
|
spelling_locale_initialized=true
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
content_assist_proposals_foreground=0,0,0
|
||||||
|
fontPropagated=true
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 14:21:42 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
mylyn.attention.migrated=true
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
pref_first_startup=false
|
||||||
|
eclipse.preferences.version=1
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.team.ui.first_time=false
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
overviewRuler_migration=migrated_3.1
|
@ -0,0 +1,5 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
tipsAndTricks=true
|
||||||
|
platformState=1328386704250
|
||||||
|
PROBLEMS_FILTERS_MIGRATE=true
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 15:21:25 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
showIntro=false
|
@ -0,0 +1,3 @@
|
|||||||
|
#Sat Feb 04 14:21:42 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
ENABLED_DECORATORS=com.android.ide.eclipse.adt.project.FolderDecorator\:true,org.eclipse.cdt.ui.indexedFiles\:false,org.eclipse.jdt.ui.override.decorator\:true,org.eclipse.jdt.ui.interface.decorator\:false,org.eclipse.jdt.ui.buildpath.decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,
|
@ -0,0 +1,251 @@
|
|||||||
|
what,kind,bundleId,bundleVersion,description,time
|
||||||
|
activated,perspective,org.eclipse.cdt.ui,,"org.eclipse.cdt.ui.CPerspective",1328386903139
|
||||||
|
started,bundle,org.eclipse.osgi,3.5.2.R35x_v20100126,"org.eclipse.osgi",1328386903141
|
||||||
|
started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.101.R35x_v20090807-1100,"org.eclipse.equinox.simpleconfigurator",1328386903142
|
||||||
|
started,bundle,com.ibm.icu,4.0.1.v20090822,"com.ibm.icu",1328386903143
|
||||||
|
started,bundle,org.eclipse.cdt.core,5.1.2.201002161416,"org.eclipse.cdt.core",1328386903143
|
||||||
|
started,bundle,org.eclipse.cdt.make.ui,6.0.1.201002161416,"org.eclipse.cdt.make.ui",1328386903144
|
||||||
|
started,bundle,org.eclipse.cdt.ui,5.1.2.201002161416,"org.eclipse.cdt.ui",1328386903147
|
||||||
|
started,bundle,org.eclipse.core.contenttype,3.4.1.R35x_v20090826-0451,"org.eclipse.core.contenttype",1328386903148
|
||||||
|
started,bundle,org.eclipse.core.databinding.observable,1.2.0.M20090902-0800,"org.eclipse.core.databinding.observable",1328386903148
|
||||||
|
started,bundle,org.eclipse.core.expressions,3.4.101.R35x_v20100209,"org.eclipse.core.expressions",1328386903149
|
||||||
|
started,bundle,org.eclipse.core.filebuffers,3.5.0.v20090526-2000,"org.eclipse.core.filebuffers",1328386903149
|
||||||
|
started,bundle,org.eclipse.core.filesystem,1.2.1.R35x_v20091203-1235,"org.eclipse.core.filesystem",1328386903150
|
||||||
|
started,bundle,org.eclipse.core.jobs,3.4.100.v20090429-1800,"org.eclipse.core.jobs",1328386903151
|
||||||
|
started,bundle,org.eclipse.core.net,1.2.1.r35x_20090812-1200,"org.eclipse.core.net",1328386903152
|
||||||
|
started,bundle,org.eclipse.core.resources,3.5.2.R35x_v20091203-1235,"org.eclipse.core.resources",1328386903153
|
||||||
|
started,bundle,org.eclipse.core.runtime,3.5.0.v20090525,"org.eclipse.core.runtime",1328386903153
|
||||||
|
started,bundle,org.eclipse.core.runtime.compatibility,3.2.0.v20090413,"org.eclipse.core.runtime.compatibility",1328386903154
|
||||||
|
started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.100.v20090413,"org.eclipse.core.runtime.compatibility.auth",1328386903154
|
||||||
|
started,bundle,org.eclipse.ecf,3.0.0.v20090831-1906,"org.eclipse.ecf",1328386903155
|
||||||
|
started,bundle,org.eclipse.ecf.filetransfer,3.0.0.v20090831-1906,"org.eclipse.ecf.filetransfer",1328386903155
|
||||||
|
started,bundle,org.eclipse.ecf.identity,3.0.0.v20090831-1906,"org.eclipse.ecf.identity",1328386903156
|
||||||
|
started,bundle,org.eclipse.ecf.provider.filetransfer,3.0.1.v20090831-1906,"org.eclipse.ecf.provider.filetransfer",1328386903157
|
||||||
|
started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,3.0.1.v20090831-1906,"org.eclipse.ecf.provider.filetransfer.httpclient",1328386903158
|
||||||
|
started,bundle,org.eclipse.epp.usagedata.gathering,1.1.1.R201001291118,"org.eclipse.epp.usagedata.gathering",1328386903159
|
||||||
|
started,bundle,org.eclipse.epp.usagedata.recording,1.1.1.R201001291118,"org.eclipse.epp.usagedata.recording",1328386903161
|
||||||
|
started,bundle,org.eclipse.equinox.app,1.2.1.R35x_v20091203,"org.eclipse.equinox.app",1328386903164
|
||||||
|
started,bundle,org.eclipse.equinox.common,3.5.1.R35x_v20090807-1100,"org.eclipse.equinox.common",1328386903165
|
||||||
|
started,bundle,org.eclipse.equinox.ds,1.1.1.R35x_v20090806,"org.eclipse.equinox.ds",1328386903166
|
||||||
|
started,bundle,org.eclipse.equinox.frameworkadmin,1.0.100.v20090520-1905,"org.eclipse.equinox.frameworkadmin",1328386903166
|
||||||
|
started,bundle,org.eclipse.equinox.frameworkadmin.equinox,1.0.101.R35x_v20091214,"org.eclipse.equinox.frameworkadmin.equinox",1328386903166
|
||||||
|
started,bundle,org.eclipse.equinox.p2.core,1.0.101.R35x_v20090819,"org.eclipse.equinox.p2.core",1328386903167
|
||||||
|
started,bundle,org.eclipse.equinox.p2.director,1.0.101.R35x_v20100112,"org.eclipse.equinox.p2.director",1328386903168
|
||||||
|
started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.100.v20090525,"org.eclipse.equinox.p2.directorywatcher",1328386903168
|
||||||
|
started,bundle,org.eclipse.equinox.p2.engine,1.0.102.R35x_v20091117,"org.eclipse.equinox.p2.engine",1328386903169
|
||||||
|
started,bundle,org.eclipse.equinox.p2.exemplarysetup,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.exemplarysetup",1328386903169
|
||||||
|
started,bundle,org.eclipse.equinox.p2.garbagecollector,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.garbagecollector",1328386903170
|
||||||
|
started,bundle,org.eclipse.equinox.p2.metadata,1.0.101.R35x_v20100112,"org.eclipse.equinox.p2.metadata",1328386903170
|
||||||
|
started,bundle,org.eclipse.equinox.p2.metadata.repository,1.0.101.R35x_v20090812,"org.eclipse.equinox.p2.metadata.repository",1328386903171
|
||||||
|
started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.reconciler.dropins",1328386903171
|
||||||
|
started,bundle,org.eclipse.equinox.p2.repository,1.0.1.R35x_v20100105,"org.eclipse.equinox.p2.repository",1328386903172
|
||||||
|
started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.0.v20090520-1905,"org.eclipse.equinox.p2.ui.sdk.scheduler",1328386903172
|
||||||
|
started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.0.v20090520-1905,"org.eclipse.equinox.p2.updatechecker",1328386903172
|
||||||
|
started,bundle,org.eclipse.equinox.preferences,3.2.301.R35x_v20091117,"org.eclipse.equinox.preferences",1328386903175
|
||||||
|
started,bundle,org.eclipse.equinox.registry,3.4.100.v20090520-1800,"org.eclipse.equinox.registry",1328386903176
|
||||||
|
started,bundle,org.eclipse.equinox.security,1.0.100.v20090520-1800,"org.eclipse.equinox.security",1328386903177
|
||||||
|
started,bundle,org.eclipse.equinox.simpleconfigurator.manipulator,1.0.101.R35x_v20100209,"org.eclipse.equinox.simpleconfigurator.manipulator",1328386903177
|
||||||
|
started,bundle,org.eclipse.equinox.util,1.0.100.v20090520-1800,"org.eclipse.equinox.util",1328386903178
|
||||||
|
started,bundle,org.eclipse.help,3.4.1.v20090805_35x,"org.eclipse.help",1328386903179
|
||||||
|
started,bundle,org.eclipse.jface,3.5.2.M20100120-0800,"org.eclipse.jface",1328386903179
|
||||||
|
started,bundle,org.eclipse.jsch.core,1.1.100.I20090430-0408,"org.eclipse.jsch.core",1328386903180
|
||||||
|
started,bundle,org.eclipse.ltk.core.refactoring,3.5.0.v20090513-2000,"org.eclipse.ltk.core.refactoring",1328386903180
|
||||||
|
started,bundle,org.eclipse.mylyn.bugzilla.core,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.bugzilla.core",1328386903181
|
||||||
|
started,bundle,org.eclipse.mylyn.bugzilla.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.bugzilla.ui",1328386903181
|
||||||
|
started,bundle,org.eclipse.mylyn.commons.net,3.2.0.v20090617-0100-e3x,"org.eclipse.mylyn.commons.net",1328386903182
|
||||||
|
started,bundle,org.eclipse.mylyn.commons.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.commons.ui",1328386903183
|
||||||
|
started,bundle,org.eclipse.mylyn.context.core,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.context.core",1328386903183
|
||||||
|
started,bundle,org.eclipse.mylyn.context.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.context.ui",1328386903184
|
||||||
|
started,bundle,org.eclipse.mylyn.monitor.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.monitor.ui",1328386903185
|
||||||
|
started,bundle,org.eclipse.mylyn.tasks.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.tasks.ui",1328386903186
|
||||||
|
started,bundle,org.eclipse.mylyn.team.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.team.ui",1328386903186
|
||||||
|
started,bundle,org.eclipse.team.core,3.5.1.r35x_20100113-0800,"org.eclipse.team.core",1328386903187
|
||||||
|
started,bundle,org.eclipse.team.cvs.core,3.3.200.I20090430-0408,"org.eclipse.team.cvs.core",1328386903188
|
||||||
|
started,bundle,org.eclipse.team.cvs.ui,3.3.202.r35x_20090930-0800,"org.eclipse.team.cvs.ui",1328386903189
|
||||||
|
started,bundle,org.eclipse.team.ui,3.5.0.I20090430-0408,"org.eclipse.team.ui",1328386903189
|
||||||
|
started,bundle,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui",1328386903191
|
||||||
|
started,bundle,org.eclipse.ui.console,3.4.0.v20090513,"org.eclipse.ui.console",1328386903191
|
||||||
|
started,bundle,org.eclipse.ui.editors,3.5.0.v20090527-2000,"org.eclipse.ui.editors",1328386903195
|
||||||
|
started,bundle,org.eclipse.ui.forms,3.4.1.v20090714_35x,"org.eclipse.ui.forms",1328386903196
|
||||||
|
started,bundle,org.eclipse.ui.ide,3.5.2.M20100113-0800,"org.eclipse.ui.ide",1328386903198
|
||||||
|
started,bundle,org.eclipse.ui.intro,3.3.2.v20100111_35x,"org.eclipse.ui.intro",1328386903198
|
||||||
|
started,bundle,org.eclipse.ui.intro.universal,3.2.300.v20090526,"org.eclipse.ui.intro.universal",1328386903198
|
||||||
|
started,bundle,org.eclipse.ui.navigator,3.4.2.M20100120-0800,"org.eclipse.ui.navigator",1328386903199
|
||||||
|
started,bundle,org.eclipse.ui.navigator.resources,3.4.1.M20090826-0800,"org.eclipse.ui.navigator.resources",1328386903200
|
||||||
|
started,bundle,org.eclipse.ui.net,1.2.1.r35x_20090812-1200,"org.eclipse.ui.net",1328386903200
|
||||||
|
started,bundle,org.eclipse.ui.views,3.4.1.M20090826-0800,"org.eclipse.ui.views",1328386903201
|
||||||
|
started,bundle,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"org.eclipse.ui.workbench",1328386903202
|
||||||
|
started,bundle,org.eclipse.ui.workbench.texteditor,3.5.1.r352_v20100105,"org.eclipse.ui.workbench.texteditor",1328386903203
|
||||||
|
started,bundle,org.eclipse.update.configurator,3.3.0.v20090312,"org.eclipse.update.configurator",1328386903207
|
||||||
|
started,bundle,org.eclipse.update.core,3.2.300.v20090525,"org.eclipse.update.core",1328386903209
|
||||||
|
started,bundle,org.eclipse.update.scheduler,3.2.200.v20081127,"org.eclipse.update.scheduler",1328386903210
|
||||||
|
started,bundle,org.eclipse.jdt.core,3.5.2.v_981_R35x,"org.eclipse.jdt.core",1328386903211
|
||||||
|
started,bundle,org.eclipse.jdt.core.manipulation,1.3.0.v20090603,"org.eclipse.jdt.core.manipulation",1328386903212
|
||||||
|
started,bundle,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui",1328386903218
|
||||||
|
os,sysinfo,,,"macosx",1328386903226
|
||||||
|
arch,sysinfo,,,"x86_64",1328386903226
|
||||||
|
ws,sysinfo,,,"cocoa",1328386903226
|
||||||
|
locale,sysinfo,,,"en_US",1328386903226
|
||||||
|
processors,sysinfo,,,"4",1328386903226
|
||||||
|
java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1328386903226
|
||||||
|
java.runtime.version,sysinfo,,,"1.6.0_29-b11-402-11M3527",1328386903227
|
||||||
|
java.specification.name,sysinfo,,,"Java Platform API Specification",1328386903227
|
||||||
|
java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1328386903227
|
||||||
|
java.specification.version,sysinfo,,,"1.6",1328386903227
|
||||||
|
java.vendor,sysinfo,,,"Apple Inc.",1328386903227
|
||||||
|
java.version,sysinfo,,,"1.6.0_29",1328386903227
|
||||||
|
java.vm.info,sysinfo,,,"mixed mode",1328386903227
|
||||||
|
java.vm.name,sysinfo,,,"Java HotSpot(TM) 64-Bit Server VM",1328386903227
|
||||||
|
java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1328386903227
|
||||||
|
java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1328386903227
|
||||||
|
java.vm.specification.version,sysinfo,,,"1.0",1328386903227
|
||||||
|
java.vm.vendor,sysinfo,,,"Apple Inc.",1328386903227
|
||||||
|
java.vm.version,sysinfo,,,"20.4-b02-402",1328386903227
|
||||||
|
started,bundle,org.eclipse.equinox.p2.extensionlocation,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.extensionlocation",1328386903389
|
||||||
|
started,bundle,org.eclipse.equinox.p2.artifact.repository,1.0.101.R35x_v20090721,"org.eclipse.equinox.p2.artifact.repository",1328386903414
|
||||||
|
started,bundle,org.eclipse.equinox.p2.publisher,1.0.1.R35x_20100105,"org.eclipse.equinox.p2.publisher",1328386903450
|
||||||
|
started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,1.0.101.R35x_20090820-1821,"org.eclipse.equinox.p2.touchpoint.eclipse",1328386903464
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328386903480
|
||||||
|
activated,view,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui.internal.introview",1328386903487
|
||||||
|
error,log,,,"/Users/jcotton81/Documents/Programming/eclipse/Eclipse.app/Contents/MacOS/introData.xml (No such file or directory)",1328386904897
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328386905209
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328386906797
|
||||||
|
started,bundle,org.eclipse.equinox.p2.updatesite,1.0.101.R35x_20100105,"org.eclipse.equinox.p2.updatesite",1328386912464
|
||||||
|
activated,view,org.eclipse.ui.navigator.resources,3.4.1.M20090826-0800,"org.eclipse.ui.navigator.ProjectExplorer",1328386912583
|
||||||
|
activated,view,org.eclipse.ui.navigator.resources,3.4.1.M20090826-0800,"org.eclipse.ui.navigator.ProjectExplorer",1328386912596
|
||||||
|
closed,view,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui.internal.introview",1328386912607
|
||||||
|
started,bundle,org.eclipse.equinox.p2.ui,1.0.101.R35x_v20090819,"org.eclipse.equinox.p2.ui",1328386912856
|
||||||
|
started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.ui.sdk",1328386912895
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328386920116
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328387108087
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328387114332
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328387670491
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328387680147
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328389984496
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328389985341
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390196855
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390210754
|
||||||
|
started,bundle,com.android.ide.eclipse.ddms,10.0.1.v201103111512-110841,"com.android.ide.eclipse.ddms",1328390214192
|
||||||
|
started,bundle,org.eclipse.wst.sse.core,1.1.402.v201001251516,"org.eclipse.wst.sse.core",1328390214246
|
||||||
|
started,bundle,com.android.ide.eclipse.adt,10.0.1.v201103111512-110841,"com.android.ide.eclipse.adt",1328390214248
|
||||||
|
started,bundle,org.eclipse.ltk.ui.refactoring,3.4.101.r352_v20100209,"org.eclipse.ltk.ui.refactoring",1328390214467
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390455517
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390462855
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390470613
|
||||||
|
opened,view,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.PackageExplorer",1328390470944
|
||||||
|
started,bundle,org.eclipse.search,3.5.1.r351_v20090708-0800,"org.eclipse.search",1328390471037
|
||||||
|
opened,view,org.eclipse.mylyn.tasks.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.tasks.ui.views.tasks",1328390471127
|
||||||
|
activated,perspective,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.JavaPerspective",1328390471151
|
||||||
|
activated,view,org.eclipse.ui.ide,3.5.2.M20100113-0800,"org.eclipse.ui.views.ProblemView",1328390471175
|
||||||
|
executed,command,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui.perspectives.showPerspective",1328390471213
|
||||||
|
executed,command,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui.perspectives.showPerspective",1328390471213
|
||||||
|
opened,view,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.JavadocView",1328390474490
|
||||||
|
activated,view,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.JavadocView",1328390474500
|
||||||
|
opened,view,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.SourceView",1328390475141
|
||||||
|
activated,view,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.SourceView",1328390475161
|
||||||
|
activated,view,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui.JavadocView",1328390475451
|
||||||
|
activated,view,org.eclipse.ui.ide,3.5.2.M20100113-0800,"org.eclipse.ui.views.ProblemView",1328390475842
|
||||||
|
closed,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390485206
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.0.0.201002161416,"org.eclipse.cdt.debug.mi.ui",1328390485703
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.gdbjtag.ui,5.0.100.201002161416,"org.eclipse.cdt.debug.gdbjtag.ui",1328390485704
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.gdbjtag.core,5.0.100.201002161416,"org.eclipse.cdt.debug.gdbjtag.core",1328390485704
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.mi.core,6.0.0.201002161416,"org.eclipse.cdt.debug.mi.core",1328390485705
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.0.0.201002161416,"org.eclipse.cdt.dsf.gdb.ui",1328390485706
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf.ui,2.0.1.201002161416,"org.eclipse.cdt.dsf.ui",1328390485707
|
||||||
|
stopped,bundle,org.eclipse.cdt.launch,6.0.0.201002161416,"org.eclipse.cdt.launch",1328390485707
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.ui,6.0.0.201002161416,"org.eclipse.cdt.debug.ui",1328390485708
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf.gdb,2.0.0.201002161416,"org.eclipse.cdt.dsf.gdb",1328390485709
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf,2.0.0.201002161416,"org.eclipse.cdt.dsf",1328390485709
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.core,6.0.0.201002161416,"org.eclipse.cdt.debug.core",1328390485710
|
||||||
|
stopped,bundle,org.eclipse.cdt.managedbuilder.ui,5.1.0.201002161416,"org.eclipse.cdt.managedbuilder.ui",1328390485710
|
||||||
|
stopped,bundle,org.eclipse.cdt.make.ui,6.0.1.201002161416,"org.eclipse.cdt.make.ui",1328390485711
|
||||||
|
stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,5.0.100.201002161416,"org.eclipse.cdt.managedbuilder.gnu.ui",1328390485711
|
||||||
|
stopped,bundle,org.eclipse.cdt.managedbuilder.core,6.0.0.201002161416,"org.eclipse.cdt.managedbuilder.core",1328390485712
|
||||||
|
stopped,bundle,org.eclipse.cdt.make.core,6.0.0.201002161416,"org.eclipse.cdt.make.core",1328390485713
|
||||||
|
stopped,bundle,org.eclipse.cdt.mylyn.ui,1.0.100.201002161416,"org.eclipse.cdt.mylyn.ui",1328390485713
|
||||||
|
stopped,bundle,org.eclipse.cdt.ui,5.1.2.201002161416,"org.eclipse.cdt.ui",1328390485713
|
||||||
|
stopped,bundle,org.eclipse.cdt.core,5.1.2.201002161416,"org.eclipse.cdt.core",1328390485714
|
||||||
|
stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.bugzilla.ui",1328390485714
|
||||||
|
stopped,bundle,org.eclipse.mylyn.ide.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.ide.ui",1328390485714
|
||||||
|
stopped,bundle,org.eclipse.mylyn.team.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.team.ui",1328390485715
|
||||||
|
stopped,bundle,org.eclipse.mylyn.resources.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.resources.ui",1328390485715
|
||||||
|
stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.1.3.v20100217-0100-e3x,"org.eclipse.mylyn.wikitext.tasks.ui",1328390485716
|
||||||
|
stopped,bundle,org.eclipse.mylyn.context.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.context.ui",1328390485716
|
||||||
|
stopped,bundle,org.eclipse.mylyn.help.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.help.ui",1328390485716
|
||||||
|
stopped,bundle,org.eclipse.mylyn.tasks.bugs,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.tasks.bugs",1328390485717
|
||||||
|
stopped,bundle,org.eclipse.mylyn.tasks.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.tasks.ui",1328390485719
|
||||||
|
stopped,bundle,org.eclipse.ant.ui,3.4.2.v20091204_r352,"org.eclipse.ant.ui",1328390485719
|
||||||
|
stopped,bundle,com.android.ide.eclipse.adt,10.0.1.v201103111512-110841,"com.android.ide.eclipse.adt",1328390485719
|
||||||
|
stopped,bundle,org.eclipse.jdt.junit,3.5.2.r352_v20100113-0800,"org.eclipse.jdt.junit",1328390485720
|
||||||
|
stopped,bundle,org.eclipse.jdt.debug.ui,3.4.1.v20090811_r351,"org.eclipse.jdt.debug.ui",1328390485721
|
||||||
|
stopped,bundle,org.eclipse.jdt.apt.ui,3.3.200.v20090930-2100_R35x,"org.eclipse.jdt.apt.ui",1328390485722
|
||||||
|
stopped,bundle,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui",1328390485726
|
||||||
|
stopped,bundle,org.eclipse.wst.dtd.ui,1.0.400.v200904300717,"org.eclipse.wst.dtd.ui",1328390485730
|
||||||
|
stopped,bundle,org.eclipse.wst.xsd.ui,1.2.204.v200909021537,"org.eclipse.wst.xsd.ui",1328390485747
|
||||||
|
stopped,bundle,org.eclipse.wst.xml.ui,1.1.2.v201001222130,"org.eclipse.wst.xml.ui",1328390485747
|
||||||
|
stopped,bundle,org.eclipse.wst.common.ui,1.1.402.v200901262305,"org.eclipse.wst.common.ui",1328390485748
|
||||||
|
stopped,bundle,org.eclipse.wst.sse.ui,1.1.102.v200910200227,"org.eclipse.wst.sse.ui",1328390485749
|
||||||
|
stopped,bundle,org.eclipse.search,3.5.1.r351_v20090708-0800,"org.eclipse.search",1328390485750
|
||||||
|
stopped,bundle,org.eclipse.ltk.ui.refactoring,3.4.101.r352_v20100209,"org.eclipse.ltk.ui.refactoring",1328390485750
|
||||||
|
stopped,bundle,org.eclipse.team.cvs.ui,3.3.202.r35x_20090930-0800,"org.eclipse.team.cvs.ui",1328390485751
|
||||||
|
stopped,bundle,org.eclipse.team.ui,3.5.0.I20090430-0408,"org.eclipse.team.ui",1328390485751
|
||||||
|
stopped,bundle,org.eclipse.compare,3.5.2.r35x_20100113-0800,"org.eclipse.compare",1328390485752
|
||||||
|
stopped,bundle,org.eclipse.ui.externaltools,3.2.0.v20090504,"org.eclipse.ui.externaltools",1328390485753
|
||||||
|
stopped,bundle,org.eclipse.debug.ui,3.5.2.v20091028_r352,"org.eclipse.debug.ui",1328390485756
|
||||||
|
stopped,bundle,org.eclipse.mylyn.wikitext.ui,1.1.3.v20100217-0100-e3x,"org.eclipse.mylyn.wikitext.ui",1328390485757
|
||||||
|
stopped,bundle,com.android.ide.eclipse.hierarchyviewer,10.0.1.v201103111512-110841,"com.android.ide.eclipse.hierarchyviewer",1328390485757
|
||||||
|
stopped,bundle,com.android.ide.eclipse.ddms,10.0.1.v201103111512-110841,"com.android.ide.eclipse.ddms",1328390485757
|
||||||
|
stopped,bundle,org.eclipse.ui.console,3.4.0.v20090513,"org.eclipse.ui.console",1328390485757
|
||||||
|
stopped,bundle,org.eclipse.mylyn.commons.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.commons.ui",1328390485757
|
||||||
|
stopped,bundle,org.eclipse.ui.editors,3.5.0.v20090527-2000,"org.eclipse.ui.editors",1328390485758
|
||||||
|
stopped,bundle,org.eclipse.ui.navigator.resources,3.4.1.M20090826-0800,"org.eclipse.ui.navigator.resources",1328390485758
|
||||||
|
activated,perspective,org.eclipse.jdt.ui,,"org.eclipse.jdt.ui.JavaPerspective",1328390616647
|
||||||
|
started,bundle,org.eclipse.osgi,3.5.2.R35x_v20100126,"org.eclipse.osgi",1328390616648
|
||||||
|
started,bundle,org.eclipse.equinox.simpleconfigurator,1.0.101.R35x_v20090807-1100,"org.eclipse.equinox.simpleconfigurator",1328390616653
|
||||||
|
started,bundle,com.ibm.icu,4.0.1.v20090822,"com.ibm.icu",1328390616654
|
||||||
|
started,bundle,org.eclipse.core.contenttype,3.4.1.R35x_v20090826-0451,"org.eclipse.core.contenttype",1328390616654
|
||||||
|
started,bundle,org.eclipse.core.databinding.observable,1.2.0.M20090902-0800,"org.eclipse.core.databinding.observable",1328390616655
|
||||||
|
started,bundle,org.eclipse.core.expressions,3.4.101.R35x_v20100209,"org.eclipse.core.expressions",1328390616656
|
||||||
|
started,bundle,org.eclipse.core.filebuffers,3.5.0.v20090526-2000,"org.eclipse.core.filebuffers",1328390616656
|
||||||
|
started,bundle,org.eclipse.core.jobs,3.4.100.v20090429-1800,"org.eclipse.core.jobs",1328390616656
|
||||||
|
started,bundle,org.eclipse.core.net,1.2.1.r35x_20090812-1200,"org.eclipse.core.net",1328390616657
|
||||||
|
started,bundle,org.eclipse.core.resources,3.5.2.R35x_v20091203-1235,"org.eclipse.core.resources",1328390616658
|
||||||
|
started,bundle,org.eclipse.core.runtime,3.5.0.v20090525,"org.eclipse.core.runtime",1328390616659
|
||||||
|
started,bundle,org.eclipse.core.runtime.compatibility,3.2.0.v20090413,"org.eclipse.core.runtime.compatibility",1328390616659
|
||||||
|
started,bundle,org.eclipse.core.runtime.compatibility.auth,3.2.100.v20090413,"org.eclipse.core.runtime.compatibility.auth",1328390616660
|
||||||
|
started,bundle,org.eclipse.ecf,3.0.0.v20090831-1906,"org.eclipse.ecf",1328390616660
|
||||||
|
started,bundle,org.eclipse.ecf.filetransfer,3.0.0.v20090831-1906,"org.eclipse.ecf.filetransfer",1328390616661
|
||||||
|
started,bundle,org.eclipse.ecf.identity,3.0.0.v20090831-1906,"org.eclipse.ecf.identity",1328390616662
|
||||||
|
started,bundle,org.eclipse.ecf.provider.filetransfer,3.0.1.v20090831-1906,"org.eclipse.ecf.provider.filetransfer",1328390616663
|
||||||
|
started,bundle,org.eclipse.ecf.provider.filetransfer.httpclient,3.0.1.v20090831-1906,"org.eclipse.ecf.provider.filetransfer.httpclient",1328390616663
|
||||||
|
started,bundle,org.eclipse.epp.usagedata.gathering,1.1.1.R201001291118,"org.eclipse.epp.usagedata.gathering",1328390616664
|
||||||
|
started,bundle,org.eclipse.epp.usagedata.recording,1.1.1.R201001291118,"org.eclipse.epp.usagedata.recording",1328390616668
|
||||||
|
started,bundle,org.eclipse.equinox.app,1.2.1.R35x_v20091203,"org.eclipse.equinox.app",1328390616676
|
||||||
|
started,bundle,org.eclipse.equinox.common,3.5.1.R35x_v20090807-1100,"org.eclipse.equinox.common",1328390616676
|
||||||
|
started,bundle,org.eclipse.equinox.ds,1.1.1.R35x_v20090806,"org.eclipse.equinox.ds",1328390616677
|
||||||
|
started,bundle,org.eclipse.equinox.frameworkadmin,1.0.100.v20090520-1905,"org.eclipse.equinox.frameworkadmin",1328390616679
|
||||||
|
started,bundle,org.eclipse.equinox.frameworkadmin.equinox,1.0.101.R35x_v20091214,"org.eclipse.equinox.frameworkadmin.equinox",1328390616680
|
||||||
|
started,bundle,org.eclipse.equinox.p2.core,1.0.101.R35x_v20090819,"org.eclipse.equinox.p2.core",1328390616681
|
||||||
|
started,bundle,org.eclipse.equinox.p2.director,1.0.101.R35x_v20100112,"org.eclipse.equinox.p2.director",1328390616682
|
||||||
|
started,bundle,org.eclipse.equinox.p2.directorywatcher,1.0.100.v20090525,"org.eclipse.equinox.p2.directorywatcher",1328390616688
|
||||||
|
started,bundle,org.eclipse.equinox.p2.engine,1.0.102.R35x_v20091117,"org.eclipse.equinox.p2.engine",1328390616689
|
||||||
|
started,bundle,org.eclipse.equinox.p2.exemplarysetup,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.exemplarysetup",1328390616690
|
||||||
|
started,bundle,org.eclipse.equinox.p2.garbagecollector,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.garbagecollector",1328390616691
|
||||||
|
started,bundle,org.eclipse.equinox.p2.metadata,1.0.101.R35x_v20100112,"org.eclipse.equinox.p2.metadata",1328390616692
|
||||||
|
started,bundle,org.eclipse.equinox.p2.metadata.repository,1.0.101.R35x_v20090812,"org.eclipse.equinox.p2.metadata.repository",1328390616692
|
||||||
|
started,bundle,org.eclipse.equinox.p2.reconciler.dropins,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.reconciler.dropins",1328390616693
|
||||||
|
started,bundle,org.eclipse.equinox.p2.repository,1.0.1.R35x_v20100105,"org.eclipse.equinox.p2.repository",1328390616693
|
||||||
|
started,bundle,org.eclipse.equinox.p2.ui.sdk.scheduler,1.0.0.v20090520-1905,"org.eclipse.equinox.p2.ui.sdk.scheduler",1328390616694
|
||||||
|
started,bundle,org.eclipse.equinox.p2.updatechecker,1.1.0.v20090520-1905,"org.eclipse.equinox.p2.updatechecker",1328390616695
|
||||||
|
started,bundle,org.eclipse.equinox.preferences,3.2.301.R35x_v20091117,"org.eclipse.equinox.preferences",1328390616695
|
||||||
|
started,bundle,org.eclipse.equinox.registry,3.4.100.v20090520-1800,"org.eclipse.equinox.registry",1328390616696
|
||||||
|
started,bundle,org.eclipse.equinox.security,1.0.100.v20090520-1800,"org.eclipse.equinox.security",1328390616697
|
||||||
|
started,bundle,org.eclipse.equinox.simpleconfigurator.manipulator,1.0.101.R35x_v20100209,"org.eclipse.equinox.simpleconfigurator.manipulator",1328390616697
|
||||||
|
started,bundle,org.eclipse.equinox.util,1.0.100.v20090520-1800,"org.eclipse.equinox.util",1328390616698
|
||||||
|
started,bundle,org.eclipse.help,3.4.1.v20090805_35x,"org.eclipse.help",1328390616698
|
||||||
|
started,bundle,org.eclipse.jface,3.5.2.M20100120-0800,"org.eclipse.jface",1328390616699
|
||||||
|
started,bundle,org.eclipse.jsch.core,1.1.100.I20090430-0408,"org.eclipse.jsch.core",1328390616705
|
||||||
|
started,bundle,org.eclipse.mylyn.bugzilla.core,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.bugzilla.core",1328390616705
|
||||||
|
started,bundle,org.eclipse.mylyn.bugzilla.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.bugzilla.ui",1328390616706
|
||||||
|
started,bundle,org.eclipse.mylyn.commons.net,3.2.0.v20090617-0100-e3x,"org.eclipse.mylyn.commons.net",1328390616706
|
||||||
|
started,bundle,org.eclipse.mylyn.commons.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.commons.ui",1328390616707
|
|
@ -0,0 +1,83 @@
|
|||||||
|
what,kind,bundleId,bundleVersion,description,time
|
||||||
|
started,bundle,org.eclipse.mylyn.context.core,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.context.core",1328390616707
|
||||||
|
started,bundle,org.eclipse.mylyn.context.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.context.ui",1328390616708
|
||||||
|
started,bundle,org.eclipse.mylyn.monitor.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.monitor.ui",1328390616708
|
||||||
|
started,bundle,org.eclipse.mylyn.tasks.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.tasks.ui",1328390616709
|
||||||
|
started,bundle,org.eclipse.mylyn.team.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.team.ui",1328390616710
|
||||||
|
started,bundle,org.eclipse.search,3.5.1.r351_v20090708-0800,"org.eclipse.search",1328390616711
|
||||||
|
started,bundle,org.eclipse.team.core,3.5.1.r35x_20100113-0800,"org.eclipse.team.core",1328390616712
|
||||||
|
started,bundle,org.eclipse.team.cvs.core,3.3.200.I20090430-0408,"org.eclipse.team.cvs.core",1328390616712
|
||||||
|
started,bundle,org.eclipse.team.cvs.ui,3.3.202.r35x_20090930-0800,"org.eclipse.team.cvs.ui",1328390616713
|
||||||
|
started,bundle,org.eclipse.team.ui,3.5.0.I20090430-0408,"org.eclipse.team.ui",1328390616714
|
||||||
|
started,bundle,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui",1328390616715
|
||||||
|
started,bundle,org.eclipse.ui.console,3.4.0.v20090513,"org.eclipse.ui.console",1328390616716
|
||||||
|
started,bundle,org.eclipse.ui.editors,3.5.0.v20090527-2000,"org.eclipse.ui.editors",1328390616717
|
||||||
|
started,bundle,org.eclipse.ui.forms,3.4.1.v20090714_35x,"org.eclipse.ui.forms",1328390616717
|
||||||
|
started,bundle,org.eclipse.ui.ide,3.5.2.M20100113-0800,"org.eclipse.ui.ide",1328390616718
|
||||||
|
started,bundle,org.eclipse.ui.net,1.2.1.r35x_20090812-1200,"org.eclipse.ui.net",1328390616719
|
||||||
|
started,bundle,org.eclipse.ui.views,3.4.1.M20090826-0800,"org.eclipse.ui.views",1328390616720
|
||||||
|
started,bundle,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"org.eclipse.ui.workbench",1328390616720
|
||||||
|
started,bundle,org.eclipse.ui.workbench.texteditor,3.5.1.r352_v20100105,"org.eclipse.ui.workbench.texteditor",1328390616721
|
||||||
|
started,bundle,org.eclipse.update.configurator,3.3.0.v20090312,"org.eclipse.update.configurator",1328390616722
|
||||||
|
started,bundle,org.eclipse.update.core,3.2.300.v20090525,"org.eclipse.update.core",1328390616722
|
||||||
|
started,bundle,org.eclipse.update.scheduler,3.2.200.v20081127,"org.eclipse.update.scheduler",1328390616723
|
||||||
|
started,bundle,org.eclipse.jdt.core,3.5.2.v_981_R35x,"org.eclipse.jdt.core",1328390616724
|
||||||
|
started,bundle,org.eclipse.jdt.core.manipulation,1.3.0.v20090603,"org.eclipse.jdt.core.manipulation",1328390616725
|
||||||
|
started,bundle,org.eclipse.jdt.ui,3.5.2.r352_v20100106-0800,"org.eclipse.jdt.ui",1328390616730
|
||||||
|
os,sysinfo,,,"macosx",1328390616740
|
||||||
|
arch,sysinfo,,,"x86_64",1328390616740
|
||||||
|
ws,sysinfo,,,"cocoa",1328390616740
|
||||||
|
locale,sysinfo,,,"en_US",1328390616740
|
||||||
|
processors,sysinfo,,,"4",1328390616740
|
||||||
|
java.runtime.name,sysinfo,,,"Java(TM) SE Runtime Environment",1328390616740
|
||||||
|
java.runtime.version,sysinfo,,,"1.6.0_29-b11-402-11M3527",1328390616740
|
||||||
|
java.specification.name,sysinfo,,,"Java Platform API Specification",1328390616740
|
||||||
|
java.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1328390616740
|
||||||
|
java.specification.version,sysinfo,,,"1.6",1328390616740
|
||||||
|
java.vendor,sysinfo,,,"Apple Inc.",1328390616740
|
||||||
|
java.version,sysinfo,,,"1.6.0_29",1328390616740
|
||||||
|
java.vm.info,sysinfo,,,"mixed mode",1328390616740
|
||||||
|
java.vm.name,sysinfo,,,"Java HotSpot(TM) 64-Bit Server VM",1328390616740
|
||||||
|
java.vm.specification.name,sysinfo,,,"Java Virtual Machine Specification",1328390616740
|
||||||
|
java.vm.specification.vendor,sysinfo,,,"Sun Microsystems Inc.",1328390616740
|
||||||
|
java.vm.specification.version,sysinfo,,,"1.0",1328390616740
|
||||||
|
java.vm.vendor,sysinfo,,,"Apple Inc.",1328390616740
|
||||||
|
java.vm.version,sysinfo,,,"20.4-b02-402",1328390616740
|
||||||
|
started,bundle,org.eclipse.equinox.p2.extensionlocation,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.extensionlocation",1328390616768
|
||||||
|
started,bundle,org.eclipse.equinox.p2.artifact.repository,1.0.101.R35x_v20090721,"org.eclipse.equinox.p2.artifact.repository",1328390616783
|
||||||
|
started,bundle,org.eclipse.equinox.p2.publisher,1.0.1.R35x_20100105,"org.eclipse.equinox.p2.publisher",1328390616808
|
||||||
|
started,bundle,org.eclipse.equinox.p2.touchpoint.eclipse,1.0.101.R35x_20090820-1821,"org.eclipse.equinox.p2.touchpoint.eclipse",1328390616820
|
||||||
|
deactivated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390619481
|
||||||
|
started,bundle,org.eclipse.equinox.p2.updatesite,1.0.101.R35x_20100105,"org.eclipse.equinox.p2.updatesite",1328390623001
|
||||||
|
started,bundle,org.eclipse.equinox.p2.ui,1.0.101.R35x_v20090819,"org.eclipse.equinox.p2.ui",1328390623371
|
||||||
|
started,bundle,org.eclipse.equinox.p2.ui.sdk,1.0.100.v20090520-1905,"org.eclipse.equinox.p2.ui.sdk",1328390623409
|
||||||
|
started,bundle,org.eclipse.core.filesystem,1.2.1.R35x_v20091203-1235,"org.eclipse.core.filesystem",1328390630622
|
||||||
|
activated,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390659248
|
||||||
|
executed,command,org.eclipse.ui,3.5.2.M20100120-0800,"org.eclipse.ui.file.import",1328390659277
|
||||||
|
closed,workbench,org.eclipse.ui.workbench,3.5.2.M20100113-0800,"",1328390663881
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.mi.ui,6.0.0.201002161416,"org.eclipse.cdt.debug.mi.ui",1328390664441
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.gdbjtag.ui,5.0.100.201002161416,"org.eclipse.cdt.debug.gdbjtag.ui",1328390664442
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.gdbjtag.core,5.0.100.201002161416,"org.eclipse.cdt.debug.gdbjtag.core",1328390664442
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.mi.core,6.0.0.201002161416,"org.eclipse.cdt.debug.mi.core",1328390664443
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf.gdb.ui,2.0.0.201002161416,"org.eclipse.cdt.dsf.gdb.ui",1328390664443
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf.ui,2.0.1.201002161416,"org.eclipse.cdt.dsf.ui",1328390664444
|
||||||
|
stopped,bundle,org.eclipse.cdt.launch,6.0.0.201002161416,"org.eclipse.cdt.launch",1328390664445
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.ui,6.0.0.201002161416,"org.eclipse.cdt.debug.ui",1328390664446
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf.gdb,2.0.0.201002161416,"org.eclipse.cdt.dsf.gdb",1328390664446
|
||||||
|
stopped,bundle,org.eclipse.cdt.dsf,2.0.0.201002161416,"org.eclipse.cdt.dsf",1328390664447
|
||||||
|
stopped,bundle,org.eclipse.cdt.debug.core,6.0.0.201002161416,"org.eclipse.cdt.debug.core",1328390664448
|
||||||
|
stopped,bundle,org.eclipse.cdt.managedbuilder.ui,5.1.0.201002161416,"org.eclipse.cdt.managedbuilder.ui",1328390664449
|
||||||
|
stopped,bundle,org.eclipse.cdt.make.ui,6.0.1.201002161416,"org.eclipse.cdt.make.ui",1328390664452
|
||||||
|
stopped,bundle,org.eclipse.cdt.managedbuilder.gnu.ui,5.0.100.201002161416,"org.eclipse.cdt.managedbuilder.gnu.ui",1328390664453
|
||||||
|
stopped,bundle,org.eclipse.cdt.managedbuilder.core,6.0.0.201002161416,"org.eclipse.cdt.managedbuilder.core",1328390664454
|
||||||
|
stopped,bundle,org.eclipse.cdt.make.core,6.0.0.201002161416,"org.eclipse.cdt.make.core",1328390664455
|
||||||
|
stopped,bundle,org.eclipse.cdt.mylyn.ui,1.0.100.201002161416,"org.eclipse.cdt.mylyn.ui",1328390664455
|
||||||
|
stopped,bundle,org.eclipse.cdt.ui,5.1.2.201002161416,"org.eclipse.cdt.ui",1328390664458
|
||||||
|
stopped,bundle,org.eclipse.cdt.core,5.1.2.201002161416,"org.eclipse.cdt.core",1328390664459
|
||||||
|
stopped,bundle,org.eclipse.mylyn.bugzilla.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.bugzilla.ui",1328390664460
|
||||||
|
stopped,bundle,org.eclipse.mylyn.ide.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.ide.ui",1328390664460
|
||||||
|
stopped,bundle,org.eclipse.mylyn.team.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.team.ui",1328390664460
|
||||||
|
stopped,bundle,org.eclipse.mylyn.resources.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.resources.ui",1328390664461
|
||||||
|
stopped,bundle,org.eclipse.mylyn.wikitext.tasks.ui,1.1.3.v20100217-0100-e3x,"org.eclipse.mylyn.wikitext.tasks.ui",1328390664461
|
||||||
|
stopped,bundle,org.eclipse.mylyn.context.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.context.ui",1328390664462
|
||||||
|
stopped,bundle,org.eclipse.mylyn.help.ui,3.2.3.v20100217-0100-e3x,"org.eclipse.mylyn.help.ui",1328390664462
|
|
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<typeInfoHistroy/>
|
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<qualifiedTypeNameHistroy/>
|
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
|
||||||
|
<item value="true" key="group_libraries"/>
|
||||||
|
<item value="false" key="linkWithEditor"/>
|
||||||
|
<item value="2" key="layout"/>
|
||||||
|
<item value="1" key="rootMode"/>
|
||||||
|
<item value="<?xml version="1.0" encoding="UTF-8"?>
<packageExplorer group_libraries="1" layout="2" linkWithEditor="0" rootMode="1" workingSetName="">
<customFilters userDefinedPatternsEnabled="false">
<xmlDefinedFilters>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.LibraryFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.StaticsFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter" isEnabled="true"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter" isEnabled="true"/>
<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter" isEnabled="true"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.FieldsFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter" isEnabled="true"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter" isEnabled="false"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*" isEnabled="true"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter" isEnabled="true"/>
<child filterId="org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter" isEnabled="true"/>
</xmlDefinedFilters>
</customFilters>
</packageExplorer>" key="memento"/>
|
||||||
|
</section>
|
||||||
|
</section>
|
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="ExternalProjectImportWizard">
|
||||||
|
<item value="false" key="WizardProjectsImportPage.STORE_ARCHIVE_SELECTED"/>
|
||||||
|
<item value="false" key="WizardProjectsImportPage.STORE_COPY_PROJECT_ID"/>
|
||||||
|
</section>
|
||||||
|
<section name="NewWizardAction">
|
||||||
|
</section>
|
||||||
|
</section>
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<item value="1024" key="introLaunchBar.location"/>
|
||||||
|
</section>
|
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<section name="Workbench">
|
||||||
|
<section name="ImportExportAction">
|
||||||
|
</section>
|
||||||
|
</section>
|
@ -0,0 +1,355 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<workbench progressCount="20" version="2.0">
|
||||||
|
<workbenchAdvisor/>
|
||||||
|
<window height="768" width="1024" x="270" y="82">
|
||||||
|
<fastViewData fastViewLocation="1024"/>
|
||||||
|
<perspectiveBar>
|
||||||
|
<itemSize x="160"/>
|
||||||
|
</perspectiveBar>
|
||||||
|
<coolbarLayout locked="0">
|
||||||
|
<coolItem id="group.file" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="84" y="22"/>
|
||||||
|
<coolItem id="additions" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="adt.actionSet.avdManager" itemType="typeToolBarContribution" x="32" y="22"/>
|
||||||
|
<coolItem id="adt.actionSet.wizards" itemType="typeToolBarContribution" x="76" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.ui.CElementCreationActionSet" itemType="typeToolBarContribution" x="130" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.cdt.ui.buildConfigActionSet" itemType="typeToolBarContribution" x="69" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="100" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.jdt.ui.JavaElementCreationActionSet" itemType="typeToolBarContribution" x="84" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="84" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="54" y="22"/>
|
||||||
|
<coolItem id="org.eclipse.wst.xml.ui.perspective.NewFileToolBar" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||||
|
<coolItem id="org.eclipse.wst.xml.ui.design.DesignToolBar" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||||
|
<coolItem id="group.nav" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="152" y="22"/>
|
||||||
|
<coolItem id="group.editor" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="group.help" itemType="typeGroupMarker"/>
|
||||||
|
<coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/>
|
||||||
|
</coolbarLayout>
|
||||||
|
<page aggregateWorkingSetId="Aggregate for window 1328386901227" focus="true" label="Workspace - Java">
|
||||||
|
<editors>
|
||||||
|
<editorArea activeWorkbook="DefaultEditorWorkbook">
|
||||||
|
<info part="DefaultEditorWorkbook">
|
||||||
|
<folder appearance="1" expanded="2">
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
</editorArea>
|
||||||
|
</editors>
|
||||||
|
<views>
|
||||||
|
<view id="org.eclipse.ui.navigator.ProjectExplorer" partName="Project Explorer">
|
||||||
|
<viewState CommonNavigator.LINKING_ENABLED="0" CommonNavigator.LINKING_ENABLED.delayed="0" org.eclipse.cdt.ui.cview.groupincludes="false" org.eclipse.cdt.ui.editor.CUChildren="true" org.eclipse.ui.navigator.resources.workingSets.showTopLevelWorkingSets="0"/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.jdt.ui.TypeHierarchy" partName="Hierarchy"/>
|
||||||
|
<view id="org.eclipse.ui.views.PropertySheet" partName="Properties"/>
|
||||||
|
<view id="org.eclipse.cdt.make.ui.views.MakeView" partName="Make Targets"/>
|
||||||
|
<view id="org.eclipse.ui.views.ProblemView" partName="Problems">
|
||||||
|
<viewState PRIMARY_SORT_FIELD="org.eclipse.ui.ide.severityAndDescriptionField" categoryGroup="org.eclipse.ui.ide.severity" markerContentGenerator="org.eclipse.ui.ide.problemsGenerator" partName="Problems">
|
||||||
|
<columnWidths org.eclipse.ui.ide.locationField="84" org.eclipse.ui.ide.markerType="114" org.eclipse.ui.ide.pathField="144" org.eclipse.ui.ide.resourceField="114" org.eclipse.ui.ide.severityAndDescriptionField="300"/>
|
||||||
|
<visible IMemento.internal.id="org.eclipse.ui.ide.severityAndDescriptionField"/>
|
||||||
|
<visible IMemento.internal.id="org.eclipse.ui.ide.resourceField"/>
|
||||||
|
<visible IMemento.internal.id="org.eclipse.ui.ide.pathField"/>
|
||||||
|
<visible IMemento.internal.id="org.eclipse.ui.ide.locationField"/>
|
||||||
|
<visible IMemento.internal.id="org.eclipse.ui.ide.markerType"/>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.jdt.ui.PackageExplorer" partName="Package Explorer">
|
||||||
|
<viewState group_libraries="1" layout="2" linkWithEditor="0" rootMode="1" workingSetName="">
|
||||||
|
<customFilters userDefinedPatternsEnabled="false">
|
||||||
|
<xmlDefinedFilters>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.LibraryFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.StaticsFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter" isEnabled="true"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter" isEnabled="true"/>
|
||||||
|
<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter" isEnabled="true"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.FieldsFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter" isEnabled="true"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter" isEnabled="false"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*" isEnabled="true"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter" isEnabled="true"/>
|
||||||
|
<child filterId="org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter" isEnabled="true"/>
|
||||||
|
</xmlDefinedFilters>
|
||||||
|
</customFilters>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.console.ConsoleView" partName="Console"/>
|
||||||
|
<view id="org.eclipse.mylyn.tasks.ui.views.tasks" partName="Task List">
|
||||||
|
<viewState linkWithEditor="true" presentation="org.eclipse.mylyn.tasks.ui.categorized">
|
||||||
|
<sorter groupBy="CATEGORY_QUERY">
|
||||||
|
<sorter>
|
||||||
|
<sort0 sortDirection="1" sortKey="PRIORITY"/>
|
||||||
|
<sort1 sortDirection="1" sortKey="DATE_CREATED"/>
|
||||||
|
<sort2 sortDirection="1" sortKey="NONE"/>
|
||||||
|
<sort3 sortDirection="1" sortKey="NONE"/>
|
||||||
|
</sorter>
|
||||||
|
</sorter>
|
||||||
|
</viewState>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.views.TaskList" partName="Tasks"/>
|
||||||
|
<view id="org.eclipse.jdt.ui.SourceView" partName="Declaration">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.ui.views.ContentOutline" partName="Outline">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
<view id="org.eclipse.jdt.ui.JavadocView" partName="Javadoc">
|
||||||
|
<viewState/>
|
||||||
|
</view>
|
||||||
|
</views>
|
||||||
|
<perspectives activePart="org.eclipse.ui.views.ProblemView" activePerspective="org.eclipse.jdt.ui.JavaPerspective">
|
||||||
|
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
|
||||||
|
<descriptor class="org.eclipse.cdt.internal.ui.CPerspectiveFactory" id="org.eclipse.cdt.ui.CPerspective" label="C/C++"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.mylyn.context.ui.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.mylyn.doc.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.mylyn.tasks.ui.navigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
|
||||||
|
<alwaysOnActionSet id="adt.actionSet.wizards"/>
|
||||||
|
<alwaysOnActionSet id="adt.actionSet.refactorings"/>
|
||||||
|
<alwaysOnActionSet id="adt.actionSet.avdManager"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.SearchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.CElementCreationActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.make.ui.makeTargetActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.buildConfigActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.NavigationActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.OpenActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.cdt.ui.CodingActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.presentation"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<show_view_action id="org.eclipse.search.ui.views.SearchView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.ui.CView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ResourceNavigator"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.PropertySheet"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.make.ui.views.MakeView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||||
|
<show_view_action id="org.eclipse.cdt.ui.includeBrowser"/>
|
||||||
|
<show_view_action id="org.eclipse.mylyn.tasks.ui.views.tasks"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.ConvertToMakeWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewCWizard1"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewCWizard2"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewFolderCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.cdt.ui.wizards.NewClassCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.mylyn.tasks.ui.wizards.new.repository.task"/>
|
||||||
|
<perspective_action id="org.eclipse.debug.ui.DebugPerspective"/>
|
||||||
|
<perspective_action id="org.eclipse.team.ui.TeamSynchronizingPerspective"/>
|
||||||
|
<hide_toolbar_item_id id="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
|
||||||
|
<view id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||||
|
<view id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<view id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<view id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<view id="org.eclipse.ui.views.PropertySheet"/>
|
||||||
|
<view id="org.eclipse.ui.views.ContentOutline"/>
|
||||||
|
<view id="org.eclipse.cdt.make.ui.views.MakeView"/>
|
||||||
|
<view id="org.eclipse.mylyn.tasks.ui.views.tasks"/>
|
||||||
|
<fastViewBars/>
|
||||||
|
<layout>
<mainWindow>
<info folder="true" part="topLeft">
<folder activePageID="org.eclipse.ui.navigator.ProjectExplorer" appearance="2" expanded="2">
<page content="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer"/>
|
||||||
|
<page content="org.eclipse.cdt.ui.CView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.ResourceNavigator" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="org.eclipse.ui.internal.ViewStack@4b48f7e0" ratio="0.75" ratioLeft="762" ratioRight="254" relationship="2" relative="topLeft">
<folder appearance="2" expanded="2">
<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info part="org.eclipse.ui.editorss" ratio="0.25" ratioLeft="254" ratioRight="762" relationship="2" relative="topLeft"/>
|
||||||
|
<info folder="true" part="bottom" ratio="0.74963397" ratioLeft="512" ratioRight="171" relationship="4" relative="org.eclipse.ui.editorss">
<folder activePageID="org.eclipse.ui.views.ProblemView" appearance="2" expanded="2">
<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
|
||||||
|
<page content="org.eclipse.ui.views.TaskList" label="Tasks"/>
|
||||||
|
<page content="org.eclipse.ui.console.ConsoleView" label="Console"/>
|
||||||
|
<page content="org.eclipse.ui.views.PropertySheet" label="Properties"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
<part id="2"/>
|
||||||
|
<part id="3"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="topRight" ratio="0.7493438" ratioLeft="571" ratioRight="191" relationship="2" relative="org.eclipse.ui.editorss">
<folder activePageID="org.eclipse.ui.views.ContentOutline" appearance="2" expanded="2">
<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/>
|
||||||
|
<page content="org.eclipse.cdt.make.ui.views.MakeView" label="Make Targets"/>
|
||||||
|
<page content="org.eclipse.mylyn.tasks.ui.views.tasks" label="Task List"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
<part id="2"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
</mainWindow>
|
||||||
|
</layout>
|
||||||
|
</perspective>
|
||||||
|
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
|
||||||
|
<descriptor class="org.eclipse.jdt.internal.ui.JavaPerspectiveFactory" id="org.eclipse.jdt.ui.JavaPerspective" label="Java"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.mylyn.context.ui.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.mylyn.doc.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.mylyn.tasks.ui.navigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.cheatsheets.actionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.search.searchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.navigation"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.externaltools.ExternalToolsSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.keyBindings"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.actionSet.openFiles"/>
|
||||||
|
<alwaysOnActionSet id="adt.actionSet.wizards"/>
|
||||||
|
<alwaysOnActionSet id="adt.actionSet.refactorings"/>
|
||||||
|
<alwaysOnActionSet id="adt.actionSet.avdManager"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.launchActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.jdt.ui.JavaActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.jdt.ui.JavaElementCreationActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.ui.NavigateActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.debug.ui.breakpointActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.jdt.debug.ui.JDTDebugActionSet"/>
|
||||||
|
<alwaysOnActionSet id="org.eclipse.jdt.junit.JUnitActionSet"/>
|
||||||
|
<show_view_action id="org.eclipse.jdt.ui.PackageExplorer"/>
|
||||||
|
<show_view_action id="org.eclipse.jdt.ui.TypeHierarchy"/>
|
||||||
|
<show_view_action id="org.eclipse.jdt.ui.SourceView"/>
|
||||||
|
<show_view_action id="org.eclipse.jdt.ui.JavadocView"/>
|
||||||
|
<show_view_action id="org.eclipse.search.ui.views.SearchView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.console.ConsoleView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ContentOutline"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ResourceNavigator"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.TaskList"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.views.ProgressView"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.navigator.ProjectExplorer"/>
|
||||||
|
<show_view_action id="org.eclipse.ui.texteditor.TemplatesView"/>
|
||||||
|
<show_view_action id="org.eclipse.ant.ui.views.AntView"/>
|
||||||
|
<show_view_action id="org.eclipse.pde.runtime.LogView"/>
|
||||||
|
<show_view_action id="org.eclipse.mylyn.tasks.ui.views.tasks"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.JavaProjectWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewPackageCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewClassCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewEnumCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.ui.wizards.new.folder"/>
|
||||||
|
<new_wizard_action id="org.eclipse.ui.wizards.new.file"/>
|
||||||
|
<new_wizard_action id="org.eclipse.ui.editors.wizards.UntitledTextFileWizard"/>
|
||||||
|
<new_wizard_action id="com.android.ide.eclipse.adt.project.NewProjectWizard"/>
|
||||||
|
<new_wizard_action id="com.android.ide.eclipse.editors.wizards.NewXmlFileWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard"/>
|
||||||
|
<new_wizard_action id="org.eclipse.mylyn.tasks.ui.wizards.new.repository.task"/>
|
||||||
|
<perspective_action id="com.android.ide.eclipse.ddms.Perspective"/>
|
||||||
|
<perspective_action id="com.android.ide.eclipse.hierarchyviewer.PixelPerfectPespective"/>
|
||||||
|
<perspective_action id="com.android.ide.eclipse.hierarchyviewer.TreeViewPerspective"/>
|
||||||
|
<perspective_action id="org.eclipse.debug.ui.DebugPerspective"/>
|
||||||
|
<perspective_action id="org.eclipse.jdt.ui.JavaBrowsingPerspective"/>
|
||||||
|
<hide_toolbar_item_id id="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
|
||||||
|
<view id="org.eclipse.jdt.ui.PackageExplorer"/>
|
||||||
|
<view id="org.eclipse.jdt.ui.TypeHierarchy"/>
|
||||||
|
<view id="org.eclipse.ui.views.ProblemView"/>
|
||||||
|
<view id="org.eclipse.jdt.ui.JavadocView"/>
|
||||||
|
<view id="org.eclipse.jdt.ui.SourceView"/>
|
||||||
|
<view id="org.eclipse.ui.views.ContentOutline"/>
|
||||||
|
<view id="org.eclipse.mylyn.tasks.ui.views.tasks"/>
|
||||||
|
<fastViewBars/>
|
||||||
|
<layout>
|
||||||
|
<mainWindow>
|
||||||
|
<info folder="true" part="left">
|
||||||
|
<folder activePageID="org.eclipse.jdt.ui.PackageExplorer" appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.jdt.ui.PackageExplorer" label="Package Explorer"/>
|
||||||
|
<page content="org.eclipse.jdt.ui.TypeHierarchy" label="Hierarchy"/>
|
||||||
|
<page content="org.eclipse.ui.views.ResourceNavigator" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.navigator.ProjectExplorer" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.jdt.junit.ResultView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||||
|
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="stickyFolderRight" ratio="0.75" ratioLeft="762" ratioRight="254" relationship="2" relative="left">
|
||||||
|
<folder appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.help.ui.HelpView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.internal.introview" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="LabelNotFound"/>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info part="org.eclipse.ui.editorss" ratio="0.25" ratioLeft="254" ratioRight="762" relationship="2" relative="left"/>
|
||||||
|
<info folder="true" part="bottom" ratio="0.74963397" ratioLeft="512" ratioRight="171" relationship="4" relative="org.eclipse.ui.editorss">
|
||||||
|
<folder activePageID="org.eclipse.ui.views.ProblemView" appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
|
||||||
|
<page content="org.eclipse.jdt.ui.JavadocView" label="Javadoc"/>
|
||||||
|
<page content="org.eclipse.jdt.ui.SourceView" label="Declaration"/>
|
||||||
|
<page content="org.eclipse.search.ui.views.SearchView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.console.ConsoleView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.BookmarkView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ui.views.ProgressView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||||
|
<part id="0"/>
|
||||||
|
<part id="1"/>
|
||||||
|
<part id="2"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="org.eclipse.ui.internal.ViewStack@2b6ea258" ratio="0.7493438" ratioLeft="571" ratioRight="191" relationship="2" relative="org.eclipse.ui.editorss">
|
||||||
|
<folder activePageID="org.eclipse.mylyn.tasks.ui.views.tasks" appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.mylyn.tasks.ui.views.tasks" label="Task List"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||||
|
<part id="0"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
<info folder="true" part="right" ratio="0.5" ratioLeft="256" ratioRight="256" relationship="4" relative="org.eclipse.ui.internal.ViewStack@2b6ea258">
|
||||||
|
<folder activePageID="org.eclipse.ui.views.ContentOutline" appearance="2" expanded="2">
|
||||||
|
<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/>
|
||||||
|
<page content="org.eclipse.ui.texteditor.TemplatesView" label="LabelNotFound"/>
|
||||||
|
<page content="org.eclipse.ant.ui.views.AntView" label="LabelNotFound"/>
|
||||||
|
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
|
||||||
|
<part id="0"/>
|
||||||
|
</presentation>
|
||||||
|
</folder>
|
||||||
|
</info>
|
||||||
|
</mainWindow>
|
||||||
|
</layout>
|
||||||
|
</perspective>
|
||||||
|
</perspectives>
|
||||||
|
<workingSets/>
|
||||||
|
<navigationHistory/>
|
||||||
|
<input factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/" type="8"/>
|
||||||
|
</page>
|
||||||
|
<workbenchWindowAdvisor/>
|
||||||
|
<actionBarAdvisor/>
|
||||||
|
<trimLayout>
|
||||||
|
<trimArea IMemento.internal.id="128">
|
||||||
|
<trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/>
|
||||||
|
</trimArea>
|
||||||
|
<trimArea IMemento.internal.id="1024">
|
||||||
|
<trimItem IMemento.internal.id="org.eclise.ui.internal.FastViewBar"/>
|
||||||
|
<trimItem IMemento.internal.id="org.eclipse.jface.action.StatusLineManager"/>
|
||||||
|
<trimItem IMemento.internal.id="org.eclipse.ui.internal.progress.ProgressRegion"/>
|
||||||
|
</trimArea>
|
||||||
|
</trimLayout>
|
||||||
|
</window>
|
||||||
|
<mruList/>
|
||||||
|
</workbench>
|
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<workingSetManager>
|
||||||
|
<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1328386901229_0" label="Window Working Set" name="Aggregate for window 1328386901227"/>
|
||||||
|
</workingSetManager>
|
1
androidgcs/.metadata/version.ini
Normal file
@ -0,0 +1 @@
|
|||||||
|
org.eclipse.core.runtime=1
|
33
androidgcs/.project
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>androidgcs</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
12
androidgcs/.settings/org.eclipse.jdt.core.prefs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#Sat Feb 04 16:05:48 CST 2012
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate
|
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
|
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||||
|
org.eclipse.jdt.core.compiler.source=1.5
|
61
androidgcs/AndroidManifest.xml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.openpilot.androidgcs" android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
<uses-sdk android:minSdkVersion="14" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
<uses-feature android:name="android.hardware.usb.host" />
|
||||||
|
|
||||||
|
<application android:icon="@drawable/ic_logo" android:label="@string/app_name" android:theme="@android:style/Theme.Holo">
|
||||||
|
<!-- for map overlay -->
|
||||||
|
<uses-library android:name="com.google.android.maps" />
|
||||||
|
|
||||||
|
<!-- Object browser - main activity at the moment -->
|
||||||
|
<activity android:name="HomePage" android:label="@string/app_name">
|
||||||
|
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
|
<!-- <intent-filter> -->
|
||||||
|
<!-- <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> -->
|
||||||
|
<!-- </intent-filter> -->
|
||||||
|
|
||||||
|
<!-- <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" -->
|
||||||
|
<!-- android:resource="@xml/device_filter" /> -->
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
<activity android:name="ObjectBrowser" android:label="@string/object_browser_name" />
|
||||||
|
<activity android:name="PfdActivity" android:label="PFD" />
|
||||||
|
<activity android:name="Controller" android:label="@string/controller_name" />
|
||||||
|
<activity android:name="Preferences" android:label="@string/preference_title" />
|
||||||
|
<activity android:name="UAVLocation" android:label="@string/location_name" />
|
||||||
|
<activity android:name="SystemAlarmActivity" android:label="System Alarms" />
|
||||||
|
<activity android:name="ObjectEditor" android:label="ObjectEditor"
|
||||||
|
android:theme="@android:style/Theme.Dialog" />
|
||||||
|
<activity android:name="Logger" android:label="Logger"
|
||||||
|
android:theme="@android:style/Theme.Dialog" />
|
||||||
|
<activity android:name="FragmentTester" android:label="FragmentTester" />
|
||||||
|
|
||||||
|
<receiver android:name="TelemetryWidget">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="org.openpilot.intent.action.CONNECTED" />
|
||||||
|
<action android:name="org.openpilot.intent.action.DISCONNECTED" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data android:name="android.appwidget.provider"
|
||||||
|
android:resource="@xml/telemetry_widget_info" />
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
<service android:name="org.openpilot.androidgcs.telemetry.OPTelemetryService"></service>
|
||||||
|
</application>
|
||||||
|
</manifest>
|
70
androidgcs/Doc/AndroidArchitecture.txt
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
------- TELEMETRY ---------
|
||||||
|
The Telemetry system has been implemented, and is composed of a few
|
||||||
|
major components:
|
||||||
|
|
||||||
|
Telemetry.java - receives command to transmit objects through telemetry and
|
||||||
|
also emits notification when transactions are completed
|
||||||
|
|
||||||
|
TelemetryMonitor.java - monitors the FlightTelemetryStats and GCSTelemetryStats
|
||||||
|
to establish when a working connection is in place. Also initiates downloading
|
||||||
|
all the objects on a new connection.
|
||||||
|
|
||||||
|
UAVObjectManager.java - the central data store. The data is actually stored
|
||||||
|
within objects, but this maintains the handles to all of them.
|
||||||
|
|
||||||
|
UAVTalk.java - the actual communication layer. Can packetize an object and
|
||||||
|
insert into stream and process the incoming stream and update objects
|
||||||
|
accordingly.
|
||||||
|
|
||||||
|
** Threading
|
||||||
|
Currently object updates run within the thread of the function that called
|
||||||
|
update. This should be changed so that it adds a message to the Telemetry
|
||||||
|
thread which will then send on its own time.
|
||||||
|
|
||||||
|
---- MESSAGE PASSING ----
|
||||||
|
The current implementation/analog to the slots/sockets in QT are Observers
|
||||||
|
which are registered as added to an Observable. This is used extensibly within
|
||||||
|
the telemetry system. I will continue to use this _within_ the Telemetry
|
||||||
|
module so it doesn't depend on any android features.
|
||||||
|
|
||||||
|
In android there is a constraint that UI operations should all be done from the
|
||||||
|
UI thread. The most common way to do this is for the UI object (such as
|
||||||
|
Activity) to instantiate a Handler to which messages or runnables are posted.
|
||||||
|
|
||||||
|
So for external objects they will register a runnable somehow...
|
||||||
|
|
||||||
|
--- TELEMETRY SERVICE ---
|
||||||
|
The telemetry connection will be maintained by a service separate from the the
|
||||||
|
main activity(s). Although it is a bit unusual, the service will support being
|
||||||
|
started and stopped, as well as being bound. Binding will be required to get
|
||||||
|
access to the Object Manager.
|
||||||
|
|
||||||
|
In addition, to make it forward looking, the start intent can specify a
|
||||||
|
connection to open. This will allow the service in future to monitor multiple
|
||||||
|
connections.
|
||||||
|
|
||||||
|
The service will destroy itself only when all active connections disappear and
|
||||||
|
all activies are unbound.
|
||||||
|
|
||||||
|
It will also handle any logging desired (I think).
|
||||||
|
|
||||||
|
There will be a primary message handler thread. This thread will separately
|
||||||
|
launch telemetry threads when required.
|
||||||
|
|
||||||
|
The service should send broadcast intents whenever a connection is estabilished
|
||||||
|
or dropped.
|
||||||
|
|
||||||
|
I dont think the service should have the options about which UAVs are
|
||||||
|
supported.
|
||||||
|
|
||||||
|
** Telemetry IBinder
|
||||||
|
*** Give handle to the ObjectManager for each UAV
|
||||||
|
*** Call disconnect
|
||||||
|
*** Query conncetion status
|
||||||
|
|
||||||
|
--- TELEMETRY WIDGET ---
|
||||||
|
Listens for conncet/disconnect intents
|
||||||
|
|
||||||
|
Also show if service is running?
|
||||||
|
|
||||||
|
Ability to launch service?
|
3
androidgcs/lint.xml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<lint>
|
||||||
|
</lint>
|
36
androidgcs/proguard.cfg
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
-optimizationpasses 5
|
||||||
|
-dontusemixedcaseclassnames
|
||||||
|
-dontskipnonpubliclibraryclasses
|
||||||
|
-dontpreverify
|
||||||
|
-verbose
|
||||||
|
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||||||
|
|
||||||
|
-keep public class * extends android.app.Activity
|
||||||
|
-keep public class * extends android.app.Application
|
||||||
|
-keep public class * extends android.app.Service
|
||||||
|
-keep public class * extends android.content.BroadcastReceiver
|
||||||
|
-keep public class * extends android.content.ContentProvider
|
||||||
|
-keep public class * extends android.app.backup.BackupAgentHelper
|
||||||
|
-keep public class * extends android.preference.Preference
|
||||||
|
-keep public class com.android.vending.licensing.ILicensingService
|
||||||
|
|
||||||
|
-keepclasseswithmembers class * {
|
||||||
|
native <methods>;
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclasseswithmembernames class * {
|
||||||
|
public <init>(android.content.Context, android.util.AttributeSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclasseswithmembernames class * {
|
||||||
|
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers enum * {
|
||||||
|
public static **[] values();
|
||||||
|
public static ** valueOf(java.lang.String);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keep class * implements android.os.Parcelable {
|
||||||
|
public static final android.os.Parcelable$Creator *;
|
||||||
|
}
|
11
androidgcs/project.properties
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# This file is automatically generated by Android Tools.
|
||||||
|
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||||
|
#
|
||||||
|
# This file must be checked in Version Control Systems.
|
||||||
|
#
|
||||||
|
# To customize properties used by the Ant build system use,
|
||||||
|
# "ant.properties", and override values to adapt the script to your
|
||||||
|
# project structure.
|
||||||
|
|
||||||
|
# Project target.
|
||||||
|
target=Google Inc.:Google APIs:16
|
BIN
androidgcs/res/drawable-hdpi/browser_icon.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
androidgcs/res/drawable-hdpi/ic_alarms.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_browser.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_controller.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_home.png
Normal file
After Width: | Height: | Size: 695 B |
BIN
androidgcs/res/drawable-hdpi/ic_logging.png
Normal file
After Width: | Height: | Size: 823 B |
BIN
androidgcs/res/drawable-hdpi/ic_logo.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_map.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_pfd.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_telemetry.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
androidgcs/res/drawable-hdpi/ic_uav.png
Normal file
After Width: | Height: | Size: 800 B |
BIN
androidgcs/res/drawable-hdpi/im_pfd_horizon.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
androidgcs/res/drawable-hdpi/map_positioner_background.9.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
androidgcs/res/drawable-hdpi/map_positioner_poi.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
androidgcs/res/drawable-hdpi/map_positioner_uav.png
Normal file
After Width: | Height: | Size: 835 B |
BIN
androidgcs/res/drawable-hdpi/map_positioner_waypoint.png
Normal file
After Width: | Height: | Size: 574 B |
BIN
androidgcs/res/drawable-ldpi/browser_icon.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
androidgcs/res/drawable-ldpi/icon.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
androidgcs/res/drawable-mdpi/browser_icon.png
Normal file
After Width: | Height: | Size: 456 B |
BIN
androidgcs/res/drawable-mdpi/icon.png
Normal file
After Width: | Height: | Size: 47 KiB |
28
androidgcs/res/layout/controller.xml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textView1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/manual_control_values_"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/manualControlValues"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="240dp"
|
||||||
|
android:text=""
|
||||||
|
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||||
|
|
||||||
|
<com.MobileAnarchy.Android.Widgets.Joystick.DualJoystickView
|
||||||
|
android:id="@+id/dualjoystickView"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="175dip"
|
||||||
|
android:layout_marginTop="5dip" >
|
||||||
|
</com.MobileAnarchy.Android.Widgets.Joystick.DualJoystickView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
37
androidgcs/res/layout/dualjoystick.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<com.MobileAnarchy.Android.Widgets.Joystick.DualJoystickView
|
||||||
|
android:id="@+id/dualjoystickView" android:layout_gravity="center_horizontal"
|
||||||
|
android:layout_marginTop="5dip" android:layout_width="fill_parent"
|
||||||
|
android:layout_height="175dip" />
|
||||||
|
|
||||||
|
<TableLayout android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" android:layout_gravity="center_horizontal"
|
||||||
|
android:layout_marginTop="10dip">
|
||||||
|
<TableRow>
|
||||||
|
<TextView android:text="X" android:layout_width="50dip"
|
||||||
|
android:layout_height="wrap_content"></TextView>
|
||||||
|
<TextView android:text="" android:id="@+id/TextViewX1"
|
||||||
|
android:layout_width="150dip" android:layout_height="wrap_content"></TextView>
|
||||||
|
|
||||||
|
<TextView android:text="X" android:layout_width="50dip"
|
||||||
|
android:layout_height="wrap_content"></TextView>
|
||||||
|
<TextView android:text="" android:id="@+id/TextViewX2"
|
||||||
|
android:layout_width="100dip" android:layout_height="wrap_content"></TextView>
|
||||||
|
</TableRow>
|
||||||
|
<TableRow>
|
||||||
|
<TextView android:text="Y" android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"></TextView>
|
||||||
|
<TextView android:text="" android:id="@+id/TextViewY1"
|
||||||
|
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
|
||||||
|
|
||||||
|
<TextView android:text="Y" android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"></TextView>
|
||||||
|
<TextView android:text="" android:id="@+id/TextViewY2"
|
||||||
|
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
|
||||||
|
</TableRow>
|
||||||
|
</TableLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
103
androidgcs/res/layout/gcs_home.xml
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_gravity="center_horizontal" >
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_object_browser"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="0"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_browser"
|
||||||
|
android:text="@string/object_browser_name" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_location"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="1"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="0"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_map"
|
||||||
|
android:text="@string/location_name" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_pfd"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="2"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_pfd"
|
||||||
|
android:text="@string/pfd_name" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_controller"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="1"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:layout_row="2"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_controller"
|
||||||
|
android:text="@string/controller_name" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_logger"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:layout_row="4"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_logging"
|
||||||
|
android:text="@string/logger_name" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_alarms"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="1"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:layout_row="4"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_alarms"
|
||||||
|
android:text="@string/alarms" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/launch_tester"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:layout_row="6"
|
||||||
|
android:layout_rowSpan="2"
|
||||||
|
android:background="@android:color/transparent"
|
||||||
|
android:drawableTop="@drawable/ic_alarms"
|
||||||
|
android:text="@string/tester" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="1dp"
|
||||||
|
android:layout_height="32dp"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_row="0" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="100dp"
|
||||||
|
android:layout_height="69dp"
|
||||||
|
android:layout_row="1" />
|
||||||
|
|
||||||
|
</GridLayout>
|
59
androidgcs/res/layout/logger.xml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_gravity="center_horizontal" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/logger_number_of_objects_title"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="0"
|
||||||
|
android:layout_rowSpan="1"
|
||||||
|
android:text="@string/number_of_objects" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/logger_number_of_objects"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="1"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="0"
|
||||||
|
android:layout_rowSpan="1"
|
||||||
|
android:text="" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/logger_number_of_bytes_title"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="1"
|
||||||
|
android:layout_rowSpan="1"
|
||||||
|
android:text="@string/number_of_bytes" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/logger_number_of_bytes"
|
||||||
|
android:layout_width="132dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_column="1"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_row="1"
|
||||||
|
android:layout_rowSpan="1"
|
||||||
|
android:text="" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="1dp"
|
||||||
|
android:layout_height="32dp"
|
||||||
|
android:layout_column="0"
|
||||||
|
android:layout_row="0" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="100dp"
|
||||||
|
android:layout_height="69dp"
|
||||||
|
android:layout_row="1" />
|
||||||
|
|
||||||
|
</GridLayout>
|
12
androidgcs/res/layout/map_layout.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
<com.google.android.maps.MapView
|
||||||
|
android:id="@+id/map_view" android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent" android:enabled="true"
|
||||||
|
android:clickable="true" android:apiKey="0ugzv7PkCKSo8cNXxn9A251sxOfROBdjHG0eQEw" />
|
||||||
|
<!-- Note: If you are testing this you will need to use a debugging api key -->
|
||||||
|
<!-- https://developers.google.com/maps/documentation/android/mapkey -->
|
||||||
|
</LinearLayout>
|
||||||
|
|
20
androidgcs/res/layout/map_positioner.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<SeekBar
|
||||||
|
android:id="@+id/altitude_slider"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:max="50" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/map_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@drawable/map_positioner_background" >
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
106
androidgcs/res/layout/object_browser.xml
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:gravity="right" >
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/linearLayout1"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
|
android:layout_alignParentTop="true"
|
||||||
|
android:layout_marginLeft="5dp"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content" >
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/settingsCheck"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="Settings" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/dataCheck"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="Data" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_height="1dip"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:background="#FFFFFFFF" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content" >
|
||||||
|
|
||||||
|
<ListView
|
||||||
|
android:id="@+id/object_list"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="2"
|
||||||
|
android:choiceMode="singleChoice"
|
||||||
|
android:drawSelectorOnTop="true" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="1dip"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:background="#FFFFFFFF" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/object_information"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="12dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" >
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/object_load_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Load" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/editButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="right"
|
||||||
|
android:layout_marginBottom="32dp"
|
||||||
|
android:layout_marginRight="12dp"
|
||||||
|
android:text="Edit" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
45
androidgcs/res/layout/object_editor.xml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="500dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
tools:context=".ObjectEditor" >
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:id="@+id/scrollView1"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1.56" >
|
||||||
|
|
||||||
|
<org.openpilot.androidgcs.ObjectEditView
|
||||||
|
android:id="@+id/object_edit_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" >
|
||||||
|
</org.openpilot.androidgcs.ObjectEditView>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
<!-- View android:layout_width="200dp" android:layout_height="1dip" android:background="#FFFFFFFF" / -->
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="64dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="right" >
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/object_edit_send_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/send_button" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/object_edit_save_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/save_button" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
7
androidgcs/res/layout/object_view.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:textSize="16sp" >
|
||||||
|
</TextView>
|
12
androidgcs/res/layout/pfd.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<org.openpilot.androidgcs.AttitudeView
|
||||||
|
android:id="@+id/attitude_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
19
androidgcs/res/layout/system_alarms.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="center" >
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:name="org.openpilot.androidgcs.fragments.SystemAlarmsFragment"
|
||||||
|
android:id="@+id/viewer"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:name="org.openpilot.androidgcs.fragments.PFD"
|
||||||
|
android:id="@+id/pfd"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
18
androidgcs/res/layout/system_alarms_fragment.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical" >
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/progressBar3"
|
||||||
|
style="?android:attr/progressBarStyleHorizontal"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/system_alarms_fragment_field"
|
||||||
|
android:layout_width="200dip"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
31
androidgcs/res/layout/telemetry_stats.xml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/searchProgressWrapper"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal" >
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/telemetry_stats_rx_rate_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/rxrate" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/telemetry_stats_rx_rate"
|
||||||
|
android:layout_width="64dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/telemetry_stats_tx_rate_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/txrate" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/telemetry_stats_tx_rate"
|
||||||
|
android:layout_width="64dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="" />
|
||||||
|
</LinearLayout>
|
7
androidgcs/res/layout/telemetry_widget.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
<TextView android:text="TextView" android:layout_width="wrap_content" android:id="@+id/telemetryWidgetStatus" android:layout_height="wrap_content"></TextView>
|
||||||
|
</LinearLayout>
|
6
androidgcs/res/menu/options_menu.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:title="@string/menu_item_settings" android:id="@+id/menu_settings"></item>
|
||||||
|
<item android:title="@string/menu_item_connect" android:id="@+id/menu_connect"></item>
|
||||||
|
<item android:title="@string/menu_item_disconnect" android:id="@+id/menu_disconnect"></item>
|
||||||
|
</menu>
|
9
androidgcs/res/menu/status_menu.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:id="@+id/menuItemProgress"
|
||||||
|
android:title="Progress"
|
||||||
|
android:actionLayout="@layout/telemetry_stats"
|
||||||
|
android:showAsAction="always" />
|
||||||
|
|
||||||
|
</menu>
|
17
androidgcs/res/values/arrays.xml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<resources>
|
||||||
|
<string-array name="connectTypeArray">
|
||||||
|
<item>None</item>
|
||||||
|
<item>Fake</item>
|
||||||
|
<item>Bluetooth</item>
|
||||||
|
<item>Network</item>
|
||||||
|
<item>HID</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="connectTypeValues">
|
||||||
|
<item>0</item>
|
||||||
|
<item>1</item>
|
||||||
|
<item>2</item>
|
||||||
|
<item>3</item>
|
||||||
|
<item>4</item>
|
||||||
|
</string-array>
|
||||||
|
</resources>
|
6
androidgcs/res/values/colors.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="background_color">#F555</color>
|
||||||
|
<color name="marker_color">#AFFF</color>
|
||||||
|
<color name="text_color">#AFFF</color>
|
||||||
|
</resources>
|
36
androidgcs/res/values/strings.xml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="app_name">OpenPilot GCS Home</string>
|
||||||
|
<string name="object_browser_name">Browser</string>
|
||||||
|
<string name="controller_name">Controller</string>
|
||||||
|
<string name="pfd_name">PFD</string>
|
||||||
|
<string name="location_name">Map</string>
|
||||||
|
<string name="logger_name">Logging</string>
|
||||||
|
|
||||||
|
<string name="menu_item_settings">Settings</string>
|
||||||
|
<string name="menu_item_connect">Connect</string>
|
||||||
|
<string name="menu_item_disconnect">Disconnect</string>
|
||||||
|
|
||||||
|
<string name="preference_title">Settings</string>
|
||||||
|
<string name="preference_checkbox_autoconnect">Automatically Connect</string>
|
||||||
|
<string name="preference_checkbox_connection_type">Connection Type</string>
|
||||||
|
<string name="preference_checkbox_bluetooth">Bluetooth</string>
|
||||||
|
<string name="preference_connection_method_summary">Select the connection method</string>
|
||||||
|
|
||||||
|
<string name="compass_name">Compass</string>
|
||||||
|
<string name="cardinal_north">N</string>
|
||||||
|
<string name="cardinal_east">E</string>
|
||||||
|
<string name="cardinal_south">S</string>
|
||||||
|
<string name="cardinal_west">W</string>
|
||||||
|
<string name="connected">Connected</string>
|
||||||
|
<string name="update_button">Update</string>
|
||||||
|
<string name="save_button">Save</string>
|
||||||
|
<string name="send_button">Send</string>
|
||||||
|
<string name="manual_control_values_">Manual control values:</string>
|
||||||
|
<string name="number_of_objects">Number of objects</string>
|
||||||
|
<string name="number_of_bytes">Number of bytes</string>
|
||||||
|
<string name="alarms">Alarms</string>
|
||||||
|
<string name="txrate">TxRate: </string>
|
||||||
|
<string name="rxrate">RxRate: </string>
|
||||||
|
<string name="tester">Tester</string>
|
||||||
|
</resources>
|
9
androidgcs/res/xml/device_filter.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<usb-device vendor-id="8352" product-id="16730" />
|
||||||
|
<usb-device vendor-id="8352" product-id="16731" />
|
||||||
|
<usb-device vendor-id="8352" product-id="16732" />
|
||||||
|
<usb-device vendor-id="8352" product-id="16733" />
|
||||||
|
<usb-device vendor-id="8352" product-id="16734" />
|
||||||
|
</resources>
|
23
androidgcs/res/xml/preferences.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<PreferenceCategory android:title="Connection Settings">
|
||||||
|
<CheckBoxPreference android:title="@string/preference_checkbox_autoconnect"
|
||||||
|
android:key="autoconnect" />
|
||||||
|
<ListPreference android:title="@string/preference_checkbox_connection_type"
|
||||||
|
android:key="connection_type" android:summary="@string/preference_connection_method_summary"
|
||||||
|
android:defaultValue="None" android:entries="@array/connectTypeArray"
|
||||||
|
android:entryValues="@array/connectTypeValues" />
|
||||||
|
<EditTextPreference android:name="ip_address"
|
||||||
|
android:summary="Enter a TCP/IP address here"
|
||||||
|
android:defaultValue="192.168.0.1" android:title="IP address:"
|
||||||
|
android:key="ip_address" />
|
||||||
|
<EditTextPreference android:name="port"
|
||||||
|
android:summary="Enter a TCP/IP port here"
|
||||||
|
android:defaultValue="9001" android:title="Port:"
|
||||||
|
android:key="port" />
|
||||||
|
<org.openpilot.androidgcs.BluetoothDevicePreference android:name="bt_adapter"
|
||||||
|
android:key="bluetooth_mac"
|
||||||
|
android:title="Bluetooth Device"
|
||||||
|
android:dialogTitle="Choose Bluetooth Device" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
</PreferenceScreen>
|
9
androidgcs/res/xml/telemetry_widget_info.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<appwidget-provider
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
android:minWidth="294dp"
|
||||||
|
android:minHeight="72dp"
|
||||||
|
android:updatePeriodMillis="86400000"
|
||||||
|
android:initialLayout="@layout/telemetry_widget">
|
||||||
|
<!-- android:configure="com.example.android.ExampleAppWidgetConfigure" -->
|
||||||
|
</appwidget-provider>
|
@ -0,0 +1,319 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DockPanel;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.animation.AccelerateInterpolator;
|
||||||
|
import android.view.animation.Animation;
|
||||||
|
import android.view.animation.DecelerateInterpolator;
|
||||||
|
import android.view.animation.TranslateAnimation;
|
||||||
|
import android.view.animation.Animation.AnimationListener;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
|
public class DockPanel extends LinearLayout {
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private members
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private static final String TAG = "DockPanel";
|
||||||
|
private DockPosition position;
|
||||||
|
private int contentLayoutId;
|
||||||
|
private int handleButtonDrawableId;
|
||||||
|
private Boolean isOpen;
|
||||||
|
private Boolean animationRunning;
|
||||||
|
private FrameLayout contentPlaceHolder;
|
||||||
|
private ImageButton toggleButton;
|
||||||
|
private int animationDuration;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Constructors
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public DockPanel(Context context, int contentLayoutId,
|
||||||
|
int handleButtonDrawableId, Boolean isOpen) {
|
||||||
|
super(context);
|
||||||
|
|
||||||
|
this.contentLayoutId = contentLayoutId;
|
||||||
|
this.handleButtonDrawableId = handleButtonDrawableId;
|
||||||
|
this.isOpen = isOpen;
|
||||||
|
|
||||||
|
Init(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DockPanel(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
|
||||||
|
// to prevent from crashing the designer
|
||||||
|
try {
|
||||||
|
Init(attrs);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Initialization
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private void Init(AttributeSet attrs) {
|
||||||
|
setDefaultValues(attrs);
|
||||||
|
|
||||||
|
createHandleToggleButton();
|
||||||
|
|
||||||
|
// create the handle container
|
||||||
|
FrameLayout handleContainer = new FrameLayout(getContext());
|
||||||
|
handleContainer.addView(toggleButton);
|
||||||
|
|
||||||
|
// create and populate the panel's container, and inflate it
|
||||||
|
contentPlaceHolder = new FrameLayout(getContext());
|
||||||
|
String infService = Context.LAYOUT_INFLATER_SERVICE;
|
||||||
|
LayoutInflater li = (LayoutInflater) getContext().getSystemService(
|
||||||
|
infService);
|
||||||
|
li.inflate(contentLayoutId, contentPlaceHolder, true);
|
||||||
|
|
||||||
|
// setting the layout of the panel parameters according to the docking
|
||||||
|
// position
|
||||||
|
if (position == DockPosition.LEFT || position == DockPosition.RIGHT) {
|
||||||
|
handleContainer.setLayoutParams(new LayoutParams(
|
||||||
|
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||||
|
android.view.ViewGroup.LayoutParams.MATCH_PARENT, 1));
|
||||||
|
contentPlaceHolder.setLayoutParams(new LayoutParams(
|
||||||
|
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||||
|
android.view.ViewGroup.LayoutParams.MATCH_PARENT, 1));
|
||||||
|
} else {
|
||||||
|
handleContainer.setLayoutParams(new LayoutParams(
|
||||||
|
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
|
android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1));
|
||||||
|
contentPlaceHolder.setLayoutParams(new LayoutParams(
|
||||||
|
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
|
android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
// adding the view to the parent layout according to docking position
|
||||||
|
if (position == DockPosition.RIGHT || position == DockPosition.BOTTOM) {
|
||||||
|
this.addView(handleContainer);
|
||||||
|
this.addView(contentPlaceHolder);
|
||||||
|
} else {
|
||||||
|
this.addView(contentPlaceHolder);
|
||||||
|
this.addView(handleContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isOpen) {
|
||||||
|
contentPlaceHolder.setVisibility(GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setDefaultValues(AttributeSet attrs) {
|
||||||
|
// set default values
|
||||||
|
isOpen = true;
|
||||||
|
animationRunning = false;
|
||||||
|
animationDuration = 500;
|
||||||
|
setPosition(DockPosition.RIGHT);
|
||||||
|
|
||||||
|
// Try to load values set by xml markup
|
||||||
|
if (attrs != null) {
|
||||||
|
String namespace = "http://com.MobileAnarchy.Android.Widgets";
|
||||||
|
|
||||||
|
animationDuration = attrs.getAttributeIntValue(namespace,
|
||||||
|
"animationDuration", 500);
|
||||||
|
contentLayoutId = attrs.getAttributeResourceValue(namespace,
|
||||||
|
"contentLayoutId", 0);
|
||||||
|
handleButtonDrawableId = attrs.getAttributeResourceValue(
|
||||||
|
namespace, "handleButtonDrawableResourceId", 0);
|
||||||
|
isOpen = attrs.getAttributeBooleanValue(namespace, "isOpen", true);
|
||||||
|
|
||||||
|
// Enums are a bit trickier (needs to be parsed)
|
||||||
|
try {
|
||||||
|
position = DockPosition.valueOf(attrs.getAttributeValue(
|
||||||
|
namespace, "dockPosition").toUpperCase());
|
||||||
|
setPosition(position);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
// Docking to the left is the default behavior
|
||||||
|
setPosition(DockPosition.LEFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createHandleToggleButton() {
|
||||||
|
toggleButton = new ImageButton(getContext());
|
||||||
|
toggleButton.setPadding(0, 0, 0, 0);
|
||||||
|
toggleButton.setLayoutParams(new FrameLayout.LayoutParams(
|
||||||
|
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||||
|
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||||
|
Gravity.CENTER));
|
||||||
|
toggleButton.setBackgroundColor(Color.TRANSPARENT);
|
||||||
|
toggleButton.setImageResource(handleButtonDrawableId);
|
||||||
|
toggleButton.setOnClickListener(new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setPosition(DockPosition position) {
|
||||||
|
this.position = position;
|
||||||
|
switch (position) {
|
||||||
|
case TOP:
|
||||||
|
setOrientation(LinearLayout.VERTICAL);
|
||||||
|
setGravity(Gravity.TOP);
|
||||||
|
break;
|
||||||
|
case RIGHT:
|
||||||
|
setOrientation(LinearLayout.HORIZONTAL);
|
||||||
|
setGravity(Gravity.RIGHT);
|
||||||
|
break;
|
||||||
|
case BOTTOM:
|
||||||
|
setOrientation(LinearLayout.VERTICAL);
|
||||||
|
setGravity(Gravity.BOTTOM);
|
||||||
|
break;
|
||||||
|
case LEFT:
|
||||||
|
setOrientation(LinearLayout.HORIZONTAL);
|
||||||
|
setGravity(Gravity.LEFT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public int getAnimationDuration() {
|
||||||
|
return animationDuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAnimationDuration(int milliseconds) {
|
||||||
|
animationDuration = milliseconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getIsRunning() {
|
||||||
|
return animationRunning;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void open() {
|
||||||
|
if (!animationRunning) {
|
||||||
|
Log.d(TAG, "Opening...");
|
||||||
|
|
||||||
|
Animation animation = createShowAnimation();
|
||||||
|
this.setAnimation(animation);
|
||||||
|
animation.start();
|
||||||
|
|
||||||
|
isOpen = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
if (!animationRunning) {
|
||||||
|
Log.d(TAG, "Closing...");
|
||||||
|
|
||||||
|
Animation animation = createHideAnimation();
|
||||||
|
this.setAnimation(animation);
|
||||||
|
animation.start();
|
||||||
|
isOpen = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void toggle() {
|
||||||
|
if (isOpen) {
|
||||||
|
close();
|
||||||
|
} else {
|
||||||
|
open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private Animation createHideAnimation() {
|
||||||
|
Animation animation = null;
|
||||||
|
switch (position) {
|
||||||
|
case TOP:
|
||||||
|
animation = new TranslateAnimation(0, 0, 0, -contentPlaceHolder
|
||||||
|
.getHeight());
|
||||||
|
break;
|
||||||
|
case RIGHT:
|
||||||
|
animation = new TranslateAnimation(0, contentPlaceHolder
|
||||||
|
.getWidth(), 0, 0);
|
||||||
|
break;
|
||||||
|
case BOTTOM:
|
||||||
|
animation = new TranslateAnimation(0, 0, 0, contentPlaceHolder
|
||||||
|
.getHeight());
|
||||||
|
break;
|
||||||
|
case LEFT:
|
||||||
|
animation = new TranslateAnimation(0, -contentPlaceHolder
|
||||||
|
.getWidth(), 0, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
animation.setDuration(animationDuration);
|
||||||
|
animation.setInterpolator(new AccelerateInterpolator());
|
||||||
|
animation.setAnimationListener(new AnimationListener() {
|
||||||
|
@Override
|
||||||
|
public void onAnimationStart(Animation animation) {
|
||||||
|
animationRunning = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAnimationRepeat(Animation animation) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAnimationEnd(Animation animation) {
|
||||||
|
contentPlaceHolder.setVisibility(View.GONE);
|
||||||
|
animationRunning = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Animation createShowAnimation() {
|
||||||
|
Animation animation = null;
|
||||||
|
switch (position) {
|
||||||
|
case TOP:
|
||||||
|
animation = new TranslateAnimation(0, 0, -contentPlaceHolder
|
||||||
|
.getHeight(), 0);
|
||||||
|
break;
|
||||||
|
case RIGHT:
|
||||||
|
animation = new TranslateAnimation(contentPlaceHolder.getWidth(),
|
||||||
|
0, 0, 0);
|
||||||
|
break;
|
||||||
|
case BOTTOM:
|
||||||
|
animation = new TranslateAnimation(0, 0, contentPlaceHolder
|
||||||
|
.getHeight(), 0);
|
||||||
|
break;
|
||||||
|
case LEFT:
|
||||||
|
animation = new TranslateAnimation(-contentPlaceHolder.getWidth(),
|
||||||
|
0, 0, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Log.d(TAG, "Animation duration: " + animationDuration);
|
||||||
|
animation.setDuration(animationDuration);
|
||||||
|
animation.setInterpolator(new DecelerateInterpolator());
|
||||||
|
animation.setAnimationListener(new AnimationListener() {
|
||||||
|
@Override
|
||||||
|
public void onAnimationStart(Animation animation) {
|
||||||
|
animationRunning = true;
|
||||||
|
contentPlaceHolder.setVisibility(View.VISIBLE);
|
||||||
|
Log.d(TAG, "\"Show\" Animation started");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAnimationRepeat(Animation animation) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAnimationEnd(Animation animation) {
|
||||||
|
animationRunning = false;
|
||||||
|
Log.d(TAG, "\"Show\" Animation ended");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DockPanel;
|
||||||
|
|
||||||
|
public enum DockPosition {
|
||||||
|
TOP, BOTTOM, LEFT, RIGHT
|
||||||
|
}
|
@ -0,0 +1,124 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DragAndDrop;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnTouchListener;
|
||||||
|
|
||||||
|
public class DragAndDropManager {
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private members
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
protected static final String TAG = "DragAndDropManager";
|
||||||
|
private static DragAndDropManager instance = null;
|
||||||
|
private ArrayList<DropZone> dropZones;
|
||||||
|
private OnTouchListener originalTouchListener;
|
||||||
|
private DragSurface dragSurface;
|
||||||
|
private DraggableItem draggedItem;
|
||||||
|
private DropZone activeDropZone;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Protected Constructor
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
protected DragAndDropManager() {
|
||||||
|
// Exists only to defeat instantiation.
|
||||||
|
dropZones = new ArrayList<DropZone>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public Properties
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public static DragAndDropManager getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new DragAndDropManager();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Context getContext() {
|
||||||
|
if (dragSurface == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return dragSurface.getContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public Methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public void init(DragSurface surface) {
|
||||||
|
dragSurface = surface;
|
||||||
|
clearDropZones();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearDropZones() {
|
||||||
|
dropZones.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addDropZone(DropZone dropZone) {
|
||||||
|
dropZones.add(dropZone);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void startDragging(OnTouchListener originalListener, DraggableItem draggedItem) {
|
||||||
|
originalTouchListener = originalListener;
|
||||||
|
this.draggedItem = draggedItem;
|
||||||
|
draggedItem.getSource().setOnTouchListener(new OnTouchListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
int[] location = new int[2];
|
||||||
|
v.getLocationOnScreen(location);
|
||||||
|
event.offsetLocation(location[0], location[1]);
|
||||||
|
invalidateDropZones((int)event.getX(), (int)event.getY());
|
||||||
|
return dragSurface.onTouchEvent(event);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dragSurface.startDragging(draggedItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Protected Methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
protected void invalidateDropZones(int x, int y) {
|
||||||
|
if (activeDropZone != null) {
|
||||||
|
if (!activeDropZone.isOver(x, y)) {
|
||||||
|
activeDropZone.getListener().OnDragZoneLeft(activeDropZone, draggedItem);
|
||||||
|
activeDropZone = null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// we are still over the same drop zone, no need to check other drop zones
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (DropZone dropZone : dropZones) {
|
||||||
|
if (dropZone.isOver(x, y)) {
|
||||||
|
activeDropZone = dropZone;
|
||||||
|
dropZone.getListener().OnDragZoneEntered(activeDropZone, draggedItem);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void stoppedDragging() {
|
||||||
|
if (activeDropZone != null) {
|
||||||
|
activeDropZone.getListener().OnDropped(activeDropZone, draggedItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Registering the "old" listener to the view that initiated this drag session
|
||||||
|
draggedItem.getSource().setOnTouchListener(originalTouchListener);
|
||||||
|
draggedItem = null;
|
||||||
|
activeDropZone = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DragAndDrop;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.Gravity;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
|
public class DragSurface extends FrameLayout {
|
||||||
|
|
||||||
|
private float draggedViewHalfHeight;
|
||||||
|
private float draggedViewHalfWidth;
|
||||||
|
private int framesCount;
|
||||||
|
|
||||||
|
private Boolean isDragging;
|
||||||
|
private DraggableItem draggedItem;
|
||||||
|
|
||||||
|
public DragSurface(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
isDragging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Touch Events Listener
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onTouchEvent(MotionEvent event) {
|
||||||
|
if (isDragging && event.getAction() == MotionEvent.ACTION_UP) {
|
||||||
|
// Dragging ended
|
||||||
|
removeAllViews();
|
||||||
|
isDragging = false;
|
||||||
|
|
||||||
|
DragAndDropManager.getInstance().stoppedDragging();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDragging && event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||||
|
// Move the dragged view to it's new position
|
||||||
|
repositionView(event.getX(), event.getY());
|
||||||
|
|
||||||
|
// Mark this event as handled (so that other UI elements will not intercept it)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startDragging(DraggableItem draggableItem) {
|
||||||
|
this.draggedItem = draggableItem;
|
||||||
|
this.draggedItem.getDraggedView().setVisibility(INVISIBLE);
|
||||||
|
isDragging = true;
|
||||||
|
addView(this.draggedItem.getDraggedView());
|
||||||
|
//repositionView(x, y);
|
||||||
|
framesCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void repositionView(float x, float y) {
|
||||||
|
draggedViewHalfHeight = draggedItem.getDraggedView().getHeight() / 2f;
|
||||||
|
draggedViewHalfWidth = draggedItem.getDraggedView().getWidth() / 2f;
|
||||||
|
|
||||||
|
// If the dragged view was not drawn yet, skip this phase
|
||||||
|
if (draggedViewHalfHeight == 0 || draggedViewHalfWidth == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
framesCount++;
|
||||||
|
|
||||||
|
//Log.d(TAG, "Original = (x=" + x + ", y=" + y + ")");
|
||||||
|
//Log.d(TAG, "Size (W=" + draggedViewHalfWidth + ", H=" + draggedViewHalfHeight + ")");
|
||||||
|
|
||||||
|
x = x - draggedViewHalfWidth;
|
||||||
|
y = y - draggedViewHalfHeight;
|
||||||
|
|
||||||
|
x = Math.max(x, 0);
|
||||||
|
x = Math.min(x, getWidth() - draggedViewHalfWidth * 2);
|
||||||
|
|
||||||
|
y = Math.max(y, 0);
|
||||||
|
y = Math.min(y, getHeight() - draggedViewHalfHeight * 2);
|
||||||
|
|
||||||
|
//Log.d(TAG, "Moving view to (x=" + x + ", y=" + y + ")");
|
||||||
|
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
|
||||||
|
LayoutParams.WRAP_CONTENT, Gravity.TOP + Gravity.LEFT);
|
||||||
|
|
||||||
|
lp.setMargins((int)x, (int)y, 0, 0);
|
||||||
|
draggedItem.getDraggedView().setLayoutParams(lp);
|
||||||
|
|
||||||
|
// hte first couple of dragged frame's positions are not calculated correctly,
|
||||||
|
// so we have a threshold before making the dragged view visible again
|
||||||
|
if (framesCount < 2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
draggedItem.getDraggedView().setVisibility(VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DragAndDrop;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class DraggableItem {
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private members
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private View source;
|
||||||
|
private View draggedView;
|
||||||
|
private Object tag;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Constructor
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public DraggableItem(View source, View draggedItem) {
|
||||||
|
this.source = source;
|
||||||
|
this.draggedView = draggedItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public properties
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public Object getTag() {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTag(Object tag) {
|
||||||
|
this.tag = tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
public View getDraggedView() {
|
||||||
|
return draggedView;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DragAndDrop;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.TableLayout.LayoutParams;
|
||||||
|
|
||||||
|
public class DraggableViewsFactory {
|
||||||
|
|
||||||
|
public static View getLabel(String text) {
|
||||||
|
Context context = DragAndDropManager.getInstance().getContext();
|
||||||
|
TextView textView = new TextView(context);
|
||||||
|
textView.setText(text);
|
||||||
|
textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
|
||||||
|
//textView.setGravity(Gravity.TOP + Gravity.LEFT);
|
||||||
|
return textView;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DragAndDrop;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class DropZone {
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private members
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private View view;
|
||||||
|
private DropZoneEventsListener listener;
|
||||||
|
private int left, top, width, height;
|
||||||
|
private Boolean dimansionsCalculated;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Constructor
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public DropZone(View view, DropZoneEventsListener listener) {
|
||||||
|
this.view = view;
|
||||||
|
this.listener = listener;
|
||||||
|
dimansionsCalculated = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public properties
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public View getView() {
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public Boolean isOver(int x, int y) {
|
||||||
|
if (!dimansionsCalculated)
|
||||||
|
calculateDimensions();
|
||||||
|
|
||||||
|
Boolean isOver = (x >= left && x <= (left + width)) &&
|
||||||
|
(y >= top && y <= (top + height));
|
||||||
|
|
||||||
|
//Log.d("DragZone", "x=" +x + ", left=" + left + ", y=" + y + ", top=" + top + " width=" + width + ", height=" + height + ", isover=" + isOver);
|
||||||
|
|
||||||
|
return isOver;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Protected & Private methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
protected DropZoneEventsListener getListener() {
|
||||||
|
return listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calculateDimensions() {
|
||||||
|
int[] location = new int[2];
|
||||||
|
view.getLocationOnScreen(location);
|
||||||
|
left = location[0];
|
||||||
|
top = location[1];
|
||||||
|
width = view.getWidth();
|
||||||
|
height = view.getHeight();
|
||||||
|
dimansionsCalculated = true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.DragAndDrop;
|
||||||
|
|
||||||
|
public interface DropZoneEventsListener {
|
||||||
|
|
||||||
|
void OnDragZoneEntered(DropZone zone, DraggableItem item);
|
||||||
|
void OnDragZoneLeft(DropZone zone, DraggableItem item);
|
||||||
|
void OnDropped(DropZone zone, DraggableItem item);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,147 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.Joystick;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
|
public class DualJoystickView extends LinearLayout {
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private static final String TAG = DualJoystickView.class.getSimpleName();
|
||||||
|
|
||||||
|
private final boolean D = false;
|
||||||
|
private Paint dbgPaint1;
|
||||||
|
|
||||||
|
private JoystickView stickL;
|
||||||
|
private JoystickView stickR;
|
||||||
|
|
||||||
|
private View pad;
|
||||||
|
|
||||||
|
public DualJoystickView(Context context) {
|
||||||
|
super(context);
|
||||||
|
stickL = new JoystickView(context);
|
||||||
|
stickR = new JoystickView(context);
|
||||||
|
initDualJoystickView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DualJoystickView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
stickL = new JoystickView(context, attrs);
|
||||||
|
stickR = new JoystickView(context, attrs);
|
||||||
|
initDualJoystickView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initDualJoystickView() {
|
||||||
|
setOrientation(LinearLayout.HORIZONTAL);
|
||||||
|
|
||||||
|
if ( D ) {
|
||||||
|
dbgPaint1 = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
dbgPaint1.setColor(Color.CYAN);
|
||||||
|
dbgPaint1.setStrokeWidth(1);
|
||||||
|
dbgPaint1.setStyle(Paint.Style.STROKE);
|
||||||
|
}
|
||||||
|
|
||||||
|
pad = new View(getContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||||
|
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||||
|
removeView(stickL);
|
||||||
|
removeView(stickR);
|
||||||
|
|
||||||
|
float padW = getMeasuredWidth()-(getMeasuredHeight()*2);
|
||||||
|
int joyWidth = (int) ((getMeasuredWidth()-padW)/2);
|
||||||
|
LayoutParams joyLParams = new LayoutParams(joyWidth,getMeasuredHeight());
|
||||||
|
|
||||||
|
stickL.setLayoutParams(joyLParams);
|
||||||
|
stickR.setLayoutParams(joyLParams);
|
||||||
|
|
||||||
|
stickL.TAG = "L";
|
||||||
|
stickR.TAG = "R";
|
||||||
|
stickL.setPointerId(JoystickView.INVALID_POINTER_ID);
|
||||||
|
stickR.setPointerId(JoystickView.INVALID_POINTER_ID);
|
||||||
|
|
||||||
|
addView(stickL);
|
||||||
|
|
||||||
|
ViewGroup.LayoutParams padLParams = new ViewGroup.LayoutParams((int) padW,getMeasuredHeight());
|
||||||
|
removeView(pad);
|
||||||
|
pad.setLayoutParams(padLParams);
|
||||||
|
addView(pad);
|
||||||
|
|
||||||
|
addView(stickR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
||||||
|
super.onLayout(changed, l, t, r, b);
|
||||||
|
stickR.setTouchOffset(stickR.getLeft(), stickR.getTop());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutoReturnToCenter(boolean left, boolean right) {
|
||||||
|
stickL.setAutoReturnToCenter(left);
|
||||||
|
stickR.setAutoReturnToCenter(right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnJostickMovedListener(JoystickMovedListener left, JoystickMovedListener right) {
|
||||||
|
stickL.setOnJostickMovedListener(left);
|
||||||
|
stickR.setOnJostickMovedListener(right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnJostickClickedListener(JoystickClickedListener left, JoystickClickedListener right) {
|
||||||
|
stickL.setOnJostickClickedListener(left);
|
||||||
|
stickR.setOnJostickClickedListener(right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYAxisInverted(boolean leftYAxisInverted, boolean rightYAxisInverted) {
|
||||||
|
stickL.setYAxisInverted(leftYAxisInverted);
|
||||||
|
stickL.setYAxisInverted(rightYAxisInverted);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMovementConstraint(int movementConstraint) {
|
||||||
|
stickL.setMovementConstraint(movementConstraint);
|
||||||
|
stickR.setMovementConstraint(movementConstraint);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMovementRange(float movementRangeLeft, float movementRangeRight) {
|
||||||
|
stickL.setMovementRange(movementRangeLeft);
|
||||||
|
stickR.setMovementRange(movementRangeRight);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoveResolution(float leftMoveResolution, float rightMoveResolution) {
|
||||||
|
stickL.setMoveResolution(leftMoveResolution);
|
||||||
|
stickR.setMoveResolution(rightMoveResolution);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserCoordinateSystem(int leftCoordinateSystem, int rightCoordinateSystem) {
|
||||||
|
stickL.setUserCoordinateSystem(leftCoordinateSystem);
|
||||||
|
stickR.setUserCoordinateSystem(rightCoordinateSystem);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatchDraw(Canvas canvas) {
|
||||||
|
super.dispatchDraw(canvas);
|
||||||
|
if (D) {
|
||||||
|
canvas.drawRect(1, 1, getMeasuredWidth()-1, getMeasuredHeight()-1, dbgPaint1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||||
|
boolean l = stickL.dispatchTouchEvent(ev);
|
||||||
|
boolean r = stickR.dispatchTouchEvent(ev);
|
||||||
|
return l || r;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onTouchEvent(MotionEvent ev) {
|
||||||
|
boolean l = stickL.onTouchEvent(ev);
|
||||||
|
boolean r = stickR.onTouchEvent(ev);
|
||||||
|
return l || r;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.Joystick;
|
||||||
|
|
||||||
|
public interface JoystickClickedListener {
|
||||||
|
public void OnClicked();
|
||||||
|
public void OnReleased();
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.Joystick;
|
||||||
|
|
||||||
|
public interface JoystickMovedListener {
|
||||||
|
public void OnMoved(int pan, int tilt);
|
||||||
|
public void OnReleased();
|
||||||
|
public void OnReturnedToCenter();
|
||||||
|
}
|
@ -0,0 +1,520 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.Joystick;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.util.FloatMath;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.HapticFeedbackConstants;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class JoystickView extends View {
|
||||||
|
public static final int INVALID_POINTER_ID = -1;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private Members
|
||||||
|
// =========================================
|
||||||
|
private final boolean D = false;
|
||||||
|
String TAG = "JoystickView";
|
||||||
|
|
||||||
|
private Paint dbgPaint1;
|
||||||
|
private Paint dbgPaint2;
|
||||||
|
|
||||||
|
private Paint bgPaint;
|
||||||
|
private Paint handlePaint;
|
||||||
|
|
||||||
|
private int innerPadding;
|
||||||
|
private int bgRadius;
|
||||||
|
private int handleRadius;
|
||||||
|
private int movementRadius;
|
||||||
|
private int handleInnerBoundaries;
|
||||||
|
|
||||||
|
private JoystickMovedListener moveListener;
|
||||||
|
private JoystickClickedListener clickListener;
|
||||||
|
|
||||||
|
//# of pixels movement required between reporting to the listener
|
||||||
|
private float moveResolution;
|
||||||
|
|
||||||
|
private boolean yAxisInverted;
|
||||||
|
private boolean autoReturnToCenter;
|
||||||
|
|
||||||
|
//Max range of movement in user coordinate system
|
||||||
|
public final static int CONSTRAIN_BOX = 0;
|
||||||
|
public final static int CONSTRAIN_CIRCLE = 1;
|
||||||
|
private int movementConstraint;
|
||||||
|
private float movementRange;
|
||||||
|
|
||||||
|
public final static int COORDINATE_CARTESIAN = 0; //Regular cartesian coordinates
|
||||||
|
public final static int COORDINATE_DIFFERENTIAL = 1; //Uses polar rotation of 45 degrees to calc differential drive paramaters
|
||||||
|
private int userCoordinateSystem;
|
||||||
|
|
||||||
|
//Records touch pressure for click handling
|
||||||
|
private float touchPressure;
|
||||||
|
private boolean clicked;
|
||||||
|
private float clickThreshold;
|
||||||
|
|
||||||
|
//Last touch point in view coordinates
|
||||||
|
private int pointerId = INVALID_POINTER_ID;
|
||||||
|
private float touchX, touchY;
|
||||||
|
|
||||||
|
//Last reported position in view coordinates (allows different reporting sensitivities)
|
||||||
|
private float reportX, reportY;
|
||||||
|
|
||||||
|
//Handle center in view coordinates
|
||||||
|
private float handleX, handleY;
|
||||||
|
|
||||||
|
//Center of the view in view coordinates
|
||||||
|
private int cX, cY;
|
||||||
|
|
||||||
|
//Size of the view in view coordinates
|
||||||
|
private int dimX;
|
||||||
|
|
||||||
|
//Cartesian coordinates of last touch point - joystick center is (0,0)
|
||||||
|
private int cartX, cartY;
|
||||||
|
|
||||||
|
//Polar coordinates of the touch point from joystick center
|
||||||
|
private double radial;
|
||||||
|
private double angle;
|
||||||
|
|
||||||
|
//User coordinates of last touch point
|
||||||
|
private int userX, userY;
|
||||||
|
|
||||||
|
//Offset co-ordinates (used when touch events are received from parent's coordinate origin)
|
||||||
|
private int offsetX;
|
||||||
|
private int offsetY;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Constructors
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public JoystickView(Context context) {
|
||||||
|
super(context);
|
||||||
|
initJoystickView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoystickView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
initJoystickView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoystickView(Context context, AttributeSet attrs, int defStyle) {
|
||||||
|
super(context, attrs, defStyle);
|
||||||
|
initJoystickView();
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Initialization
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private void initJoystickView() {
|
||||||
|
setFocusable(true);
|
||||||
|
|
||||||
|
dbgPaint1 = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
dbgPaint1.setColor(Color.RED);
|
||||||
|
dbgPaint1.setStrokeWidth(1);
|
||||||
|
dbgPaint1.setStyle(Paint.Style.STROKE);
|
||||||
|
|
||||||
|
dbgPaint2 = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
dbgPaint2.setColor(Color.GREEN);
|
||||||
|
dbgPaint2.setStrokeWidth(1);
|
||||||
|
dbgPaint2.setStyle(Paint.Style.STROKE);
|
||||||
|
|
||||||
|
bgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
bgPaint.setColor(Color.GRAY);
|
||||||
|
bgPaint.setStrokeWidth(1);
|
||||||
|
bgPaint.setStyle(Paint.Style.FILL_AND_STROKE);
|
||||||
|
|
||||||
|
handlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||||
|
handlePaint.setColor(Color.DKGRAY);
|
||||||
|
handlePaint.setStrokeWidth(1);
|
||||||
|
handlePaint.setStyle(Paint.Style.FILL_AND_STROKE);
|
||||||
|
|
||||||
|
innerPadding = 10;
|
||||||
|
|
||||||
|
setMovementRange(10);
|
||||||
|
setMoveResolution(1.0f);
|
||||||
|
setClickThreshold(0.4f);
|
||||||
|
setYAxisInverted(true);
|
||||||
|
setUserCoordinateSystem(COORDINATE_CARTESIAN);
|
||||||
|
setAutoReturnToCenter(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutoReturnToCenter(boolean autoReturnToCenter) {
|
||||||
|
this.autoReturnToCenter = autoReturnToCenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAutoReturnToCenter() {
|
||||||
|
return autoReturnToCenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserCoordinateSystem(int userCoordinateSystem) {
|
||||||
|
if (userCoordinateSystem < COORDINATE_CARTESIAN || movementConstraint > COORDINATE_DIFFERENTIAL)
|
||||||
|
Log.e(TAG, "invalid value for userCoordinateSystem");
|
||||||
|
else
|
||||||
|
this.userCoordinateSystem = userCoordinateSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUserCoordinateSystem() {
|
||||||
|
return userCoordinateSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMovementConstraint(int movementConstraint) {
|
||||||
|
if (movementConstraint < CONSTRAIN_BOX || movementConstraint > CONSTRAIN_CIRCLE)
|
||||||
|
Log.e(TAG, "invalid value for movementConstraint");
|
||||||
|
else
|
||||||
|
this.movementConstraint = movementConstraint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMovementConstraint() {
|
||||||
|
return movementConstraint;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isYAxisInverted() {
|
||||||
|
return yAxisInverted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYAxisInverted(boolean yAxisInverted) {
|
||||||
|
this.yAxisInverted = yAxisInverted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the pressure sensitivity for registering a click
|
||||||
|
* @param clickThreshold threshold 0...1.0f inclusive. 0 will cause clicks to never be reported, 1.0 is a very hard click
|
||||||
|
*/
|
||||||
|
public void setClickThreshold(float clickThreshold) {
|
||||||
|
if (clickThreshold < 0 || clickThreshold > 1.0f)
|
||||||
|
Log.e(TAG, "clickThreshold must range from 0...1.0f inclusive");
|
||||||
|
else
|
||||||
|
this.clickThreshold = clickThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getClickThreshold() {
|
||||||
|
return clickThreshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMovementRange(float movementRange) {
|
||||||
|
this.movementRange = movementRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getMovementRange() {
|
||||||
|
return movementRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoveResolution(float moveResolution) {
|
||||||
|
this.moveResolution = moveResolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getMoveResolution() {
|
||||||
|
return moveResolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public Methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public void setOnJostickMovedListener(JoystickMovedListener listener) {
|
||||||
|
this.moveListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnJostickClickedListener(JoystickClickedListener listener) {
|
||||||
|
this.clickListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Drawing Functionality
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||||
|
// Here we make sure that we have a perfect circle
|
||||||
|
int measuredWidth = measure(widthMeasureSpec);
|
||||||
|
int measuredHeight = measure(heightMeasureSpec);
|
||||||
|
setMeasuredDimension(measuredWidth, measuredHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||||
|
super.onLayout(changed, left, top, right, bottom);
|
||||||
|
|
||||||
|
int d = Math.min(getMeasuredWidth(), getMeasuredHeight());
|
||||||
|
|
||||||
|
dimX = d;
|
||||||
|
cX = d / 2;
|
||||||
|
cY = d / 2;
|
||||||
|
|
||||||
|
bgRadius = dimX/2 - innerPadding;
|
||||||
|
handleRadius = (int)(d * 0.25);
|
||||||
|
handleInnerBoundaries = handleRadius;
|
||||||
|
movementRadius = Math.min(cX, cY) - handleInnerBoundaries;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int measure(int measureSpec) {
|
||||||
|
int result = 0;
|
||||||
|
// Decode the measurement specifications.
|
||||||
|
int specMode = MeasureSpec.getMode(measureSpec);
|
||||||
|
int specSize = MeasureSpec.getSize(measureSpec);
|
||||||
|
if (specMode == MeasureSpec.UNSPECIFIED) {
|
||||||
|
// Return a default size of 200 if no bounds are specified.
|
||||||
|
result = 200;
|
||||||
|
} else {
|
||||||
|
// As you want to fill the available space
|
||||||
|
// always return the full available bounds.
|
||||||
|
result = specSize;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDraw(Canvas canvas) {
|
||||||
|
canvas.save();
|
||||||
|
// Draw the background
|
||||||
|
canvas.drawCircle(cX, cY, bgRadius, bgPaint);
|
||||||
|
|
||||||
|
// Draw the handle
|
||||||
|
handleX = touchX + cX;
|
||||||
|
handleY = touchY + cY;
|
||||||
|
canvas.drawCircle(handleX, handleY, handleRadius, handlePaint);
|
||||||
|
|
||||||
|
if (D) {
|
||||||
|
canvas.drawRect(1, 1, getMeasuredWidth()-1, getMeasuredHeight()-1, dbgPaint1);
|
||||||
|
|
||||||
|
canvas.drawCircle(handleX, handleY, 3, dbgPaint1);
|
||||||
|
|
||||||
|
if ( movementConstraint == CONSTRAIN_CIRCLE ) {
|
||||||
|
canvas.drawCircle(cX, cY, this.movementRadius, dbgPaint1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
canvas.drawRect(cX-movementRadius, cY-movementRadius, cX+movementRadius, cY+movementRadius, dbgPaint1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Origin to touch point
|
||||||
|
canvas.drawLine(cX, cY, handleX, handleY, dbgPaint2);
|
||||||
|
|
||||||
|
int baseY = (int) (touchY < 0 ? cY + handleRadius : cY - handleRadius);
|
||||||
|
canvas.drawText(String.format("%s (%.0f,%.0f)", TAG, touchX, touchY), handleX-20, baseY-7, dbgPaint2);
|
||||||
|
canvas.drawText("("+ String.format("%.0f, %.1f", radial, angle * 57.2957795) + (char) 0x00B0 + ")", handleX-20, baseY+15, dbgPaint2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log.d(TAG, String.format("touch(%f,%f)", touchX, touchY));
|
||||||
|
// Log.d(TAG, String.format("onDraw(%.1f,%.1f)\n\n", handleX, handleY));
|
||||||
|
canvas.restore();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constrain touch within a box
|
||||||
|
private void constrainBox() {
|
||||||
|
touchX = Math.max(Math.min(touchX, movementRadius), -movementRadius);
|
||||||
|
touchY = Math.max(Math.min(touchY, movementRadius), -movementRadius);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constrain touch within a circle
|
||||||
|
private void constrainCircle() {
|
||||||
|
float diffX = touchX;
|
||||||
|
float diffY = touchY;
|
||||||
|
double radial = FloatMath.sqrt((diffX*diffX) + (diffY*diffY));
|
||||||
|
if ( radial > movementRadius ) {
|
||||||
|
touchX = (int)((diffX / radial) * movementRadius);
|
||||||
|
touchY = (int)((diffY / radial) * movementRadius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPointerId(int id) {
|
||||||
|
this.pointerId = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPointerId() {
|
||||||
|
return pointerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onTouchEvent(MotionEvent ev) {
|
||||||
|
final int action = ev.getAction();
|
||||||
|
switch (action & MotionEvent.ACTION_MASK) {
|
||||||
|
case MotionEvent.ACTION_MOVE: {
|
||||||
|
return processMoveEvent(ev);
|
||||||
|
}
|
||||||
|
case MotionEvent.ACTION_CANCEL:
|
||||||
|
case MotionEvent.ACTION_UP: {
|
||||||
|
if ( pointerId != INVALID_POINTER_ID ) {
|
||||||
|
// Log.d(TAG, "ACTION_UP");
|
||||||
|
returnHandleToCenter();
|
||||||
|
setPointerId(INVALID_POINTER_ID);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MotionEvent.ACTION_POINTER_UP: {
|
||||||
|
if ( pointerId != INVALID_POINTER_ID ) {
|
||||||
|
final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
|
||||||
|
final int pointerId = ev.getPointerId(pointerIndex);
|
||||||
|
if ( pointerId == this.pointerId ) {
|
||||||
|
// Log.d(TAG, "ACTION_POINTER_UP: " + pointerId);
|
||||||
|
returnHandleToCenter();
|
||||||
|
setPointerId(INVALID_POINTER_ID);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MotionEvent.ACTION_DOWN: {
|
||||||
|
if ( pointerId == INVALID_POINTER_ID ) {
|
||||||
|
int x = (int) ev.getX();
|
||||||
|
if ( x >= offsetX && x < offsetX + dimX ) {
|
||||||
|
setPointerId(ev.getPointerId(0));
|
||||||
|
// Log.d(TAG, "ACTION_DOWN: " + getPointerId());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case MotionEvent.ACTION_POINTER_DOWN: {
|
||||||
|
if ( pointerId == INVALID_POINTER_ID ) {
|
||||||
|
final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
|
||||||
|
final int pointerId = ev.getPointerId(pointerIndex);
|
||||||
|
int x = (int) ev.getX(pointerId);
|
||||||
|
if ( x >= offsetX && x < offsetX + dimX ) {
|
||||||
|
// Log.d(TAG, "ACTION_POINTER_DOWN: " + pointerId);
|
||||||
|
setPointerId(pointerId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean processMoveEvent(MotionEvent ev) {
|
||||||
|
if ( pointerId != INVALID_POINTER_ID ) {
|
||||||
|
final int pointerIndex = ev.findPointerIndex(pointerId);
|
||||||
|
|
||||||
|
// Translate touch position to center of view
|
||||||
|
float x = ev.getX(pointerIndex);
|
||||||
|
touchX = x - cX - offsetX;
|
||||||
|
float y = ev.getY(pointerIndex);
|
||||||
|
touchY = y - cY - offsetY;
|
||||||
|
|
||||||
|
// Log.d(TAG, String.format("ACTION_MOVE: (%03.0f, %03.0f) => (%03.0f, %03.0f)", x, y, touchX, touchY));
|
||||||
|
|
||||||
|
reportOnMoved();
|
||||||
|
invalidate();
|
||||||
|
|
||||||
|
touchPressure = ev.getPressure(pointerIndex);
|
||||||
|
reportOnPressure();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reportOnMoved() {
|
||||||
|
if ( movementConstraint == CONSTRAIN_CIRCLE )
|
||||||
|
constrainCircle();
|
||||||
|
else
|
||||||
|
constrainBox();
|
||||||
|
|
||||||
|
calcUserCoordinates();
|
||||||
|
|
||||||
|
if (moveListener != null) {
|
||||||
|
boolean rx = Math.abs(touchX - reportX) >= moveResolution;
|
||||||
|
boolean ry = Math.abs(touchY - reportY) >= moveResolution;
|
||||||
|
if (rx || ry) {
|
||||||
|
this.reportX = touchX;
|
||||||
|
this.reportY = touchY;
|
||||||
|
|
||||||
|
// Log.d(TAG, String.format("moveListener.OnMoved(%d,%d)", (int)userX, (int)userY));
|
||||||
|
moveListener.OnMoved(userX, userY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calcUserCoordinates() {
|
||||||
|
//First convert to cartesian coordinates
|
||||||
|
cartX = (int)(touchX / movementRadius * movementRange);
|
||||||
|
cartY = (int)(touchY / movementRadius * movementRange);
|
||||||
|
|
||||||
|
radial = Math.sqrt((cartX*cartX) + (cartY*cartY));
|
||||||
|
angle = Math.atan2(cartY, cartX);
|
||||||
|
|
||||||
|
//Invert Y axis if requested
|
||||||
|
if ( !yAxisInverted )
|
||||||
|
cartY *= -1;
|
||||||
|
|
||||||
|
if ( userCoordinateSystem == COORDINATE_CARTESIAN ) {
|
||||||
|
userX = cartX;
|
||||||
|
userY = cartY;
|
||||||
|
}
|
||||||
|
else if ( userCoordinateSystem == COORDINATE_DIFFERENTIAL ) {
|
||||||
|
userX = cartY + cartX / 4;
|
||||||
|
userY = cartY - cartX / 4;
|
||||||
|
|
||||||
|
if ( userX < -movementRange )
|
||||||
|
userX = (int)-movementRange;
|
||||||
|
if ( userX > movementRange )
|
||||||
|
userX = (int)movementRange;
|
||||||
|
|
||||||
|
if ( userY < -movementRange )
|
||||||
|
userY = (int)-movementRange;
|
||||||
|
if ( userY > movementRange )
|
||||||
|
userY = (int)movementRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Simple pressure click
|
||||||
|
private void reportOnPressure() {
|
||||||
|
// Log.d(TAG, String.format("touchPressure=%.2f", this.touchPressure));
|
||||||
|
if ( clickListener != null ) {
|
||||||
|
if ( clicked && touchPressure < clickThreshold ) {
|
||||||
|
clickListener.OnReleased();
|
||||||
|
this.clicked = false;
|
||||||
|
// Log.d(TAG, "reset click");
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
else if ( !clicked && touchPressure >= clickThreshold ) {
|
||||||
|
clicked = true;
|
||||||
|
clickListener.OnClicked();
|
||||||
|
// Log.d(TAG, "click");
|
||||||
|
invalidate();
|
||||||
|
performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void returnHandleToCenter() {
|
||||||
|
if ( autoReturnToCenter ) {
|
||||||
|
final int numberOfFrames = 5;
|
||||||
|
final double intervalsX = (0 - touchX) / numberOfFrames;
|
||||||
|
final double intervalsY = (0 - touchY) / numberOfFrames;
|
||||||
|
|
||||||
|
for (int i = 0; i < numberOfFrames; i++) {
|
||||||
|
final int j = i;
|
||||||
|
postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
touchX += intervalsX;
|
||||||
|
touchY += intervalsY;
|
||||||
|
|
||||||
|
// No longer reportOnMoved() in this method because we only
|
||||||
|
// want to receive inputs from the user
|
||||||
|
invalidate();
|
||||||
|
|
||||||
|
if (moveListener != null && j == numberOfFrames - 1) {
|
||||||
|
moveListener.OnReturnedToCenter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, i * 40);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (moveListener != null) {
|
||||||
|
moveListener.OnReleased();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTouchOffset(int x, int y) {
|
||||||
|
offsetX = x;
|
||||||
|
offsetY = y;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,169 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.ThresholdEditText;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.text.Editable;
|
||||||
|
import android.text.TextWatcher;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
|
public class ThresholdEditText extends EditText {
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private members
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private int threshold;
|
||||||
|
private ThresholdTextChanged thresholdTextChanged;
|
||||||
|
private Handler handler;
|
||||||
|
private Runnable invoker;
|
||||||
|
private boolean thresholdDisabledOnEmptyInput;
|
||||||
|
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Constructors
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public ThresholdEditText(Context context) {
|
||||||
|
super(context);
|
||||||
|
initAttributes(null);
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ThresholdEditText(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
initAttributes(attrs);
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public properties
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current threshold value
|
||||||
|
*/
|
||||||
|
public int getThreshold() {
|
||||||
|
return threshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the threshold value (in milliseconds)
|
||||||
|
*
|
||||||
|
* @param threshold
|
||||||
|
* Threshold value
|
||||||
|
*/
|
||||||
|
public void setThreshold(int threshold) {
|
||||||
|
this.threshold = threshold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return True = the callback will fire immediately when the content of the
|
||||||
|
* EditText is emptied False = The threshold will be used even on
|
||||||
|
* empty input
|
||||||
|
*/
|
||||||
|
public boolean getThresholdDisabledOnEmptyInput() {
|
||||||
|
return thresholdDisabledOnEmptyInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param thresholdDisabledOnEmptyInput
|
||||||
|
* Set to true if you want the callback to fire immediately when
|
||||||
|
* the content of the EditText is emptied
|
||||||
|
*/
|
||||||
|
public void setThresholdDisabledOnEmptyInput(
|
||||||
|
boolean thresholdDisabledOnEmptyInput) {
|
||||||
|
this.thresholdDisabledOnEmptyInput = thresholdDisabledOnEmptyInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the callback to the OnThresholdTextChanged event
|
||||||
|
*
|
||||||
|
* @param listener
|
||||||
|
*/
|
||||||
|
public void setOnThresholdTextChanged(ThresholdTextChanged listener) {
|
||||||
|
this.thresholdTextChanged = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private / Protected methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load properties values from xml layout
|
||||||
|
*/
|
||||||
|
private void initAttributes(AttributeSet attrs) {
|
||||||
|
if (attrs != null) {
|
||||||
|
String namespace = "http://com.MobileAnarchy.Android.Widgets";
|
||||||
|
|
||||||
|
// Load values to local members
|
||||||
|
this.threshold = attrs.getAttributeIntValue(namespace, "threshold",
|
||||||
|
500);
|
||||||
|
this.thresholdDisabledOnEmptyInput = attrs.getAttributeBooleanValue(
|
||||||
|
namespace, "disableThresholdOnEmptyInput", true);
|
||||||
|
} else {
|
||||||
|
// Default threshold value is 0.5 seconds
|
||||||
|
threshold = 500;
|
||||||
|
|
||||||
|
// Default behaviour on emptied text - no threshold
|
||||||
|
thresholdDisabledOnEmptyInput = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the private members with default values
|
||||||
|
*/
|
||||||
|
private void init() {
|
||||||
|
|
||||||
|
handler = new Handler();
|
||||||
|
|
||||||
|
invoker = new Runnable() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
invokeCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
this.addTextChangedListener(new TextWatcher() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count,
|
||||||
|
int after) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before,
|
||||||
|
int count) {
|
||||||
|
|
||||||
|
// Remove any existing pending callbacks
|
||||||
|
handler.removeCallbacks(invoker);
|
||||||
|
|
||||||
|
if (s.length() == 0 && thresholdDisabledOnEmptyInput) {
|
||||||
|
// The text is empty, so invoke the callback immediately
|
||||||
|
invoker.run();
|
||||||
|
} else {
|
||||||
|
// Post a new delayed callback
|
||||||
|
handler.postDelayed(invoker, threshold);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoking the callback on the listener provided (if provided)
|
||||||
|
*/
|
||||||
|
private void invokeCallback() {
|
||||||
|
if (thresholdTextChanged != null) {
|
||||||
|
thresholdTextChanged.onThersholdTextChanged(this.getText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.ThresholdEditText;
|
||||||
|
|
||||||
|
import android.text.Editable;
|
||||||
|
|
||||||
|
public interface ThresholdTextChanged {
|
||||||
|
void onThersholdTextChanged(Editable text);
|
||||||
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
package com.MobileAnarchy.Android.Widgets.TilesLayout;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
|
public class SingleTileLayout extends FrameLayout {
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Private members
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
private TilePosition position;
|
||||||
|
private long timestamp;
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Constructors
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public SingleTileLayout(Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SingleTileLayout(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Public Methods
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
public TilePosition getPosition() {
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPosition(TilePosition position) {
|
||||||
|
this.position = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getTimestamp() {
|
||||||
|
return this.timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
// =========================================
|
||||||
|
// Overrides
|
||||||
|
// =========================================
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addView(View child) {
|
||||||
|
super.addView(child);
|
||||||
|
timestamp = java.lang.System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeAllViews() {
|
||||||
|
super.removeAllViews();
|
||||||
|
timestamp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeView(View view) {
|
||||||
|
super.removeView(view);
|
||||||
|
timestamp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|