Merge commit 'b19a0947fb72dc069540561ffeb6983ee318fcb9' into revo
9
.gitignore
vendored
@ -64,13 +64,16 @@ ground/uavobjgenerator/uavobjgenerator.pro.user
|
||||
ground/uavobjects/uavobjects.pro.user
|
||||
ground/ground.pro.user
|
||||
|
||||
# Ignore GNU global tags files
|
||||
GPATH
|
||||
GRTAGS
|
||||
GSYMS
|
||||
GTAGS
|
||||
/.cproject
|
||||
/.project
|
||||
|
||||
plane
|
||||
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;
|
||||
}
|
||||
|
||||
}
|