Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Examples for the new architecture

  • Loading branch information...
commit fb5994ce821e24a5a6a1a3f70b14fadca7060884 1 parent ca01242
Pavel Pevnitskiy authored November 22, 2011

Showing 39 changed files with 1,598 additions and 1,269 deletions. Show diff stats Hide diff stats

  1. 1  .settings/com.powerflasher.fdt.classpath
  2. 5  README.textile
  3. 113  build.xml
  4. 218  build/air/descriptor-template-app.xml
  5. 11  build/android/descriptor-template-apk.xml
  6. BIN  build/assets/images/placekitten-400-600.jpg
  7. BIN  build/assets/images/placekitten-480-640.jpg
  8. BIN  libs/MinimalComps_0_9_9.swc
  9. BIN  libs/greensock.swc
  10. BIN  src/assets/images/CyanSquare.png
  11. BIN  src/assets/images/MagentaSquare.png
  12. BIN  src/assets/images/YellowSquare.png
  13. BIN  src/assets/images/monsterdebugger-icon.png
  14. BIN  src/assets/images/settings-icon.png
  15. 112  src/org/gestouch/examples/DoubleTapGestureExample.as
  16. 44  src/org/gestouch/examples/GestouchExamples.mxml
  17. 136  src/org/gestouch/examples/LongPressGestureExample.as
  18. 91  src/org/gestouch/examples/SwipeGestureExample.as
  19. 83  src/org/gestouch/examples/containers/MonsterDebuggerConfigWindow.mxml
  20. 26  src/org/gestouch/examples/containers/SettingsPanel.as
  21. 39  src/org/gestouch/examples/model/ExamplesModel.as
  22. 168  src/org/gestouch/examples/views/ConflictGesturesView.mxml
  23. 94  src/org/gestouch/examples/views/DependentGesturesView.mxml
  24. 152  src/org/gestouch/examples/views/DoubleTapGestureView.mxml
  25. 78  src/org/gestouch/examples/views/DragGestureView.mxml
  26. 105  src/org/gestouch/examples/views/ExampleViewBase.as
  27. 189  src/org/gestouch/examples/views/FreeTransformView.mxml
  28. 42  src/org/gestouch/examples/views/GestouchExamplesHomeView.mxml
  29. 104  src/org/gestouch/examples/views/HoldAndDragView.mxml
  30. 82  src/org/gestouch/examples/views/LongPressGestureAdvancedView.mxml
  31. 180  src/org/gestouch/examples/views/LongPressGestureView.mxml
  32. 115  src/org/gestouch/examples/views/PanGestureView.mxml
  33. 84  src/org/gestouch/examples/views/RotateGestureView.mxml
  34. 77  src/org/gestouch/examples/views/SingleTouchPowerView.mxml
  35. 199  src/org/gestouch/examples/views/SwipeGestureView.mxml
  36. 89  src/org/gestouch/examples/views/TapGestureUsageView.mxml
  37. 145  src/org/gestouch/examples/views/TapGestureView.mxml
  38. 83  src/org/gestouch/examples/views/ZoomGestureView.mxml
  39. 2  version.properties
1  .settings/com.powerflasher.fdt.classpath
@@ -16,7 +16,6 @@
16 16
     <AS3Classpath generateProblems="false" sdkBased="true" type="lib" useAsSharedCode="false">frameworks/themes/Mobile/mobile.swc</AS3Classpath>
17 17
     <AS3Classpath generateProblems="false" sdkBased="true" type="lib" useAsSharedCode="false">frameworks/libs/air/servicemonitor.swc</AS3Classpath>
18 18
     <AS3Classpath generateProblems="false" sdkBased="false" type="lib" useAsSharedCode="false">libs/greensock.swc</AS3Classpath>
19  
-    <AS3Classpath generateProblems="false" sdkBased="false" type="lib" useAsSharedCode="false">libs/MinimalComps_0_9_9.swc</AS3Classpath>
20 19
     <AS3Classpath generateProblems="false" sdkBased="false" type="lib" useAsSharedCode="false">libs/MonsterDebuggerMobile.swc</AS3Classpath>
21 20
     <AS3Classpath generateProblems="false" inclusion="complete" sdkBased="false" type="project" useAsSharedCode="false">Gestouch</AS3Classpath>
22 21
     <AS3Classpath generateProblems="false" sdkBased="true" type="lib" useAsSharedCode="false">frameworks/libs/mx/mx.swc</AS3Classpath>
5  README.textile
Source Rendered
@@ -15,10 +15,9 @@ Hint for compiling for iOS: do it through console interface (Terminal on MacOS)
15 15
 ant package.ipa -Duser.ide=none
16 16
 
17 17
 
18  
-h3. Code
  18
+h3. Version & Dependency
19 19
 
20  
-* "Gestouch Framework":http://github.com/fljot/Gestouch
21  
-* "Gestouch Examples":http://github.com/fljot/GestouchExamples
  20
+These examples work with Gestouch library of version > 0.2 (where the new architecture was introduced).
22 21
 
23 22
 
24 23
 h2. License
113  build.xml
@@ -14,35 +14,23 @@
14 14
 	
15 15
 	<target name="usage">
16 16
 		<echo>Usage:
17  
-- Use debug.GestouchExamples task to compile and run example application.
18  
-- Use package.ipa task to compile for iOS device. Default example name to compile is GestouchExamples (just hit enter when input required).
19  
-- Use package.apk task to compile for Android device. Default example name to compile is GestouchExamples (just hit enter when input required).
  17
+- Use debug.air task to compile and run example application on desktop.
  18
+- Use debug.apk task to compile &amp; run (debug) on Android device.
  19
+- Use package.ipa task to compile for iOS device.
20 20
 		</echo>
21 21
 	</target>
22 22
 	
23  
-	<target name="debug.LongPressGestureExample" description="">
24  
-		<compile.example exampleName="LongPressGestureExample" openSWF="true" />
25  
-	</target>
26  
-	
27  
-	<target name="debug.DoubleTapGestureExample" description="">
28  
-		<compile.example exampleName="DoubleTapGestureExample" openSWF="true" />
29  
-	</target>
30  
-	
31  
-	<target name="debug.SwipeGestureExample" description="">
32  
-		<compile.example exampleName="SwipeGestureExample" openSWF="true" />
33  
-	</target>
34  
-	
35  
-	<target name="debug.GestouchExamples" description="">
  23
+	<target name="debug.air" description="">
36 24
 		<var name="example.name" value="GestouchExamples"/>
37 25
 		<compile.debug input="${project.examplesPackage.dir}/${example.name}.mxml"
38 26
 			output="${example.name}.swf"
39 27
 			compilerArguments=""
40 28
 		/>
41  
-		<copy file="${build.dir}/iOS/descriptor-template-ipa.xml" tofile="${bindebug.dir}/${example.name}-ipa.xml" overwrite="true">
  29
+		<copy file="${build.dir}/air/descriptor-template-app.xml" tofile="${bindebug.dir}/${example.name}-app.xml" overwrite="true">
42 30
 			<filterset>
43 31
 				<filter token="ID" value="com.velvet.PankTest" />
44 32
 				<filter token="FILENAME" value="${example.name}" />
45  
-				<filter token="VERSION" value="0.1" />
  33
+				<filter token="VERSION" value="0.2" />
46 34
 				<filter token="CONTENT" value="${example.name}.swf" />
47 35
             </filterset>
48 36
 		</copy>
@@ -51,29 +39,19 @@
51 39
 		<antcall target="ide.startProfiler" />
52 40
 		-->
53 41
 		<exec executable="${flexSDK.adl}">
54  
-			<arg value="${bindebug.dir}/${example.name}-ipa.xml" />
  42
+			<arg value="${bindebug.dir}/${example.name}-app.xml" />
55 43
 			<arg value="${bindebug.dir}" />
56 44
 		</exec>
57 45
 	</target>
58 46
 	
59 47
 	
60 48
 	<target name="package.ipa" description="" depends="ide.resetCompiler">
61  
-		<input message="Example name to compile (eg: SwipeGestureExample):"
62  
-			addproperty="example.name"
63  
-			defaultvalue="GestouchExamples"/>
  49
+		<var name="example.name" value="GestouchExamples" />		
64 50
 		
65  
-		<if>
66  
-			<equals arg1="${example.name}" arg2="GestouchExamples"/>
67  
-			<then>
68  
-				<compile.debug input="${project.examplesPackage.dir}/${example.name}.mxml"
69  
-					output="${example.name}.swf"
70  
-					compilerArguments=""
71  
-				/>
72  
-			</then>
73  
-			<else>
74  
-				<compile.example exampleName="${example.name}"/>
75  
-			</else>
76  
-		</if>
  51
+		<compile.debug input="${project.examplesPackage.dir}/${example.name}.mxml"
  52
+			output="${example.name}.swf"
  53
+			compilerArguments=""
  54
+		/>
77 55
 		
78 56
 		<if>
79 57
 			<equals arg1="${project.ios.certificate.password}" arg2=""/>
@@ -116,23 +94,13 @@
116 94
 	</target>
117 95
 	
118 96
 	
119  
-	<target name="package.apk" description="" depends="ide.resetCompiler">
120  
-		<input message="Example name to compile (eg: SwipeGestureExample):"
121  
-			addproperty="example.name"
122  
-			defaultvalue="GestouchExamples"/>
  97
+	<target name="debug.apk" description="" depends="ide.resetCompiler">
  98
+		<var name="example.name" value="GestouchExamples" />
123 99
 		
124  
-		<if>
125  
-			<equals arg1="${example.name}" arg2="GestouchExamples"/>
126  
-			<then>
127  
-				<compile.debug input="${project.examplesPackage.dir}/${example.name}.mxml"
128  
-					output="${example.name}.swf"
129  
-					compilerArguments=""
130  
-				/>
131  
-			</then>
132  
-			<else>
133  
-				<compile.example exampleName="${example.name}"/>
134  
-			</else>
135  
-		</if>
  100
+		<compile.debug input="${project.examplesPackage.dir}/${example.name}.mxml"
  101
+			output="${example.name}.swf"
  102
+			compilerArguments=""
  103
+		/>
136 104
 		
137 105
 		<if>
138 106
 			<equals arg1="${project.android.certificate.password}" arg2=""/>
@@ -148,19 +116,23 @@
148 116
 		<var name="var.project.app.descriptor" value="${bindebug.dir}/${example.name}-apk.xml"/>
149 117
 		<copy file="${project.android.descriptor.template}" tofile="${var.project.app.descriptor}" overwrite="true">
150 118
 			<filterset>
151  
-				<filter token="ID" value="${project.air.appID}" />
  119
+				<filter token="ID" value="${project.android.appID}" />
152 120
 				<filter token="FILENAME" value="${example.name}" />
153 121
 				<filter token="VERSION" value="${project.version}" />
154 122
 				<filter token="CONTENT" value="${example.name}.swf" />
155 123
             </filterset>
156 124
 		</copy>
157 125
 		
  126
+		<var name="var.debug.port" value="7935" />
  127
+		
158 128
 		<java jar="${flexSDK.adt}" fork="true" failonerror="true">
159 129
 			<arg value="-package" />
160 130
 			
161 131
 			<arg value="-target" />
162 132
 			<arg value="apk-debug" />
163  
-						
  133
+			
  134
+			<arg line="-listen ${var.debug.port}" />
  135
+			
164 136
 			<arg value="-storetype" />
165 137
 			<arg value="pkcs12" />
166 138
 			<arg value="-keystore" />
@@ -173,7 +145,8 @@
173 145
 			<arg value="-C" />
174 146
 			<arg value="${bindebug.dir}" />
175 147
 			<arg value="${example.name}.swf" />
176  
-		</java>
  148
+		</java>		
  149
+		
177 150
 		
178 151
 		<!-- Installing the published application on to the emulator -e for emulator, -d for device -->
179 152
 		<exec executable="${android.adb}">
@@ -182,13 +155,43 @@
182 155
 			<arg line="-r"/>
183 156
 			<arg line="${bindebug.dir}/${example.name}.apk"/>
184 157
 		</exec>
  158
+		
  159
+		<exec executable="${android.adb}" failonerror="true">
  160
+			<arg line="forward tcp:${var.debug.port} tcp:${var.debug.port}"/>
  161
+		</exec>
  162
+		
  163
+		<antcall target="ide.startDebugger">
  164
+			<param name="asclient" value="true"/>
  165
+			<param name="port" value="${var.debug.port}"/>
  166
+		</antcall>
  167
+		
  168
+		<java jar="${flexSDK.adt}" fork="true" failonerror="true">
  169
+			<arg value="-launchApp" />
  170
+			
  171
+			<arg value="-platform" />
  172
+			<arg value="android" />
  173
+			
  174
+			<arg value="-platformsdk" />
  175
+			<arg value="${androidSDK.dir}" />
  176
+			
  177
+			<arg value="-appid" />
  178
+			<arg value="${project.android.appID}"/>
  179
+		</java>
185 180
 	</target>
186 181
 	
187 182
 	<target name="ide.startDebugger" description="Starts IDE Debugger">
188 183
 		<if>
189 184
 			<equals arg1="${user.ide}" arg2="FDT4"/>
190 185
 			<then>
191  
-				<fdt.startDebugger projectname="${project.name}" />
  186
+				<if>
  187
+					<isset property="port"/>
  188
+					<then>
  189
+						<fdt.startDebugger projectname="${project.name}" asclient="${asclient}" port="${port}" />
  190
+					</then>
  191
+					<else>
  192
+						<fdt.startDebugger projectname="${project.name}"/>
  193
+					</else>
  194
+				</if>
192 195
 			</then>
193 196
 			<else>
194 197
 				<echo>ide.startDebugger task is available only for FDT4. TODO: tasks for other IDEs</echo>
@@ -212,7 +215,7 @@
212 215
 		<if>
213 216
 			<equals arg1="${user.ide}" arg2="FDT4"/>
214 217
 			<then>
215  
-				<fdt.launch.resetFlexCompiler />
  218
+				<!--<fdt.launch.resetFlexCompiler />-->
216 219
 			</then>
217 220
 			<else>
218 221
 				<echo>ide.resetCompiler task is available only for FDT4. TODO: tasks for other IDEs</echo>
218  build/air/descriptor-template-app.xml
... ...
@@ -0,0 +1,218 @@
  1
+<?xml version="1.0" encoding="utf-8" ?>
  2
+<application xmlns="http://ns.adobe.com/air/application/3.0">
  3
+
  4
+<!-- Adobe AIR Application Descriptor File Template.
  5
+
  6
+	Specifies parameters for identifying, installing, and launching AIR applications.
  7
+
  8
+	xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/2.6
  9
+			The last segment of the namespace specifies the version 
  10
+			of the AIR runtime required for this application to run.
  11
+			
  12
+	minimumPatchLevel - The minimum patch level of the AIR runtime required to run 
  13
+			the application. Optional.
  14
+-->
  15
+
  16
+	<!-- A universally unique application identifier. Must be unique across all AIR applications.
  17
+	Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->
  18
+	<id>@ID@</id>
  19
+
  20
+	<!-- Used as the filename for the application. Required. -->
  21
+	<filename>@FILENAME@</filename>
  22
+
  23
+	<!-- The name that is displayed in the AIR application installer. 
  24
+	May have multiple values for each language. See samples or xsd schema file. Optional. -->
  25
+	<name>@FILENAME@</name>
  26
+	
  27
+	<!-- A string value of the format <0-999>.<0-999>.<0-999> that represents application version which can be used to check for application upgrade. 
  28
+	Values can also be 1-part or 2-part. It is not necessary to have a 3-part value.
  29
+	An updated version of application must have a versionNumber value higher than the previous version. Required for namespace >= 2.5 . -->
  30
+	<versionNumber>@VERSION@</versionNumber>
  31
+		         
  32
+	<!-- A string value (such as "v1", "2.5", or "Alpha 1") that represents the version of the application, as it should be shown to users. Optional. -->
  33
+	<!-- <versionLabel></versionLabel> -->
  34
+
  35
+	<!-- Description, displayed in the AIR application installer.
  36
+	May have multiple values for each language. See samples or xsd schema file. Optional. -->
  37
+	<!-- <description></description> -->
  38
+
  39
+	<!-- Copyright information. Optional -->
  40
+	<!-- <copyright></copyright> -->
  41
+
  42
+	<!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
  43
+	<!-- <publisherID></publisherID> -->
  44
+
  45
+	<!-- Settings for the application's initial window. Required. -->
  46
+	<initialWindow>
  47
+		<!-- The main SWF or HTML file of the application. Required. -->
  48
+		<!-- Note: In Flash Builder, the SWF reference is set automatically. -->
  49
+		<content>@CONTENT@</content>
  50
+		
  51
+		<!-- The title of the main window. Optional. -->
  52
+		<!-- <title></title> -->
  53
+
  54
+		<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
  55
+		<!-- <systemChrome></systemChrome> -->
  56
+
  57
+		<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
  58
+		<!-- <transparent></transparent> -->
  59
+
  60
+		<!-- Whether the window is initially visible. Optional. Default false. -->
  61
+		<visible>true</visible>
  62
+
  63
+		<!-- Whether the user can minimize the window. Optional. Default true. -->
  64
+		<!-- <minimizable></minimizable> -->
  65
+
  66
+		<!-- Whether the user can maximize the window. Optional. Default true. -->
  67
+		<!-- <maximizable></maximizable> -->
  68
+
  69
+		<!-- Whether the user can resize the window. Optional. Default true. -->
  70
+		<!-- <resizable></resizable> -->
  71
+
  72
+		<!-- The window's initial width in pixels. Optional. -->
  73
+		<!-- <width></width> -->
  74
+
  75
+		<!-- The window's initial height in pixels. Optional. -->
  76
+		<!-- <height></height> -->
  77
+
  78
+		<!-- The window's initial x position. Optional. -->
  79
+		<!-- <x></x> -->
  80
+
  81
+		<!-- The window's initial y position. Optional. -->
  82
+		<!-- <y></y> -->
  83
+
  84
+		<!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
  85
+		<!-- <minSize></minSize> -->
  86
+
  87
+		<!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
  88
+		<!-- <maxSize></maxSize> -->
  89
+
  90
+        <!-- The initial aspect ratio of the app when launched (either "portrait" or "landscape"). Optional. Mobile only. Default is the natural orientation of the device -->
  91
+
  92
+        <!-- <aspectRatio></aspectRatio> -->
  93
+
  94
+        <!-- Whether the app will begin auto-orienting on launch. Optional. Mobile only. Default false -->
  95
+
  96
+		<!-- <autoOrients>true</autoOrients> -->
  97
+
  98
+        <!-- Whether the app launches in full screen. Optional. Mobile only. Default false -->
  99
+
  100
+		<!-- <fullScreen>true</fullScreen> -->	
  101
+
  102
+        <!-- The render mode for the app (either auto, cpu, or gpu). Optional. Mobile only. Default auto -->
  103
+
  104
+        <!-- <renderMode></renderMode> -->
  105
+
  106
+		<!-- Whether or not to pan when a soft keyboard is raised or lowered (either "pan" or "none").  Optional.  Defaults "pan." -->
  107
+		<!-- <softKeyboardBehavior></softKeyboardBehavior> -->
  108
+	</initialWindow>
  109
+
  110
+	<!-- We recommend omitting the supportedProfiles element, -->
  111
+	<!-- which in turn permits your application to be deployed to all -->
  112
+	<!-- devices supported by AIR. If you wish to restrict deployment -->
  113
+	<!-- (i.e., to only mobile devices) then add this element and list -->
  114
+	<!-- only the profiles which your application does support. -->
  115
+	<!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->
  116
+	<supportedProfiles>extendedDesktop</supportedProfiles>
  117
+
  118
+	<!-- The subpath of the standard default installation location to use. Optional. -->
  119
+	<!-- <installFolder></installFolder> -->
  120
+
  121
+	<!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
  122
+	<!-- <programMenuFolder></programMenuFolder> -->
  123
+
  124
+	<!-- The icon the system uses for the application. For at least one resolution,
  125
+	specify the path to a PNG file included in the AIR package. Optional. -->
  126
+	<!-- <icon>
  127
+		<image16x16></image16x16>
  128
+		<image32x32></image32x32>
  129
+		<image36x36></image36x36>
  130
+		<image48x48></image48x48>
  131
+		<image72x72></image72x72>
  132
+		<image114x114></image114x114>
  133
+		<image128x128></image128x128>
  134
+	</icon> -->
  135
+
  136
+	<!-- Whether the application handles the update when a user double-clicks an update version
  137
+	of the AIR file (true), or the default AIR application installer handles the update (false).
  138
+	Optional. Default false. -->
  139
+	<!-- <customUpdateUI></customUpdateUI> -->
  140
+	
  141
+	<!-- Whether the application can be launched when the user clicks a link in a web browser.
  142
+	Optional. Default false. -->
  143
+	<!-- <allowBrowserInvocation></allowBrowserInvocation> -->
  144
+
  145
+	<!-- Listing of file types for which the application can register. Optional. -->
  146
+	<!-- <fileTypes> -->
  147
+
  148
+		<!-- Defines one file type. Optional. -->
  149
+		<!-- <fileType> -->
  150
+
  151
+			<!-- The name that the system displays for the registered file type. Required. -->
  152
+			<!-- <name></name> -->
  153
+
  154
+			<!-- The extension to register. Required. -->
  155
+			<!-- <extension></extension> -->
  156
+			
  157
+			<!-- The description of the file type. Optional. -->
  158
+			<!-- <description></description> -->
  159
+			
  160
+			<!-- The MIME content type. -->
  161
+			<!-- <contentType></contentType> -->
  162
+			
  163
+			<!-- The icon to display for the file type. Optional. -->
  164
+			<!-- <icon>
  165
+				<image16x16></image16x16>
  166
+				<image32x32></image32x32>
  167
+				<image48x48></image48x48>
  168
+				<image128x128></image128x128>
  169
+			</icon> -->
  170
+			
  171
+		<!-- </fileType> -->
  172
+	<!-- </fileTypes> -->
  173
+
  174
+    <!-- iOS specific capabilities -->
  175
+	<!-- <iPhone> -->
  176
+		<!-- A list of plist key/value pairs to be added to the application Info.plist -->
  177
+		<!-- <InfoAdditions>
  178
+            <![CDATA[
  179
+                <key>UIDeviceFamily</key>
  180
+                <array>
  181
+                    <string>1</string>
  182
+                    <string>2</string>
  183
+                </array>
  184
+                <key>UIStatusBarStyle</key>
  185
+                <string>UIStatusBarStyleBlackOpaque</string>
  186
+                <key>UIRequiresPersistentWiFi</key>
  187
+                <string>NO</string>
  188
+            ]]>
  189
+        </InfoAdditions> -->
  190
+        <!-- <requestedDisplayResolution></requestedDisplayResolution> -->
  191
+	<!-- </iPhone> -->
  192
+
  193
+	<!-- Specify Android specific tags that get passed to AndroidManifest.xml file. -->
  194
+		<!--	<uses-permission android:name="android.permission.INTERNET"/>
  195
+				<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  196
+				<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>-->
  197
+	<!-- <android> 
  198
+		<manifestAdditions>
  199
+		<![CDATA[
  200
+			<manifest android:installLocation="auto">
  201
+				<uses-configuration android:reqFiveWayNav="true"/>
  202
+				<supports-screens android:normalScreens="true"/>
  203
+				<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
  204
+				<application android:enabled="true">
  205
+					<activity android:excludeFromRecents="false">
  206
+						<intent-filter>
  207
+							<action android:name="android.intent.action.MAIN"/>
  208
+							<category android:name="android.intent.category.LAUNCHER"/>
  209
+						</intent-filter>
  210
+					</activity>
  211
+				</application>
  212
+			</manifest>
  213
+		]]>
  214
+		</manifestAdditions> 
  215
+	</android>-->
  216
+	<!-- End of the schema for adding the android specific tags in AndroidManifest.xml file -->
  217
+
  218
+</application>
11  build/android/descriptor-template-apk.xml
@@ -190,14 +190,17 @@
190 190
 	<!-- </iPhone> -->
191 191
 
192 192
 	<!-- Specify Android specific tags that get passed to AndroidManifest.xml file. -->
193  
-	<android> 
194  
-		<!--	<uses-permission android:name="android.permission.INTERNET"/>
195  
-				<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
196  
-				<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>-->
  193
+	<android>
  194
+		<!--
  195
+		<uses-permission android:name="android.permission.INTERNET"/>
  196
+		<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  197
+		<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
  198
+		-->
197 199
 		<manifestAdditions>
198 200
 		<![CDATA[
199 201
 			<manifest android:installLocation="auto">
200 202
 				<uses-configuration android:reqFiveWayNav="true"/>
  203
+				<uses-permission android:name="android.permission.INTERNET"/>
201 204
 				<supports-screens android:normalScreens="true"/>
202 205
 				<uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
203 206
 				<application android:enabled="true">
BIN  build/assets/images/placekitten-400-600.jpg
BIN  build/assets/images/placekitten-480-640.jpg
BIN  libs/MinimalComps_0_9_9.swc
Binary file not shown
BIN  libs/greensock.swc
Binary file not shown
BIN  src/assets/images/CyanSquare.png
BIN  src/assets/images/MagentaSquare.png
BIN  src/assets/images/YellowSquare.png
BIN  src/assets/images/monsterdebugger-icon.png
BIN  src/assets/images/settings-icon.png
112  src/org/gestouch/examples/DoubleTapGestureExample.as
... ...
@@ -1,112 +0,0 @@
1  
-package org.gestouch.examples
2  
-{
3  
-	import com.bit101.components.HBox;
4  
-	import com.bit101.components.PushButton;
5  
-	import com.bit101.components.Style;
6  
-	import com.bit101.components.VBox;
7  
-	import com.bit101.components.Window;
8  
-
9  
-	import org.gestouch.events.DoubleTapGestureEvent;
10  
-	import org.gestouch.examples.base.ExampleBase;
11  
-	import org.gestouch.examples.controls.EditableLabel;
12  
-	import org.gestouch.gestures.DoubleTapGesture;
13  
-
14  
-	import flash.display.DisplayObject;
15  
-	import flash.display.DisplayObjectContainer;
16  
-	import flash.events.FocusEvent;
17  
-
18  
-
19  
-	/**
20  
-	 * @author Pavel fljot
21  
-	 */
22  
-	public class DoubleTapGestureExample extends ExampleBase
23  
-	{
24  
-		public function DoubleTapGestureExample()
25  
-		{
26  
-			super();
27  
-		}
28  
-		
29  
-		
30  
-		override protected function init():void
31  
-		{
32  
-			super.init();
33  
-			
34  
-//			scaleX = scaleY = 2;
35  
-			
36  
-			var vBox:VBox = new VBox(this, 10, 10);
37  
-			vBox.spacing = 10;
38  
-			
39  
-			var panel:Window;
40  
-			panel = new Window(vBox, 0, 0, "Double tap on the buttons so they would change their styles.");
41  
-			panel.draggable = false;
42  
-			var hBox:HBox = new HBox(panel);
43  
-			hBox.scaleX = hBox.scaleY = 2;
44  
-			var button:PushButton;
45  
-			button = new PushButton(hBox, 0, 0, "Double-tap me");
46  
-			DoubleTapGesture.add(button);
47  
-			button.addEventListener(DoubleTapGestureEvent.GESTURE_DOUBLE_TAP, button_gestureDoubleTapHandler);
48  
-			button = new PushButton(hBox, 0, 0, "Double-tap me");
49  
-			DoubleTapGesture.add(button);
50  
-			button.addEventListener(DoubleTapGestureEvent.GESTURE_DOUBLE_TAP, button_gestureDoubleTapHandler);
51  
-			
52  
-			panel = new Window(vBox, 0, 0, "Double tap on the label below to make it editable. Time threshold for gesture is set to 1000 ms.");
53  
-			panel.draggable = false;
54  
-			var label:EditableLabel = new EditableLabel(panel, 0, 0, "Double-tap me");
55  
-			label.scaleX = label.scaleY = 2;
56  
-			DoubleTapGesture.add(label, {timeThreshold: 1000});
57  
-			label.addEventListener(DoubleTapGestureEvent.GESTURE_DOUBLE_TAP, label_gestureDoubleTapHandler);
58  
-		}
59  
-		
60  
-		
61  
-		override protected function onResize(sW:Number, sH:Number):void
62  
-		{
63  
-			super.onResize(sW, sH);
64  
-			
65  
-			var container:DisplayObjectContainer = getChildAt(0) as DisplayObjectContainer;
66  
-			var n:uint = container.numChildren;
67  
-			var child:DisplayObject;
68  
-			while (n-- > 0)
69  
-			{
70  
-				child = container.getChildAt(n);
71  
-				child.width = sW - container.x * 2;
72  
-			}
73  
-		}
74  
-		
75  
-		
76  
-		private function button_gestureDoubleTapHandler(event:DoubleTapGestureEvent):void
77  
-		{
78  
-			var button:PushButton = event.currentTarget as PushButton;
79  
-			
80  
-			Style.BUTTON_FACE = 0xDDDDDD * Math.random();
81  
-			button.draw();
82  
-		}
83  
-		
84  
-		
85  
-		private function label_gestureDoubleTapHandler(event:DoubleTapGestureEvent):void
86  
-		{
87  
-			var label:EditableLabel = event.currentTarget as EditableLabel;
88  
-			label.editable = !label.editable;
89  
-			if (label.editable)
90  
-			{
91  
-				label.text = "You can edit me now...";
92  
-				label.addEventListener(FocusEvent.FOCUS_OUT, label_focusOutHandler);
93  
-			}
94  
-			else
95  
-			{
96  
-				label.text = "Double-tap me to make editable";
97  
-			}
98  
-		}
99  
-
100  
-
101  
-		private function label_focusOutHandler(event:FocusEvent):void
102  
-		{
103  
-			var label:EditableLabel = event.currentTarget as EditableLabel;
104  
-			if (stage.focus != label && (!stage.focus || !label.contains(stage.focus)))				
105  
-			{
106  
-				label.removeEventListener(FocusEvent.FOCUS_OUT, label_focusOutHandler);
107  
-				label.editable = false;
108  
-				label.text = "Double-tap me to make editable";
109  
-			}
110  
-		}
111  
-	}
112  
-}
44  src/org/gestouch/examples/GestouchExamples.mxml
... ...
@@ -1,28 +1,18 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2 2
 <s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
3  
-                            xmlns:s="library://ns.adobe.com/flex/spark"
4  
-                            splashScreenImage="@Embed('/assets/images/Splashscreen.png')"
5  
-   							splashScreenScaleMode="letterbox"
6  
-   							splashScreenMinimumDisplayTime="2000"
7  
-                        	firstView="org.gestouch.examples.views.GestouchExamplesHomeView"
8  
-                        	frameRate="40"
9  
-                        	initialize="init()"
10  
-                        	applicationComplete="onComplete()"
11  
-							>
12  
-	<fx:Style>
13  
-		Alert {
14  
-			textAlign: left;
15  
-			modalTransparency: 0.5;
16  
-			modalTransparencyBlur: 8;
17  
-		}
18  
-	</fx:Style>
  3
+	xmlns:s="library://ns.adobe.com/flex/spark"
  4
+	splashScreenImage="@Embed('/assets/images/Splashscreen.png')"
  5
+	splashScreenScaleMode="letterbox"
  6
+	splashScreenMinimumDisplayTime="1000"
  7
+	firstView="org.gestouch.examples.views.GestouchExamplesHomeView"
  8
+	frameRate="60"
  9
+	initialize="init()"
  10
+	>
  11
+	
19 12
 	<fx:Script>
20 13
 		<![CDATA[
21  
-			import com.demonsters.debugger.MonsterDebugger;
22  
-
23 14
 			import org.gestouch.examples.model.ExamplesModel;
24 15
 
25  
-			import mx.controls.Alert;
26 16
 			
27 17
 			private var model:ExamplesModel = new ExamplesModel();
28 18
 			
@@ -31,22 +21,6 @@
31 21
 			{
32 22
 				navigator.firstViewData = model;
33 23
 			}
34  
-			
35  
-			
36  
-			private function onComplete():void
37  
-			{
38  
-				MonsterDebugger.initialize(this, "192.168.0.100", onConnect);
39  
-			}
40  
-			
41  
-			
42  
-			private function onConnect():void
43  
-			{
44  
-				Alert.show("MonsterDebugger connected!");
45  
-			}
46  
-			
47 24
 		]]>
48 25
 	</fx:Script>
49  
-	<fx:Declarations>
50  
-		<!-- Place non-visual elements (e.g., services, value objects) here -->
51  
-	</fx:Declarations>
52 26
 </s:ViewNavigatorApplication>
136  src/org/gestouch/examples/LongPressGestureExample.as
... ...
@@ -1,136 +0,0 @@
1  
-package org.gestouch.examples
2  
-{
3  
-	import flash.events.GesturePhase;
4  
-
5  
-	import com.bit101.components.HBox;
6  
-	import com.bit101.components.PushButton;
7  
-	import com.bit101.components.Style;
8  
-	import com.bit101.components.VBox;
9  
-	import com.bit101.components.Window;
10  
-
11  
-	import org.gestouch.events.LongPressGestureEvent;
12  
-	import org.gestouch.examples.base.ExampleBase;
13  
-	import org.gestouch.examples.controls.EditableLabel;
14  
-	import org.gestouch.gestures.LongPressGesture;
15  
-
16  
-	import flash.display.DisplayObject;
17  
-	import flash.display.DisplayObjectContainer;
18  
-	import flash.events.FocusEvent;
19  
-
20  
-
21  
-	/**
22  
-	 * @author Pavel fljot
23  
-	 */
24  
-	public class LongPressGestureExample extends ExampleBase
25  
-	{
26  
-		public function LongPressGestureExample()
27  
-		{
28  
-			super();
29  
-		}
30  
-		
31  
-		
32  
-		override protected function init():void
33  
-		{
34  
-			super.init();
35  
-			
36  
-//			scaleX = scaleY = 2;
37  
-			
38  
-			var vBox:VBox = new VBox(this, 10, 10);
39  
-			vBox.spacing = 10;
40  
-			
41  
-			var panel:Window;
42  
-			panel = new Window(vBox, 0, 0, "Hold buttons for a second so they would change their styles.");
43  
-			panel.draggable = false;
44  
-			var hBox:HBox = new HBox(panel);
45  
-			hBox.scaleX = hBox.scaleY = 2;
46  
-			var button:PushButton;
47  
-			button = new PushButton(hBox, 0, 0, "Hold me for a second");
48  
-			LongPressGesture.add(button);
49  
-			button.addEventListener(LongPressGestureEvent.GESTURE_LONG_PRESS, button_gestureHoldHandler);
50  
-			button = new PushButton(hBox, 0, 0, "Hold me for a second");
51  
-			LongPressGesture.add(button);
52  
-			button.addEventListener(LongPressGestureEvent.GESTURE_LONG_PRESS, button_gestureHoldHandler);
53  
-			
54  
-			
55  
-			panel = new Window(vBox, 0, 0, "Hold the labels below to make it editable. Time threshold for gesture is set to 1500 ms.");
56  
-			panel.height = 150;
57  
-			panel.draggable = false;
58  
-			var label:EditableLabel;
59  
-			vBox = new VBox(panel);
60  
-			vBox.spacing = 20;
61  
-			vBox.scaleX = vBox.scaleY = 2;
62  
-			label = new EditableLabel(vBox, 0, 0, "Hold me for some time");
63  
-			LongPressGesture.add(label, {timeThreshold: 1500});
64  
-			label.addEventListener(LongPressGestureEvent.GESTURE_LONG_PRESS, label_gestureHoldHandler);
65  
-			label.addEventListener(FocusEvent.FOCUS_OUT, label_focusOutHandler);
66  
-			
67  
-			label = new EditableLabel(vBox, 0, 0, "Hold me with two (2) fingers");
68  
-			LongPressGesture.add(label, {minTouchPointsCount: 2, maxTouchPointsCount: 2});
69  
-			label.addEventListener(LongPressGestureEvent.GESTURE_LONG_PRESS, label_gestureHoldHandler);
70  
-			label.addEventListener(FocusEvent.FOCUS_OUT, label_focusOutHandler);
71  
-		}
72  
-		
73  
-		
74  
-		override protected function onResize(sW:Number, sH:Number):void
75  
-		{
76  
-			super.onResize(sW, sH);
77  
-			
78  
-			var container:DisplayObjectContainer = getChildAt(0) as DisplayObjectContainer;
79  
-			var n:uint = container.numChildren;
80  
-			var child:DisplayObject;
81  
-			while (n-- > 0)
82  
-			{
83  
-				child = container.getChildAt(n);
84  
-				child.width = sW - container.x * 2;
85  
-			}
86  
-		}
87  
-
88  
-
89  
-		private function button_gestureHoldHandler(event:LongPressGestureEvent):void
90  
-		{
91  
-			var button:PushButton = event.currentTarget as PushButton;
92  
-			if (event.phase == GesturePhase.BEGIN)
93  
-			{
94  
-				button.label = "I was held for a second.. you can try again.";
95  
-				Style.BACKGROUND = 0xDDDDDD * Math.random();
96  
-			}
97  
-			else
98  
-			{
99  
-				Style.BUTTON_FACE = 0xDDDDDD * Math.random();
100  
-			}
101  
-			
102  
-			button.draw();
103  
-		}
104  
-		
105  
-		
106  
-		private function label_gestureHoldHandler(event:LongPressGestureEvent):void
107  
-		{
108  
-			var label:EditableLabel = event.currentTarget as EditableLabel;
109  
-			if (event.phase == GesturePhase.BEGIN)
110  
-			{
111  
-				label.editable = !label.editable;
112  
-				if (label.editable)
113  
-				{
114  
-					stage.focus = label.textField;
115  
-					label.text = "You can edit me now...";
116  
-				}
117  
-				else
118  
-				{
119  
-					label.text = "Hold me for to make editable";
120  
-				}
121  
-			}
122  
-		}
123  
-
124  
-
125  
-		private function label_focusOutHandler(event:FocusEvent):void
126  
-		{
127  
-			var label:EditableLabel = event.currentTarget as EditableLabel;
128  
-			if (stage.focus != label && (!stage.focus || !label.contains(stage.focus)))				
129  
-			{
130  
-				label.removeEventListener(FocusEvent.FOCUS_OUT, label_focusOutHandler);
131  
-				label.editable = false;
132  
-				label.text = "Double-tap me to make editable";
133  
-			}
134  
-		}
135  
-	}
136  
-}
91  src/org/gestouch/examples/SwipeGestureExample.as
... ...
@@ -1,91 +0,0 @@
1  
-package org.gestouch.examples
2  
-{
3  
-	import com.bit101.components.HUISlider;
4  
-	import com.bit101.components.VBox;
5  
-	import com.greensock.TweenMax;
6  
-	import com.greensock.easing.Sine;
7  
-
8  
-	import org.gestouch.Direction;
9  
-	import org.gestouch.GestureUtils;
10  
-	import org.gestouch.events.SwipeGestureEvent;
11  
-	import org.gestouch.examples.base.ExampleBase;
12  
-	import org.gestouch.examples.controls.ArrowShape;
13  
-	import org.gestouch.gestures.SwipeGesture;
14  
-
15  
-	import flash.display.BlendMode;
16  
-	import flash.display.DisplayObject;
17  
-	import flash.display.DisplayObjectContainer;
18  
-
19  
-
20  
-
21  
-
22  
-	/**
23  
-	 * @author Pavel fljot
24  
-	 */
25  
-	public class SwipeGestureExample extends ExampleBase
26  
-	{
27  
-		private var arrow:DisplayObject;
28  
-		private var swipeGesture:SwipeGesture;
29  
-		
30  
-		
31  
-		public function SwipeGestureExample()
32  
-		{
33  
-			super();
34  
-		}
35  
-
36  
-
37  
-		override protected function init():void
38  
-		{
39  
-			super.init();
40  
-			
41  
-			arrow = new ArrowShape();
42  
-			arrow.scaleX = arrow.scaleY = 50;
43  
-			arrow.blendMode = BlendMode.INVERT;
44  
-			arrow.alpha = 0;
45  
-			addChild(arrow);
46  
-
47  
-			swipeGesture = SwipeGesture.add(stage, {direction: Direction.STRAIGHT_AXES});
48  
-			stage.addEventListener(SwipeGestureEvent.GESTURE_SWIPE, stage_gestureSwipeHandler);
49  
-			
50  
-			var box:VBox = new VBox(this, 10, 10);
51  
-			box.scaleX = box.scaleY = 4;
52  
-			var velocityThresholdSlider:HUISlider = new HUISlider(box, 0, 0, "velocityThreshold", function():void{
53  
-				swipeGesture.velocityThreshold = velocityThresholdSlider.value * GestureUtils.IPS_TO_PPMS;
54  
-			});
55  
-			velocityThresholdSlider.setSliderParams(1, 10, swipeGesture.velocityThreshold / GestureUtils.IPS_TO_PPMS);
56  
-			velocityThresholdSlider.tick = 0.5;
57  
-			velocityThresholdSlider.labelPrecision = 1;
58  
-		}
59  
-
60  
-
61  
-		override protected function onResize(sW:Number, sH:Number):void
62  
-		{
63  
-			super.onResize(sW, sH);
64  
-			
65  
-			arrow.x = sW >> 1;
66  
-			arrow.y = sH >> 1;
67  
-			return;
68  
-			var container:DisplayObjectContainer = getChildAt(0) as DisplayObjectContainer;
69  
-			var n:uint = container.numChildren;
70  
-			var child:DisplayObject;
71  
-			while (n-- > 0)
72  
-			{
73  
-				child = container.getChildAt(n);
74  
-				child.width = sW - container.x * 2;
75  
-			}
76  
-		}
77  
-
78  
-
79  
-		private function stage_gestureSwipeHandler(event:SwipeGestureEvent):void
80  
-		{
81  
-			arrow.scaleX = (event.offsetX < 0 && event.offsetY == 0 ? -1 : 1) * Math.abs(arrow.scaleX);
82  
-			var angle:int = 0;//event.offsetX == 0 ? (event.offsetY > 0 ? 90 : -90) : Math.atan(event.offsetY / event.offsetX) * 180 / Math.PI;
83  
-			if (event.offsetY != 0)
84  
-			{
85  
-				angle = event.offsetY > 0 ? 90 : -90;
86  
-			}
87  
-			arrow.rotation = angle;
88  
-			TweenMax.fromTo(arrow, 2, {alpha: 1}, {alpha: 0, ease: Sine.easeIn});
89  
-		}
90  
-	}
91  
-}
83  src/org/gestouch/examples/containers/MonsterDebuggerConfigWindow.mxml
... ...
@@ -0,0 +1,83 @@
  1
+<?xml version="1.0" encoding="utf-8"?>
  2
+<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
  3
+               xmlns:s="library://ns.adobe.com/flex/spark"
  4
+               xmlns:mx="library://ns.adobe.com/flex/mx"
  5
+               title="MonsterDebugger Mobile"
  6
+               initialize="init()"
  7
+               close="onClose()"
  8
+               >
  9
+	<fx:Script>
  10
+		<![CDATA[
  11
+			import com.demonsters.debugger.MonsterDebugger;
  12
+
  13
+			import mx.core.FlexGlobals;
  14
+			import mx.managers.PopUpManager;
  15
+
  16
+			import flash.events.Event;
  17
+			import flash.net.SharedObject;
  18
+
  19
+			
  20
+			private var so:SharedObject = SharedObject.getLocal("GestouchExamples_MonsterDebuggerMobile");
  21
+			
  22
+			
  23
+			private function init():void
  24
+			{
  25
+				var ip:String = so.data.ip;
  26
+				if (!ip)
  27
+				{
  28
+					ip = "127.0.0.1";
  29
+				}
  30
+				ipInput.text = ip;
  31
+				
  32
+				stage.addEventListener(Event.RESIZE, onStageResize);
  33
+			}
  34
+			
  35
+			
  36
+			private function connect():void
  37
+			{
  38
+				var ip:String = ipInput.text;
  39
+				so.data.ip = ip;
  40
+				try
  41
+				{
  42
+					so.flush();
  43
+				}
  44
+				catch (err:Error){}
  45
+				
  46
+				MonsterDebugger.initialize(FlexGlobals.topLevelApplication, ip, onConnected);
  47
+				connectButton.enabled = false;
  48
+			}
  49
+			
  50
+			
  51
+			private function onConnected():void
  52
+			{
  53
+				if (stage)
  54
+				{
  55
+					onClose();
  56
+				}
  57
+			}
  58
+
  59
+
  60
+			private function onStageResize(event:Event = null):void
  61
+			{
  62
+				PopUpManager.centerPopUp(this);
  63
+			}
  64
+			
  65
+			
  66
+			protected function onClose():void
  67
+			{
  68
+				stage.removeEventListener(Event.RESIZE, onStageResize);
  69
+                PopUpManager.removePopUp(this);
  70
+            }
  71
+		]]>
  72
+	</fx:Script>
  73
+
  74
+	<s:Form>
  75
+		<s:FormItem label="IP">
  76
+			<s:TextInput id="ipInput" />
  77
+		</s:FormItem>
  78
+		<s:FormItem>
  79
+			<s:Button id="connectButton" label="Connect" click="connect()"/>
  80
+		</s:FormItem>
  81
+	</s:Form>
  82
+	
  83
+</s:TitleWindow>
26  src/org/gestouch/examples/containers/SettingsPanel.as
... ...
@@ -0,0 +1,26 @@
  1
+package org.gestouch.examples.containers
  2
+{
  3
+	import spark.layouts.VerticalLayout;
  4
+	import spark.components.Group;
  5
+
  6
+
  7
+	/**
  8
+	 * @author Pavel fljot
  9
+	 */
  10
+	public class SettingsPanel extends Group
  11
+	{
  12
+		public function SettingsPanel()
  13
+		{
  14
+			super();
  15
+			
  16
+			var layout:VerticalLayout = new VerticalLayout();
  17
+			layout.paddingTop = 10;
  18
+			layout.paddingBottom = 10;
  19
+			layout.paddingLeft = 10;
  20
+			layout.paddingRight = 10;
  21
+			this.layout = layout;
  22
+			
  23
+			opaqueBackground = 0xEFEFEF;
  24
+		}
  25
+	}
  26
+}
39  src/org/gestouch/examples/model/ExamplesModel.as
... ...
@@ -1,11 +1,14 @@
1 1
 package org.gestouch.examples.model
2 2
 {
3  
-	import org.gestouch.examples.views.HoldAndDragView;
4  
-	import org.gestouch.examples.views.DoubleTapGestureView;
5  
-	import org.gestouch.examples.views.DragGestureView;
6  
-	import org.gestouch.examples.views.FreeTransformView;
  3
+	import org.gestouch.examples.views.ConflictGesturesView;
  4
+	import org.gestouch.examples.views.LongPressGestureAdvancedView;
7 5
 	import org.gestouch.examples.views.LongPressGestureView;
  6
+	import org.gestouch.examples.views.PanGestureView;
  7
+	import org.gestouch.examples.views.RotateGestureView;
8 8
 	import org.gestouch.examples.views.SwipeGestureView;
  9
+	import org.gestouch.examples.views.TapGestureUsageView;
  10
+	import org.gestouch.examples.views.TapGestureView;
  11
+	import org.gestouch.examples.views.ZoomGestureView;
9 12
 
10 13
 	import mx.collections.ArrayCollection;
11 14
 
@@ -13,25 +16,23 @@ package org.gestouch.examples.model
13 16
 	 * @author Pavel fljot
14 17
 	 */
15 18
 	public class ExamplesModel
16  
-	{
17  
-		public static const LONG_PRESS_GESTURE_HELP:String = (<text>LongPressGesture tracks the long press.
18  
-It has two phases: GesturePhase.BEGIN when timer is complete (finger is still down) and GesturePhase.END when user release the finger.
19  
-You can customize:
20  
-"slop" — the distance user should not overcome in case of (accidental) drag,
21  
-"timeThreshold" — time in ms that nescessary to detect gesture.
22  
-</text>).toString();
23  
-		
24  
-		
  19
+	{		
25 20
 		[Bindable]
26 21
 		public var examplesList:ArrayCollection = new ArrayCollection(
27 22
 			[
28  
-				{label: "LongPressGesture Example", viewClass: LongPressGestureView},
29  
-				{label: "DoubleTapGesture Example", viewClass: DoubleTapGestureView},
30  
-				{label: "DragGesture Example", viewClass: DragGestureView},
31  
-				{label: "SwipeGesture Example", viewClass: SwipeGestureView},
32  
-				{label: "Free-transform Examples (Drag, Zoom, Rotate)", viewClass: FreeTransformView},
33  
-				{label: "Hold-n-Drag Example", viewClass: HoldAndDragView}
  23
+				{label: "TapGesture Basic Example", viewClass: TapGestureView}
  24
+				,{label: "TapGesture Usage Example", viewClass: TapGestureUsageView}
  25
+				,{label: "LongPressGesture Basic Example", viewClass: LongPressGestureView}
  26
+				,{label: "LongPressGesture Advanced Example", viewClass: LongPressGestureAdvancedView}
  27
+				,{label: "RotateGesture Basic Example", viewClass: RotateGestureView}
  28
+				,{label: "ZoomGesture Basic Example", viewClass: ZoomGestureView}
  29
+				,{label: "PanGesture Basic Example", viewClass: PanGestureView}
  30
+				,{label: "SwipeGesture Basic Example", viewClass: SwipeGestureView}
  31
+				,{label: "Conflicts Resolution Example", viewClass: ConflictGesturesView}
  32
+//				,{label: "Dependent Gestures Example", viewClass: DependentGesturesView}
34 33
 			]
35 34
 		);
  35
+		
  36
+		public var lastViewTitle:String;
36 37
 	}
37 38
 }
168  src/org/gestouch/examples/views/ConflictGesturesView.mxml
... ...
@@ -0,0 +1,168 @@
  1
+<?xml version="1.0" encoding="utf-8"?>
  2
+<views:ExampleViewBase xmlns:fx="http://ns.adobe.com/mxml/2009"
  3
+    xmlns:s="library://ns.adobe.com/flex/spark"
  4
+	xmlns:mx="library://ns.adobe.com/flex/mx"
  5
+	xmlns:views="org.gestouch.examples.views.*"
  6
+	xmlns:controls="org.gestouch.examples.controls.*"
  7
+	xmlns:containers="org.gestouch.examples.containers.*"
  8
+	implements="org.gestouch.core.IGestureDelegate"
  9
+	backgroundColor="0xDDDDDD"
  10
+	>
  11
+	
  12
+	<fx:Script>
  13
+		<![CDATA[
  14
+			import org.gestouch.core.Touch;