summaryrefslogtreecommitdiff
path: root/client/.metadata/.plugins
diff options
context:
space:
mode:
authorgoblin911 <[email protected]>2013-08-25 21:18:19 +0800
committergoblin911 <[email protected]>2013-08-25 21:18:19 +0800
commit0e687f12bd2653adb55ea002b39292678366c525 (patch)
tree0ad073ec8ff2ed2716adf23a679184c38df582a1 /client/.metadata/.plugins
parent2efdc2f20f0306791ced5ec78a1acddfaf086f42 (diff)
...
Diffstat (limited to 'client/.metadata/.plugins')
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/Switch.pngbin0 -> 651 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabHost.pngbin0 -> 2157 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabWidget.pngbin0 -> 918 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/preview.properties2
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabHost.pngbin0 -> 2009 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabWidget.pngbin0 -> 724 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/preview.properties2
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabHost.pngbin0 -> 2009 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabWidget.pngbin0 -> 724 bytes
-rw-r--r--client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/preview.properties2
-rw-r--r--client/.metadata/.plugins/org.eclipse.cdt.core/.log7
-rw-r--r--client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c1
-rw-r--r--client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp1
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/0/b08b1b0b560d00131719b896d543f08c45
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1/907f38e9220d00131a9bb9bc5a5e61714
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1/e0fccb09380d00131249f322b63acde896
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1/f02df33e860d00131719b896d543f08c31
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/12/201d72d3760d00131719b896d543f08c178
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/13/6046c8d2670d00131719b896d543f08c91
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/15/80676cae330d00131249f322b63acde857
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/16/30f189812c0d00131249f322b63acde833
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/16/c03b1eb7550d00131719b896d543f08c68
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/17/8029226c800d00131719b896d543f08c15
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/17/b039f5b4330d00131249f322b63acde859
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/18/00a5e084260d00131a9bb9bc5a5e617168
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b01e7ce6220d00131a9bb9bc5a5e61710
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b06a41ee310d00131249f322b63acde881
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/1001f39b220d00131a9bb9bc5a5e617117
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/e052bedc670d00131719b896d543f08c91
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/0084ccf2240d00131a9bb9bc5a5e61718
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/c097adfa670d00131719b896d543f08c91
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/1f/305dce064c0d00131719b896d543f08c103
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2/c0e1f0e53a0d00131524a793807f338e85
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/22/20302442660d00131719b896d543f08c82
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/22/b0553560360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/24/40a1e7d3340d00131249f322b63acde863
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/24/602725f7320d00131249f322b63acde89
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/25/60c3225c250d00131a9bb9bc5a5e617190
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/25/703b1352250d00131a9bb9bc5a5e617190
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/25/e0a3222e250d00131a9bb9bc5a5e617191
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/26/10fa1d9f550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/26/60c51154370d00131249f322b63acde870
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/27/20fe519b7a0d00131719b896d543f08c196
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/27/8062fc9c690d00131719b896d543f08c115
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/27/b0ff1ddf650d00131719b896d543f08c66
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/28/005bf7374c0d00131719b896d543f08c103
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/28/a00c947d310d00131249f322b63acde8133
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/28/e0fe6e7a310d00131249f322b63acde876
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/90dd627f4f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/e0b1b2b86a0d00131719b896d543f08c137
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/10589e1d530d00131719b896d543f08c33
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/b0547e04360d00131249f322b63acde870
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/d03e1c612c0d00131249f322b63acde830
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/2e/80cdc91d560d00131719b896d543f08c45
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3/b0bdfe23320d00131249f322b63acde881
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/30/909951c6530d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/31/50f2612d2d0d00131249f322b63acde835
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/32/00f713722c0d00131249f322b63acde832
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/33/00c793445a0d00131719b896d543f08c104
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/34/b0a7c7dc250d00131a9bb9bc5a5e617164
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/34/c0f6cc4a530d00131719b896d543f08c37
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/35/4093eb606b0d00131719b896d543f08c149
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/36/90c1e030690d00131719b896d543f08c110
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/36/d038f44e800d00131719b896d543f08c89
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/38/003d32e92d0d00131249f322b63acde874
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/50c1a310570d00131719b896d543f08c49
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/70725e2b330d00131249f322b63acde884
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c06b1bbd810d00131719b896d543f08c23
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3b/908be6833c0d00131524a793807f338e90
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3c/e05994772c0d00131249f322b63acde832
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/00def6177b0d00131719b896d543f08c196
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/1089ba593d0d00131524a793807f338e35
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/70b085c6280d00131249f322b63acde869
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/3f/20d16da8790d00131719b896d543f08c191
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4/208b4473550d00131719b896d543f08c69
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4/d06a2613260d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/40/d0cd94022e0d00131249f322b63acde876
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/41/c042e3c3810d00131719b896d543f08c23
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/42/202de8244f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/43/d08732c36a0d00131719b896d543f08c137
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/43/e05e9ddd800d00131719b896d543f08c22
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/44/00604d29230d00131a9bb9bc5a5e61716
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/44/50b1dc18530d00131719b896d543f08c23
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/44/b0ce412f550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/48/f02ec265260d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/49/10547e20330d00131249f322b63acde883
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/49/d0e63f99550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4a/2006f95e2b0d00131249f322b63acde814
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4b/60e6bdcd310d00131249f322b63acde834
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/10fd771f320d00131249f322b63acde881
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2088d09b260d00131a9bb9bc5a5e617122
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30e8770c260d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d04b30d8520d00131719b896d543f08c62
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/40eb8393390d00131524a793807f338e85
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/5025c807320d00131249f322b63acde882
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/60e7a753340d00131249f322b63acde858
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/709e4dd5770d00131719b896d543f08c193
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/d078d3c5670d00131719b896d543f08c87
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20629bba350d00131249f322b63acde866
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5/c09802f4810d00131719b896d543f08c28
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/51/1058bc287a0d00131719b896d543f08c195
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/51/d01e0d2c7c0d00131719b896d543f08c202
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/51/e043216f2c0d00131249f322b63acde831
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/52/80fa1082370d00131249f322b63acde880
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/52/908340203a0d00131524a793807f338e101
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/52/b0f7e5f4300d00131249f322b63acde8133
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/53/20300883550d00131719b896d543f08c67
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/53/a06c6384500d00131719b896d543f08c92
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/53/b0d150cf4d0d00131719b896d543f08c149
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/54/105bdc86800d00131719b896d543f08c19
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0697f702b0d00131249f322b63acde815
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/56/70ea45fe4b0d00131719b896d543f08c102
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/56/e0d3f982370d00131249f322b63acde896
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/58/c0259769680d00131719b896d543f08c92
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/59/604165f5520d00131719b896d543f08c62
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/59/b0dfede04f0d00131719b896d543f08c21
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/1067b967520d00131719b896d543f08c62
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/20289dc1250d00131a9bb9bc5a5e617162
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/a01d01234f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/b09b88be520d00131719b896d543f08c62
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/40ac8a2a760d00131719b896d543f08c174
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a0a26974330d00131249f322b63acde853
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/10ddd0bd550d00131719b896d543f08c68
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/b06ac273760d00131719b896d543f08c174
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5e/5026feaa340d00131249f322b63acde861
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/5f/40817ce9810d00131719b896d543f08c28
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6/509d88ee670d00131719b896d543f08c91
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0fbac51760d00131719b896d543f08c173
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/61/503835816a0d00131719b896d543f08c116
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8132
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/65/10afe9c2560d00131719b896d543f08c68
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/65/7015966a370d00131249f322b63acde883
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/65/c008735d330d00131249f322b63acde8134
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/66/108b1d6a2c0d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/67/7089926a2b0d00131249f322b63acde813
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/67/80e1a600230d00131a9bb9bc5a5e61715
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/40af41ee250d00131a9bb9bc5a5e617169
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/50c980702b0d00131249f322b63acde815
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6c/e0cb25df390d00131524a793807f338e99
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6d/30ed916a2b0d00131249f322b63acde813
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a03ae288270d00131050e648e11def2a28
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/6f/0020dd3c560d00131719b896d543f08c47
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7/102ad2cb800d00131719b896d543f08c20
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7/10a4d736550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7/806200684f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7/b00ff61a380d00131249f322b63acde897
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0c8a1b1330d00131249f322b63acde858
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0e31801750d00131719b896d543f08c160
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/70/501f63f7750d00131719b896d543f08c168
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/70/803f3d632b0d00131249f322b63acde816
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/70/c00737b35b0d00131719b896d543f08c53
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/70/e041e862500d00131719b896d543f08c92
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/71/3084ff9b220d00131a9bb9bc5a5e61713
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/71/b0d73212550d00131719b896d543f08c67
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/72/40aa3d7d680d00131719b896d543f08c109
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/72/7046908d340d00131249f322b63acde861
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/72/b0a7a169550d00131719b896d543f08c240
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/73/006fa23d5a0d00131719b896d543f08c104
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c01d2030760d00131719b896d543f08c173
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c08e77fb780d00131719b896d543f08c192
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/74/40c025d4770d00131719b896d543f08c182
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/74/80e6f54e800d00131719b896d543f08c106
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/74/901b4f2c550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/75/601f31e7390d00131524a793807f338e99
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/75/b047617e310d00131249f322b63acde8132
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/76/207ce70b330d00131249f322b63acde882
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/76/608e011f4f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/77/e09023cf310d00131249f322b63acde835
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/77/f09da14b290d00131249f322b63acde830
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/78/d014d7fc220d00131a9bb9bc5a5e61710
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/79/2065267c2c0d00131249f322b63acde833
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/79/90c475984b0d00131719b896d543f08c63
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7a/906f6f46800d00131719b896d543f08c9
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/5015928e500d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/b0d770546b0d00131719b896d543f08c151
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0024b04260d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0272c32560d00131719b896d543f08c46
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/10fd3cab810d00131719b896d543f08c23
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/e021b37a330d00131249f322b63acde854
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/00390e21280d00131249f322b63acde829
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/a0c4a019530d00131719b896d543f08c33
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/7f/5045a039260d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8/208ac81c560d00131719b896d543f08c45
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8/40515524760d00131719b896d543f08c173
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb4e800d00131719b896d543f08c8
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/80/706d105f250d00131a9bb9bc5a5e617190
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/80/9080b2de4d0d00131719b896d543f08c107
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/81/10091b6d2b0d00131249f322b63acde818
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/81/60af4207370d00131249f322b63acde863
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/81/d0e51ef7320d00131249f322b63acde831
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/82/70f000a8770d00131719b896d543f08c178
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/82/909cd18d310d00131249f322b63acde8133
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/84/30d53cf3280d00131249f322b63acde869
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/84/700a3adf290d00131249f322b63acde831
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/84/901e3ac8250d00131a9bb9bc5a5e617164
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c01bf7ee550d00131719b896d543f08c67
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c080c339520d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/86/90090791270d00131050e648e11def2a22
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/86/b0ac05a2810d00131719b896d543f08c23
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/87/201980b5760d00131719b896d543f08c176
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/87/5019e3b3260d00131a9bb9bc5a5e617128
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/87/50ba72af3b0d00131524a793807f338e7
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0e225b3310d00131249f322b63acde880
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/88/50d41de3290d00131249f322b63acde830
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0228599540d00131719b896d543f08c87
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0b797df250d00131a9bb9bc5a5e617169
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/89/0029672d5a0d00131719b896d543f08c34
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0860fa32d0d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/908f0c6a360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/d056c37d2d0d00131249f322b63acde836
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10eb0b46390d00131524a793807f338e84
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/e09a6d15560d00131719b896d543f08c45
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/10e89b06370d00131249f322b63acde863
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/80e1dd33540d00131719b896d543f08c85
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a08e799e530d00131719b896d543f08c37
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0b8e0b1310d00131249f322b63acde878
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b05c6824790d00131719b896d543f08c192
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8e/b08854886b0d00131719b896d543f08c149
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/e0acc70a360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0503e632b0d00131249f322b63acde816
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9/80eaba674e0d00131719b896d543f08c10
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9/d0125955810d00131719b896d543f08c23
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/90/00e09e727b0d00131719b896d543f08c198
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/90/2028ee04230d00131a9bb9bc5a5e617110
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/90/d01af94e800d00131719b896d543f08c205
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/92/90d0196d2b0d00131249f322b63acde818
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/95/6090f2e14d0d00131719b896d543f08c29
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0e2b9652c0d00131249f322b63acde830
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/96/00f46dd44f0d00131719b896d543f08c19
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/96/7099eaee250d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/96/d045188a780d00131719b896d543f08c191
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0d85224540d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0e93a1f560d00131719b896d543f08c46
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/98/90d9c0a3260d00131a9bb9bc5a5e617128
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/98/c0bccf492c0d00131249f322b63acde85
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/98/d01ce77a780d00131719b896d543f08c192
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/99/502b88e7810d00131719b896d543f08c28
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/99/603b4d34230d00131a9bb9bc5a5e617110
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/99/70ce9093370d00131249f322b63acde896
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9b/90a9ae62770d00131719b896d543f08c181
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9c/606048dc370d00131249f322b63acde896
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/1036ff9b220d00131a9bb9bc5a5e61712
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/3091338f6b0d00131719b896d543f08c156
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80db2574360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/90356481800d00131719b896d543f08c15
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/a064e6d0330d00131249f322b63acde858
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f04144582b0d00131249f322b63acde816
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a/40b9ebd22d0d00131249f322b63acde873
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/70559b0a250d00131a9bb9bc5a5e617116
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/90d4db88800d00131719b896d543f08c19
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/e0b88562370d00131249f322b63acde871
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/308cf16f2c0d00131249f322b63acde832
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/50ad9b0a560d00131719b896d543f08c43
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a3/f02825fc2d0d00131249f322b63acde874
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a6/a016c8c14f0d00131719b896d543f08c20
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a7/a0893aae550d00131719b896d543f08c68
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/20fcf44e800d00131719b896d543f08c32
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/80a9829d690d00131719b896d543f08c116
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/100cbe75540d00131719b896d543f08c86
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/409f33a52d0d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/e083aa57340d00131249f322b63acde860
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/1010278f550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a0a35aa1550d00131719b896d543f08c242
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ab/608c6879260d00131a9bb9bc5a5e617169
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00248cbd360d00131249f322b63acde871
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30296b52560d00131719b896d543f08c47
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/c0defd575a0d00131719b896d543f08c68
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/af/30d4b2674e0d00131719b896d543f08c35
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/7084ef6a550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/c09fb905760d00131719b896d543f08c171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/d04f2b58380d00131249f322b63acde899
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00a1a652550d00131719b896d543f08c240
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00b0df34260d00131a9bb9bc5a5e617171
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/806ea1b54f0d00131719b896d543f08c19
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/a0011e00530d00131719b896d543f08c22
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b3/005ecbdb800d00131719b896d543f08c20
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/d054deff370d00131249f322b63acde896
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/e0f38c9f260d00131a9bb9bc5a5e617127
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/f0db4c2f390d00131524a793807f338e84
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b6/907c20d0330d00131249f322b63acde858
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/00d0ee3f5a0d00131719b896d543f08c104
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/7017f2e32d0d00131249f322b63acde874
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/b9/002a6f89770d00131719b896d543f08c178
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/bd/90228f69800d00131719b896d543f08c8
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0e7485e390d00131524a793807f338e84
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b07e9999380d00131249f322b63acde834
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c0281dde290d00131249f322b63acde831
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c/20533453360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c/c0b909df780d00131719b896d543f08c62
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/70c31bc4770d00131719b896d543f08c180
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/90049d68370d00131249f322b63acde884
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/305132042e0d00131249f322b63acde877
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/905743582b0d00131249f322b63acde816
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/c02b54e56a0d00131719b896d543f08c137
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/e083ea64370d00131249f322b63acde885
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/80454f67500d00131719b896d543f08c92
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a02a68e4550d00131719b896d543f08c66
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c5/b0f3fcc27c0d00131719b896d543f08c204
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c8/b082216a2c0d00131249f322b63acde831
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/c9/406dedec4e0d00131719b896d543f08c41
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/20f3b0b5340d00131249f322b63acde862
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/90266484690d00131719b896d543f08c114
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/a02a83fc310d00131249f322b63acde880
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/d0283431550d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cb/30fcab3d6b0d00131719b896d543f08c137
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/30d547d6300d00131249f322b63acde8132
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/40540cea780d00131719b896d543f08c65
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a06019c6550d00131719b896d543f08c66
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b0cf5a29320d00131249f322b63acde881
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/e0b44c18280d00131249f322b63acde829
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ce/400f0022790d00131719b896d543f08c65
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/509df39b220d00131a9bb9bc5a5e61715
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80bdfc51360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80e32f683a0d00131524a793807f338e85
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0399970330d00131249f322b63acde848
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d1/e0493fd6550d00131719b896d543f08c64
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d2/80c7346a770d00131719b896d543f08c181
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d07246a16a0d00131719b896d543f08c128
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b08e74497f0d00131719b896d543f08c7
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d6/70651b8c4f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50a452ea310d00131249f322b63acde880
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50d6caf2240d00131a9bb9bc5a5e617127
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/90a207514b0d00131719b896d543f08c101
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f0ae11884d0d00131719b896d543f08c16
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/b0831880280d00131249f322b63acde869
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/c0cdd6df780d00131719b896d543f08c64
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/da/b0c3a5433d0d00131524a793807f338e35
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/db/50df9b974b0d00131719b896d543f08c63
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/600b7a0f780d00131719b896d543f08c192
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c0b636965b0d00131719b896d543f08c106
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/de/20eb032c3c0d00131524a793807f338e100
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/de/a03d00d2760d00131719b896d543f08c177
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/de/f01bbbba310d00131249f322b63acde879
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/df/406bf637390d00131524a793807f338e84
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e/d06a5fb7520d00131719b896d543f08c241
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e0/40e5bce9370d00131249f322b63acde898
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/306f6f46360d00131249f322b63acde872
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/9017fa5e2b0d00131249f322b63acde814
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b01fa77a4e0d00131719b896d543f08c16
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/005a5d292d0d00131249f322b63acde833
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4039c9d3330d00131249f322b63acde858
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/d0880974550d00131719b896d543f08c68
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20fcf772310d00131249f322b63acde8133
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e7/00e5c3933a0d00131524a793807f338e22
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/e9/201bd58e370d00131249f322b63acde895
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0041c861520d00131719b896d543f08c64
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50149cac330d00131249f322b63acde854
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50fcb17a260d00131a9bb9bc5a5e617169
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ed/d0b50c637c0d00131719b896d543f08c203
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/800bef37290d00131249f322b63acde873
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/8094037e770d00131719b896d543f08c181
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/e062b6d0520d00131719b896d543f08c62
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f/702f615d280d00131249f322b63acde868
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f/c043e2232c0d00131249f322b63acde829
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a000529a350d00131249f322b63acde863
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/00249bf3370d00131249f322b63acde898
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e068ac2a250d00131a9bb9bc5a5e617190
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0f0dd782c0d00131249f322b63acde831
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f2/101fed70800d00131719b896d543f08c15
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a087fd4e800d00131719b896d543f08c8
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a0da18d74d0d00131719b896d543f08c133
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/50b3bf00680d00131719b896d543f08c91
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/c0432fca650d00131719b896d543f08c56
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f009dded390d00131524a793807f338e100
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0f9d74b5a0d00131719b896d543f08c51
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f7/404fa93a860d00131719b896d543f08c30
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/10ed0356660d00131719b896d543f08c86
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/60faee49750d00131719b896d543f08c159
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40812ada6a0d00131719b896d543f08c137
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e06a5470670d00131719b896d543f08c86
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fa/f0caef03230d00131a9bb9bc5a5e61715
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10233142530d00131719b896d543f08c33
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10a53b2a7a0d00131719b896d543f08c197
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/901006312c0d00131249f322b63acde80
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0859c9d370d00131249f322b63acde896
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0f7938e550d00131719b896d543f08c240
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0d4eed4300d00131249f322b63acde8133
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f05e84f54e0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/50c48d3c520d00131719b896d543f08c64
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/7081acc66c0d00131719b896d543f08c154
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/90b04d264f0d00131719b896d543f08c42
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/4015f3cd330d00131249f322b63acde858
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/c09a68a94b0d00131719b896d543f08c63
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/5f/properties.indexbin0 -> 430 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/62/properties.indexbin0 -> 639 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/66/properties.indexbin0 -> 167 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/cd/properties.indexbin0 -> 162 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/history.indexbin0 -> 631 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/properties.indexbin0 -> 1953 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/history.indexbin0 -> 224 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/properties.indexbin0 -> 410 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/eb/properties.indexbin0 -> 158 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/ee/properties.indexbin0 -> 158 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/af/history.indexbin0 -> 94 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/81/32/ea/history.indexbin0 -> 8568 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/history.indexbin0 -> 76 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/history.indexbin0 -> 413 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/properties.indexbin0 -> 1048 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markersbin0 -> 3779 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers.snapbin0 -> 42350 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.syncinfo.snapbin0 -> 688 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version1
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.indexbin0 -> 234 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version1
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snapbin0 -> 715 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.root/7.treebin0 -> 9558 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resourcesbin0 -> 18176 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.resources/.snapbin0 -> 32995 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.adt.prefs5
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.ddms.prefs10
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs4
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs4
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs4
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs9
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs19
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs3
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs5
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs5
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs2
-rw-r--r--client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs4
-rw-r--r--client/.metadata/.plugins/org.eclipse.debug.core/.launches/Piztor.launch20
-rw-r--r--client/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml16
-rw-r--r--client/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml23
-rw-r--r--client/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi2294
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/1806444800.indexbin0 -> 282339 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/3531037650.indexbin0 -> 1589011 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/924937420.indexbin0 -> 18061 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStampsbin0 -> 200 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCachebin0 -> 4 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt1
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCachebin0 -> 184 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt4
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.datbin0 -> 624 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml4
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml47
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml2
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml21
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml28
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.pngbin0 -> 220 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.pngbin0 -> 509 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/10.pngbin0 -> 227 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/11.pngbin0 -> 188 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/12.pngbin0 -> 147 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/13.pngbin0 -> 224 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/14.pngbin0 -> 281 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/15.pngbin0 -> 210 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/16.pngbin0 -> 313 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/17.pngbin0 -> 178 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/18.pngbin0 -> 292 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/19.pngbin0 -> 303 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.pngbin0 -> 210 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/20.pngbin0 -> 438 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/21.pngbin0 -> 436 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.pngbin0 -> 490 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.pngbin0 -> 478 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.pngbin0 -> 194 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.pngbin0 -> 137 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/7.pngbin0 -> 238 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/8.pngbin0 -> 589 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/9.pngbin0 -> 183 bytes
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.history4
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.index1
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.history3
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.index2
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.history3
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.index8
-rw-r--r--client/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml7
-rw-r--r--client/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml25
-rw-r--r--client/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml30
-rw-r--r--client/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml12
-rw-r--r--client/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml1
-rw-r--r--client/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml5
-rw-r--r--client/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml5
-rw-r--r--client/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml28
480 files changed, 32213 insertions, 0 deletions
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/Switch.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/Switch.png
new file mode 100644
index 0000000..0a1dfc4
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/Switch.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabHost.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabHost.png
new file mode 100644
index 0000000..2030729
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabHost.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabWidget.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabWidget.png
new file mode 100644
index 0000000..5e9312b
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/TabWidget.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/preview.properties b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/preview.properties
new file mode 100644
index 0000000..17e9f87
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-apptheme-37inwvganexusone/preview.properties
@@ -0,0 +1,2 @@
+background=#ffffff
+foreground=#000000
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabHost.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabHost.png
new file mode 100644
index 0000000..d9407b2
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabHost.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabWidget.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabWidget.png
new file mode 100644
index 0000000..6f5e4fe
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/TabWidget.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/preview.properties b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/preview.properties
new file mode 100644
index 0000000..e1146f3
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-blacknotitlebar-37inwvganexusone/preview.properties
@@ -0,0 +1,2 @@
+background=#000000
+foreground=#ffffff
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabHost.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabHost.png
new file mode 100644
index 0000000..d9407b2
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabHost.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabWidget.png b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabWidget.png
new file mode 100644
index 0000000..6f5e4fe
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/TabWidget.png
Binary files differ
diff --git a/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/preview.properties b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/preview.properties
new file mode 100644
index 0000000..e1146f3
--- /dev/null
+++ b/client/.metadata/.plugins/com.android.ide.eclipse.adt/palette-preview-r16b-18-notitlebar-37inwvganexusone/preview.properties
@@ -0,0 +1,2 @@
+background=#000000
+foreground=#ffffff
diff --git a/client/.metadata/.plugins/org.eclipse.cdt.core/.log b/client/.metadata/.plugins/org.eclipse.cdt.core/.log
new file mode 100644
index 0000000..47b9d08
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.cdt.core/.log
@@ -0,0 +1,7 @@
+*** SESSION 8月 25, 2013 07:33:49.05 --------------------------------------------
+*** SESSION 8月 25, 2013 08:25:25.83 --------------------------------------------
+*** SESSION 8月 25, 2013 08:28:33.59 --------------------------------------------
+*** SESSION 8月 25, 2013 08:49:43.19 --------------------------------------------
+*** SESSION 8月 25, 2013 09:42:58.100 -------------------------------------------
+*** SESSION 8月 25, 2013 11:45:47.89 --------------------------------------------
+*** SESSION 8月 25, 2013 13:40:39.39 --------------------------------------------
diff --git a/client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c b/client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c
@@ -0,0 +1 @@
+
diff --git a/client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp b/client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.cdt.make.core/specs.cpp
@@ -0,0 +1 @@
+
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/0/b08b1b0b560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/0/b08b1b0b560d00131719b896d543f08c
new file mode 100644
index 0000000..02e3800
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/0/b08b1b0b560d00131719b896d543f08c
@@ -0,0 +1,45 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.objl
+ ReqUpdate r = new ReqUpdate(UserInfo.token, , longitude, time, alive)
+ AppMgr.transam.send();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/907f38e9220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/907f38e9220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..44f93d4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/907f38e9220d00131a9bb9bc5a5e6171
@@ -0,0 +1,4 @@
+
+class Exception {
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/e0fccb09380d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/e0fccb09380d00131249f322b63acde8
new file mode 100644
index 0000000..633f742
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/e0fccb09380d00131249f322b63acde8
@@ -0,0 +1,96 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/f02df33e860d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/f02df33e860d00131719b896d543f08c
new file mode 100644
index 0000000..0c5fcbc
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1/f02df33e860d00131719b896d543f08c
@@ -0,0 +1,31 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+
+ @SuppressLint("UseSparseArrays")
+ static void init() {
+ mp = new HashMap<Integer, Group>();
+ mp = new Spa
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/12/201d72d3760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/12/201d72d3760d00131719b896d543f08c
new file mode 100644
index 0000000..4406dc1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/12/201d72d3760d00131719b896d543f08c
@@ -0,0 +1,178 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " " + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0) System.out.println("update success");
+ else System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/13/6046c8d2670d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/13/6046c8d2670d00131719b896d543f08c
new file mode 100644
index 0000000..c3a9bbe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/13/6046c8d2670d00131719b896d543f08c
@@ -0,0 +1,91 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/15/80676cae330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/15/80676cae330d00131249f322b63acde8
new file mode 100644
index 0000000..a3b8c65
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/15/80676cae330d00131249f322b63acde8
@@ -0,0 +1,57 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ boolean sendMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/16/30f189812c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/16/30f189812c0d00131249f322b63acde8
new file mode 100644
index 0000000..5d2cc7c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/16/30f189812c0d00131249f322b63acde8
@@ -0,0 +1,33 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/16/c03b1eb7550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/16/c03b1eb7550d00131719b896d543f08c
new file mode 100644
index 0000000..b653442
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/16/c03b1eb7550d00131719b896d543f08c
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/17/8029226c800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/17/8029226c800d00131719b896d543f08c
new file mode 100644
index 0000000..16bf50d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/17/8029226c800d00131719b896d543f08c
@@ -0,0 +1,15 @@
+package com.macaroon.piztor;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+ static class UserInfo {
+ double lat, lon;
+ }
+
+ static class Group {
+
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/17/b039f5b4330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/17/b039f5b4330d00131249f322b63acde8
new file mode 100644
index 0000000..3058eb2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/17/b039f5b4330d00131249f322b63acde8
@@ -0,0 +1,59 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public
+ boolean sendMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/18/00a5e084260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/18/00a5e084260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..270ce20
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/18/00a5e084260d00131a9bb9bc5a5e6171
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 1;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b01e7ce6220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b01e7ce6220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b01e7ce6220d00131a9bb9bc5a5e6171
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b06a41ee310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b06a41ee310d00131249f322b63acde8
new file mode 100644
index 0000000..6c0b0eb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/19/b06a41ee310d00131249f322b63acde8
@@ -0,0 +1,81 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/1001f39b220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/1001f39b220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..ae72ba5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/1001f39b220d00131a9bb9bc5a5e6171
@@ -0,0 +1,17 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ </application>
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/e052bedc670d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/e052bedc670d00131719b896d543f08c
new file mode 100644
index 0000000..c3a9bbe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1b/e052bedc670d00131719b896d543f08c
@@ -0,0 +1,91 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/0084ccf2240d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/0084ccf2240d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..a88b749
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/0084ccf2240d00131a9bb9bc5a5e6171
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="app_name">Piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/c097adfa670d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/c097adfa670d00131719b896d543f08c
new file mode 100644
index 0000000..6966e0f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1c/c097adfa670d00131719b896d543f08c
@@ -0,0 +1,91 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[2];
+ r[0] = new StartStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/1f/305dce064c0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1f/305dce064c0d00131719b896d543f08c
new file mode 100644
index 0000000..4f16d24
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/1f/305dce064c0d00131719b896d543f08c
@@ -0,0 +1,103 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ cout.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2/c0e1f0e53a0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2/c0e1f0e53a0d00131524a793807f338e
new file mode 100644
index 0000000..71415fe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2/c0e1f0e53a0d00131524a793807f338e
@@ -0,0 +1,85 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/22/20302442660d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/22/20302442660d00131719b896d543f08c
new file mode 100644
index 0000000..5dd8ba4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/22/20302442660d00131719b896d543f08c
@@ -0,0 +1,82 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/22/b0553560360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/22/b0553560360d00131249f322b63acde8
new file mode 100644
index 0000000..12a937e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/22/b0553560360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/24/40a1e7d3340d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/24/40a1e7d3340d00131249f322b63acde8
new file mode 100644
index 0000000..c8f52ad
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/24/40a1e7d3340d00131249f322b63acde8
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/24/602725f7320d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/24/602725f7320d00131249f322b63acde8
new file mode 100644
index 0000000..0b8f112
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/24/602725f7320d00131249f322b63acde8
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="app_name">Piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="title_activity_login">Login</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/60c3225c250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/60c3225c250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..e0a3278
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/60c3225c250d00131a9bb9bc5a5e6171
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:singleLine="true"/>
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/703b1352250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/703b1352250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..629f1c1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/703b1352250d00131a9bb9bc5a5e6171
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:singleLine="true">
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/e0a3222e250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/e0a3222e250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..809994b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/25/e0a3222e250d00131a9bb9bc5a5e6171
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:singleLine="true">
+ <requestFocus/>
+ />
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/26/10fa1d9f550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/26/10fa1d9f550d00131719b896d543f08c
new file mode 100644
index 0000000..742b99a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/26/10fa1d9f550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/26/60c51154370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/26/60c51154370d00131249f322b63acde8
new file mode 100644
index 0000000..aa5d479
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/26/60c51154370d00131249f322b63acde8
@@ -0,0 +1,70 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/20fe519b7a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/20fe519b7a0d00131719b896d543f08c
new file mode 100644
index 0000000..c43caef
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/20fe519b7a0d00131719b896d543f08c
@@ -0,0 +1,196 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1, System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/8062fc9c690d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/8062fc9c690d00131719b896d543f08c
new file mode 100644
index 0000000..3245db9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/8062fc9c690d00131719b896d543f08c
@@ -0,0 +1,115 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/b0ff1ddf650d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/b0ff1ddf650d00131719b896d543f08c
new file mode 100644
index 0000000..10ab5c9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/27/b0ff1ddf650d00131719b896d543f08c
@@ -0,0 +1,66 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/005bf7374c0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/005bf7374c0d00131719b896d543f08c
new file mode 100644
index 0000000..a976666
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/005bf7374c0d00131719b896d543f08c
@@ -0,0 +1,103 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/a00c947d310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/a00c947d310d00131249f322b63acde8
new file mode 100644
index 0000000..3ca0dfe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/a00c947d310d00131249f322b63acde8
@@ -0,0 +1,133 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/e0fe6e7a310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/e0fe6e7a310d00131249f322b63acde8
new file mode 100644
index 0000000..043638e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/28/e0fe6e7a310d00131249f322b63acde8
@@ -0,0 +1,76 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ fromGPS = new Handler();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/90dd627f4f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/90dd627f4f0d00131719b896d543f08c
new file mode 100644
index 0000000..75c5057
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/90dd627f4f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/e0b1b2b86a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/e0b1b2b86a0d00131719b896d543f08c
new file mode 100644
index 0000000..6add4a7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2b/e0b1b2b86a0d00131719b896d543f08c
@@ -0,0 +1,137 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "SearchButtonPress";
+ case FetchButtonPress:
+ return "FetchButtonPress";
+ case FocuseButtonPress:
+ return "FocuseButtonPress";
+ case SuccessFetch:
+ return "SuccessFetch";
+ case FailedFetch:
+ return "FailedFetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!!");
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/10589e1d530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/10589e1d530d00131719b896d543f08c
new file mode 100644
index 0000000..f15cf6b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/10589e1d530d00131719b896d543f08c
@@ -0,0 +1,33 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ Handler handler = new Handler() {
+
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/b0547e04360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/b0547e04360d00131249f322b63acde8
new file mode 100644
index 0000000..296d940
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/b0547e04360d00131249f322b63acde8
@@ -0,0 +1,70 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/d03e1c612c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/d03e1c612c0d00131249f322b63acde8
new file mode 100644
index 0000000..4a9b5cd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2d/d03e1c612c0d00131249f322b63acde8
@@ -0,0 +1,30 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ //if (U)
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/2e/80cdc91d560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2e/80cdc91d560d00131719b896d543f08c
new file mode 100644
index 0000000..b7b4329
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/2e/80cdc91d560d00131719b896d543f08c
@@ -0,0 +1,45 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(), l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3/b0bdfe23320d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3/b0bdfe23320d00131249f322b63acde8
new file mode 100644
index 0000000..1d030dd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3/b0bdfe23320d00131249f322b63acde8
@@ -0,0 +1,81 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/30/909951c6530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/30/909951c6530d00131719b896d543f08c
new file mode 100644
index 0000000..a60b62b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/30/909951c6530d00131719b896d543f08c
@@ -0,0 +1,42 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/31/50f2612d2d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/31/50f2612d2d0d00131249f322b63acde8
new file mode 100644
index 0000000..d08b6e2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/31/50f2612d2d0d00131249f322b63acde8
@@ -0,0 +1,35 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ Intent i = new Intent();
+ i.putExtra("haha", new Handler());
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/32/00f713722c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/32/00f713722c0d00131249f322b63acde8
new file mode 100644
index 0000000..055a218
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/32/00f713722c0d00131249f322b63acde8
@@ -0,0 +1,32 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/33/00c793445a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/33/00c793445a0d00131719b896d543f08c
new file mode 100644
index 0000000..a931dae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/33/00c793445a0d00131719b896d543f08c
@@ -0,0 +1,104 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ AppMgr.transam.setHandler(hand);
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/34/b0a7c7dc250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/34/b0a7c7dc250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..7b0bee0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/34/b0a7c7dc250d00131a9bb9bc5a5e6171
@@ -0,0 +1,64 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/34/c0f6cc4a530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/34/c0f6cc4a530d00131719b896d543f08c
new file mode 100644
index 0000000..d68704e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/34/c0f6cc4a530d00131719b896d543f08c
@@ -0,0 +1,37 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/35/4093eb606b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/35/4093eb606b0d00131719b896d543f08c
new file mode 100644
index 0000000..c417882
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/35/4093eb606b0d00131719b896d543f08c
@@ -0,0 +1,149 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/36/90c1e030690d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/36/90c1e030690d00131719b896d543f08c
new file mode 100644
index 0000000..8797872
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/36/90c1e030690d00131719b896d543f08c
@@ -0,0 +1,110 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[1]);
+ actMgr.add
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/36/d038f44e800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/36/d038f44e800d00131719b896d543f08c
new file mode 100644
index 0000000..2e5e2b3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/36/d038f44e800d00131719b896d543f08c
@@ -0,0 +1,89 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Tracker tracker = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tracker = new Tracker(nowAct.getApplicationContext(), fromGPS);
+ tTransam = new Thread(transam);
+ tTransam.start();
+ tGPS = new Thread(tracker);
+ tGPS.start();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/38/003d32e92d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/38/003d32e92d0d00131249f322b63acde8
new file mode 100644
index 0000000..32d14fa
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/38/003d32e92d0d00131249f322b63acde8
@@ -0,0 +1,74 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/50c1a310570d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/50c1a310570d00131719b896d543f08c
new file mode 100644
index 0000000..479c8fb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/50c1a310570d00131719b896d543f08c
@@ -0,0 +1,49 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/70725e2b330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/70725e2b330d00131249f322b63acde8
new file mode 100644
index 0000000..e0cd3be
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/70725e2b330d00131249f322b63acde8
@@ -0,0 +1,84 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c06b1bbd810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c06b1bbd810d00131719b896d543f08c
new file mode 100644
index 0000000..c3fe034
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3a/c06b1bbd810d00131719b896d543f08c
@@ -0,0 +1,23 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3b/908be6833c0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3b/908be6833c0d00131524a793807f338e
new file mode 100644
index 0000000..e0a3278
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3b/908be6833c0d00131524a793807f338e
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:singleLine="true"/>
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3c/e05994772c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3c/e05994772c0d00131249f322b63acde8
new file mode 100644
index 0000000..1f9d9b0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3c/e05994772c0d00131249f322b63acde8
@@ -0,0 +1,32 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/00def6177b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/00def6177b0d00131719b896d543f08c
new file mode 100644
index 0000000..4fb4aa7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/00def6177b0d00131719b896d543f08c
@@ -0,0 +1,196 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1, System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/1089ba593d0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/1089ba593d0d00131524a793807f338e
new file mode 100644
index 0000000..06c1791
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/1089ba593d0d00131524a793807f338e
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ </application>
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/70b085c6280d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/70b085c6280d00131249f322b63acde8
new file mode 100644
index 0000000..54242d5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3e/70b085c6280d00131249f322b63acde8
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/3f/20d16da8790d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3f/20d16da8790d00131719b896d543f08c
new file mode 100644
index 0000000..cc0021f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/3f/20d16da8790d00131719b896d543f08c
@@ -0,0 +1,191 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4/208b4473550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4/208b4473550d00131719b896d543f08c
new file mode 100644
index 0000000..da24dd6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4/208b4473550d00131719b896d543f08c
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4/d06a2613260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4/d06a2613260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..8ef1739
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4/d06a2613260d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken
+ }
+
+
+ static HashMap<Class<?>, HashMap<Event, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Event event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, Event i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Event, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Event, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Event, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/40/d0cd94022e0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/40/d0cd94022e0d00131249f322b63acde8
new file mode 100644
index 0000000..e2f6ef1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/40/d0cd94022e0d00131249f322b63acde8
@@ -0,0 +1,76 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromeGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ fromGPS = new Handler();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/41/c042e3c3810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/41/c042e3c3810d00131719b896d543f08c
new file mode 100644
index 0000000..c3fe034
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/41/c042e3c3810d00131719b896d543f08c
@@ -0,0 +1,23 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/42/202de8244f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/42/202de8244f0d00131719b896d543f08c
new file mode 100644
index 0000000..8ce1e90
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/42/202de8244f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/43/d08732c36a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/43/d08732c36a0d00131719b896d543f08c
new file mode 100644
index 0000000..00f4f6a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/43/d08732c36a0d00131719b896d543f08c
@@ -0,0 +1,137 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "SearchButtonPress";
+ case FetchButtonPress:
+ return "FetchButtonPress";
+ case FocuseButtonPress:
+ return "FocuseButtonPress";
+ case SuccessFetch:
+ return "SuccessFetch";
+ case FailedFetch:
+ return "FailedFetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/43/e05e9ddd800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/43/e05e9ddd800d00131719b896d543f08c
new file mode 100644
index 0000000..6173bd0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/43/e05e9ddd800d00131719b896d543f08c
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/00604d29230d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/00604d29230d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..c33f70a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/00604d29230d00131a9bb9bc5a5e6171
@@ -0,0 +1,6 @@
+package com.macaroon.piztor;
+
+public class PiztorExcepiton extends Exception{
+ private static final long serialVersionUID = -7147530695009854988L;
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/50b1dc18530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/50b1dc18530d00131719b896d543f08c
new file mode 100644
index 0000000..2fdaba1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/50b1dc18530d00131719b896d543f08c
@@ -0,0 +1,23 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/b0ce412f550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/b0ce412f550d00131719b896d543f08c
new file mode 100644
index 0000000..ad82cc8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/44/b0ce412f550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public location getLocation() {
+ try {
+
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/48/f02ec265260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/48/f02ec265260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..c75989c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/48/f02ec265260d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken
+ }
+
+
+ static HashMap<Class<?>, HashMap<Event, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(Event event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Event event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, Event i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Event, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Event, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Event, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, Event.hasToken, Login.class);
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/49/10547e20330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/49/10547e20330d00131249f322b63acde8
new file mode 100644
index 0000000..6b756f2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/49/10547e20330d00131249f322b63acde8
@@ -0,0 +1,83 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/49/d0e63f99550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/49/d0e63f99550d00131719b896d543f08c
new file mode 100644
index 0000000..34a8b04
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/49/d0e63f99550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ return location;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4a/2006f95e2b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4a/2006f95e2b0d00131249f322b63acde8
new file mode 100644
index 0000000..000f373
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4a/2006f95e2b0d00131249f322b63acde8
@@ -0,0 +1,14 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Ask Location //
+//--------------------------------------//
+
+public class ReqLocation extends Req{
+ int gid; //group id;
+
+ ReqLocation(int token,int groupid,long time,long alive){
+ super(3,token,time,alive); //for type 3
+ gid = groupid;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4b/60e6bdcd310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4b/60e6bdcd310d00131249f322b63acde8
new file mode 100644
index 0000000..401f985
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4b/60e6bdcd310d00131249f322b63acde8
@@ -0,0 +1,34 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/10fd771f320d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/10fd771f320d00131249f322b63acde8
new file mode 100644
index 0000000..9db1a78
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/10fd771f320d00131249f322b63acde8
@@ -0,0 +1,81 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+
+ //Event
+
+ final static int noToken = 101;
+
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2088d09b260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2088d09b260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..1ce492c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/2088d09b260d00131a9bb9bc5a5e6171
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30e8770c260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30e8770c260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..3a65842
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30e8770c260d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken
+ }
+
+
+ static HashMap<Class<?>, HashMap<Event, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Event event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Event, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Event, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Event, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d04b30d8520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d04b30d8520d00131719b896d543f08c
new file mode 100644
index 0000000..6623a65
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4c/d04b30d8520d00131719b896d543f08c
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.snedMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/40eb8393390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/40eb8393390d00131524a793807f338e
new file mode 100644
index 0000000..71415fe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/40eb8393390d00131524a793807f338e
@@ -0,0 +1,85 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/5025c807320d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/5025c807320d00131249f322b63acde8
new file mode 100644
index 0000000..a06c885
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/5025c807320d00131249f322b63acde8
@@ -0,0 +1,82 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+
+ static ActivityStatus status;
+
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/60e7a753340d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/60e7a753340d00131249f322b63acde8
new file mode 100644
index 0000000..bfd9398
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/60e7a753340d00131249f322b63acde8
@@ -0,0 +1,58 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/709e4dd5770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/709e4dd5770d00131719b896d543f08c
new file mode 100644
index 0000000..4e44cb4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/709e4dd5770d00131719b896d543f08c
@@ -0,0 +1,193 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ autodate = new Timer();
+
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/d078d3c5670d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/d078d3c5670d00131719b896d543f08c
new file mode 100644
index 0000000..051eaf6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4e/d078d3c5670d00131719b896d543f08c
@@ -0,0 +1,87 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20629bba350d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20629bba350d00131249f322b63acde8
new file mode 100644
index 0000000..1bb7e9a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/4f/20629bba350d00131249f322b63acde8
@@ -0,0 +1,66 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5/c09802f4810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5/c09802f4810d00131719b896d543f08c
new file mode 100644
index 0000000..c1827b4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5/c09802f4810d00131719b896d543f08c
@@ -0,0 +1,28 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+
+ static void init() {
+ mp = new HashMap<Integer, Group>();
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/1058bc287a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/1058bc287a0d00131719b896d543f08c
new file mode 100644
index 0000000..7df8334
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/1058bc287a0d00131719b896d543f08c
@@ -0,0 +1,195 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1, System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/d01e0d2c7c0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/d01e0d2c7c0d00131719b896d543f08c
new file mode 100644
index 0000000..5315060
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/d01e0d2c7c0d00131719b896d543f08c
@@ -0,0 +1,202 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ else {
+ ReqUpdate r = new ReqUpdate(UserInfo.token,
+ l.getLatitude(), l.getLongitude(),
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/e043216f2c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/e043216f2c0d00131249f322b63acde8
new file mode 100644
index 0000000..2771596
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/51/e043216f2c0d00131249f322b63acde8
@@ -0,0 +1,31 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/80fa1082370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/80fa1082370d00131249f322b63acde8
new file mode 100644
index 0000000..5b68421
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/80fa1082370d00131249f322b63acde8
@@ -0,0 +1,80 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/908340203a0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/908340203a0d00131524a793807f338e
new file mode 100644
index 0000000..08d6230
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/908340203a0d00131524a793807f338e
@@ -0,0 +1,101 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/b0f7e5f4300d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/b0f7e5f4300d00131249f322b63acde8
new file mode 100644
index 0000000..3ca0dfe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/52/b0f7e5f4300d00131249f322b63acde8
@@ -0,0 +1,133 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/20300883550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/20300883550d00131719b896d543f08c
new file mode 100644
index 0000000..c808aa2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/20300883550d00131719b896d543f08c
@@ -0,0 +1,67 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/a06c6384500d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/a06c6384500d00131719b896d543f08c
new file mode 100644
index 0000000..dd6b5ed
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/a06c6384500d00131719b896d543f08c
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:textColor="@android:color/black"
+ android:singleLine="true"/>
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/black"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:textColor="@android:color/white"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/b0d150cf4d0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/b0d150cf4d0d00131719b896d543f08c
new file mode 100644
index 0000000..8ce051f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/53/b0d150cf4d0d00131719b896d543f08c
@@ -0,0 +1,149 @@
+<?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="wrap_content"
+ android:background="@drawable/topbar_background"
+ android:orientation="horizontal" >
+
+ <RelativeLayout
+ android:id="@+id/settings_headbar_layout"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true" >
+
+ <include layout="@layout/settings_headbar" />
+ </RelativeLayout>
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="48dip"
+ android:orientation="vertical" >
+
+ <TextView
+ android:id="@+id/settings_GPSrefreshrate_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="GPS refresh rate"
+ android:layout_gravity="center"
+ android:layout_marginTop="10dip"
+ android:textSize="20dip"
+ android:textColor="@android:color/white" />
+
+ <SeekBar
+ android:id="@+id/settings_GPSrefreshrate"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+
+ <!-- LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ -->
+ <!-- TextView
+ android:id="@+id/GPS_min_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_marginLeft="10dip"
+ android:text="1s"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"/-->
+
+ <!--TextView
+ android:id="@+id/GPS_max_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:text="30s"
+ android:textColor="@android:color/white"
+ android:textSize="10dip" /-->
+
+ <!-- /LinearLayout --> <!-- end of gps text -->
+
+ <ImageView
+ android:id="@+id/settings_seperator1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/horizontal_line" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/settings_sex_layout"
+ android:layout_marginTop="10dip">
+
+ <TextView
+ android:id="@+id/settings_sex_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dip"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"
+ android:text="@string/show_sex" />
+
+ <CheckBox
+ android:id="@+id/settings_show_male"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/male"
+ android:textColor="@android:color/white"/>
+
+
+ <CheckBox
+ android:id="@+id/settings_show_female"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/female"
+ android:textColor="@android:color/white"/>
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/settings_seperator2"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/horizontal_line" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/settings_team_layout"
+ android:layout_marginTop="10dip">
+
+ <TextView
+ android:id="@+id/settings_team_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dip"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"
+ android:text="@string/show_team" />
+
+ <RadioButton
+ android:id="@+id/settings_team_mine"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/mine"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"/>
+
+ <RadioButton
+ android:id="@+id/settings_team_all"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/all"
+ android:textSize="20dip"
+ android:textColor="@android:color/white"/>
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/settings_seperator3"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/horizontal_line" />
+
+ </LinearLayout>
+ </RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/54/105bdc86800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/54/105bdc86800d00131719b896d543f08c
new file mode 100644
index 0000000..02ab321
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/54/105bdc86800d00131719b896d543f08c
@@ -0,0 +1,19 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+ static class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ static class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0697f702b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0697f702b0d00131249f322b63acde8
new file mode 100644
index 0000000..5b597a4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0697f702b0d00131249f322b63acde8
@@ -0,0 +1,15 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to login //
+//--------------------------------------//
+
+public class ResLogin extends Res{
+ int t; //user token
+
+ ResLogin(int token,int status){
+ super(0,status); //for type 0
+ t = token;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/56/70ea45fe4b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/56/70ea45fe4b0d00131719b896d543f08c
new file mode 100644
index 0000000..cc59885
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/56/70ea45fe4b0d00131719b896d543f08c
@@ -0,0 +1,102 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/56/e0d3f982370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/56/e0d3f982370d00131249f322b63acde8
new file mode 100644
index 0000000..270e26b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/56/e0d3f982370d00131249f322b63acde8
@@ -0,0 +1,96 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/58/c0259769680d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/58/c0259769680d00131719b896d543f08c
new file mode 100644
index 0000000..217c86a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/58/c0259769680d00131719b896d543f08c
@@ -0,0 +1,92 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/59/604165f5520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/59/604165f5520d00131719b896d543f08c
new file mode 100644
index 0000000..de79560
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/59/604165f5520d00131719b896d543f08c
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/59/b0dfede04f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/59/b0dfede04f0d00131719b896d543f08c
new file mode 100644
index 0000000..3ba7c18
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/59/b0dfede04f0d00131719b896d543f08c
@@ -0,0 +1,21 @@
+<resources>
+
+ <string name="app_name">piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="settings">Settings</string>
+ <string name="search">Search</string>
+ <string name="fetch">Fetch</string>
+ <string name="checkin">Checkin</string>
+ <string name="focus">Focus</string>
+ <string name="show_sex">Show sex: </string>
+ <string name="male">Male</string>
+ <string name="female">Female</string>
+ <string name="show_team">Show team: </string>
+ <string name="all">All</string>
+ <string name="mine">Mine</string>
+ <string name="title_activity_login">Login</string>
+ <string name="title_activity_main">Main</string>
+
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/1067b967520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/1067b967520d00131719b896d543f08c
new file mode 100644
index 0000000..bd67eb4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/1067b967520d00131719b896d543f08c
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 1; // 1 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Controller newController, Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/20289dc1250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/20289dc1250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..9259786
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5a/20289dc1250d00131a9bb9bc5a5e6171
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/a01d01234f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/a01d01234f0d00131719b896d543f08c
new file mode 100644
index 0000000..5ef6d3d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/a01d01234f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/b09b88be520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/b09b88be520d00131719b896d543f08c
new file mode 100644
index 0000000..5c0e0de
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5b/b09b88be520d00131719b896d543f08c
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 1; // 1 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/40ac8a2a760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/40ac8a2a760d00131719b896d543f08c
new file mode 100644
index 0000000..b542348
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/40ac8a2a760d00131719b896d543f08c
@@ -0,0 +1,174 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation r = (ResLocation) m.obj;
+ Vector<Rlocation> l = r.l;
+ for (int i = 0; i < n; i++) {
+ System.out.println(l.get(i).lat + " " + l.get(i).lot);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a0a26974330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a0a26974330d00131249f322b63acde8
new file mode 100644
index 0000000..0b0b39c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a0a26974330d00131249f322b63acde8
@@ -0,0 +1,53 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/10ddd0bd550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/10ddd0bd550d00131719b896d543f08c
new file mode 100644
index 0000000..5356063
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/10ddd0bd550d00131719b896d543f08c
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/b06ac273760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/b06ac273760d00131719b896d543f08c
new file mode 100644
index 0000000..70fe77c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5d/b06ac273760d00131719b896d543f08c
@@ -0,0 +1,174 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation r = (ResLocation) m.obj;
+ for (int i = 0; i < r.n; i++) {
+ System.out.println(r.l.get(i).lat + " " + r.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5e/5026feaa340d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5e/5026feaa340d00131249f322b63acde8
new file mode 100644
index 0000000..4aaa9a5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5e/5026feaa340d00131249f322b63acde8
@@ -0,0 +1,61 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ actMgr.trigger(AppMgr.loginSuccess);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/5f/40817ce9810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5f/40817ce9810d00131719b896d543f08c
new file mode 100644
index 0000000..18e7b2b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/5f/40817ce9810d00131719b896d543f08c
@@ -0,0 +1,28 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+
+ static void init() {
+ mp = new HashMap<Integer, Group>;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6/509d88ee670d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6/509d88ee670d00131719b896d543f08c
new file mode 100644
index 0000000..7630c2a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6/509d88ee670d00131719b896d543f08c
@@ -0,0 +1,91 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0fbac51760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0fbac51760d00131719b896d543f08c
new file mode 100644
index 0000000..460b7e4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/60/c0fbac51760d00131719b896d543f08c
@@ -0,0 +1,173 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation r = (ResLocation) m.obj;
+ for (int i = 0; i < r.n; i++) {
+ System.out.println(r.l.get(i).lat + " " + r.l.get(i).lot);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/61/503835816a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/61/503835816a0d00131719b896d543f08c
new file mode 100644
index 0000000..1ebf61c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/61/503835816a0d00131719b896d543f08c
@@ -0,0 +1,116 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8
new file mode 100644
index 0000000..c31924d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8
@@ -0,0 +1,132 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/10afe9c2560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/10afe9c2560d00131719b896d543f08c
new file mode 100644
index 0000000..d2c7c5f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/10afe9c2560d00131719b896d543f08c
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ message = new Message();
+ message.what = 0;
+ message.obj = location;
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message = new Message();
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/7015966a370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/7015966a370d00131249f322b63acde8
new file mode 100644
index 0000000..5254e91
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/7015966a370d00131249f322b63acde8
@@ -0,0 +1,83 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/c008735d330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/c008735d330d00131249f322b63acde8
new file mode 100644
index 0000000..4660356
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/65/c008735d330d00131249f322b63acde8
@@ -0,0 +1,134 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; // port
+ public String i; // ip
+ Thread thread;
+ Handler core;
+ Handler recall; // recall
+ Queue<Req> reqtask; // request task
+
+ Transam(String ip, int port, Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r) {
+ reqtask.offer(r);
+
+ }
+
+ public void run() { // start the main timer
+ // TimerTask tmain = new Timertk();
+ // mtimer = new Timer();
+ // mtimer.schedule(tmain, 100, 100); //check the queue for every 100
+ // msec
+
+ while (true) {
+ if (running == false) {
+
+ if (!reqtask.isEmpty()) { // poll the head request
+ req = reqtask.poll();
+ if (req.time + req.alive < System.currentTimeMillis()) { // time
+ // out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ } else { // run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i, p);
+ client.sendMsg(req, recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/66/108b1d6a2c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/66/108b1d6a2c0d00131249f322b63acde8
new file mode 100644
index 0000000..0547f4f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/66/108b1d6a2c0d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/67/7089926a2b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/67/7089926a2b0d00131249f322b63acde8
new file mode 100644
index 0000000..727eaa3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/67/7089926a2b0d00131249f322b63acde8
@@ -0,0 +1,13 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to update location //
+//--------------------------------------//
+
+public class ResUpdate extends Res{
+
+ ResUpdate(int status){
+ super(2,status); //for type 2
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/67/80e1a600230d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/67/80e1a600230d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..c846594
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/67/80e1a600230d00131a9bb9bc5a5e6171
@@ -0,0 +1,5 @@
+package com.macaroon.piztor;
+
+public class PiztorExcepiton {
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/40af41ee250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/40af41ee250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..bab59bd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/40af41ee250d00131a9bb9bc5a5e6171
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 1;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/50c980702b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/50c980702b0d00131249f322b63acde8
new file mode 100644
index 0000000..5b597a4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6b/50c980702b0d00131249f322b63acde8
@@ -0,0 +1,15 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to login //
+//--------------------------------------//
+
+public class ResLogin extends Res{
+ int t; //user token
+
+ ResLogin(int token,int status){
+ super(0,status); //for type 0
+ t = token;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6c/e0cb25df390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6c/e0cb25df390d00131524a793807f338e
new file mode 100644
index 0000000..a4cce6a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6c/e0cb25df390d00131524a793807f338e
@@ -0,0 +1,99 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6d/30ed916a2b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6d/30ed916a2b0d00131249f322b63acde8
new file mode 100644
index 0000000..727eaa3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6d/30ed916a2b0d00131249f322b63acde8
@@ -0,0 +1,13 @@
+package com.macaroon.piztor;
+
+
+//--------------------------------------//
+// Respond to update location //
+//--------------------------------------//
+
+public class ResUpdate extends Res{
+
+ ResUpdate(int status){
+ super(2,status); //for type 2
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a03ae288270d00131050e648e11def2a b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a03ae288270d00131050e648e11def2a
new file mode 100644
index 0000000..3fdce81
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a03ae288270d00131050e648e11def2a
@@ -0,0 +1,28 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/6f/0020dd3c560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6f/0020dd3c560d00131719b896d543f08c
new file mode 100644
index 0000000..3d9493d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/6f/0020dd3c560d00131719b896d543f08c
@@ -0,0 +1,47 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.setStatus(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/102ad2cb800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/102ad2cb800d00131719b896d543f08c
new file mode 100644
index 0000000..62f8ddf
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/102ad2cb800d00131719b896d543f08c
@@ -0,0 +1,20 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+
+ static class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ static class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/10a4d736550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/10a4d736550d00131719b896d543f08c
new file mode 100644
index 0000000..7f1f47e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/10a4d736550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/806200684f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/806200684f0d00131719b896d543f08c
new file mode 100644
index 0000000..51b8a69
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/806200684f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/activity_settings" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/b00ff61a380d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/b00ff61a380d00131249f322b63acde8
new file mode 100644
index 0000000..15022f6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/b00ff61a380d00131249f322b63acde8
@@ -0,0 +1,97 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0c8a1b1330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0c8a1b1330d00131249f322b63acde8
new file mode 100644
index 0000000..6c8a359
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0c8a1b1330d00131249f322b63acde8
@@ -0,0 +1,58 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ boolean sendMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0e31801750d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0e31801750d00131719b896d543f08c
new file mode 100644
index 0000000..e67e5cf
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7/f0e31801750d00131719b896d543f08c
@@ -0,0 +1,160 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what > 100) {
+
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/501f63f7750d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/501f63f7750d00131719b896d543f08c
new file mode 100644
index 0000000..3d2621d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/501f63f7750d00131719b896d543f08c
@@ -0,0 +1,168 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case value:
+
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/803f3d632b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/803f3d632b0d00131249f322b63acde8
new file mode 100644
index 0000000..294cae3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/803f3d632b0d00131249f322b63acde8
@@ -0,0 +1,16 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// authentication //
+//--------------------------------------//
+
+public class ReqLogin extends Req{
+ String user; //username
+ String pass; //password
+
+ ReqLogin(String u,String p,long time,long alive){
+ super(0,0,time,alive); //for type 0
+ user = u;
+ pass = p;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/c00737b35b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/c00737b35b0d00131719b896d543f08c
new file mode 100644
index 0000000..4556ca2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/c00737b35b0d00131719b896d543f08c
@@ -0,0 +1,53 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/e041e862500d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/e041e862500d00131719b896d543f08c
new file mode 100644
index 0000000..7b27646
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/70/e041e862500d00131719b896d543f08c
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:textColor="@android:color/white"
+ android:singleLine="true"/>
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:textColor="@android:color/white"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/71/3084ff9b220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/71/3084ff9b220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..548ca95
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/71/3084ff9b220d00131a9bb9bc5a5e6171
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/71/b0d73212550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/71/b0d73212550d00131719b896d543f08c
new file mode 100644
index 0000000..8f887e6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/71/b0d73212550d00131719b896d543f08c
@@ -0,0 +1,67 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/40aa3d7d680d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/40aa3d7d680d00131719b896d543f08c
new file mode 100644
index 0000000..7d0869e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/40aa3d7d680d00131719b896d543f08c
@@ -0,0 +1,109 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[1]);
+
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/7046908d340d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/7046908d340d00131249f322b63acde8
new file mode 100644
index 0000000..bce14da
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/7046908d340d00131249f322b63acde8
@@ -0,0 +1,61 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/b0a7a169550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/b0a7a169550d00131719b896d543f08c
new file mode 100644
index 0000000..d20c14a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/72/b0a7a169550d00131719b896d543f08c
@@ -0,0 +1,240 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ return location;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/006fa23d5a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/006fa23d5a0d00131719b896d543f08c
new file mode 100644
index 0000000..a931dae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/006fa23d5a0d00131719b896d543f08c
@@ -0,0 +1,104 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ AppMgr.transam.setHandler(hand);
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c01d2030760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c01d2030760d00131719b896d543f08c
new file mode 100644
index 0000000..166091d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c01d2030760d00131719b896d543f08c
@@ -0,0 +1,173 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation r = (ResLocation) m.obj;
+ for (int i = 0; i < n; i++) {
+ System.out.println(r.l.get(i).lat + " " + r.l.get(i).lot);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c08e77fb780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c08e77fb780d00131719b896d543f08c
new file mode 100644
index 0000000..e90c2ff
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/73/c08e77fb780d00131719b896d543f08c
@@ -0,0 +1,192 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/40c025d4770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/40c025d4770d00131719b896d543f08c
new file mode 100644
index 0000000..75db4de
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/40c025d4770d00131719b896d543f08c
@@ -0,0 +1,182 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ autodate = new Timer();
+
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/80e6f54e800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/80e6f54e800d00131719b896d543f08c
new file mode 100644
index 0000000..ebce59c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/80e6f54e800d00131719b896d543f08c
@@ -0,0 +1,106 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ @SuppressLint("HandlerLeak")
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ //TODO log out failed!
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ AppMgr.transam.setHandler(hand);
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/901b4f2c550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/901b4f2c550d00131719b896d543f08c
new file mode 100644
index 0000000..178f6b6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/74/901b4f2c550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public void getLocation() {
+ try {
+
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/75/601f31e7390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/75/601f31e7390d00131524a793807f338e
new file mode 100644
index 0000000..b982501
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/75/601f31e7390d00131524a793807f338e
@@ -0,0 +1,99 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/75/b047617e310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/75/b047617e310d00131249f322b63acde8
new file mode 100644
index 0000000..c31924d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/75/b047617e310d00131249f322b63acde8
@@ -0,0 +1,132 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/76/207ce70b330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/76/207ce70b330d00131249f322b63acde8
new file mode 100644
index 0000000..4a180d9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/76/207ce70b330d00131249f322b63acde8
@@ -0,0 +1,82 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/76/608e011f4f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/76/608e011f4f0d00131719b896d543f08c
new file mode 100644
index 0000000..75c5057
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/76/608e011f4f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/77/e09023cf310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/77/e09023cf310d00131249f322b63acde8
new file mode 100644
index 0000000..2b4cf6c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/77/e09023cf310d00131249f322b63acde8
@@ -0,0 +1,35 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ AppMgr.fromTransam
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/77/f09da14b290d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/77/f09da14b290d00131249f322b63acde8
new file mode 100644
index 0000000..2b15092
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/77/f09da14b290d00131249f322b63acde8
@@ -0,0 +1,30 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ id = "initAct";
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/78/d014d7fc220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/78/d014d7fc220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/78/d014d7fc220d00131a9bb9bc5a5e6171
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/79/2065267c2c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/79/2065267c2c0d00131249f322b63acde8
new file mode 100644
index 0000000..c78bc91
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/79/2065267c2c0d00131249f322b63acde8
@@ -0,0 +1,33 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/79/90c475984b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/79/90c475984b0d00131719b896d543f08c
new file mode 100644
index 0000000..5be3de8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/79/90c475984b0d00131719b896d543f08c
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ for (Integer i : mp.get(nowStatus).keySet())
+ System.out.println(i);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7a/906f6f46800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7a/906f6f46800d00131719b896d543f08c
new file mode 100644
index 0000000..cc44346
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7a/906f6f46800d00131719b896d543f08c
@@ -0,0 +1,9 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/5015928e500d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/5015928e500d00131719b896d543f08c
new file mode 100644
index 0000000..75c5057
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/5015928e500d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/b0d770546b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/b0d770546b0d00131719b896d543f08c
new file mode 100644
index 0000000..e888998
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7b/b0d770546b0d00131719b896d543f08c
@@ -0,0 +1,151 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0024b04260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0024b04260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..09e1dbc
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0024b04260d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken
+ }
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0272c32560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0272c32560d00131719b896d543f08c
new file mode 100644
index 0000000..7a124ca
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7c/f0272c32560d00131719b896d543f08c
@@ -0,0 +1,46 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/10fd3cab810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/10fd3cab810d00131719b896d543f08c
new file mode 100644
index 0000000..dad95a8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/10fd3cab810d00131719b896d543f08c
@@ -0,0 +1,23 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/e021b37a330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/e021b37a330d00131249f322b63acde8
new file mode 100644
index 0000000..4aa65b2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7d/e021b37a330d00131249f322b63acde8
@@ -0,0 +1,54 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/00390e21280d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/00390e21280d00131249f322b63acde8
new file mode 100644
index 0000000..422fa96
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/00390e21280d00131249f322b63acde8
@@ -0,0 +1,29 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ id = "initAct";
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/a0c4a019530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/a0c4a019530d00131719b896d543f08c
new file mode 100644
index 0000000..52bb70a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7e/a0c4a019530d00131719b896d543f08c
@@ -0,0 +1,33 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ Handler handler = new Handler() {
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/7f/5045a039260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7f/5045a039260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..b40257e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/7f/5045a039260d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken
+ }
+
+
+ static HashMap<Class<?>, HashMap<Event, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(Event event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Event event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, Event i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Event, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Event, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Event, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/208ac81c560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/208ac81c560d00131719b896d543f08c
new file mode 100644
index 0000000..8af3bb7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/208ac81c560d00131719b896d543f08c
@@ -0,0 +1,45 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(), l.getLongitude(), time, alive)
+ AppMgr.transam.send();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/40515524760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/40515524760d00131719b896d543f08c
new file mode 100644
index 0000000..9464802
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/40515524760d00131719b896d543f08c
@@ -0,0 +1,173 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ Vector<Rlocation> l =(Vector<Rlocation>) m.obj;
+ for (int i = 0; i < n; i++) {
+ System.out.println(l.get(i).lat + " " + l.get(i).lot);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb4e800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb4e800d00131719b896d543f08c
new file mode 100644
index 0000000..929c0bb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8/c064fb4e800d00131719b896d543f08c
@@ -0,0 +1,8 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/80/706d105f250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/80/706d105f250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..629f1c1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/80/706d105f250d00131a9bb9bc5a5e6171
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:singleLine="true">
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/80/9080b2de4d0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/80/9080b2de4d0d00131719b896d543f08c
new file mode 100644
index 0000000..69760c0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/80/9080b2de4d0d00131719b896d543f08c
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="48dip"
+ android:orientation="horizontal"
+ android:background="@drawable/footbar_background" >
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_search_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_search"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_search_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_search"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/search"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_fetch_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_fetch"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_fetch_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_fetch_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/fetch"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_focus_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_focus"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_focus_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_focus_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/focus"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_settings_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_settings"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_settings_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_settings_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:text="@string/settings"/>
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/10091b6d2b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/10091b6d2b0d00131249f322b63acde8
new file mode 100644
index 0000000..eb90840
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/10091b6d2b0d00131249f322b63acde8
@@ -0,0 +1,18 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+//--------------------------------------//
+// Location Info //
+//--------------------------------------//
+
+public class ResLocation extends Res{
+ Vector<Rlocation> l; //vector for location info
+ int n; //number of location info
+
+ ResLocation(int num,Vector<Rlocation> locationvec){
+ super(3,255); //for type 3
+ l = locationvec;
+ n = num;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/60af4207370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/60af4207370d00131249f322b63acde8
new file mode 100644
index 0000000..7033236
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/60af4207370d00131249f322b63acde8
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ //for (Integer i : mp.get(nowStatus).keySet())
+ //System.out.println(i);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/d0e51ef7320d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/d0e51ef7320d00131249f322b63acde8
new file mode 100644
index 0000000..c2f876b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/81/d0e51ef7320d00131249f322b63acde8
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ </application>
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/82/70f000a8770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/82/70f000a8770d00131719b896d543f08c
new file mode 100644
index 0000000..8991894
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/82/70f000a8770d00131719b896d543f08c
@@ -0,0 +1,178 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/82/909cd18d310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/82/909cd18d310d00131249f322b63acde8
new file mode 100644
index 0000000..9f6ec22
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/82/909cd18d310d00131249f322b63acde8
@@ -0,0 +1,133 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; // port
+ public String i; // ip
+ Thread thread;
+ Handler core;
+ Handler recall; // recall
+ Queue<Req> reqtask; // request task
+
+ Transam(String ip, int port, Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r) {
+ reqtask.offer(r);
+
+ }
+
+ public void run() { // start the main timer
+ // TimerTask tmain = new Timertk();
+ // mtimer = new Timer();
+ // mtimer.schedule(tmain, 100, 100); //check the queue for every 100
+ // msec
+
+ while (true) {
+ if (running == false) {
+
+ if (!reqtask.isEmpty()) { // poll the head request
+ req = reqtask.poll();
+ if (req.time + req.alive < System.currentTimeMillis()) { // time
+ // out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ } else { // run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i, p);
+ client.sendMsg(req, recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/30d53cf3280d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/30d53cf3280d00131249f322b63acde8
new file mode 100644
index 0000000..54242d5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/30d53cf3280d00131249f322b63acde8
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/700a3adf290d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/700a3adf290d00131249f322b63acde8
new file mode 100644
index 0000000..63770f2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/700a3adf290d00131249f322b63acde8
@@ -0,0 +1,31 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/901e3ac8250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/901e3ac8250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..7b0bee0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/901e3ac8250d00131a9bb9bc5a5e6171
@@ -0,0 +1,64 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c01bf7ee550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c01bf7ee550d00131719b896d543f08c
new file mode 100644
index 0000000..3019420
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c01bf7ee550d00131719b896d543f08c
@@ -0,0 +1,67 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ message = new Message();
+ message.what = 0;
+ message.obj = location;
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c080c339520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c080c339520d00131719b896d543f08c
new file mode 100644
index 0000000..38a6106
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/84/c080c339520d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.example.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 1; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public void getLocation() {
+ try {
+
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/86/90090791270d00131050e648e11def2a b/client/.metadata/.plugins/org.eclipse.core.resources/.history/86/90090791270d00131050e648e11def2a
new file mode 100644
index 0000000..c92af4b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/86/90090791270d00131050e648e11def2a
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Login extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/86/b0ac05a2810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/86/b0ac05a2810d00131719b896d543f08c
new file mode 100644
index 0000000..2b10d1b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/86/b0ac05a2810d00131719b896d543f08c
@@ -0,0 +1,23 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+// static HashMap<Integer, Group> mp;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/201980b5760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/201980b5760d00131719b896d543f08c
new file mode 100644
index 0000000..90bee98
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/201980b5760d00131719b896d543f08c
@@ -0,0 +1,176 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation r = (ResLocation) m.obj;
+ for (int i = 0; i < r.n; i++) {
+ System.out.println(r.l.get(i).lat + " " + r.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate r = (ResUpdate) m.obj;
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/5019e3b3260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/5019e3b3260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..4df6b44
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/5019e3b3260d00131a9bb9bc5a5e6171
@@ -0,0 +1,28 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/50ba72af3b0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/50ba72af3b0d00131524a793807f338e
new file mode 100644
index 0000000..f59c543
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/50ba72af3b0d00131524a793807f338e
@@ -0,0 +1,7 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+ static String ip = "123.123.123.123";
+ static int port = 9990;
+ static int token = -1;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0e225b3310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0e225b3310d00131249f322b63acde8
new file mode 100644
index 0000000..a93105a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/87/d0e225b3310d00131249f322b63acde8
@@ -0,0 +1,80 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ fromGPS = new Handler();
+ new Thread(transam).run();
+
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/50d41de3290d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/50d41de3290d00131249f322b63acde8
new file mode 100644
index 0000000..6fbccda
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/50d41de3290d00131249f322b63acde8
@@ -0,0 +1,30 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0228599540d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0228599540d00131719b896d543f08c
new file mode 100644
index 0000000..180c21c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0228599540d00131719b896d543f08c
@@ -0,0 +1,87 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Tracker tracker = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tracker = new Tracker(nowAct.getApplicationContext(), fromGPS);
+ tTransam = new Thread(transam);
+ tTransam.start();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0b797df250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0b797df250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..bb16d98
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/88/a0b797df250d00131a9bb9bc5a5e6171
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/89/0029672d5a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/89/0029672d5a0d00131719b896d543f08c
new file mode 100644
index 0000000..d5a6059
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/89/0029672d5a0d00131719b896d543f08c
@@ -0,0 +1,34 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token == -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0860fa32d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0860fa32d0d00131249f322b63acde8
new file mode 100644
index 0000000..4564070
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8a/c0860fa32d0d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/908f0c6a360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/908f0c6a360d00131249f322b63acde8
new file mode 100644
index 0000000..0e5adb3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/908f0c6a360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/d056c37d2d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/d056c37d2d0d00131249f322b63acde8
new file mode 100644
index 0000000..d870b73
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8b/d056c37d2d0d00131249f322b63acde8
@@ -0,0 +1,36 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ Intent i = new Intent();
+ i.putExtra("haha", new Handler());
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10eb0b46390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10eb0b46390d00131524a793807f338e
new file mode 100644
index 0000000..01b87ff
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/10eb0b46390d00131524a793807f338e
@@ -0,0 +1,84 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/e09a6d15560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/e09a6d15560d00131719b896d543f08c
new file mode 100644
index 0000000..8839e04
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8c/e09a6d15560d00131719b896d543f08c
@@ -0,0 +1,45 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, , longitude, time, alive)
+ AppMgr.transam.send();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/10e89b06370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/10e89b06370d00131249f322b63acde8
new file mode 100644
index 0000000..81fa6f2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/10e89b06370d00131249f322b63acde8
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ for (Integer i : mp.get(nowStatus).keySet())
+ System.out.println(i);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/80e1dd33540d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/80e1dd33540d00131719b896d543f08c
new file mode 100644
index 0000000..b89f1ab
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/80e1dd33540d00131719b896d543f08c
@@ -0,0 +1,85 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.start();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a08e799e530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a08e799e530d00131719b896d543f08c
new file mode 100644
index 0000000..d68704e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a08e799e530d00131719b896d543f08c
@@ -0,0 +1,37 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0b8e0b1310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0b8e0b1310d00131249f322b63acde8
new file mode 100644
index 0000000..4884d31
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/a0b8e0b1310d00131249f322b63acde8
@@ -0,0 +1,78 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ fromGPS = new Handler();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b05c6824790d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b05c6824790d00131719b896d543f08c
new file mode 100644
index 0000000..7b562b8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b05c6824790d00131719b896d543f08c
@@ -0,0 +1,192 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ final static int Create = 7;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8e/b08854886b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8e/b08854886b0d00131719b896d543f08c
new file mode 100644
index 0000000..b23f1b9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8e/b08854886b0d00131719b896d543f08c
@@ -0,0 +1,149 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/e0acc70a360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/e0acc70a360d00131249f322b63acde8
new file mode 100644
index 0000000..3a172b5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/e0acc70a360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else (m.what == 101) {
+
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0503e632b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0503e632b0d00131249f322b63acde8
new file mode 100644
index 0000000..294cae3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0503e632b0d00131249f322b63acde8
@@ -0,0 +1,16 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// authentication //
+//--------------------------------------//
+
+public class ReqLogin extends Req{
+ String user; //username
+ String pass; //password
+
+ ReqLogin(String u,String p,long time,long alive){
+ super(0,0,time,alive); //for type 0
+ user = u;
+ pass = p;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9/80eaba674e0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9/80eaba674e0d00131719b896d543f08c
new file mode 100644
index 0000000..b759a1c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9/80eaba674e0d00131719b896d543f08c
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="app_name">Piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="title_activity_login">Login</string>
+ <string name="title_activity_main">Main</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9/d0125955810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9/d0125955810d00131719b896d543f08c
new file mode 100644
index 0000000..dad95a8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9/d0125955810d00131719b896d543f08c
@@ -0,0 +1,23 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/00e09e727b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/00e09e727b0d00131719b896d543f08c
new file mode 100644
index 0000000..fcbed8a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/00e09e727b0d00131719b896d543f08c
@@ -0,0 +1,198 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1, System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/2028ee04230d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/2028ee04230d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..ad93257
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/2028ee04230d00131a9bb9bc5a5e6171
@@ -0,0 +1,10 @@
+package com.macaroon.piztor;
+
+public class PiztorExcepiton extends Exception{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7147530695009854988L;
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/d01af94e800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/d01af94e800d00131719b896d543f08c
new file mode 100644
index 0000000..9f83659
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/90/d01af94e800d00131719b896d543f08c
@@ -0,0 +1,205 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ else {
+ ReqUpdate r = new ReqUpdate(UserInfo.token,
+ l.getLatitude(), l.getLongitude(),
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[0], SuccessFetch, r[0]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[1], SuccessFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ AppMgr.transam.setHandler(fromTransam);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/92/90d0196d2b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/92/90d0196d2b0d00131249f322b63acde8
new file mode 100644
index 0000000..eb90840
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/92/90d0196d2b0d00131249f322b63acde8
@@ -0,0 +1,18 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+//--------------------------------------//
+// Location Info //
+//--------------------------------------//
+
+public class ResLocation extends Res{
+ Vector<Rlocation> l; //vector for location info
+ int n; //number of location info
+
+ ResLocation(int num,Vector<Rlocation> locationvec){
+ super(3,255); //for type 3
+ l = locationvec;
+ n = num;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/95/6090f2e14d0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/95/6090f2e14d0d00131719b896d543f08c
new file mode 100644
index 0000000..9065bdb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/95/6090f2e14d0d00131719b896d543f08c
@@ -0,0 +1,29 @@
+<?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="48dip"
+ android:background="@drawable/topbar_background"
+ android:id="@+id/settings_headbar_layout" >
+
+ <ImageButton
+ android:id="@+id/settings_btn_back"
+ android:layout_width="40dip"
+ android:layout_height="40dip"
+ android:layout_marginLeft="5dip"
+ android:layout_alignParentLeft="true"
+ android:layout_centerVertical="true"
+ android:background="@drawable/navigation_back"/>
+
+ <TextView
+ android:id="@+id/settings_headbar_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="30dip"
+ android:textColor="@android:color/white"
+ android:layout_alignParentRight="true"
+ android:layout_centerVertical="true"
+ android:layout_marginRight="40dip"
+ android:text="@string/settings"/>
+
+
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0e2b9652c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0e2b9652c0d00131249f322b63acde8
new file mode 100644
index 0000000..2752afa
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/95/d0e2b9652c0d00131249f322b63acde8
@@ -0,0 +1,30 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/00f46dd44f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/00f46dd44f0d00131719b896d543f08c
new file mode 100644
index 0000000..46efee3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/00f46dd44f0d00131719b896d543f08c
@@ -0,0 +1,19 @@
+<resources>
+
+ <string name="app_name">piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="settings">Settings</string>
+ <string name="search">Search</string>
+ <string name="fetch">Fetch</string>
+ <string name="checkin">Checkin</string>
+ <string name="focus">Focus</string>
+ <string name="show_sex">Show sex: </string>
+ <string name="male">Male</string>
+ <string name="female">Female</string>
+ <string name="show_team">Show team: </string>
+ <string name="all">All</string>
+ <string name="mine">Mine</string>
+ <string name="title_activity_login">Login</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/7099eaee250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/7099eaee250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..a935075
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/7099eaee250d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken;
+ }
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/d045188a780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/d045188a780d00131719b896d543f08c
new file mode 100644
index 0000000..630c035
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/96/d045188a780d00131719b896d543f08c
@@ -0,0 +1,191 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0d85224540d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0d85224540d00131719b896d543f08c
new file mode 100644
index 0000000..0732a3f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0d85224540d00131719b896d543f08c
@@ -0,0 +1,42 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ AppMgr.transam.send(new ReqLocation(UserInfo.token, 1, System.currentTimeMillis(), 1000));
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0e93a1f560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0e93a1f560d00131719b896d543f08c
new file mode 100644
index 0000000..cd9372f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/97/b0e93a1f560d00131719b896d543f08c
@@ -0,0 +1,46 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/90d9c0a3260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/90d9c0a3260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..5df4638
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/90d9c0a3260d00131a9bb9bc5a5e6171
@@ -0,0 +1,28 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/c0bccf492c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/c0bccf492c0d00131249f322b63acde8
new file mode 100644
index 0000000..d0d8a48
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/c0bccf492c0d00131249f322b63acde8
@@ -0,0 +1,5 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/d01ce77a780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/d01ce77a780d00131719b896d543f08c
new file mode 100644
index 0000000..9f6dfb4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/98/d01ce77a780d00131719b896d543f08c
@@ -0,0 +1,192 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ autodate = new Timer();
+
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/502b88e7810d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/502b88e7810d00131719b896d543f08c
new file mode 100644
index 0000000..d3a498f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/502b88e7810d00131719b896d543f08c
@@ -0,0 +1,28 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+
+ static void init() {
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/603b4d34230d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/603b4d34230d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..ff37673
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/603b4d34230d00131a9bb9bc5a5e6171
@@ -0,0 +1,10 @@
+package com.macaroon.piztor;
+
+class PiztorExcepiton extends Exception{
+ private static final long serialVersionUID = -7147530695009854988L;
+
+}
+
+class ClassCannotFind extends PiztorExcepiton {
+ private
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/70ce9093370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/70ce9093370d00131249f322b63acde8
new file mode 100644
index 0000000..652a271
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/99/70ce9093370d00131249f322b63acde8
@@ -0,0 +1,96 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText();
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9b/90a9ae62770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9b/90a9ae62770d00131719b896d543f08c
new file mode 100644
index 0000000..a5c36f7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9b/90a9ae62770d00131719b896d543f08c
@@ -0,0 +1,181 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9c/606048dc370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9c/606048dc370d00131249f322b63acde8
new file mode 100644
index 0000000..2c804a6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9c/606048dc370d00131249f322b63acde8
@@ -0,0 +1,96 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/1036ff9b220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/1036ff9b220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..d45dd56
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/1036ff9b220d00131a9bb9bc5a5e6171
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.compliance=1.6
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/3091338f6b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/3091338f6b0d00131719b896d543f08c
new file mode 100644
index 0000000..c44cd80
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9d/3091338f6b0d00131719b896d543f08c
@@ -0,0 +1,156 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80db2574360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80db2574360d00131249f322b63acde8
new file mode 100644
index 0000000..0e5adb3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9e/80db2574360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/90356481800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/90356481800d00131719b896d543f08c
new file mode 100644
index 0000000..d0ca8a4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/90356481800d00131719b896d543f08c
@@ -0,0 +1,15 @@
+package com.macaroon.piztor;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+ static class UserInfo {
+ double lat, lot;
+ }
+
+ static class Group {
+ int id;
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/a064e6d0330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/a064e6d0330d00131249f322b63acde8
new file mode 100644
index 0000000..25614b9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/a064e6d0330d00131249f322b63acde8
@@ -0,0 +1,58 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f04144582b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f04144582b0d00131249f322b63acde8
new file mode 100644
index 0000000..e4b1497
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f04144582b0d00131249f322b63acde8
@@ -0,0 +1,16 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Update Location //
+//--------------------------------------//
+
+public class ReqUpdate extends Req{
+ double lat; //latitude
+ double lot; //longitude
+
+ ReqUpdate(int token,double latitude,double longitude,long time,long alive){
+ super(2,token,time,alive); //for type 2
+ lat = latitude;
+ lot = longitude;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a/40b9ebd22d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a/40b9ebd22d0d00131249f322b63acde8
new file mode 100644
index 0000000..0a711af
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a/40b9ebd22d0d00131249f322b63acde8
@@ -0,0 +1,73 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ static Handler handle;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/70559b0a250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/70559b0a250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..372bf97
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/70559b0a250d00131a9bb9bc5a5e6171
@@ -0,0 +1,16 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ tools:context=".Login" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/hello_world" />
+
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/90d4db88800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/90d4db88800d00131719b896d543f08c
new file mode 100644
index 0000000..0713782
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/90d4db88800d00131719b896d543f08c
@@ -0,0 +1,19 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ static class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/e0b88562370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/e0b88562370d00131249f322b63acde8
new file mode 100644
index 0000000..9b160ad
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a0/e0b88562370d00131249f322b63acde8
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ //class StartStatus extends Piz
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/308cf16f2c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/308cf16f2c0d00131249f322b63acde8
new file mode 100644
index 0000000..3e73b92
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/308cf16f2c0d00131249f322b63acde8
@@ -0,0 +1,32 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/50ad9b0a560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/50ad9b0a560d00131719b896d543f08c
new file mode 100644
index 0000000..d4acdc9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a2/50ad9b0a560d00131719b896d543f08c
@@ -0,0 +1,43 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+// ReqUpdate r = new ReqUpdate(UserInfo.token, AppMgr., longitude, time, alive)
+ AppMgr.transam.send();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a3/f02825fc2d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a3/f02825fc2d0d00131249f322b63acde8
new file mode 100644
index 0000000..b6fb62c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a3/f02825fc2d0d00131249f322b63acde8
@@ -0,0 +1,74 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromeGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a6/a016c8c14f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a6/a016c8c14f0d00131719b896d543f08c
new file mode 100644
index 0000000..c2d070c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a6/a016c8c14f0d00131719b896d543f08c
@@ -0,0 +1,20 @@
+activity_loginactivity_loginactivity_loginactivity_loginactivity_loginactivity_loginactivity_loginactivity_loginactivity_login<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="app_name">piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="settings">Settings</string>
+ <string name="search">Search</string>
+ <string name="fetch">Fetch</string>
+ <string name="checkin">Checkin</string>
+ <string name="focus">Focus</string>
+ <string name="show_sex">Show sex: </string>
+ <string name="male">Male</string>
+ <string name="female">Female</string>
+ <string name="show_team">Show team: </string>
+ <string name="all">All</string>
+ <string name="mine">Mine</string>
+ <string name="title_activity_login">Login</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a7/a0893aae550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a7/a0893aae550d00131719b896d543f08c
new file mode 100644
index 0000000..b653442
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a7/a0893aae550d00131719b896d543f08c
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/20fcf44e800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/20fcf44e800d00131719b896d543f08c
new file mode 100644
index 0000000..59bb8b5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/20fcf44e800d00131719b896d543f08c
@@ -0,0 +1,32 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token == -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/80a9829d690d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/80a9829d690d00131719b896d543f08c
new file mode 100644
index 0000000..bebf3ae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a8/80a9829d690d00131719b896d543f08c
@@ -0,0 +1,116 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);''
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/100cbe75540d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/100cbe75540d00131719b896d543f08c
new file mode 100644
index 0000000..8bb993a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/100cbe75540d00131719b896d543f08c
@@ -0,0 +1,86 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Tracker tracker = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.start();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/409f33a52d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/409f33a52d0d00131249f322b63acde8
new file mode 100644
index 0000000..07b5812
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/409f33a52d0d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ static Handler handle;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/e083aa57340d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/e083aa57340d00131249f322b63acde8
new file mode 100644
index 0000000..070b1ab
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/a9/e083aa57340d00131249f322b63acde8
@@ -0,0 +1,60 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/1010278f550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/1010278f550d00131719b896d543f08c
new file mode 100644
index 0000000..d3fa0f2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/1010278f550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ return location
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a0a35aa1550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a0a35aa1550d00131719b896d543f08c
new file mode 100644
index 0000000..d5590eb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a0a35aa1550d00131719b896d543f08c
@@ -0,0 +1,242 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ return location;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ab/608c6879260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ab/608c6879260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..bab59bd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ab/608c6879260d00131a9bb9bc5a5e6171
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 1;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00248cbd360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00248cbd360d00131249f322b63acde8
new file mode 100644
index 0000000..c7eaee7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ac/00248cbd360d00131249f322b63acde8
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30296b52560d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30296b52560d00131719b896d543f08c
new file mode 100644
index 0000000..8bb336e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30296b52560d00131719b896d543f08c
@@ -0,0 +1,47 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/c0defd575a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/c0defd575a0d00131719b896d543f08c
new file mode 100644
index 0000000..3c46136
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ae/c0defd575a0d00131719b896d543f08c
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+// Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+// System.out.println("GPSTIME" + myTracker.location.getTime());
+// System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ message = new Message();
+ message.what = 0;
+ message.obj = location;
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message = new Message();
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/af/30d4b2674e0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/af/30d4b2674e0d00131719b896d543f08c
new file mode 100644
index 0000000..1f986ed
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/af/30d4b2674e0d00131719b896d543f08c
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ </application>
+ <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/7084ef6a550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/7084ef6a550d00131719b896d543f08c
new file mode 100644
index 0000000..064b504
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/7084ef6a550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/c09fb905760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/c09fb905760d00131719b896d543f08c
new file mode 100644
index 0000000..c50b159
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/c09fb905760d00131719b896d543f08c
@@ -0,0 +1,171 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ Vector<Rlocation> l =(Vector<Rlocation>) m.obj;
+ for (int i = 0; i < n; i++) {
+ System.out.println()
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/d04f2b58380d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/d04f2b58380d00131249f322b63acde8
new file mode 100644
index 0000000..a649f02
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b0/d04f2b58380d00131249f322b63acde8
@@ -0,0 +1,99 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00a1a652550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00a1a652550d00131719b896d543f08c
new file mode 100644
index 0000000..18bdeae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00a1a652550d00131719b896d543f08c
@@ -0,0 +1,240 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00b0df34260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00b0df34260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..5803683
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/00b0df34260d00131a9bb9bc5a5e6171
@@ -0,0 +1,71 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ public enum Event {
+ hasToken
+ }
+
+
+ static HashMap<Class<?>, HashMap<Event, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(Event event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Event event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, Event i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Event, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Event, Class<?>> h = new HashMap<Event, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Event, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Event, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/806ea1b54f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/806ea1b54f0d00131719b896d543f08c
new file mode 100644
index 0000000..7587807
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/806ea1b54f0d00131719b896d543f08c
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="app_name">piztor</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="settings">Settings</string>
+ <string name="search">Search</string>
+ <string name="fetch">Fetch</string>
+ <string name="checkin">Checkin</string>
+ <string name="focus">Focus</string>
+ <string name="show_sex">Show sex: </string>
+ <string name="male">Male</string>
+ <string name="female">Female</string>
+ <string name="show_team">Show team: </string>
+ <string name="all">All</string>
+ <string name="mine">Mine</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/a0011e00530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/a0011e00530d00131719b896d543f08c
new file mode 100644
index 0000000..8adf71f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b2/a0011e00530d00131719b896d543f08c
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b3/005ecbdb800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b3/005ecbdb800d00131719b896d543f08c
new file mode 100644
index 0000000..b4bddc4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b3/005ecbdb800d00131719b896d543f08c
@@ -0,0 +1,20 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/d054deff370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/d054deff370d00131249f322b63acde8
new file mode 100644
index 0000000..a79cbad
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/d054deff370d00131249f322b63acde8
@@ -0,0 +1,96 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/e0f38c9f260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/e0f38c9f260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..33636d9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/e0f38c9f260d00131a9bb9bc5a5e6171
@@ -0,0 +1,27 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/f0db4c2f390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/f0db4c2f390d00131524a793807f338e
new file mode 100644
index 0000000..01b87ff
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b5/f0db4c2f390d00131524a793807f338e
@@ -0,0 +1,84 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b6/907c20d0330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b6/907c20d0330d00131249f322b63acde8
new file mode 100644
index 0000000..2821a56
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b6/907c20d0330d00131249f322b63acde8
@@ -0,0 +1,58 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public boolean handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/00d0ee3f5a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/00d0ee3f5a0d00131719b896d543f08c
new file mode 100644
index 0000000..9e3ea68
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/00d0ee3f5a0d00131719b896d543f08c
@@ -0,0 +1,104 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ static Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ AppMgr.transam.setHandler(hand);
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/7017f2e32d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/7017f2e32d0d00131249f322b63acde8
new file mode 100644
index 0000000..74de717
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b7/7017f2e32d0d00131249f322b63acde8
@@ -0,0 +1,74 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler callBack;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/b9/002a6f89770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b9/002a6f89770d00131719b896d543f08c
new file mode 100644
index 0000000..e634232
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/b9/002a6f89770d00131719b896d543f08c
@@ -0,0 +1,178 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ actMgr.trigger(FailedFetch);
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/bd/90228f69800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bd/90228f69800d00131719b896d543f08c
new file mode 100644
index 0000000..631fe8e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bd/90228f69800d00131719b896d543f08c
@@ -0,0 +1,8 @@
+package com.macaroon.piztor;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0e7485e390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0e7485e390d00131524a793807f338e
new file mode 100644
index 0000000..49e6552
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0e7485e390d00131524a793807f338e
@@ -0,0 +1,84 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+ tTransam = new Thread(transam);
+ tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b07e9999380d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b07e9999380d00131249f322b63acde8
new file mode 100644
index 0000000..401f985
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b07e9999380d00131249f322b63acde8
@@ -0,0 +1,34 @@
+package com.macaroon.piztor;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c0281dde290d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c0281dde290d00131249f322b63acde8
new file mode 100644
index 0000000..6177eaf
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/bf/c0281dde290d00131249f322b63acde8
@@ -0,0 +1,31 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ id = "initAct";
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c/20533453360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c/20533453360d00131249f322b63acde8
new file mode 100644
index 0000000..1308a5e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c/20533453360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } ;else (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c/c0b909df780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c/c0b909df780d00131719b896d543f08c
new file mode 100644
index 0000000..4df6bae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c/c0b909df780d00131719b896d543f08c
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ System.out.println(act.id + " : " + event);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/70c31bc4770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/70c31bc4770d00131719b896d543f08c
new file mode 100644
index 0000000..94737ae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/70c31bc4770d00131719b896d543f08c
@@ -0,0 +1,180 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/90049d68370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/90049d68370d00131249f322b63acde8
new file mode 100644
index 0000000..27c94bf
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c1/90049d68370d00131249f322b63acde8
@@ -0,0 +1,84 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/305132042e0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/305132042e0d00131249f322b63acde8
new file mode 100644
index 0000000..1b7a948
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/305132042e0d00131249f322b63acde8
@@ -0,0 +1,77 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+
+ fromGPS = new Handler();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/905743582b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/905743582b0d00131249f322b63acde8
new file mode 100644
index 0000000..e4b1497
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c2/905743582b0d00131249f322b63acde8
@@ -0,0 +1,16 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Update Location //
+//--------------------------------------//
+
+public class ReqUpdate extends Req{
+ double lat; //latitude
+ double lot; //longitude
+
+ ReqUpdate(int token,double latitude,double longitude,long time,long alive){
+ super(2,token,time,alive); //for type 2
+ lat = latitude;
+ lot = longitude;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/c02b54e56a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/c02b54e56a0d00131719b896d543f08c
new file mode 100644
index 0000000..5083cb4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/c02b54e56a0d00131719b896d543f08c
@@ -0,0 +1,137 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "SearchButtonPress";
+ case FetchButtonPress:
+ return "FetchButtonPress";
+ case FocuseButtonPress:
+ return "FocuseButtonPress";
+ case SuccessFetch:
+ return "SuccessFetch";
+ case FailedFetch:
+ return "FailedFetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/e083ea64370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/e083ea64370d00131249f322b63acde8
new file mode 100644
index 0000000..a69306e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c3/e083ea64370d00131249f322b63acde8
@@ -0,0 +1,85 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/80454f67500d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/80454f67500d00131719b896d543f08c
new file mode 100644
index 0000000..37e55a7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/80454f67500d00131719b896d543f08c
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:textColor="@android:color/black"
+ android:singleLine="true"/>
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:textColor="@android:color/white"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a02a68e4550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a02a68e4550d00131719b896d543f08c
new file mode 100644
index 0000000..49b0b38
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c4/a02a68e4550d00131719b896d543f08c
@@ -0,0 +1,66 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ message = new Message();
+ message.obj = location;
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c5/b0f3fcc27c0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c5/b0f3fcc27c0d00131719b896d543f08c
new file mode 100644
index 0000000..94c1e0d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c5/b0f3fcc27c0d00131719b896d543f08c
@@ -0,0 +1,204 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ else {
+ ReqUpdate r = new ReqUpdate(UserInfo.token,
+ l.getLatitude(), l.getLongitude(),
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[1], SuccessFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ AppMgr.transam.setHandler(fromTransam);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c8/b082216a2c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c8/b082216a2c0d00131249f322b63acde8
new file mode 100644
index 0000000..2769127
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c8/b082216a2c0d00131249f322b63acde8
@@ -0,0 +1,31 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.hasToken);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/c9/406dedec4e0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c9/406dedec4e0d00131719b896d543f08c
new file mode 100644
index 0000000..ebd1331
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/c9/406dedec4e0d00131719b896d543f08c
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/20f3b0b5340d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/20f3b0b5340d00131249f322b63acde8
new file mode 100644
index 0000000..bc3f8c2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/20f3b0b5340d00131249f322b63acde8
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/90266484690d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/90266484690d00131719b896d543f08c
new file mode 100644
index 0000000..4689c27
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/90266484690d00131719b896d543f08c
@@ -0,0 +1,114 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/a02a83fc310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/a02a83fc310d00131249f322b63acde8
new file mode 100644
index 0000000..6250eae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/a02a83fc310d00131249f322b63acde8
@@ -0,0 +1,80 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/d0283431550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/d0283431550d00131719b896d543f08c
new file mode 100644
index 0000000..ff69271
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ca/d0283431550d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Locatio getLocation() {
+ try {
+
+ Log.d("getLocation",n "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cb/30fcab3d6b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cb/30fcab3d6b0d00131719b896d543f08c
new file mode 100644
index 0000000..8740d07
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cb/30fcab3d6b0d00131719b896d543f08c
@@ -0,0 +1,137 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/30d547d6300d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/30d547d6300d00131249f322b63acde8
new file mode 100644
index 0000000..c31924d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/30d547d6300d00131249f322b63acde8
@@ -0,0 +1,132 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/40540cea780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/40540cea780d00131719b896d543f08c
new file mode 100644
index 0000000..0df0ca4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/40540cea780d00131719b896d543f08c
@@ -0,0 +1,65 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ System.out.println(act.id + " : " + event);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ } else {
+ System.out.println("can not trigger the event at " + act.id + " : "
+ + event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a06019c6550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a06019c6550d00131719b896d543f08c
new file mode 100644
index 0000000..3676f6b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/a06019c6550d00131719b896d543f08c
@@ -0,0 +1,66 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b0cf5a29320d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b0cf5a29320d00131249f322b63acde8
new file mode 100644
index 0000000..f30d9b3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b0cf5a29320d00131249f322b63acde8
@@ -0,0 +1,81 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ fromGPS = new Handler();
+ tTransam = new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/e0b44c18280d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/e0b44c18280d00131249f322b63acde8
new file mode 100644
index 0000000..b298e0c
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cc/e0b44c18280d00131249f322b63acde8
@@ -0,0 +1,29 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ce/400f0022790d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ce/400f0022790d00131719b896d543f08c
new file mode 100644
index 0000000..0df0ca4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ce/400f0022790d00131719b896d543f08c
@@ -0,0 +1,65 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ System.out.println(act.id + " : " + event);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ } else {
+ System.out.println("can not trigger the event at " + act.id + " : "
+ + event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/509df39b220d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/509df39b220d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..0725982
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/509df39b220d00131a9bb9bc5a5e6171
@@ -0,0 +1,5 @@
+<resources>
+
+ <string name="app_name">Piztor</string>
+
+</resources>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80bdfc51360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80bdfc51360d00131249f322b63acde8
new file mode 100644
index 0000000..12a937e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80bdfc51360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80e32f683a0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80e32f683a0d00131524a793807f338e
new file mode 100644
index 0000000..ef561b6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80e32f683a0d00131524a793807f338e
@@ -0,0 +1,85 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+ tTransam = new Thread(transam);
+// tTransam.run();
+ System.out.println("!!!!!!");
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0399970330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0399970330d00131249f322b63acde8
new file mode 100644
index 0000000..d6b9c4f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/cf/b0399970330d00131249f322b63acde8
@@ -0,0 +1,48 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d1/e0493fd6550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d1/e0493fd6550d00131719b896d543f08c
new file mode 100644
index 0000000..96a9ed1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d1/e0493fd6550d00131719b896d543f08c
@@ -0,0 +1,64 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.location.Location;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ Location location = myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d2/80c7346a770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d2/80c7346a770d00131719b896d543f08c
new file mode 100644
index 0000000..10cf824
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d2/80c7346a770d00131719b896d543f08c
@@ -0,0 +1,181 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ actMgr.trigger(FailedFetch);
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d07246a16a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d07246a16a0d00131719b896d543f08c
new file mode 100644
index 0000000..ef0ed17
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d3/d07246a16a0d00131719b896d543f08c
@@ -0,0 +1,128 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "SearchButtonPress";
+
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!!");
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b08e74497f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b08e74497f0d00131719b896d543f08c
new file mode 100644
index 0000000..04be578
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b08e74497f0d00131719b896d543f08c
@@ -0,0 +1,7 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d6/70651b8c4f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d6/70651b8c4f0d00131719b896d543f08c
new file mode 100644
index 0000000..e5faf14
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d6/70651b8c4f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50a452ea310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50a452ea310d00131249f322b63acde8
new file mode 100644
index 0000000..d2eb5bd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50a452ea310d00131249f322b63acde8
@@ -0,0 +1,80 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ fromGPS = new Handler();
+
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50d6caf2240d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50d6caf2240d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..379817d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d7/50d6caf2240d00131a9bb9bc5a5e6171
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/90a207514b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/90a207514b0d00131719b896d543f08c
new file mode 100644
index 0000000..5742d39
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/90a207514b0d00131719b896d543f08c
@@ -0,0 +1,101 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f0ae11884d0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f0ae11884d0d00131719b896d543f08c
new file mode 100644
index 0000000..23a210b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d8/f0ae11884d0d00131719b896d543f08c
@@ -0,0 +1,16 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ tools:context=".Main" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/hello_world" />
+
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/b0831880280d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/b0831880280d00131249f322b63acde8
new file mode 100644
index 0000000..997217f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/b0831880280d00131249f322b63acde8
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ System.out.println(event);
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/c0cdd6df780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/c0cdd6df780d00131719b896d543f08c
new file mode 100644
index 0000000..6b1c62a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/d9/c0cdd6df780d00131719b896d543f08c
@@ -0,0 +1,64 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ System.out.println(act.id + " : " + event);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ } else {
+ System.out.println("can not trigger the event at " + act.id + " : " + event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/da/b0c3a5433d0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/da/b0c3a5433d0d00131524a793807f338e
new file mode 100644
index 0000000..edb3968
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/da/b0c3a5433d0d00131524a793807f338e
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ </application>
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/db/50df9b974b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/db/50df9b974b0d00131719b896d543f08c
new file mode 100644
index 0000000..e007692
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/db/50df9b974b0d00131719b896d543f08c
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ // for (Integer i : mp.get(nowStatus).keySet())
+ // System.out.println(i);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/600b7a0f780d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/600b7a0f780d00131719b896d543f08c
new file mode 100644
index 0000000..aec589a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/600b7a0f780d00131719b896d543f08c
@@ -0,0 +1,192 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ autodate = new Timer();
+
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c0b636965b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c0b636965b0d00131719b896d543f08c
new file mode 100644
index 0000000..0e48f46
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/dd/c0b636965b0d00131719b896d543f08c
@@ -0,0 +1,106 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ @SuppressLint("HandlerLeak")
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ System.out.println(m.what);
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ System.out.println(user + " : " + pass + "\n");
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ AppMgr.transam.setHandler(hand);
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/20eb032c3c0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/20eb032c3c0d00131524a793807f338e
new file mode 100644
index 0000000..005b0e7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/20eb032c3c0d00131524a793807f338e
@@ -0,0 +1,100 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/a03d00d2760d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/a03d00d2760d00131719b896d543f08c
new file mode 100644
index 0000000..be5fc0f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/a03d00d2760d00131719b896d543f08c
@@ -0,0 +1,177 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " " + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0) System.out.println();
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/f01bbbba310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/f01bbbba310d00131249f322b63acde8
new file mode 100644
index 0000000..76e7505
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/de/f01bbbba310d00131249f322b63acde8
@@ -0,0 +1,79 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ //Event
+
+ final static int noToken = 101;
+
+
+ static Transam transam = null;
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ fromTransam = new Handler();
+ fromGPS = new Handler();
+ new Thread(transam).run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/df/406bf637390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/df/406bf637390d00131524a793807f338e
new file mode 100644
index 0000000..4563127
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/df/406bf637390d00131524a793807f338e
@@ -0,0 +1,84 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+import android.os.Handler;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+ //TODO fix
+ static Handler fromTransam, fromGPS;
+ static Transam transam = null;
+ static Thread tTransam, tGPS;
+ //Event
+
+ final static int noToken = 101;
+ final static int loginSuccess = 102;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+// fromTransam = new Handler();
+ transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
+ //fromGPS = new Handler();
+// tTransam = new Thread(transam);
+// tTransam.run();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addStatus(Main.class);
+ addTransition(InitAct.class, noToken, Login.class);
+ addTransition(Login.class, loginSuccess, Main.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e/d06a5fb7520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e/d06a5fb7520d00131719b896d543f08c
new file mode 100644
index 0000000..62c7a40
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e/d06a5fb7520d00131719b896d543f08c
@@ -0,0 +1,241 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 1; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public void getLocation() {
+ try {
+
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e0/40e5bce9370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e0/40e5bce9370d00131249f322b63acde8
new file mode 100644
index 0000000..b520b66
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e0/40e5bce9370d00131249f322b63acde8
@@ -0,0 +1,98 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, ));
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/306f6f46360d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/306f6f46360d00131249f322b63acde8
new file mode 100644
index 0000000..3a172b5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/306f6f46360d00131249f322b63acde8
@@ -0,0 +1,72 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else (m.what == 101) {
+
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/9017fa5e2b0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/9017fa5e2b0d00131249f322b63acde8
new file mode 100644
index 0000000..000f373
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/9017fa5e2b0d00131249f322b63acde8
@@ -0,0 +1,14 @@
+package com.macaroon.piztor;
+
+//--------------------------------------//
+// Ask Location //
+//--------------------------------------//
+
+public class ReqLocation extends Req{
+ int gid; //group id;
+
+ ReqLocation(int token,int groupid,long time,long alive){
+ super(3,token,time,alive); //for type 3
+ gid = groupid;
+ }
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b01fa77a4e0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b01fa77a4e0d00131719b896d543f08c
new file mode 100644
index 0000000..94cfac8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e1/b01fa77a4e0d00131719b896d543f08c
@@ -0,0 +1,16 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ tools:context=".Setting" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/hello_world" />
+
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/005a5d292d0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/005a5d292d0d00131249f322b63acde8
new file mode 100644
index 0000000..bd0b952
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/005a5d292d0d00131249f322b63acde8
@@ -0,0 +1,33 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+ else {
+ //TODO jump to main
+ }
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4039c9d3330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4039c9d3330d00131249f322b63acde8
new file mode 100644
index 0000000..831f4d7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/4039c9d3330d00131249f322b63acde8
@@ -0,0 +1,58 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/d0880974550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/d0880974550d00131719b896d543f08c
new file mode 100644
index 0000000..55eb215
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e4/d0880974550d00131719b896d543f08c
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ void setHandler(Handler hand) {
+ mHandler = hand;
+ }
+
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20fcf772310d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20fcf772310d00131249f322b63acde8
new file mode 100644
index 0000000..71c3ad0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e6/20fcf772310d00131249f322b63acde8
@@ -0,0 +1,133 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+ static Transam transam = null;
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e7/00e5c3933a0d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e7/00e5c3933a0d00131524a793807f338e
new file mode 100644
index 0000000..e9712ce
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e7/00e5c3933a0d00131524a793807f338e
@@ -0,0 +1,22 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class Main extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/e9/201bd58e370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e9/201bd58e370d00131249f322b63acde8
new file mode 100644
index 0000000..7ab3c03
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/e9/201bd58e370d00131249f322b63acde8
@@ -0,0 +1,95 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0041c861520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0041c861520d00131719b896d543f08c
new file mode 100644
index 0000000..af1543b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/0041c861520d00131719b896d543f08c
@@ -0,0 +1,64 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 1; // 1 second
+ public Timer timer;
+ private final Context mContext;
+ Controller controller;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Controller newController, Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ controller = newController;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50149cac330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50149cac330d00131249f322b63acde8
new file mode 100644
index 0000000..4aa65b2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50149cac330d00131249f322b63acde8
@@ -0,0 +1,54 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50fcb17a260d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50fcb17a260d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..b652549
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/eb/50fcb17a260d00131a9bb9bc5a5e6171
@@ -0,0 +1,69 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 1;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ed/d0b50c637c0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ed/d0b50c637c0d00131719b896d543f08c
new file mode 100644
index 0000000..1abca7b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ed/d0b50c637c0d00131719b896d543f08c
@@ -0,0 +1,203 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ else {
+ ReqUpdate r = new ReqUpdate(UserInfo.token,
+ l.getLatitude(), l.getLongitude(),
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ AppMgr.transam.setHandler(fromTransam);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ autodate.schedule(new AutoUpdate(), 0, 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/800bef37290d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/800bef37290d00131249f322b63acde8
new file mode 100644
index 0000000..4f58257
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/800bef37290d00131249f322b63acde8
@@ -0,0 +1,73 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ System.out.println(nowAct.id + " : " + event);
+ if (mp.get(nowAct.getClass()) == null)
+ System.out.println("first");
+ else if (mp.get(nowAct.getClass()) == null)
+ System.out.println("second");
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/8094037e770d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/8094037e770d00131719b896d543f08c
new file mode 100644
index 0000000..f0e8c6b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/8094037e770d00131719b896d543f08c
@@ -0,0 +1,181 @@
+package com.macaroon.piztor;
+
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ actMgr.trigger(FailedFetch);
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == SuccessFetch) {
+
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/e062b6d0520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/e062b6d0520d00131719b896d543f08c
new file mode 100644
index 0000000..de79560
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/ee/e062b6d0520d00131719b896d543f08c
@@ -0,0 +1,62 @@
+package com.macaroon.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 3; // 3 second
+ public Timer timer;
+ private final Context mContext;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f/702f615d280d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f/702f615d280d00131249f322b63acde8
new file mode 100644
index 0000000..fd21453
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f/702f615d280d00131249f322b63acde8
@@ -0,0 +1,68 @@
+package com.macaroon.piztor;
+
+import java.util.HashMap;
+
+import android.annotation.SuppressLint;
+import android.content.Intent;
+
+@SuppressLint("UseSparseArrays")
+public class AppMgr {
+ // Status
+ public enum ActivityStatus{
+ create, start, resume, restart, stop, pause, destroy
+ }
+ static ActivityStatus status;
+ static PiztorAct nowAct;
+
+ //Event
+
+ final static int hasToken = 101;
+
+
+ static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
+
+ static void setStatus(ActivityStatus st) {
+ status = st;
+ }
+
+ static void trigger(int event) {
+
+ Intent i = new Intent();
+ i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
+ nowAct.startActivity(i);
+ }
+
+ static void add(Class<?> a, Integer event, Class<?> b) {
+ if (mp.containsKey(a))
+ mp.get(a).put(event, b);
+ else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addTransition(Class<?> a, int i, Class<?> b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, Class<?>> h = mp.get(a);
+ h.put(i, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
+ h.put(i, b);
+ mp.put(a, h);
+ }
+ }
+
+ static void addStatus(Class<?> a) {
+ mp.put(a, new HashMap<Integer, Class<?>>());
+ }
+
+ static void init() {
+ mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
+ addStatus(InitAct.class);
+ addStatus(Login.class);
+ addTransition(InitAct.class, hasToken, Login.class);
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f/c043e2232c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f/c043e2232c0d00131249f322b63acde8
new file mode 100644
index 0000000..f607c1f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f/c043e2232c0d00131249f322b63acde8
@@ -0,0 +1,29 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ AppMgr.trigger(AppMgr.hasToken);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a000529a350d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a000529a350d00131249f322b63acde8
new file mode 100644
index 0000000..b3c9c89
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f0/a000529a350d00131249f322b63acde8
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/00249bf3370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/00249bf3370d00131249f322b63acde8
new file mode 100644
index 0000000..db5a3d8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/00249bf3370d00131249f322b63acde8
@@ -0,0 +1,98 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e068ac2a250d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e068ac2a250d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..629f1c1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e068ac2a250d00131a9bb9bc5a5e6171
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:background="@android:color/black"
+ android:orientation="vertical">
+
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/black"
+ android:gravity="center_horizontal"
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/main_headbar_img"
+ android:layout_width="180dp"
+ android:layout_height="240dp"
+ android:layout_gravity="center_horizontal"
+ android:src="@drawable/title_logo" />
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:layout_gravity="center">
+
+ <TableLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TableRow
+ android:layout_marginBottom="15dp"
+ android:layout_marginTop="15dp">
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_id_text"
+ android:text="User ID"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_id"
+ android:singleLine="true">
+ <requestFocus/>
+ </TableRow>
+
+ <TableRow>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:gravity="right"
+ android:id="@+id/user_pass_text"
+ android:text="Password"
+ android:textColor="@android:color/white"
+ />
+
+ <EditText
+ android:layout_width="0dp"
+ android:layout_weight="0.75"
+ android:id="@+id/user_pass"
+ android:password="true"
+ android:singleLine="true"/>
+ </TableRow>
+ </TableLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical"
+ >
+ <Button
+ android:id="@+id/login_btn_login"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:text="Login"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+
+</LinearLayout>
+</RelativeLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0f0dd782c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0f0dd782c0d00131249f322b63acde8
new file mode 100644
index 0000000..1623576
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e0f0dd782c0d00131249f322b63acde8
@@ -0,0 +1,31 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.app.Activity;
+import android.view.Menu;
+
+public class InitAct extends PiztorAct {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "initAct";
+ super.onCreate(savedInstanceState);
+ AppMgr.init();
+ setContentView(R.layout.activity_init);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (UserInfo.token != -1)
+ AppMgr.trigger(AppMgr.noToken);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.init, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f2/101fed70800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f2/101fed70800d00131719b896d543f08c
new file mode 100644
index 0000000..f0a2e0d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f2/101fed70800d00131719b896d543f08c
@@ -0,0 +1,15 @@
+package com.macaroon.piztor;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+ static class UserInfo {
+ double lat, lot;
+ }
+
+ static class Group {
+
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a087fd4e800d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a087fd4e800d00131719b896d543f08c
new file mode 100644
index 0000000..929c0bb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a087fd4e800d00131719b896d543f08c
@@ -0,0 +1,8 @@
+package com.macaroon.piztor;
+
+public class UserInfo {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a0da18d74d0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a0da18d74d0d00131719b896d543f08c
new file mode 100644
index 0000000..e573032
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f4/a0da18d74d0d00131719b896d543f08c
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="48dip"
+ android:orientation="horizontal"
+ android:background="@drawable/footbar_background" >
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_search_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_search"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_search_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_search_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/search"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_fetch_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_fetch"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_fetch_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_fetch_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/fetch"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_checkin_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:orientation="vertical">
+ <ImageButton
+ android:id="@+id/footbar_btn_checkin"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_checkin_style"
+ />
+ <TextView
+ android:id="@+id/footbar_btn_checkin_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/checkin"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_focus_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_focus"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_focus_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_focus_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:layout_gravity="center"
+ android:text="@string/focus"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/footbar_btn_settings_layout"
+ android:layout_width="64dip"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="3dip"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1">
+ <ImageButton
+ android:id="@+id/footbar_btn_settings"
+ android:layout_width="30dip"
+ android:layout_height="30dip"
+ android:layout_gravity="center"
+ android:background="@drawable/footbar_btn_settings_style"/>
+ <TextView
+ android:id="@+id/footbar_btn_settings"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textSize="10dip"
+ android:textColor="@android:color/white"
+ android:text="@string/settings"/>
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/50b3bf00680d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/50b3bf00680d00131719b896d543f08c
new file mode 100644
index 0000000..7bb08ae
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/50b3bf00680d00131719b896d543f08c
@@ -0,0 +1,91 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/c0432fca650d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/c0432fca650d00131719b896d543f08c
new file mode 100644
index 0000000..407ba24
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/c0432fca650d00131719b896d543f08c
@@ -0,0 +1,56 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f009dded390d00131524a793807f338e b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f009dded390d00131524a793807f338e
new file mode 100644
index 0000000..df74c99
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f009dded390d00131524a793807f338e
@@ -0,0 +1,100 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+ String pass = edtPass.getText().toString();
+ long nowtime = System.currentTimeMillis();
+ AppMgr.transam.send(new ReqLogin(user, pass, nowtime, 1000));
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ ActStatus[] r = new ActStatus[2];
+ r[0] = new StartStatus();
+ r[1] = new LoginStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], loginButtonClick, r[1]);
+ actMgr.add(r[1], loginFailed, r[0]);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(loginButtonClick);
+ }
+ });
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0f9d74b5a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0f9d74b5a0d00131719b896d543f08c
new file mode 100644
index 0000000..0b24abd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f6/f0f9d74b5a0d00131719b896d543f08c
@@ -0,0 +1,51 @@
+package com.macaroon.piztor;
+
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ ActMgr actMgr;
+
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f7/404fa93a860d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f7/404fa93a860d00131719b896d543f08c
new file mode 100644
index 0000000..d989280
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f7/404fa93a860d00131719b896d543f08c
@@ -0,0 +1,30 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import java.util.HashMap;
+import java.util.Vector;
+
+public class Infomation {
+ static String ip = "69.85.86.42";
+ static int port = 9990;
+ static int token = -1;
+ static int myId = -1;
+ static int myGroup = -1;
+ class UserInfo {
+ int id;
+ double lat, lot;
+ }
+
+ class Group {
+ int id;
+ Vector<UserInfo> v;
+ }
+
+ static HashMap<Integer, Group> mp;
+
+ @SuppressLint("UseSparseArrays")
+ static void init() {
+ mp = new HashMap<Integer, Group>();
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/10ed0356660d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/10ed0356660d00131719b896d543f08c
new file mode 100644
index 0000000..e530ef2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/10ed0356660d00131719b896d543f08c
@@ -0,0 +1,86 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/60faee49750d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/60faee49750d00131719b896d543f08c
new file mode 100644
index 0000000..c9f6043
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f8/60faee49750d00131719b896d543f08c
@@ -0,0 +1,159 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what > 100) {
+
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40812ada6a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40812ada6a0d00131719b896d543f08c
new file mode 100644
index 0000000..3778249
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/40812ada6a0d00131719b896d543f08c
@@ -0,0 +1,137 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "SearchButtonPress";
+ case FetchButtonPress:
+ return "FetchButtonPress";
+ case FocuseButtonPress:
+ return "FocuseButtonPress";
+ case SuccessFetch:
+ return "SuccessFetch";
+ case FailedFetch:
+ return "FailedFetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e06a5470670d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e06a5470670d00131719b896d543f08c
new file mode 100644
index 0000000..c220c02
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/f9/e06a5470670d00131719b896d543f08c
@@ -0,0 +1,86 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+
+ ActMgr actMgr;
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ if (l == null)
+ System.out.println("fuck!!!");
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(handler);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fa/f0caef03230d00131a9bb9bc5a5e6171 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fa/f0caef03230d00131a9bb9bc5a5e6171
new file mode 100644
index 0000000..c760a59
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fa/f0caef03230d00131a9bb9bc5a5e6171
@@ -0,0 +1,5 @@
+package com.macaroon.piztor;
+
+public class PiztorExcepiton extends Exception{
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10233142530d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10233142530d00131719b896d543f08c
new file mode 100644
index 0000000..ec8f8bd
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10233142530d00131719b896d543f08c
@@ -0,0 +1,33 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+
+public class Main extends PiztorAct {
+
+ Handler handler = new Handler() {
+
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10a53b2a7a0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10a53b2a7a0d00131719b896d543f08c
new file mode 100644
index 0000000..a38e5a3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/10a53b2a7a0d00131719b896d543f08c
@@ -0,0 +1,197 @@
+package com.macaroon.piztor;
+
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ Timer autodate;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case 3:
+ ResLocation location = (ResLocation) m.obj;
+ for (int i = 0; i < location.n; i++) {
+ System.out.println(location.l.get(i).lat + " "
+ + location.l.get(i).lot);
+ }
+ actMgr.trigger(SuccessFetch);
+ break;
+ case 2:
+ ResUpdate update = (ResUpdate) m.obj;
+ if (update.t == 0)
+ System.out.println("update success");
+ else
+ System.out.println("update failed");
+ break;
+ default:
+ break;
+ }
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ if (e == TimerFlush) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1, System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+ if (e == FetchButtonPress) {
+ ReqLocation r = new ReqLocation(UserInfo.token, 1,
+ System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class AutoUpdate extends TimerTask {
+
+ @Override
+ public void run() {
+ actMgr.trigger(Main.TimerFlush);
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ actMgr.add(r[2], TimerFlush, r[2]);
+ autodate = new Timer();
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+
+ autodate.schedule(new AutoUpdate(), 5000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/901006312c0d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/901006312c0d00131249f322b63acde8
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/901006312c0d00131249f322b63acde8
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0859c9d370d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0859c9d370d00131249f322b63acde8
new file mode 100644
index 0000000..d0ef95b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0859c9d370d00131249f322b63acde8
@@ -0,0 +1,96 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+
+
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ int loginButtonClick = 1, retryButtonClick = 2, loginFailed = 3;
+
+ Handler hand = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what == 0) {
+ ResLogin res = (ResLogin) m.obj;
+ UserInfo.token = res.t;
+ actMgr.trigger(AppMgr.loginSuccess);
+ } else if (m.what == 101) {
+ actMgr.trigger(loginFailed);
+ }
+ }
+ };
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+ }
+
+ class LoginStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ String user = edtUser.getText().toString();
+
+ }
+
+ @Override
+ void leave(int e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ //AppMgr.transam.send(new ReqLogin(u, p, time, alive))
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0f7938e550d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0f7938e550d00131719b896d543f08c
new file mode 100644
index 0000000..82962d2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/d0f7938e550d00131719b896d543f08c
@@ -0,0 +1,240 @@
+package com.macaroon.piztor;
+
+import android.app.AlertDialog;
+import android.app.Service;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.location.GpsStatus;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.util.Log;
+
+public class GPSTracker extends Service implements LocationListener, GpsStatus.Listener {
+
+ private final Context mContext;
+
+ // flag for GPS status
+ boolean isGPSEnabled = false;
+
+ // flag for network status
+ boolean isNetworkEnabled = false;
+
+ // flag for GPS status
+ boolean canGetLocation = false;
+
+ Location location; // location
+ double latitude; // latitude
+ double longitude; // longitude
+
+ // The minimum distance to change Updates in meters
+ private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
+
+ // The minimum time between updates in milliseconds
+ private static final long MIN_TIME_BW_UPDATES = 1000 * 3; // 10 seconds
+
+ // Declaring a Location Manager
+ protected LocationManager locationManager;
+
+ // for GPS satellite status listener
+ Location mLastLocation;
+ long mLastLocationMillis;
+ boolean isGPSFix;
+
+
+ public GPSTracker(Context context) {
+ this.mContext = context;
+ isGPSFix = false;
+ getLocation();
+ }
+
+ public Location getLocation() {
+ try {
+ Log.d("getLocation", "Start getting location......");
+
+ locationManager = (LocationManager) mContext
+ .getSystemService(LOCATION_SERVICE);
+
+ // getting GPS status
+ isGPSEnabled = locationManager
+ .isProviderEnabled(LocationManager.GPS_PROVIDER);
+
+ // getting network status
+ isNetworkEnabled = locationManager
+ .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
+
+ if (!isGPSEnabled) {
+ // no network provider is enabled
+ } else {
+ this.canGetLocation = true;
+ if (isNetworkEnabled) {
+ locationManager.requestLocationUpdates(
+ LocationManager.NETWORK_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+
+ Log.d("Network", "Network Updated");
+
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("Network", "Received Network Data");
+ System.out.println("***From Network: "+latitude + " " + longitude);
+ }
+ }
+ }// end of network section
+ // if GPS Enabled get lat/long using GPS Services
+ if (isGPSEnabled) {
+ if (true) {
+ locationManager.requestLocationUpdates(
+ LocationManager.GPS_PROVIDER,
+ MIN_TIME_BW_UPDATES,
+ MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
+ Log.d("GPS", "GPS Updated");
+ if (locationManager != null) {
+ location = locationManager
+ .getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location != null) {
+ latitude = location.getLatitude();
+ longitude = location.getLongitude();
+
+ Log.d("GPS", "Received GPS Data");
+ System.out.println("***From GPS: "+latitude + " " + longitude);
+
+ }
+ }
+ }
+ }// end of GPS section
+ }// end of fetching data
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return location;
+ }
+
+ /**
+ * Stop using GPS listener Calling this function will stop using GPS in your
+ * app
+ * */
+ public void stopUsingGPS() {
+ if (locationManager != null) {
+ locationManager.removeUpdates(GPSTracker.this);
+ }
+ }
+
+ /**
+ * Function to get latitude
+ * */
+ public double getLatitude() {
+ if (location != null) {
+ latitude = location.getLatitude();
+ }
+ return latitude;
+ }
+
+ /**
+ * Function to get longitude
+ * */
+ public double getLongitude() {
+ if (location != null) {
+ longitude = location.getLongitude();
+ }
+ return longitude;
+ }
+
+ /**
+ * Function to check GPS/wifi enabled
+ *
+ * @return boolean
+ * */
+ public boolean canGetLocation() {
+ return this.canGetLocation;
+ }
+
+ public boolean isGPSFix() {
+ return (this.isGPSFix && location != null);
+ }
+
+ /**
+ * Function to show settings alert dialog On pressing Settings button will
+ * lauch Settings Options
+ * */
+ public void showSettingsAlert() {
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
+
+ // Setting Dialog Title
+ alertDialog.setTitle("GPS is settings");
+
+ // Setting Dialog Message
+ alertDialog
+ .setMessage("GPS is not enabled. Do you want to go to settings menu?");
+
+ // On pressing Settings button
+ alertDialog.setPositiveButton("Settings",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(
+ Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+ mContext.startActivity(intent);
+ }
+ });
+
+ // on pressing cancel button
+ alertDialog.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // Showing Alert Message
+ alertDialog.show();
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ if (location == null) return;
+ mLastLocationMillis = SystemClock.elapsedRealtime();
+ mLastLocation = location;
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public void onGpsStatusChanged(int event) {
+ switch (event) {
+ case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
+ if(mLastLocation != null)
+ isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;
+ break;
+
+ case GpsStatus.GPS_EVENT_FIRST_FIX:
+ isGPSFix = true;
+ break;
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0d4eed4300d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0d4eed4300d00131249f322b63acde8
new file mode 100644
index 0000000..3ca0dfe
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fb/e0d4eed4300d00131249f322b63acde8
@@ -0,0 +1,133 @@
+package com.macaroon.piztor;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.annotation.SuppressLint;
+import android.os.Handler;
+import android.os.Message;
+
+public class Transam implements Runnable {
+
+ public Timer timer;
+ public Timer mtimer;
+ public boolean running = false;
+ public boolean flag = true;
+ public int cnt = 4;
+ Res res;
+ Req req;
+ public int p; //port
+ public String i; //ip
+ Thread thread;
+ Handler core;
+ Handler recall; //recall
+ Queue<Req> reqtask ; //request task
+
+ Transam(String ip, int port,Handler Recall) {
+ p = port;
+ i = ip;
+ recall = Recall;
+ reqtask = new LinkedList<Req>();
+ }
+
+ public void send(Req r){
+ reqtask.offer(r);
+
+ }
+
+ public void run() { //start the main timer
+ //TimerTask tmain = new Timertk();
+ //mtimer = new Timer();
+ //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec
+
+ while(true){
+ if(running == false){
+
+ if(!reqtask.isEmpty()){ //poll the head request
+ req = reqtask.poll();
+ if(req.time + req.alive < System.currentTimeMillis()){ //time out!
+ Message ret = new Message();
+ ret.obj = "Time out!";
+ ret.what = 100;
+ recall.sendMessage(ret);
+ }
+ else{ //run the request
+ final thd t = new thd();
+ flag = false;
+ thread = new Thread(t);
+ cnt = 4;
+ running = true;
+ thread.start();
+ timer = new Timer();
+ TimerTask task = new Timertk();
+ timer.schedule(task, 2000, 2000);
+ }
+ }
+ }
+ }
+ }
+
+ class tmain extends TimerTask {
+ public void run() {
+
+ }
+ };
+
+ class thd implements Runnable {
+ public void run() {
+ try {
+ SocketClient client = new SocketClient(i,p);
+ client.sendMsg(req,recall);
+ Message msg = new Message();
+ msg.what = 1;
+ handler.sendMessage(msg);
+ client.closeSocket();
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
+ System.out.println("UnknownHostException");
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.out.println("IOException");
+ }
+
+ }
+ }
+
+ @SuppressLint("HandlerLeak")
+ Handler handler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 1:
+ flag = true;
+ break;
+ case 2:
+ final thd t = new thd();
+ thread = new Thread(t);
+ thread.start();
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+
+ class Timertk extends TimerTask {
+ public void run() {
+ if (flag == false && cnt > 0) {
+ cnt--;
+ } else if (cnt == 0) {
+ Message msg = new Message();
+ msg.obj = "connecting failed";
+ msg.what = 101;
+ recall.sendMessage(msg);
+ timer.cancel();
+ } else if (flag == true) {
+ timer.cancel();
+ running = false;
+ }
+ }
+ };
+} \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f05e84f54e0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f05e84f54e0d00131719b896d543f08c
new file mode 100644
index 0000000..e5faf14
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f05e84f54e0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/title_activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/title_activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/title_activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/50c48d3c520d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/50c48d3c520d00131719b896d543f08c
new file mode 100644
index 0000000..e4aa2b1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/50c48d3c520d00131719b896d543f08c
@@ -0,0 +1,64 @@
+package com.example.piztor;
+
+import android.content.Context;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.os.SystemClock;
+
+
+public class Tracker implements Runnable {
+
+ private static final long TIME_DELTA = 1000 * 1; // 1 second
+ public Timer timer;
+ private final Context mContext;
+ Controller controller;
+ GPSTracker myTracker;
+ Handler mHandler;
+ Message message;
+
+ public Tracker(Controller newController, Context context, Handler yHandler) {
+ timer = new Timer();
+ mContext = context;
+ controller = newController;
+ myTracker = new GPSTracker(mContext);
+ mHandler = yHandler;
+ }
+
+ public void run() {
+ GPSTask myTask = new GPSTask();
+ timer.schedule(myTask, 0, TIME_DELTA);
+ }
+
+ class GPSTask extends TimerTask {
+ @Override
+ public void run() {
+ message = new Message();
+ message.what = 0;
+ myTracker.getLocation();
+ Log.d("Location", "Fetching location.....");
+ if (myTracker.canGetLocation()) {
+ double latitude = myTracker.getLatitude();
+ double longitude = myTracker.getLongitude();
+
+ Log.d("TTTTTTTTTTTTTTTTTTTTTTTime","TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTime");
+ System.out.println("GPSTIME" + myTracker.location.getTime());
+ System.out.println("SYSTIME" + SystemClock.elapsedRealtime());
+
+ if(myTracker.isGPSFix()) {
+ message.what = 1;
+ } else {
+ message.what = 2;
+ }
+ mHandler.sendMessage(message);
+ } else {
+ message.what = 0;
+ mHandler.sendMessage(message);
+ }
+ }
+ }
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/7081acc66c0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/7081acc66c0d00131719b896d543f08c
new file mode 100644
index 0000000..4d75ae6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/7081acc66c0d00131719b896d543f08c
@@ -0,0 +1,154 @@
+package com.macaroon.piztor;
+
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.ImageButton;
+
+public class Main extends PiztorAct {
+
+ final static int SearchButtonPress = 1;
+ final static int FetchButtonPress = 2;
+ final static int FocuseButtonPress = 3;
+ final static int SuccessFetch = 4;
+ final static int FailedFetch = 5;
+ final static int TimerFlush = 6;
+ ActMgr actMgr;
+ ImageButton btnSearch, btnFetch, btnFocus, btnSettings;
+ @SuppressLint("HandlerLeak")
+ Handler fromGPS = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ if (m.what != 0) {
+ Location l = (Location) m.obj;
+ ReqUpdate r = new ReqUpdate(UserInfo.token, l.getLatitude(),
+ l.getLongitude(), System.currentTimeMillis(), 1000);
+ AppMgr.transam.send(r);
+ }
+ }
+ };
+
+ Handler fromTransam = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+
+ }
+ };
+
+ String cause(int t) {
+ switch (t) {
+ case SearchButtonPress:
+ return "Search Button Press";
+ case FetchButtonPress:
+ return "Fetch Button Press";
+ case FocuseButtonPress:
+ return "Focuse Button Press";
+ case SuccessFetch:
+ return "Success Fetch";
+ case FailedFetch:
+ return "Failed Fetch";
+ case TimerFlush:
+ return "TimerFlush";
+ default:
+ return "Fuck!!!";
+ }
+ }
+
+ class StartStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter start status!!!!");
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave start status!!!! because" + cause(e));
+ }
+
+ }
+
+ class FetchStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter Fetch status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave fetch status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ class FocusStatus extends ActStatus {
+
+ @Override
+ void enter(int e) {
+ System.out.println("enter focus status!!!!");
+
+ }
+
+ @Override
+ void leave(int e) {
+ System.out.println("leave focus status!!!! because" + cause(e));
+
+ }
+
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "Main";
+ super.onCreate(savedInstanceState);
+ AppMgr.tracker.setHandler(fromGPS);
+ ActStatus[] r = new ActStatus[3];
+ r[0] = new StartStatus();
+ r[1] = new FetchStatus();
+ r[2] = new FocusStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ actMgr.add(r[0], FocuseButtonPress, r[2]);
+ actMgr.add(r[0], FetchButtonPress, r[1]);
+ actMgr.add(r[1], FetchButtonPress, r[0]);
+ actMgr.add(r[1], FailedFetch, r[0]);
+ actMgr.add(r[2], FocuseButtonPress, r[0]);
+ actMgr.add(r[0], TimerFlush, r[0]);
+ setContentView(R.layout.activity_main);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ btnFetch = (ImageButton) findViewById(R.id.footbar_btn_fetch);
+ btnFocus = (ImageButton) findViewById(R.id.footbar_btn_focus);
+ btnSearch = (ImageButton) findViewById(R.id.footbar_btn_search);
+ btnSettings = (ImageButton) findViewById(R.id.footbar_btn_settings);
+ btnFetch.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ actMgr.trigger(FetchButtonPress);
+ }
+ });
+ btnFocus.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ actMgr.trigger(FocuseButtonPress);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/90b04d264f0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/90b04d264f0d00131719b896d543f08c
new file mode 100644
index 0000000..eea1611
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fd/90b04d264f0d00131719b896d543f08c
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.macaroon.piztor"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk
+ android:minSdkVersion="8"
+ android:targetSdkVersion="17" />
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar" >
+ <activity
+ android:name="com.macaroon.piztor.InitAct"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Login"
+ android:label="@string/activity_login" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Main"
+ android:label="@string/activity_main" >
+ </activity>
+ <activity
+ android:name="com.macaroon.piztor.Setting"
+ android:label="@string/activity_setting" >
+ </activity>
+ </application>
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+
+</manifest>
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/4015f3cd330d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/4015f3cd330d00131249f322b63acde8
new file mode 100644
index 0000000..9886d46
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/4015f3cd330d00131249f322b63acde8
@@ -0,0 +1,58 @@
+package com.macaroon.piztor;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+public class Login extends PiztorAct {
+ ActMgr actMgr;
+ Button btnLogin;
+ EditText edtUser, edtPass;
+
+ Handler hand = new Handler() {
+ @Override
+ public boolean sendMessage(Message m) {
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ id = "login";
+ super.onCreate(savedInstanceState);
+ btnLogin = (Button) findViewById(R.id.login_btn_login);
+ edtUser = (EditText) findViewById(R.id.user_id);
+ edtPass = (EditText) findViewById(R.id.user_pass);
+ EmptyStatus[] r = new EmptyStatus[1];
+ r[0] = new EmptyStatus();
+ actMgr = new ActMgr(this, r[0], r);
+ setContentView(R.layout.activity_login);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ btnLogin.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.login, menu);
+ return true;
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/c09a68a94b0d00131719b896d543f08c b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/c09a68a94b0d00131719b896d543f08c
new file mode 100644
index 0000000..81fa6f2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/fe/c09a68a94b0d00131719b896d543f08c
@@ -0,0 +1,63 @@
+package com.macaroon.piztor;
+
+import java.util.*;
+
+import android.annotation.SuppressLint;
+
+@SuppressLint("UseSparseArrays")
+public class ActMgr {
+ // event
+ PiztorAct act;
+ ActStatus nowStatus;
+ HashMap<ActStatus, HashMap<Integer, ActStatus>> mp;
+
+ ActMgr(PiztorAct act, ActStatus nowStatus, ActStatus[] r) {
+ this.act = act;
+ this.nowStatus = nowStatus;
+ mp = new HashMap<ActStatus, HashMap<Integer, ActStatus>>();
+ for (int i = 0; i < r.length; i++) {
+ mp.put(r[i], new HashMap<Integer, ActStatus>());
+ }
+ }
+
+ void trigger(int event) {
+ for (Integer i : mp.get(nowStatus).keySet())
+ System.out.println(i);
+ if (mp.get(nowStatus).containsKey(event)) {
+ nowStatus.leave(event);
+ nowStatus = mp.get(nowStatus).get(event);
+ nowStatus.enter(event);
+ } else if (AppMgr.mp.get(act.getClass()).containsKey(event)) {
+ AppMgr.trigger(event);
+ }
+ }
+
+ void add(ActStatus a, int event, ActStatus b) {
+ if (mp.containsKey(a)) {
+ HashMap<Integer, ActStatus> h = mp.get(a);
+ h.put(event, b);
+ mp.put(a, h);
+ } else {
+ HashMap<Integer, ActStatus> h = new HashMap<Integer, ActStatus>();
+ h.put(event, b);
+ mp.put(a, h);
+ }
+ }
+}
+
+abstract class ActStatus {
+ abstract void enter(int e);
+
+ abstract void leave(int e);
+}
+
+class EmptyStatus extends ActStatus {
+ @Override
+ void enter(int e) {
+ }
+
+ @Override
+ void leave(int e) {
+ }
+
+}
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/5f/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/5f/properties.index
new file mode 100644
index 0000000..e7671ef
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/5f/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/62/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/62/properties.index
new file mode 100644
index 0000000..1e11659
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/62/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/66/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/66/properties.index
new file mode 100644
index 0000000..57d84c4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/66/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/cd/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/cd/properties.index
new file mode 100644
index 0000000..3efb4ac
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/cd/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/history.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/history.index
new file mode 100644
index 0000000..c8e5f63
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/history.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/properties.index
new file mode 100644
index 0000000..7344135
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/d6/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/history.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/history.index
new file mode 100644
index 0000000..1949e88
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/history.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/properties.index
new file mode 100644
index 0000000..e1d4fc9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/de/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/eb/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/eb/properties.index
new file mode 100644
index 0000000..99b3382
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/eb/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/ee/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/ee/properties.index
new file mode 100644
index 0000000..e123a38
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/a0/ee/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/af/history.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/af/history.index
new file mode 100644
index 0000000..23cfed3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/af/history.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/81/32/ea/history.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/81/32/ea/history.index
new file mode 100644
index 0000000..d864ea3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/81/32/ea/history.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/history.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/history.index
new file mode 100644
index 0000000..9d98849
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/e4/history.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/history.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/history.index
new file mode 100644
index 0000000..9a6bfd9
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/history.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/properties.index
new file mode 100644
index 0000000..1005094
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.indexes/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers
new file mode 100644
index 0000000..9d6ddfa
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers.snap b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers.snap
new file mode 100644
index 0000000..2a8bb67
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.markers.snap
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.syncinfo.snap b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.syncinfo.snap
new file mode 100644
index 0000000..5213c44
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.projects/Piztor/.syncinfo.snap
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
new file mode 100644
index 0000000..25cb955
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
new file mode 100644
index 0000000..a25bfee
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
new file mode 100644
index 0000000..6b2aaa7
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap
new file mode 100644
index 0000000..79a81b5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.root/7.tree b/client/.metadata/.plugins/org.eclipse.core.resources/.root/7.tree
new file mode 100644
index 0000000..d5bd564
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.root/7.tree
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/client/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
new file mode 100644
index 0000000..b497eb3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.snap b/client/.metadata/.plugins/org.eclipse.core.resources/.snap
new file mode 100644
index 0000000..369021a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.resources/.snap
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.adt.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.adt.prefs
new file mode 100644
index 0000000..8146fde
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.adt.prefs
@@ -0,0 +1,5 @@
+com.android.ide.eclipse.adt.fixLegacyEditors=1
+com.android.ide.eclipse.adt.sdk=/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk
+com.android.ide.eclipse.adt.xmlEditor=true
+design.structure.flyout.width=270
+eclipse.preferences.version=1
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.ddms.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.ddms.prefs
new file mode 100644
index 0000000..b46deeb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.ddms.prefs
@@ -0,0 +1,10 @@
+ddms.logcat.auotmonitor.level=error
+ddms.logcat.automonitor.userprompt=true
+eclipse.preferences.version=1
+logcat.view.colsize.Application=30
+logcat.view.colsize.Level=28
+logcat.view.colsize.PID=60
+logcat.view.colsize.TID=60
+logcat.view.colsize.Tag=130
+logcat.view.colsize.Text=708
+logcat.view.colsize.Time=165
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs
new file mode 100644
index 0000000..b8c9267
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.debug.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.debug.core.cDebug.default_source_containers=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<sourceLookupDirector>\n<sourceContainers duplicates\="false">\n<container memento\="AbsolutePath" typeId\="org.eclipse.cdt.debug.core.containerType.absolutePath"/>\n<container memento\="programRelativePath" typeId\="org.eclipse.cdt.debug.core.containerType.programRelativePath"/>\n<container memento\="&lt;?xml version\=&quot;1.0&quot; encoding\=&quot;UTF-8&quot; standalone\=&quot;no&quot;?&gt;&\#10;&lt;project referencedProjects\=&quot;true&quot;/&gt;&\#10;" typeId\="org.eclipse.cdt.debug.core.containerType.project"/>\n</sourceContainers>\n</sourceLookupDirector>\n
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
new file mode 100644
index 0000000..5e2da66
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+spelling_locale_initialized=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..dffc6b5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+version=1
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs
new file mode 100644
index 0000000..a5f7da5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.core.prefs
@@ -0,0 +1,4 @@
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.applicationLaunchType=org.eclipse.cdt.dsf.gdb.launch.localCLaunch,debug;org.eclipse.cdt.cdi.launch.localCLaunch,run
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.attachLaunchType=org.eclipse.cdt.dsf.gdb.launch.attachCLaunch,debug
+//org.eclipse.debug.core.PREFERRED_DELEGATES/org.eclipse.cdt.launch.postmortemLaunchType=org.eclipse.cdt.dsf.gdb.launch.coreCLaunch,debug
+eclipse.preferences.version=1
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
new file mode 100644
index 0000000..acd9485
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<launchPerspectives/>\n
+preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane|
+preferredTargets=default\:default|org.eclipse.cdt.debug.ui.toggleCBreakpointTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget|
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ca74204
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=
+org.eclipse.jdt.core.codeComplete.visibilityCheck=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs
new file mode 100644
index 0000000..536506b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.debug.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.debug.ui.VariableView.org.eclipse.jdt.debug.ui.show_null_entries=true
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs
new file mode 100644
index 0000000..505f03b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.launching.PREF_VM_XML=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<vmSettings defaultVM\="57,org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType13,1377391558463">\n<vmType id\="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType">\n<vm id\="1377391558463" name\="java-7-openjdk-amd64" path\="/usr/lib/jvm/java-7-openjdk-amd64"/>\n</vmType>\n</vmSettings>\n
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..6eb484d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,19 @@
+content_assist_lru_history=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><history maxLHS\="100" maxRHS\="10"><lhs name\="java.lang.Exception"><rhs name\="com.macaroon.piztor.CannotFindThisClass"/></lhs><lhs name\="java.lang.Throwable"><rhs name\="com.macaroon.piztor.CannotFindThisClass"/></lhs><lhs name\="com.macaroon.piztor.CannotFindThisClass"><rhs name\="com.macaroon.piztor.CannotFindThisClass"/></lhs><lhs name\="android.widget.TextView"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.view.ViewTreeObserver$OnPreDrawListener"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.view.View"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.graphics.drawable.Drawable$Callback"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.view.KeyEvent$Callback"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.view.accessibility.AccessibilityEventSource"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.widget.EditText"><rhs name\="android.widget.EditText"/></lhs><lhs name\="android.os.Handler"><rhs name\="android.os.Handler"/></lhs><lhs name\="java.lang.Runnable"><rhs name\="com.macaroon.piztor.Transam"/></lhs><lhs name\="com.macaroon.piztor.Transam"><rhs name\="com.macaroon.piztor.Transam"/></lhs><lhs name\="com.macaroon.piztor.ActMgr"><rhs name\="com.macaroon.piztor.ActMgr"/></lhs><lhs name\="com.macaroon.piztor.ActStatus"><rhs name\="com.macaroon.piztor.EmptyStatus"/><rhs name\="com.macaroon.piztor.Login$LoginStatus"/></lhs><lhs name\="com.macaroon.piztor.EmptyStatus"><rhs name\="com.macaroon.piztor.EmptyStatus"/></lhs><lhs name\="com.macaroon.piztor.Req"><rhs name\="com.macaroon.piztor.ReqLogin"/></lhs></history>
+content_assist_number_of_computers=12
+content_assist_proposals_background=255,255,255
+content_assist_proposals_foreground=31,28,27
+eclipse.preferences.version=1
+fontPropagated=true
+org.eclipse.jdt.ui.editor.tab.width=
+org.eclipse.jdt.ui.formatterprofiles.version=12
+org.eclipse.jdt.ui.javadoclocations.migrated=true
+org.eclipse.jdt.ui.text.code_templates_migrated=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+org.eclipse.jdt.ui.text.custom_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
+org.eclipse.jdt.ui.text.templates_migrated=true
+org.eclipse.jface.textfont=1|Monospace|13.0|0|GTK|1|;
+proposalOrderMigrated=true
+spelling_locale_initialized=true
+tabWidthPropagated=true
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
new file mode 100644
index 0000000..56cd496
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.team.ui.first_time=false
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
new file mode 100644
index 0000000..0b56132
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+lineNumberRuler=true
+overviewRuler_migration=migrated_3.1
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
new file mode 100644
index 0000000..be2c9aa
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs
@@ -0,0 +1,5 @@
+PROBLEMS_FILTERS_MIGRATE=true
+eclipse.preferences.version=1
+platformState=1377331916127
+quickStart=false
+tipsAndTricks=true
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
new file mode 100644
index 0000000..08076f2
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+showIntro=false
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
new file mode 100644
index 0000000..ca4a674
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs
@@ -0,0 +1,5 @@
+ColorsAndFontsPreferencePage.expandedCategories=Torg.eclipse.ui.workbenchMisc
+ColorsAndFontsPreferencePage.selectedElement=Forg.eclipse.jface.textfont
+eclipse.preferences.version=1
+org.eclipse.jface.textfont=1|Monospace|14.0|0|GTK|1|;
+org.eclipse.ui.commands=<?xml version\="1.0" encoding\="UTF-8"?>\n<org.eclipse.ui.commands>\n<keyBinding contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+P"/>\n<keyBinding contextId\="org.eclipse.ui.contexts.window" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+P"/>\n<keyBinding contextId\="org.eclipse.ui.contexts.dialogAndWindow" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="ALT+/"/>\n<keyBinding contextId\="org.eclipse.ui.contexts.dialogAndWindow" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="ALT+/"/>\n<keyBinding commandId\="org.eclipse.ui.edit.text.contentAssist.proposals" contextId\="org.eclipse.ui.contexts.dialogAndWindow" keyConfigurationId\="org.eclipse.ui.defaultAcceleratorConfiguration" keySequence\="CTRL+P"/>\n</org.eclipse.ui.commands>
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs
new file mode 100644
index 0000000..6966c6e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+task-tag-projects-already-scanned=Piztor
diff --git a/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs
new file mode 100644
index 0000000..4fd0cd3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs
@@ -0,0 +1,4 @@
+content_assist_number_of_computers=2
+eclipse.preferences.version=1
+useAnnotationsPrefPage=true
+useQuickDiffPrefPage=true
diff --git a/client/.metadata/.plugins/org.eclipse.debug.core/.launches/Piztor.launch b/client/.metadata/.plugins/org.eclipse.debug.core/.launches/Piztor.launch
new file mode 100644
index 0000000..806b186
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.debug.core/.launches/Piztor.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="com.android.ide.eclipse.adt.debug.LaunchConfigType">
+<intAttribute key="com.android.ide.eclipse.adt.action" value="0"/>
+<stringAttribute key="com.android.ide.eclipse.adt.commandline" value=""/>
+<intAttribute key="com.android.ide.eclipse.adt.delay" value="0"/>
+<booleanAttribute key="com.android.ide.eclipse.adt.nobootanim" value="false"/>
+<intAttribute key="com.android.ide.eclipse.adt.speed" value="0"/>
+<stringAttribute key="com.android.ide.eclipse.adt.target" value="AUTO"/>
+<booleanAttribute key="com.android.ide.eclipse.adt.wipedata" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Piztor"/>
+<listEntry value="/Piztor/AndroidManifest.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Piztor"/>
+</launchConfiguration>
diff --git a/client/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/client/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml
new file mode 100644
index 0000000..85a770e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="org.eclipse.debug.ui.LAUNCH_CONFIGURATIONS_DIALOG_SECTION">
+ <item value="800" key="DIALOG_WIDTH"/>
+ <item value=", com.android.ide.eclipse.adt.debug.LaunchConfigType, " key="org.eclipse.debug.ui.EXPANDED_NODES"/>
+ <item value="640" key="DIALOG_HEIGHT"/>
+ <item value="237" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_1"/>
+ <item value="1|文泉驿微米黑|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ <item value="762" key="org.eclipse.debug.ui.DIALOG_SASH_WEIGHTS_2"/>
+ </section>
+ <section name="org.eclipse.debug.ui.SELECT_LAUNCH_SHORTCUT_DIALOG">
+ <item value="342" key="DIALOG_WIDTH"/>
+ <item value="452" key="DIALOG_HEIGHT"/>
+ <item value="1|文泉驿微米黑|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ </section>
+</section>
diff --git a/client/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/client/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml
new file mode 100644
index 0000000..13771a6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchHistory>
+<launchGroup id="org.eclipse.ui.externaltools.launchGroup">
+<mruHistory/>
+<favorites/>
+</launchGroup>
+<launchGroup id="org.eclipse.debug.ui.launchGroup.profile">
+<mruHistory/>
+<favorites/>
+</launchGroup>
+<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
+<mruHistory>
+<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;Piztor&quot;/&gt;&#10;"/>
+</mruHistory>
+<favorites/>
+</launchGroup>
+<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
+<mruHistory>
+<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;Piztor&quot;/&gt;&#10;"/>
+</mruHistory>
+<favorites/>
+</launchGroup>
+</launchHistory>
diff --git a/client/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/client/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
new file mode 100644
index 0000000..1f5d367
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi
@@ -0,0 +1,2294 @@
+<?xml version="1.0" encoding="ASCII"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_nNAGgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.legacy.ide.application" contributorURI="platform:/plugin/org.eclipse.ui.workbench" selectedElement="_nNAGgg0VEeO-8I6yck2Tzw" bindingContexts="_nNAtkg0VEeO-8I6yck2Tzw">
+ <tags>activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration</tags>
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_nNAGgg0VEeO-8I6yck2Tzw" elementId="IDEWindow" contributorURI="platform:/plugin/org.eclipse.ui.workbench" selectedElement="_nm7CYQ0VEeO-8I6yck2Tzw" x="1206" y="79" width="1094" height="755">
+ <tags>topLevel</tags>
+ <tags>shellMaximized</tags>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_nm7CYQ0VEeO-8I6yck2Tzw" selectedElement="_nm7pcA0VEeO-8I6yck2Tzw" horizontal="true">
+ <children xsi:type="advanced:PerspectiveStack" xmi:id="_nm7pcA0VEeO-8I6yck2Tzw" elementId="PerspectiveStack" containerData="7500" selectedElement="_nxZNAA0VEeO-8I6yck2Tzw">
+ <children xsi:type="advanced:Perspective" xmi:id="_nxZNAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaPerspective" selectedElement="_nxZNAQ0VEeO-8I6yck2Tzw" label="Java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/jperspective.gif">
+ <persistedState key="persp.hiddenItems" value="persp.hideToolbarSC:org.eclipse.debug.ui.commands.RunToLine,persp.hideToolbarSC:org.eclipse.jdt.ui.actions.OpenProjectWizard,persp.hideToolbarSC:org.eclipse.ui.edit.text.toggleShowSelectedElementOnly,"/>
+ <tags>persp.actionSet:org.eclipse.ui.cheatsheets.actionSet</tags>
+ <tags>persp.actionSet:org.eclipse.search.searchActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo</tags>
+ <tags>persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.actionSet.keyBindings</tags>
+ <tags>persp.actionSet:org.eclipse.ui.actionSet.openFiles</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.launchActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.ui.JavaActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.NavigateActionSet</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.PackageExplorer</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.SourceView</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.ui.JavadocView</tags>
+ <tags>persp.viewSC:org.eclipse.search.ui.views.SearchView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.console.ConsoleView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ContentOutline</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ProblemView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ResourceNavigator</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.TaskList</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ProgressView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer</tags>
+ <tags>persp.viewSC:org.eclipse.ui.texteditor.TemplatesView</tags>
+ <tags>persp.viewSC:org.eclipse.pde.runtime.LogView</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard</tags>
+ <tags>persp.newWizSC:org.eclipse.ui.wizards.new.folder</tags>
+ <tags>persp.newWizSC:org.eclipse.ui.wizards.new.file</tags>
+ <tags>persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard</tags>
+ <tags>persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective</tags>
+ <tags>persp.perspSC:org.eclipse.debug.ui.DebugPerspective</tags>
+ <tags>persp.newWizSC:com.android.ide.eclipse.adt.project.NewProjectWizard</tags>
+ <tags>persp.newWizSC:com.android.ide.eclipse.editors.wizards.NewXmlFileWizard</tags>
+ <tags>persp.actionSet:adt.actionSet.wizards</tags>
+ <tags>persp.actionSet:adt.actionSet.avdManager</tags>
+ <tags>persp.actionSet:adt.actionSet.lint</tags>
+ <tags>persp.actionSet:adt.actionSet.refactorings</tags>
+ <tags>persp.perspSC:com.android.ide.eclipse.ddms.Perspective</tags>
+ <tags>persp.perspSC:com.android.ide.eclipse.hierarchyviewer.PixelPerfectPespective</tags>
+ <tags>persp.perspSC:com.android.ide.eclipse.hierarchyviewer.TreeViewPerspective</tags>
+ <tags>persp.viewSC:org.eclipse.ant.ui.views.AntView</tags>
+ <tags>persp.showIn:org.eclipse.egit.ui.RepositoriesView</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.breakpointActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet</tags>
+ <tags>persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet</tags>
+ <tags>persp.showIn:org.eclipse.jdt.ui.PackageExplorer</tags>
+ <tags>persp.showIn:org.eclipse.team.ui.GenericHistoryView</tags>
+ <tags>persp.showIn:org.eclipse.ui.views.ResourceNavigator</tags>
+ <tags>persp.showIn:org.eclipse.ui.navigator.ProjectExplorer</tags>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_nxZNAQ0VEeO-8I6yck2Tzw" selectedElement="_nxZ0Fg0VEeO-8I6yck2Tzw" horizontal="true">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_nxZNAg0VEeO-8I6yck2Tzw" containerData="2500" selectedElement="_nxZNAw0VEeO-8I6yck2Tzw">
+ <children xsi:type="basic:PartStack" xmi:id="_nxZNAw0VEeO-8I6yck2Tzw" elementId="left" containerData="6000" selectedElement="_nxZNBA0VEeO-8I6yck2Tzw">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.primaryNavigationStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZNBA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.PackageExplorer" ref="_nxFrAA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZ0EA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.TypeHierarchy" toBeRendered="false" ref="_nxJ8cA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZ0EQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ResourceNavigator" toBeRendered="false" ref="_nxKjgA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZ0Eg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigator.ProjectExplorer" toBeRendered="false" ref="_nxKjgQ0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZ0Ew0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.ResultView" toBeRendered="false" ref="_nxX-4A0VEeO-8I6yck2Tzw"/>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_nxZ0FA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewMStack" toBeRendered="false" containerData="4000">
+ <tags>newtablook</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZ0FQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesView" toBeRendered="false" ref="_nxXX0A0VEeO-8I6yck2Tzw"/>
+ </children>
+ </children>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_nxZ0Fg0VEeO-8I6yck2Tzw" containerData="7500" selectedElement="_nxZ0Fw0VEeO-8I6yck2Tzw">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_nxZ0Fw0VEeO-8I6yck2Tzw" containerData="7500" selectedElement="_nxZ0GA0VEeO-8I6yck2Tzw" horizontal="true">
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxZ0GA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editorss" containerData="7500" ref="_nwrbUA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="basic:PartStack" xmi:id="_nxabIA0VEeO-8I6yck2Tzw" elementId="right" containerData="2500" selectedElement="_nxabIQ0VEeO-8I6yck2Tzw">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.secondaryNavigationStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ContentOutline" ref="_nxNm0A0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabIg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.texteditor.TemplatesView" toBeRendered="false" ref="_nxON4A0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabIw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.views.AntView" toBeRendered="false" ref="_nxVioA0VEeO-8I6yck2Tzw"/>
+ </children>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_nxabJA0VEeO-8I6yck2Tzw" elementId="bottom" containerData="2500" selectedElement="_nxabKQ0VEeO-8I6yck2Tzw">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.secondaryDataStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabJQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProblemView" ref="_nxKjgg0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabJg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavadocView" ref="_nxLKkA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabJw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.SourceView" ref="_nxLxoA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabKA0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.views.SearchView" toBeRendered="false" ref="_nxMYsA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxabKQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.console.ConsoleView" ref="_nxM_wA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxbCMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.BookmarkView" toBeRendered="false" ref="_nxM_wQ0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nxbCMQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProgressView" toBeRendered="false" ref="_nxM_wg0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_zRAU0A0eEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.ddms.views.LogCatView" ref="_zQ_GsA0eEeOIacLjN9pZUA"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="advanced:Perspective" xmi:id="_t39XEA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.DebugPerspective" selectedElement="_t39XEQ0fEeOIacLjN9pZUA" label="Debug" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/debug_persp.gif">
+ <persistedState key="persp.hiddenItems" value="persp.hideToolbarSC:org.eclipse.debug.ui.commands.RunToLine,persp.hideToolbarSC:org.eclipse.jdt.ui.actions.OpenProjectWizard,persp.hideToolbarSC:org.eclipse.ui.edit.text.toggleShowSelectedElementOnly,"/>
+ <tags>persp.actionSet:org.eclipse.ui.cheatsheets.actionSet</tags>
+ <tags>persp.actionSet:org.eclipse.search.searchActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation</tags>
+ <tags>persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo</tags>
+ <tags>persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet</tags>
+ <tags>persp.actionSet:org.eclipse.ui.actionSet.keyBindings</tags>
+ <tags>persp.actionSet:org.eclipse.ui.actionSet.openFiles</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.launchActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.debugActionSet</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.DebugView</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.VariableView</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.BreakpointView</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.ExpressionView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ContentOutline</tags>
+ <tags>persp.viewSC:org.eclipse.ui.console.ConsoleView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.TaskList</tags>
+ <tags>persp.viewSC:com.android.ide.eclipse.ddms.views.LogCatView</tags>
+ <tags>persp.viewSC:com.android.ide.eclipse.ddms.views.DeviceView</tags>
+ <tags>persp.perspSC:com.android.ide.eclipse.ddms.Perspective</tags>
+ <tags>persp.viewSC:org.eclipse.ant.ui.views.AntView</tags>
+ <tags>persp.viewSC:org.eclipse.cdt.debug.ui.SignalsView</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.RegisterView</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.ModuleView</tags>
+ <tags>persp.viewSC:org.eclipse.debug.ui.MemoryView</tags>
+ <tags>persp.viewSC:org.eclipse.ui.views.ProblemView</tags>
+ <tags>persp.viewSC:org.eclipse.cdt.debug.ui.executablesView</tags>
+ <tags>persp.actionSet:org.eclipse.cdt.debug.ui.debugActionSet</tags>
+ <tags>persp.viewSC:org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view</tags>
+ <tags>persp.viewSC:org.eclipse.cdt.dsf.debug.ui.disassembly.view</tags>
+ <tags>persp.perspSC:org.eclipse.cdt.ui.CPerspective</tags>
+ <tags>persp.actionSet:org.eclipse.ui.NavigateActionSet</tags>
+ <tags>persp.actionSet:org.eclipse.debug.ui.breakpointActionSet</tags>
+ <tags>persp.viewSC:org.eclipse.pde.runtime.LogView</tags>
+ <tags>persp.showIn:org.eclipse.egit.ui.RepositoriesView</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet</tags>
+ <tags>persp.viewSC:org.eclipse.jdt.debug.ui.DisplayView</tags>
+ <tags>persp.perspSC:org.eclipse.jdt.ui.JavaPerspective</tags>
+ <tags>persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective</tags>
+ <tags>persp.actionSet:org.eclipse.jdt.ui.JavaActionSet</tags>
+ <tags>persp.showIn:org.eclipse.jdt.ui.PackageExplorer</tags>
+ <tags>persp.perspSC:org.eclipse.wst.xml.ui.perspective</tags>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_t39XEQ0fEeOIacLjN9pZUA" selectedElement="_t39XEg0fEeOIacLjN9pZUA">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_t39XEg0fEeOIacLjN9pZUA" containerData="7500" selectedElement="_t39-JQ0fEeOIacLjN9pZUA">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_t39XEw0fEeOIacLjN9pZUA" containerData="4500" selectedElement="_t39XFA0fEeOIacLjN9pZUA" horizontal="true">
+ <children xsi:type="basic:PartStack" xmi:id="_t39XFA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.internal.ui.NavigatorFolderView" containerData="5000" selectedElement="_t39XFQ0fEeOIacLjN9pZUA">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.primaryNavigationStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39XFQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.DebugView" ref="_t3p1EA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39XFg0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.ResourceNavigator" toBeRendered="false" ref="_nxKjgA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39XFw0fEeOIacLjN9pZUA" elementId="org.eclipse.jdt.ui.PackageExplorer" toBeRendered="false" ref="_nxFrAA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39XGA0fEeOIacLjN9pZUA" elementId="org.eclipse.jdt.ui.TypeHierarchy" toBeRendered="false" ref="_nxJ8cA0VEeO-8I6yck2Tzw"/>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_t39XGQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.internal.ui.ToolsFolderView" containerData="5000" selectedElement="_t39XGg0fEeOIacLjN9pZUA">
+ <tags>newtablook</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39XGg0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.VariableView" ref="_t3qcIA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-IA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.BreakpointView" ref="_t3rDMA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-IQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.ExpressionView" toBeRendered="false" ref="_t3rqQA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-Ig0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.RegisterView" toBeRendered="false" ref="_t3rqQQ0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-Iw0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.debug.ui.SignalsView" toBeRendered="false" ref="_t35FoA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-JA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.ModuleView" toBeRendered="false" ref="_t35FoQ0fEeOIacLjN9pZUA"/>
+ </children>
+ </children>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_t39-JQ0fEeOIacLjN9pZUA" containerData="5500" selectedElement="_t39-Jg0fEeOIacLjN9pZUA" horizontal="true">
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-Jg0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.editorss" containerData="7500" ref="_nwrbUA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="basic:PartStack" xmi:id="_t39-Jw0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.internal.ui.OutlineFolderView" containerData="2500" selectedElement="_t39-KA0fEeOIacLjN9pZUA">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.secondaryNavigationStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-KA0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.ContentOutline" ref="_nxNm0A0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-KQ0fEeOIacLjN9pZUA" elementId="org.eclipse.ant.ui.views.AntView" toBeRendered="false" ref="_nxVioA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-Kg0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view" toBeRendered="false" ref="_t37h4A0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-Kw0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.view" toBeRendered="false" ref="_t37h4Q0fEeOIacLjN9pZUA"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="basic:PartSashContainer" xmi:id="_t39-LA0fEeOIacLjN9pZUA" containerData="2500" horizontal="true">
+ <children xsi:type="basic:PartStack" xmi:id="_t39-LQ0fEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.ddms.views.LogCatViewMStack" containerData="5000" selectedElement="_t39-Lg0fEeOIacLjN9pZUA">
+ <tags>newtablook</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-Lg0fEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.ddms.views.LogCatView" ref="_zQ_GsA0eEeOIacLjN9pZUA"/>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_t39-Lw0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.internal.ui.ConsoleFolderView" containerData="5000" selectedElement="_t39-MA0fEeOIacLjN9pZUA">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.secondaryDataStack</tags>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t39-MA0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.console.ConsoleView" ref="_nxM_wA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lMA0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.TaskList" ref="_t3n_4A0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lMQ0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.BookmarkView" toBeRendered="false" ref="_nxM_wQ0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lMg0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.PropertySheet" toBeRendered="false" ref="_t3pOAA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lMw0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.ProblemView" ref="_nxKjgg0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lNA0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.debug.ui.executablesView" ref="_t36TwA0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lNQ0fEeOIacLjN9pZUA" elementId="org.eclipse.jdt.debug.ui.DisplayView" toBeRendered="false" ref="_t38I8A0fEeOIacLjN9pZUA"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_t3-lNg0fEeOIacLjN9pZUA" elementId="org.eclipse.search.SearchResultView" toBeRendered="false" ref="_t38wAA0fEeOIacLjN9pZUA"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_nm7pcQ0VEeO-8I6yck2Tzw" elementId="stickyFolderRight" toBeRendered="false" containerData="2500">
+ <children xsi:type="advanced:Placeholder" xmi:id="_nm7pcg0VEeO-8I6yck2Tzw" elementId="org.eclipse.help.ui.HelpView" toBeRendered="false" ref="_nm5NMA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nm7pcw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.internal.introview" toBeRendered="false" ref="_nm6bUA0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="advanced:Placeholder" xmi:id="_nm7pdA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.cheatsheets.views.CheatSheetView" toBeRendered="false" ref="_nm7CYA0VEeO-8I6yck2Tzw"/>
+ </children>
+ </children>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nm5NMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.help.ui.HelpView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Help" iconURI="platform:/plugin/org.eclipse.help.ui/icons/view16/help_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nm6bUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.internal.introview" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Android IDE" iconURI="platform:/plugin/org.eclipse.ui/icons/full/eview16/defaultview_misc.gif" tooltip="" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_n85SYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.internal.introview">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_n855cA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.internal.introview" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nm7CYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.cheatsheets.views.CheatSheetView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Cheat Sheets" iconURI="platform:/plugin/org.eclipse.ui.cheatsheets/icons/view16/cheatsheet_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </sharedElements>
+ <sharedElements xsi:type="advanced:Area" xmi:id="_nwrbUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editorss" selectedElement="_nwrbUQ0VEeO-8I6yck2Tzw">
+ <children xsi:type="basic:PartStack" xmi:id="_nwrbUQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.primaryDataStack" selectedElement="_kN7tgA06EeO-LcrD_GrR_g">
+ <tags>newtablook</tags>
+ <tags>org.eclipse.e4.primaryDataStack</tags>
+ <tags>EditorStack</tags>
+ <children xsi:type="basic:Part" xmi:id="_yLP3kA0nEeOckphpKkQiww" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="Login.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/Login.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/Login.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;1115&quot; selectionTopPixel=&quot;685&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_ElsHsA0qEeOckphpKkQiww" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="activity_login.xml" iconURI="platform:/plugin/com.android.ide.eclipse.adt/icons/android_file.png" tooltip="Piztor/res/layout/activity_login.xml" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;com.android.ide.eclipse.editors.CommonXmlEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/res/layout/activity_login.xml&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>com.android.ide.eclipse.editors.CommonXmlEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_iBbFkA0tEeOckphpKkQiww" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="ActMgr.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/ActMgr.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/ActMgr.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;653&quot; selectionTopPixel=&quot;176&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_W-6WMA00EeOckphpKkQiww" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="UserInfo.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/UserInfo.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/UserInfo.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;86&quot; selectionTopPixel=&quot;0&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_kJN3gA04EeOckphpKkQiww" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="InitAct.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/InitAct.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/InitAct.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;521&quot; selectionTopPixel=&quot;157&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_3mAnYA04EeO-LcrD_GrR_g" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="AppMgr.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/AppMgr.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/AppMgr.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;1814&quot; selectionTopPixel=&quot;1126&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_JgzZAA05EeO-LcrD_GrR_g" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="Transam.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/Transam.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/Transam.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;2209&quot; selectionTopPixel=&quot;1502&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_kN7tgA06EeO-LcrD_GrR_g" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="Main.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/Main.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/Main.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;504&quot; selectionTopPixel=&quot;0&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ <tags>activeOnClose</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_CVUs8A09EeO-LcrD_GrR_g" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="SocketClient.java" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/obj16/jcu_obj.gif" tooltip="Piztor/src/com/macaroon/piztor/SocketClient.java" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;org.eclipse.jdt.ui.CompilationUnitEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/src/com/macaroon/piztor/SocketClient.java&quot;/>&#xA;&lt;editorState selectionHorizontalPixel=&quot;0&quot; selectionLength=&quot;0&quot; selectionOffset=&quot;500&quot; selectionTopPixel=&quot;0&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>org.eclipse.jdt.ui.CompilationUnitEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_PLCbIA09EeO-LcrD_GrR_g" elementId="org.eclipse.e4.ui.compatibility.editor" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor" label="Piztor Manifest" iconURI="platform:/plugin/com.android.ide.eclipse.adt/icons/android_file.png" tooltip="Piztor/AndroidManifest.xml" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;editor id=&quot;com.android.ide.eclipse.editors.manifest.ManifestEditor&quot;>&#xA;&lt;input factoryID=&quot;org.eclipse.ui.part.FileEditorInputFactory&quot; path=&quot;/Piztor/AndroidManifest.xml&quot;/>&#xA;&lt;/editor>"/>
+ <tags>Editor</tags>
+ <tags>com.android.ide.eclipse.editors.manifest.ManifestEditor</tags>
+ <tags>removeOnHide</tags>
+ </children>
+ </children>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxFrAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.PackageExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Package Explorer" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/package.gif" tooltip="Workspace" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;&quot;>&#xA;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;>&#xA;&lt;xmlDefinedFilters>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/>&#xA;&lt;/xmlDefinedFilters>&#xA;&lt;/customFilters>&#xA;&lt;/view>"/>
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ <menus xmi:id="_n1EMEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.PackageExplorer">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_n1EMEQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.PackageExplorer" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxJ8cA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.TypeHierarchy" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Type Hierarchy" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/class_hi.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxKjgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ResourceNavigator" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Navigator" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/filenav_nav.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxKjgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigator.ProjectExplorer" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.navigator.resources/icons/full/eview16/resource_persp.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxKjgg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProblemView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Problems" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/problems_view.gif" tooltip="0 errors, 15 warnings, 0 others" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view PRIMARY_SORT_FIELD=&quot;org.eclipse.ui.ide.severityAndDescriptionField&quot; categoryGroup=&quot;org.eclipse.ui.ide.severity&quot; markerContentGenerator=&quot;org.eclipse.ui.ide.problemsGenerator&quot; partName=&quot;Problems&quot;>&#xA;&lt;columnWidths org.eclipse.ui.ide.locationField=&quot;120&quot; org.eclipse.ui.ide.markerType=&quot;120&quot; org.eclipse.ui.ide.pathField=&quot;160&quot; org.eclipse.ui.ide.resourceField=&quot;120&quot; org.eclipse.ui.ide.severityAndDescriptionField=&quot;400&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.severityAndDescriptionField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.resourceField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.pathField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.locationField&quot;/>&#xA;&lt;visible IMemento.internal.id=&quot;org.eclipse.ui.ide.markerType&quot;/>&#xA;&lt;/view>"/>
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_n7CRMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProblemView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_n7CRMQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProblemView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxLKkA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavadocView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Javadoc" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/javadoc.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxLxoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.SourceView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Declaration" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/source.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxMYsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.views.SearchView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxM_wA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.console.ConsoleView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Console" iconURI="platform:/plugin/org.eclipse.ui.console/icons/full/cview16/console_view.gif" tooltip="" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view/>"/>
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_oOUZkA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.console.ConsoleView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_oOVAoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.console.ConsoleView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxM_wQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.BookmarkView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Bookmarks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/bkmrk_nav.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxM_wg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProgressView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Progress" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/pview.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxNm0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ContentOutline" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Outline" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/outline_co.gif" tooltip="" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view/>"/>
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ <menus xmi:id="_n5vQsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ContentOutline">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_n5vQsQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ContentOutline" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxON4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.texteditor.TemplatesView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Templates" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/templates.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxVioA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.views.AntView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Ant" iconURI="platform:/plugin/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Ant</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxXX0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Git Repositories" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/repo_rep.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_nxX-4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.ResultView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="JUnit" iconURI="platform:/plugin/org.eclipse.jdt.junit/icons/full/eview16/junit.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_zQ_GsA0eEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.ddms.views.LogCatView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="LogCat" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/logcat.png" tooltip="" closeable="true">
+ <persistedState key="memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;view/>"/>
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ <menus xmi:id="_zRKs4A0eEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.ddms.views.LogCatView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_zRLT8A0eEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.ddms.views.LogCatView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3n_4A0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.TaskList" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Tasks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/tasks_tsk.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3pOAA0fEeOIacLjN9pZUA" elementId="org.eclipse.ui.views.PropertySheet" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Properties" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/prop_ps.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3p1EA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.DebugView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Debug" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/debug_view.gif" tooltip="" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ <menus xmi:id="_t6NZ0A0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.DebugView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_t6NZ0Q0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.DebugView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3qcIA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.VariableView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Variables" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/variable_view.gif" tooltip="" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ <menus xmi:id="_t87WoA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.VariableView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_t87WoQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.VariableView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3rDMA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.BreakpointView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Breakpoints" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/breakpoint_view.gif" tooltip="" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ <menus xmi:id="_uKqQoA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.BreakpointView">
+ <tags>ViewMenu</tags>
+ <tags>menuContribution:menu</tags>
+ </menus>
+ <toolbar xmi:id="_uKqQoQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.BreakpointView" visible="false"/>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3rqQA0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.ExpressionView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Expressions" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/watchlist_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t3rqQQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.RegisterView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Registers" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/register_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t35FoA0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.debug.ui.SignalsView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Signals" iconURI="platform:/plugin/org.eclipse.cdt.debug.ui/icons/view16/signals_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t35FoQ0fEeOIacLjN9pZUA" elementId="org.eclipse.debug.ui.ModuleView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Modules" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/module_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t36TwA0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.debug.ui.executablesView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Executables" iconURI="platform:/plugin/org.eclipse.cdt.debug.ui/icons/obj16/exec_view_obj.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t37h4A0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Trace Control" iconURI="platform:/plugin/org.eclipse.cdt.dsf.gdb.ui/icons/full/view16/tracecontrol_view.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t37h4Q0fEeOIacLjN9pZUA" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.view" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Disassembly" iconURI="platform:/plugin/org.eclipse.cdt.dsf.ui/icons/disassembly.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t38I8A0fEeOIacLjN9pZUA" elementId="org.eclipse.jdt.debug.ui.DisplayView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Display" iconURI="platform:/plugin/org.eclipse.jdt.debug.ui/icons/full/etool16/disp_sbook.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </sharedElements>
+ <sharedElements xsi:type="basic:Part" xmi:id="_t38wAA0fEeOIacLjN9pZUA" elementId="org.eclipse.search.SearchResultView" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView" label="Classic Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" closeable="true">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </sharedElements>
+ <trimBars xmi:id="_nnLhEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.main.toolbar">
+ <children xsi:type="menu:ToolBar" xmi:id="_nqq58A0VEeO-8I6yck2Tzw" elementId="group.file" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_nqq58Q0VEeO-8I6yck2Tzw" elementId="group.file" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqsIEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.workbench.file">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2vyWwA1IEeOULatmD-qAjQ" elementId="new.group"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2vy90A1IEeOULatmD-qAjQ" elementId="newWizardDropDown"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2vy90Q1IEeOULatmD-qAjQ" elementId="new.ext" visible="false"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2vy90g1IEeOULatmD-qAjQ" elementId="save.group" visible="false"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2vzk4A1IEeOULatmD-qAjQ" elementId="save"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2vzk4Q1IEeOULatmD-qAjQ" elementId="saveAll"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v0L8A1IEeOULatmD-qAjQ" elementId="save.ext" visible="false"/>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_2v0zAA1IEeOULatmD-qAjQ" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/print_edit.gif" tooltip="Print" command="_nOi-rw0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v9V4A1IEeOULatmD-qAjQ" elementId="print.ext" visible="false"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v9V4Q1IEeOULatmD-qAjQ" elementId="build.group"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v9V4g1IEeOULatmD-qAjQ" elementId="build.ext" visible="false"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v988A1IEeOULatmD-qAjQ" elementId="additions"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqsIEQ0VEeO-8I6yck2Tzw" elementId="additions" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_nqsvIA0VEeO-8I6yck2Tzw" elementId="additions" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nzEA8A0VEeO-8I6yck2Tzw" elementId="adt.actionSet.avdManager">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_200AsA1IEeOULatmD-qAjQ" elementId="android_project"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_200AsQ1IEeOULatmD-qAjQ" elementId="com.android.ide.eclipse.adt.ui.sdkmanager"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_200nwA1IEeOULatmD-qAjQ" elementId="com.android.ide.eclipse.adt.ui.avdmanager"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nybHwA0VEeO-8I6yck2Tzw" elementId="adt.actionSet.lint">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_201O0A1IEeOULatmD-qAjQ" elementId="android_project"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_201O0Q1IEeOULatmD-qAjQ" elementId="com.android.ide.eclipse.adt.ui.lintrunner"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nxxngA0VEeO-8I6yck2Tzw" elementId="adt.actionSet.wizards">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_20114A1IEeOULatmD-qAjQ" elementId="android_project"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_202c8A1IEeOULatmD-qAjQ" elementId="com.android.ide.eclipse.adt.wizards.actions.NewXmlFileAction"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_0vpvAA0cEeOJONbtYjvLQA" elementId="org.eclipse.debug.ui.breakpointActionSet">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_204SIA1IEeOULatmD-qAjQ" elementId="breakpointGroup"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_204SIQ1IEeOULatmD-qAjQ" elementId="org.eclipse.debug.ui.actions.SkipAllBreakpoints"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nyn8EA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.launchActionSet">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2045MA1IEeOULatmD-qAjQ" elementId="debug"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2045MQ1IEeOULatmD-qAjQ" elementId="org.eclipse.debug.internal.ui.actions.DebugDropDownAction"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_205gQA1IEeOULatmD-qAjQ" elementId="org.eclipse.debug.internal.ui.actions.RunDropDownAction"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_206HUA1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nyUaEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaElementCreationActionSet">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_206HUQ1IEeOULatmD-qAjQ" elementId="JavaWizards"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_206uYA1IEeOULatmD-qAjQ" elementId="org.eclipse.jdt.ui.actions.OpenProjectWizard"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_206uYQ1IEeOULatmD-qAjQ" elementId="org.eclipse.jdt.ui.actions.OpenPackageWizard"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_207VcA1IEeOULatmD-qAjQ" elementId="org.eclipse.jdt.ui.actions.NewTypeDropDown"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nyv34A0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.searchActionSet">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_207VcQ1IEeOULatmD-qAjQ" elementId="Search"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_207Vcg1IEeOULatmD-qAjQ" elementId="openType"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2078gA1IEeOULatmD-qAjQ" elementId="org.eclipse.search.OpenSearchDialogPage"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_YOHP4A0WEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.actionSet.presentation">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_3lUQkA1IEeOULatmD-qAjQ" elementId="Presentation"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_3lUQkQ1IEeOULatmD-qAjQ" elementId="org.eclipse.jdt.ui.edit.text.java.toggleBreadcrumb"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_3lU3oA1IEeOULatmD-qAjQ" elementId="org.eclipse.jdt.ui.edit.text.java.toggleMarkOccurrences"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_3lU3oQ1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.edit.text.toggleBlockSelectionMode"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_3lU3og1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.edit.text.toggleShowWhitespaceCharacters"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_3lVesA1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqsvIQ0VEeO-8I6yck2Tzw" elementId="group.nav" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_nqsvIg0VEeO-8I6yck2Tzw" elementId="group.nav" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqtWMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.workbench.navigate">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v988Q1IEeOULatmD-qAjQ" elementId="history.group"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v-kAA1IEeOULatmD-qAjQ" elementId="group.application" visible="false"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v-kAQ1IEeOULatmD-qAjQ" elementId="backardHistory"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v-kAg1IEeOULatmD-qAjQ" elementId="forwardHistory"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2v_LEA1IEeOULatmD-qAjQ" elementId="pin.group"/>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_2v_LEQ1IEeOULatmD-qAjQ" iconURI="platform:/plugin/org.eclipse.ui/icons/full/etool16/pin_editor.gif" tooltip="Pin the current editor" enabled="false" command="_nOWKUQ0VEeO-8I6yck2Tzw"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2078gQ1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.edit.text.gotoNextAnnotation"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2078gg1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.edit.text.gotoPreviousAnnotation"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_208jkA1IEeOULatmD-qAjQ" elementId="org.eclipse.ui.edit.text.gotoLastEditPosition"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqtWMQ0VEeO-8I6yck2Tzw" elementId="group.editor" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_nqt9QA0VEeO-8I6yck2Tzw" elementId="group.editor" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqt9QQ0VEeO-8I6yck2Tzw" elementId="group.help" toBeRendered="false">
+ <tags>toolbarSeparator</tags>
+ <children xsi:type="menu:ToolBarSeparator" xmi:id="_nqt9Qg0VEeO-8I6yck2Tzw" elementId="group.help" toBeRendered="false"/>
+ </children>
+ <children xsi:type="menu:ToolBar" xmi:id="_nqt9Qw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.workbench.help" visible="false">
+ <tags>Draggable</tags>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2wBAQA1IEeOULatmD-qAjQ" elementId="group.help"/>
+ <children xsi:type="menu:OpaqueToolItem" xmi:id="_2wBnUA1IEeOULatmD-qAjQ" elementId="group.application" visible="false"/>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_nsGdUA0VEeO-8I6yck2Tzw" elementId="PerspectiveSpacer" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.LayoutModifierToolControl">
+ <tags>stretch</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_nsJgoA0VEeO-8I6yck2Tzw" elementId="Spacer Glue" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.LayoutModifierToolControl">
+ <tags>glue</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_nsLV0A0VEeO-8I6yck2Tzw" elementId="SearchField" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.quickaccess.SearchField"/>
+ <children xsi:type="menu:ToolControl" xmi:id="_nsrsIA0VEeO-8I6yck2Tzw" elementId="Search-PS Glue" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/org.eclipse.e4.ui.workbench.renderers.swt.LayoutModifierToolControl">
+ <tags>glue</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_nss6QA0VEeO-8I6yck2Tzw" elementId="PerspectiveSwitcher" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.e4.ui.workbench.addons.perspectiveswitcher.PerspectiveSwitcher">
+ <tags>Draggable</tags>
+ </children>
+ </trimBars>
+ <trimBars xmi:id="_ns8K0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.trim.status" side="Bottom">
+ <children xsi:type="menu:ToolControl" xmi:id="_ns9Y8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.StatusLine" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.StandardTrim">
+ <tags>stretch</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_ntKNQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.HeapStatus" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.StandardTrim"/>
+ <children xsi:type="menu:ToolControl" xmi:id="_ntPFwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ProgressBar" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.StandardTrim">
+ <tags>Draggable</tags>
+ </children>
+ </trimBars>
+ <trimBars xmi:id="_ntm5MA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.trim.vertical1" toBeRendered="false" side="Left">
+ <children xsi:type="menu:ToolControl" xmi:id="_n_BZUA0VEeO-8I6yck2Tzw" elementId="PerspectiveStack(minimized)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <tags>TrimStack</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_pDFB4A0WEeO-8I6yck2Tzw" elementId="left(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <tags>TrimStack</tags>
+ </children>
+ </trimBars>
+ <trimBars xmi:id="_ntouYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.trim.vertical2" toBeRendered="false" side="Right">
+ <children xsi:type="menu:ToolControl" xmi:id="_pDZyAA0WEeO-8I6yck2Tzw" elementId="right(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <tags>TrimStack</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_pDvJMA0WEeO-8I6yck2Tzw" elementId="bottom(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <tags>TrimStack</tags>
+ </children>
+ <children xsi:type="menu:ToolControl" xmi:id="_0AsFUA0eEeOIacLjN9pZUA" elementId="org.eclipse.ui.editorss(org.eclipse.jdt.ui.JavaPerspective)" toBeRendered="false" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.TrimStack">
+ <tags>TrimStack</tags>
+ </children>
+ </trimBars>
+ </children>
+ <handlers xmi:id="_nNAGgw0VEeO-8I6yck2Tzw" elementId="_UW9TY_r3Ed6gmo7caOxU9g" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.ExitHandler" command="_nNAtlg0VEeO-8I6yck2Tzw"/>
+ <handlers xmi:id="_nNAGhA0VEeO-8I6yck2Tzw" elementId="_BESTZfr3Ed6gmo7caOxU04" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.internal.workbench.swt.handlers.ShowViewHandler" command="_nNAtlw0VEeO-8I6yck2Tzw"/>
+ <handlers xmi:id="_nNAGhQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.saveHandler" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.handlers.SaveHandler" command="_nNAtmQ0VEeO-8I6yck2Tzw"/>
+ <handlers xmi:id="_nNAGhg0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.saveAllHandler" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.handlers.SaveAllHandler" command="_nNAtmg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nNAGhw0VEeO-8I6yck2Tzw" contributorURI="platform:/plugin/org.eclipse.ui.workbench" bindingContext="_nNAtkg0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nNAGiA0VEeO-8I6yck2Tzw" elementId="_UW9TZfr3Ed6gmo7caOxU9g" contributorURI="platform:/plugin/org.eclipse.ui.workbench" keySequence="CTRL+Q" command="_nNAtlg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nNAtkA0VEeO-8I6yck2Tzw" elementId="_oRr6EAFSEd-Z8rQksLwRYw" contributorURI="platform:/plugin/org.eclipse.ui.workbench" keySequence="CTRL+S" command="_nNAtmQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nNAtkQ0VEeO-8I6yck2Tzw" contributorURI="platform:/plugin/org.eclipse.ui.workbench" keySequence="CTRL+SHIFT+S" command="_nNAtmg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPjrQA0VEeO-8I6yck2Tzw" keySequence="CTRL+INSERT" command="_nObC5Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPlgcg0VEeO-8I6yck2Tzw" keySequence="CTRL+A" command="_nObC2w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPn8sg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+I" command="_nOWKVA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPrABA0VEeO-8I6yck2Tzw" keySequence="CTRL+V" command="_nOX_hQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPrABQ0VEeO-8I6yck2Tzw" keySequence="CTRL+X" command="_nOgiag0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPrnEA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+Z" command="_nOi-pg0VEeO-8I6yck2Tzw">
+ <tags>platform:gtk</tags>
+ </bindings>
+ <bindings xmi:id="_nPrnEQ0VEeO-8I6yck2Tzw" keySequence="CTRL+Z" command="_nOX_lw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP63oQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+V" command="_nOiXpg0VEeO-8I6yck2Tzw">
+ <tags>platform:gtk</tags>
+ </bindings>
+ <bindings xmi:id="_nP-iAA0VEeO-8I6yck2Tzw" keySequence="ALT+/" command="_nOdfFQ0VEeO-8I6yck2Tzw">
+ <tags>locale:zh</tags>
+ <tags>deleted</tags>
+ </bindings>
+ <bindings xmi:id="_nP_wIg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+L" command="_nOXYdw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_wIw0VEeO-8I6yck2Tzw" keySequence="CTRL+1" command="_nOfUQQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQA-QA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+F3" command="_nOoeMw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQBlUQ0VEeO-8I6yck2Tzw" keySequence="CTRL+F10" command="_nOcQ-A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQF2wA0VEeO-8I6yck2Tzw" keySequence="SHIFT+INSERT" command="_nOX_hQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQVHUg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+D" command="_nOiXpg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQVuYA0VEeO-8I6yck2Tzw" keySequence="SHIFT+DEL" command="_nOgiag0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQWVcg0VEeO-8I6yck2Tzw" keySequence="ALT+PAGE_UP" command="_nOc4Cw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQXjkA0VEeO-8I6yck2Tzw" keySequence="CTRL+C" command="_nObC5Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQYxsQ0VEeO-8I6yck2Tzw" keySequence="ALT+PAGE_DOWN" command="_nOhJcw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_zLCJUA0WEeO-8I6yck2Tzw" keySequence="CTRL+P" command="_nOdfFQ0VEeO-8I6yck2Tzw">
+ <tags>type:user</tags>
+ </bindings>
+ </bindingTables>
+ <bindingTables xmi:id="_nPcWgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.cEditorScope" bindingContext="_nOxBGg0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPh2EA0VEeO-8I6yck2Tzw" keySequence="CTRL+I" command="_nOZNoA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPjEMg0VEeO-8I6yck2Tzw" keySequence="CTRL+TAB" command="_nOnQHg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPlgcA0VEeO-8I6yck2Tzw" keySequence="ALT+C" command="_nOXYcA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPmukA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F" command="_nOmB9Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPnVoA0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+I" command="_nOpsUw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpx4A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_UP" command="_nOnQGw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuqYg0VEeO-8I6yck2Tzw" keySequence="CTRL+O" command="_nOkMyg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPvRcg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+P" command="_nOdfGw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPv4gQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+L" command="_nOU8Og0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPv4gw0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+M" command="_nOX_gw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPwfkg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+R" command="_nOn3NA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxGog0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+O" command="_nOhJdg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxtsA0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+S" command="_nOdfHg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxtsQ0VEeO-8I6yck2Tzw" keySequence="F4" command="_nOhwkQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPyUwA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+T" command="_nOiXlA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPy70Q0VEeO-8I6yck2Tzw" keySequence="F3" command="_nOgiaA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP0J8A0VEeO-8I6yck2Tzw" keySequence="CTRL+/" command="_nOkz1A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP2mMw0VEeO-8I6yck2Tzw" keySequence="CTRL+T" command="_nOUVIg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP30Ug0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+T" command="_nObp5g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP4bYQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Z" command="_nOkz4g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5CcQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+/" command="_nOdfGA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP6QkA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+S" command="_nOjlwA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP6Qkg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+N" command="_nOVjQQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCzdA0VEeO-8I6yck2Tzw" keySequence="CTRL+G" command="_nOi-qw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEBkg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_DOWN" command="_nOmB8A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEooQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_UP" command="_nOla4A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQFPsg0VEeO-8I6yck2Tzw" keySequence="SHIFT+TAB" command="_nOmpEg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQGd1A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_RIGHT" command="_nOetOQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHE4Q0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+H" command="_nOZ0vQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHr8Q0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+\" command="_nOiXoA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQITAQ0VEeO-8I6yck2Tzw" keySequence="CTRL+=" command="_nOX_kQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQSEAg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_LEFT" command="_nObp5A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQTSIQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_DOWN" command="_nOf7Vg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQWVcw0VEeO-8I6yck2Tzw" keySequence="CTRL+#" command="_nOX_kQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQXjkQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+G" command="_nOhJeg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQYxsg0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+H" command="_nOkMzg0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPidIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.javaEditorScope" bindingContext="_nOxBGw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPidIQ0VEeO-8I6yck2Tzw" keySequence="CTRL+I" command="_nObp7A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPmukQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F" command="_nOiXpQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpx4Q0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_UP" command="_nOf7Uw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuqYQ0VEeO-8I6yck2Tzw" keySequence="CTRL+F3" command="_nOetNg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPvRcA0VEeO-8I6yck2Tzw" keySequence="CTRL+O" command="_nOabxA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPvRcw0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+P" command="_nOc4CA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxGow0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+O" command="_nOTuFQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP0J8Q0VEeO-8I6yck2Tzw" keySequence="CTRL+/" command="_nOWKVQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP3NQA0VEeO-8I6yck2Tzw" keySequence="CTRL+T" command="_nObp8w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5CcA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+U" command="_nOkM0w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5Ccg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+/" command="_nOWKVw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5pgQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+M" command="_nOi-sw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5pgg0VEeO-8I6yck2Tzw" keySequence="CTRL+7" command="_nOWKVQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEBkw0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_DOWN" command="_nObC0A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEoog0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_UP" command="_nOfUTQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEopA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+B" command="_nOi-ow0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQGd0Q0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+C" command="_nOWKVQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQGd1Q0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_RIGHT" command="_nOoeOg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHr8g0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+\" command="_nOoePQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQI6EQ0VEeO-8I6yck2Tzw" keySequence="CTRL+2 F" command="_nOkMyw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQI6Eg0VEeO-8I6yck2Tzw" keySequence="CTRL+2 L" command="_nOcQ8w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQI6Ew0VEeO-8I6yck2Tzw" keySequence="CTRL+2 R" command="_nOYmmA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQSEAw0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_LEFT" command="_nOmB_g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQTSIg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_DOWN" command="_nOoeOQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPjEMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.structuredTextEditorScope" bindingContext="_nOxBEQ0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPjEMQ0VEeO-8I6yck2Tzw" keySequence="CTRL+I" command="_nOWKVg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPmukg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F" command="_nOcQ9Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPn8sA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+>" command="_nObp5w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpx4g0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_UP" command="_nOTuGw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPvRcQ0VEeO-8I6yck2Tzw" keySequence="CTRL+O" command="_nOiXoQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPv4gA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+P" command="_nOmB8Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPzi4Q0VEeO-8I6yck2Tzw" keySequence="F3" command="_nOeGLw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5Ccw0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+/" command="_nOf7UQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEBkQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+A" command="_nOnQEA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEooA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_DOWN" command="_nOabyQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEoow0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_UP" command="_nOmB_Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQGd0w0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+C" command="_nOZ0sw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHE4A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_RIGHT" command="_nOjlwg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHr8w0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+\" command="_nOhJfA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQSrEA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+ARROW_LEFT" command="_nOnQGQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQTSIw0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_DOWN" command="_nOYmpg0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPjrQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.contexts.window" bindingContext="_nNAtkw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPjrQg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+NUMPAD_MULTIPLY" command="_nOU8Mg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPkSUg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+D T" command="_nOeGMg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPk5YA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+D A" command="_nOjluA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPk5YQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+D J" command="_nOmB8w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPlgcQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+D Q" command="_nOiXlw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPmHgA0VEeO-8I6yck2Tzw" keySequence="ALT+ARROW_LEFT" command="_nOfUSg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPnVow0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+?" command="_nOla6g0VEeO-8I6yck2Tzw">
+ <tags>locale:zh</tags>
+ </bindings>
+ <bindings xmi:id="_nPojwA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+J" command="_nOpsVg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPojww0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+A D" command="_nOpsWg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpK0A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+A S" command="_nOeGIw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpK0Q0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+A R" command="_nOoeQA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpx5A0VEeO-8I6yck2Tzw" keySequence="ALT+ARROW_RIGHT" command="_nOi-sA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPqY8A0VEeO-8I6yck2Tzw" keySequence="CTRL+B" command="_nOU8MA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPqY8g0VEeO-8I6yck2Tzw" keySequence="ALT+-" command="_nOf7Ug0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPqY8w0VEeO-8I6yck2Tzw" keySequence="CTRL+," command="_nOX_hw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPrAAA0VEeO-8I6yck2Tzw" keySequence="CTRL+." command="_nOabww0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPrAAQ0VEeO-8I6yck2Tzw" keySequence="DEL" command="_nOXYeA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPrnFA0VEeO-8I6yck2Tzw" keySequence="F5" command="_nOZNoQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPsOIQ0VEeO-8I6yck2Tzw" keySequence="ALT+CR" command="_nOkMww0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPsOIg0VEeO-8I6yck2Tzw" keySequence="CTRL+P" command="_nOi-rw0VEeO-8I6yck2Tzw">
+ <tags>deleted</tags>
+ </bindings>
+ <bindings xmi:id="_nPs1MA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+S" command="_nOcQ8Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPs1MQ0VEeO-8I6yck2Tzw" keySequence="CTRL+S" command="_nOetPg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPs1Mg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F4" command="_nOn3MQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPtcQA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+W" command="_nOn3MQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPtcQQ0VEeO-8I6yck2Tzw" keySequence="CTRL+F4" command="_nObC3A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPtcRA0VEeO-8I6yck2Tzw" keySequence="CTRL+W" command="_nObC3A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuDUQ0VEeO-8I6yck2Tzw" keySequence="CTRL+N" command="_nObC3g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuDUg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+U" command="_nOWxZA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuqYA0VEeO-8I6yck2Tzw" keySequence="SHIFT+F2" command="_nOla5A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPv4gg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+L" command="_nOmB-g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPwfkA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+M" command="_nOmpAw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxGoA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+R" command="_nOgiZA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxtsw0VEeO-8I6yck2Tzw" keySequence="F4" command="_nOetRA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPyUwg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+T" command="_nOeGLg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPzi4A0VEeO-8I6yck2Tzw" keySequence="F3" command="_nOgidQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP0xAg0VEeO-8I6yck2Tzw" keySequence="SHIFT+F9" command="_nOkz3A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP0xAw0VEeO-8I6yck2Tzw" keySequence="F9" command="_nOcQ_Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1YEQ0VEeO-8I6yck2Tzw" keySequence="SHIFT+F5" command="_nOYmlQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1_Ig0VEeO-8I6yck2Tzw" keySequence="F11" command="_nOYmkg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP2mMA0VEeO-8I6yck2Tzw" keySequence="CTRL+F11" command="_nOjlsg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP3NQw0VEeO-8I6yck2Tzw" keySequence="F2" command="_nOabwA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP30UQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+V" command="_nOZNqg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP4bYA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+T" command="_nOjltg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP4bYg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Z" command="_nOVjSQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5pgA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+O" command="_nOhwgQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP6QkQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+S" command="_nOX_iA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP63oA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+N" command="_nOTuFg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP63og0VEeO-8I6yck2Tzw" keySequence="CTRL+U" command="_nOpsXA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP7esQ0VEeO-8I6yck2Tzw" keySequence="CTRL+-" command="_nOf7Xw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP8FwQ0VEeO-8I6yck2Tzw" keySequence="F12" command="_nOhwgA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP8s0A0VEeO-8I6yck2Tzw" keySequence="CTRL+M" command="_nOcRAg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP8s0Q0VEeO-8I6yck2Tzw" keySequence="CTRL+F6" command="_nOZNqw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP8s0g0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F6" command="_nOcQ_g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP9T4A0VEeO-8I6yck2Tzw" keySequence="CTRL+F7" command="_nOjlxA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP9T4Q0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F7" command="_nOeGJA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP968A0VEeO-8I6yck2Tzw" keySequence="CTRL+F8" command="_nOpFUg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP968Q0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F8" command="_nOeGMA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP-iAQ0VEeO-8I6yck2Tzw" keySequence="ALT+F7" command="_nOfURw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP-iAg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+F7" command="_nObp7g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_JEg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+NUMPAD_DIVIDE" command="_nOiXmg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_wJA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+R" command="_nObp7w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQAXMA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+W" command="_nOZ0wA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQAXMQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+N" command="_nOX_kw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQAXMg0VEeO-8I6yck2Tzw" keySequence="CTRL+3" command="_nOoeNQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQBlUw0VEeO-8I6yck2Tzw" keySequence="CTRL+Q" command="_nOhwjQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQDagg0VEeO-8I6yck2Tzw" keySequence="CTRL+G" command="_nOabyw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQFPsw0VEeO-8I6yck2Tzw" keySequence="CTRL+H" command="_nOkMxA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHE4w0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+H" command="_nOUVKg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHr8A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+I" command="_nObC4g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQITAA0VEeO-8I6yck2Tzw" keySequence="CTRL+E" command="_nOXYgg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQITAg0VEeO-8I6yck2Tzw" keySequence="CTRL+=" command="_nOfUQA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQI6EA0VEeO-8I6yck2Tzw" keySequence="ALT+?" command="_nOla6g0VEeO-8I6yck2Tzw">
+ <tags>locale:zh</tags>
+ </bindings>
+ <bindings xmi:id="_nQJhIA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+X T" command="_nOkMwg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQJhIQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+X A" command="_nOpFRA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQJhIg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+X J" command="_nOjluQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQKvQA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q V" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQKvQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.debug.ui.VariableView"/>
+ </bindings>
+ <bindings xmi:id="_nQKvQg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q B" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQKvQw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.debug.ui.BreakpointView"/>
+ </bindings>
+ <bindings xmi:id="_nQLWUA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+X Q" command="_nOfUTw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQLWUQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q T" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQLWUg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.TypeHierarchy"/>
+ </bindings>
+ <bindings xmi:id="_nQL9YA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q P" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQL9YQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.PackageExplorer"/>
+ </bindings>
+ <bindings xmi:id="_nQL9Yg0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q D" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQL9Yw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.SourceView"/>
+ </bindings>
+ <bindings xmi:id="_nQMkcA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q J" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQMkcQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.jdt.ui.JavadocView"/>
+ </bindings>
+ <bindings xmi:id="_nQNLgA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q S" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQNLgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.search.ui.views.SearchView"/>
+ </bindings>
+ <bindings xmi:id="_nQNykA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q Y" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQNykQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.team.sync.views.SynchronizeView"/>
+ </bindings>
+ <bindings xmi:id="_nQOZoA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q Z" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQOZoQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.team.ui.GenericHistoryView"/>
+ </bindings>
+ <bindings xmi:id="_nQPAsA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q H" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQPAsQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.cheatsheets.views.CheatSheetView"/>
+ </bindings>
+ <bindings xmi:id="_nQPnwA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q C" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQQO0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.console.ConsoleView"/>
+ </bindings>
+ <bindings xmi:id="_nQQO0Q0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q Q" command="_nOn3Jg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQQ14A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q X" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQQ14Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.views.ProblemView"/>
+ </bindings>
+ <bindings xmi:id="_nQRc8A0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q O" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQRc8Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.ui.views.ContentOutline"/>
+ </bindings>
+ <bindings xmi:id="_nQSEAA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+Q L" command="_nOn3Jg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nQSEAQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="org.eclipse.ui.views.showView.viewId" value="org.eclipse.pde.runtime.LogView"/>
+ </bindings>
+ <bindings xmi:id="_nQSrEQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+B" command="_nOhwig0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQTSIA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+C" command="_nOkMzA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQT5MA0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+G" command="_nOXYfA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQUgQQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+F" command="_nOoePA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQVHUA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+E" command="_nOdfIg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQVuYQ0VEeO-8I6yck2Tzw" keySequence="CTRL+F" command="_nOgibA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQW8gA0VEeO-8I6yck2Tzw" keySequence="CTRL+#" command="_nOhJeQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQYKoA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+G" command="_nOX_gA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQZYwQ0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+H" command="_nOX_jA0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPjrQw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.textEditorScope" bindingContext="_nOwaDQ0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPjrRA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+NUMPAD_MULTIPLY" command="_nOWxYA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPkSUA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+J" command="_nOhJhA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPkSUQ0VEeO-8I6yck2Tzw" keySequence="CTRL+ARROW_UP" command="_nOi-rA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPn8sQ0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+ARROW_UP" command="_nOjlsw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPojwQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+INSERT" command="_nOgidA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPojwg0VEeO-8I6yck2Tzw" keySequence="ALT+ARROW_DOWN" command="_nOgiaw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpK0g0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+A" command="_nOetPQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPqY8Q0VEeO-8I6yck2Tzw" keySequence="CTRL+ARROW_DOWN" command="_nOi-pA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP3NQg0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+/" command="_nOpsUA0VEeO-8I6yck2Tzw">
+ <tags>locale:zh</tags>
+ </bindings>
+ <bindings xmi:id="_nP30UA0VEeO-8I6yck2Tzw" keySequence="F2" command="_nOWxbw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP-iAw0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+Q" command="_nOgibg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_JEA0VEeO-8I6yck2Tzw" keySequence="CTRL+NUMPAD_DIVIDE" command="_nOiXnA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_JEQ0VEeO-8I6yck2Tzw" keySequence="CTRL+NUMPAD_MULTIPLY" command="_nOdfFg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_JEw0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+NUMPAD_DIVIDE" command="_nOc4Ag0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_wIA0VEeO-8I6yck2Tzw" keySequence="CTRL+NUMPAD_ADD" command="_nOetMw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP_wIQ0VEeO-8I6yck2Tzw" keySequence="CTRL+NUMPAD_SUBTRACT" command="_nOjlvw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQA-QQ0VEeO-8I6yck2Tzw" keySequence="CTRL+K" command="_nOnQFA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQA-Qg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+K" command="_nOn3Iw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQA-Qw0VEeO-8I6yck2Tzw" keySequence="CTRL+J" command="_nOcQ-g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQA-RA0VEeO-8I6yck2Tzw" keySequence="CTRL+L" command="_nOhJcQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQBlUA0VEeO-8I6yck2Tzw" keySequence="INSERT" command="_nOXYcQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQBlUg0VEeO-8I6yck2Tzw" keySequence="CTRL+F10" command="_nOfURA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQBlVA0VEeO-8I6yck2Tzw" keySequence="SHIFT+CR" command="_nOc4Dg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCMYA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+CR" command="_nOU8OQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCMYQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+X" command="_nOmB8g0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCMYg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+Y" command="_nOf7VA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCMYw0VEeO-8I6yck2Tzw" keySequence="END" command="_nOoeOw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCzcQ0VEeO-8I6yck2Tzw" keySequence="HOME" command="_nOetNw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCzcg0VEeO-8I6yck2Tzw" keySequence="CTRL+HOME" command="_nOkMwQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQDagw0VEeO-8I6yck2Tzw" keySequence="SHIFT+END" command="_nOU8Ng0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQDahA0VEeO-8I6yck2Tzw" keySequence="CTRL+DEL" command="_nOX_lQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQEBkA0VEeO-8I6yck2Tzw" keySequence="ALT+ARROW_UP" command="_nOkMyA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQFPsQ0VEeO-8I6yck2Tzw" keySequence="CTRL+BS" command="_nOZ0sg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQF2wQ0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+J" command="_nOi-qg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQF2wg0VEeO-8I6yck2Tzw" keySequence="CTRL+END" command="_nOXYcg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQGd0A0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_LEFT" command="_nOgiYA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQT5MQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+DEL" command="_nOZNqA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQUgQA0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+ARROW_DOWN" command="_nOkMzQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQVHUQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+ARROW_RIGHT" command="_nOoeMQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQWVcA0VEeO-8I6yck2Tzw" keySequence="SHIFT+HOME" command="_nOhJfg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQWVcQ0VEeO-8I6yck2Tzw" keySequence="CTRL+ARROW_LEFT" command="_nOYmnQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQYKoQ0VEeO-8I6yck2Tzw" keySequence="CTRL+ARROW_RIGHT" command="_nOkz0A0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQYxsA0VEeO-8I6yck2Tzw" keySequence="CTRL+D" command="_nOcQ9w0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPlgcw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.macroExpansionHoverScope" bindingContext="_nOxoIA0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPlgdA0VEeO-8I6yck2Tzw" keySequence="ALT+ARROW_LEFT" command="_nOVjRg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPpx4w0VEeO-8I6yck2Tzw" keySequence="ALT+ARROW_RIGHT" command="_nOhJgg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPy70w0VEeO-8I6yck2Tzw" keySequence="F3" command="_nOgiaA0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPmHgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.AntEditorScope" bindingContext="_nOxBEA0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPmHgg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+F" command="_nOiXpQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuDUw0VEeO-8I6yck2Tzw" keySequence="SHIFT+F2" command="_nObp5Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPwfkQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+R" command="_nOVjRQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxGoQ0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+O" command="_nOn3JQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPnVoQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.cViewScope" bindingContext="_nOwaBQ0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPnVog0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+I" command="_nOpsUw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPwfkw0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+R" command="_nOn3NA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPxtsg0VEeO-8I6yck2Tzw" keySequence="F4" command="_nOhwkQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPyUwQ0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+T" command="_nOiXlA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPy70g0VEeO-8I6yck2Tzw" keySequence="F3" command="_nOgiaA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQDagA0VEeO-8I6yck2Tzw" keySequence="CTRL+G" command="_nOi-qw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQHE4g0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+H" command="_nOZ0vQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQXjkg0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+G" command="_nOhJeg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQZYwA0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+H" command="_nOkMzg0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPrAAg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesView" bindingContext="_nOwaAw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPrAAw0VEeO-8I6yck2Tzw" keySequence="CTRL+V" command="_nOX_hA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQW8gQ0VEeO-8I6yck2Tzw" keySequence="CTRL+C" command="_nOX_iQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPrnEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.debugging" bindingContext="_nOwaBg0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPrnEw0VEeO-8I6yck2Tzw" keySequence="F5" command="_nOi-qA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1YEg0VEeO-8I6yck2Tzw" keySequence="F6" command="_nOVjRA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1YEw0VEeO-8I6yck2Tzw" keySequence="F7" command="_nOoeNw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1_IA0VEeO-8I6yck2Tzw" keySequence="F8" command="_nOpsWw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1_IQ0VEeO-8I6yck2Tzw" keySequence="CTRL+F2" command="_nOdfHA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP2mMQ0VEeO-8I6yck2Tzw" keySequence="CTRL+R" command="_nObp4w0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP7esA0VEeO-8I6yck2Tzw" keySequence="CTRL+F5" command="_nOgibQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPrnFQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.BreakpointView" bindingContext="_nOwaCg0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPsOIA0VEeO-8I6yck2Tzw" keySequence="ALT+CR" command="_nOi-sQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPtcQg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.memoryview" bindingContext="_nOxBHw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPtcQw0VEeO-8I6yck2Tzw" keySequence="CTRL+W" command="_nOeGKA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPuDUA0VEeO-8I6yck2Tzw" keySequence="CTRL+N" command="_nOf7WA0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP2mMg0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+M" command="_nOVjSg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP2mNA0VEeO-8I6yck2Tzw" keySequence="CTRL+T" command="_nOhwjw0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP3NQQ0VEeO-8I6yck2Tzw" keySequence="ALT+CTRL+N" command="_nOWxcg0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nPyUww0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.makefileEditorScope" bindingContext="_nOxBGQ0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nPy70A0VEeO-8I6yck2Tzw" keySequence="F3" command="_nOpsVQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nPzi4g0VEeO-8I6yck2Tzw" keySequence="CTRL+/" command="_nOnQGg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQF2ww0VEeO-8I6yck2Tzw" keySequence="CTRL+\" command="_nOdfIQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nP0J8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.propertiesEditorScope" bindingContext="_nOxBIQ0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nP0J8w0VEeO-8I6yck2Tzw" keySequence="CTRL+/" command="_nOWKVQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP5pgw0VEeO-8I6yck2Tzw" keySequence="CTRL+7" command="_nOWKVQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQGd0g0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+C" command="_nOWKVQ0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nP0J9A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.debugging" bindingContext="_nOwaCw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nP0J9Q0VEeO-8I6yck2Tzw" keySequence="SHIFT+F6" command="_nObp9Q0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP0xAA0VEeO-8I6yck2Tzw" keySequence="SHIFT+F8" command="_nOhwhg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP0xAQ0VEeO-8I6yck2Tzw" keySequence="SHIFT+F7" command="_nOZNtg0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP1YEA0VEeO-8I6yck2Tzw" keySequence="SHIFT+F5" command="_nOX_jg0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nP7esg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.memory.abstractasynctablerendering" bindingContext="_nOwaCA0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nP7esw0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+," command="_nOn3Ig0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nP8FwA0VEeO-8I6yck2Tzw" keySequence="CTRL+SHIFT+." command="_nOTuEQ0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQDagQ0VEeO-8I6yck2Tzw" keySequence="CTRL+G" command="_nOdfIA0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nQCMZA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.context" bindingContext="_nOwaBw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nQCzcA0VEeO-8I6yck2Tzw" keySequence="HOME" command="_nOZNow0VEeO-8I6yck2Tzw"/>
+ <bindings xmi:id="_nQCzcw0VEeO-8I6yck2Tzw" keySequence="CTRL+G" command="_nOTuFw0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nQEopQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.breadcrumbEditorScope" bindingContext="_nOxBIw0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nQFPsA0VEeO-8I6yck2Tzw" keySequence="ALT+SHIFT+B" command="_nOi-ow0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nQW8gg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.ReflogView" bindingContext="_nOwaBA0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nQW8gw0VEeO-8I6yck2Tzw" keySequence="CTRL+C" command="_nObC3Q0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nQYKog0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.console" bindingContext="_nOwaDA0VEeO-8I6yck2Tzw">
+ <bindings xmi:id="_nQYKow0VEeO-8I6yck2Tzw" keySequence="CTRL+D" command="_nOc4Bw0VEeO-8I6yck2Tzw"/>
+ </bindingTables>
+ <bindingTables xmi:id="_nZMvcQ0VEeO-8I6yck2Tzw" bindingContext="_nZMvcA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZN9kQ0VEeO-8I6yck2Tzw" bindingContext="_nZN9kA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZOkoQ0VEeO-8I6yck2Tzw" bindingContext="_nZOkoA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZOkow0VEeO-8I6yck2Tzw" bindingContext="_nZOkog0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZPLsQ0VEeO-8I6yck2Tzw" bindingContext="_nZPLsA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZPLsw0VEeO-8I6yck2Tzw" bindingContext="_nZPLsg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZPywQ0VEeO-8I6yck2Tzw" bindingContext="_nZPywA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZRn8Q0VEeO-8I6yck2Tzw" bindingContext="_nZRn8A0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZS2EQ0VEeO-8I6yck2Tzw" bindingContext="_nZS2EA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZUEMA0VEeO-8I6yck2Tzw" bindingContext="_nZTdIQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZUEMg0VEeO-8I6yck2Tzw" bindingContext="_nZUEMQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZUrQQ0VEeO-8I6yck2Tzw" bindingContext="_nZUrQA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZUrQw0VEeO-8I6yck2Tzw" bindingContext="_nZUrQg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZVSUQ0VEeO-8I6yck2Tzw" bindingContext="_nZVSUA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZV5YA0VEeO-8I6yck2Tzw" bindingContext="_nZVSUg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZV5Yg0VEeO-8I6yck2Tzw" bindingContext="_nZV5YQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZWgcQ0VEeO-8I6yck2Tzw" bindingContext="_nZWgcA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nZWgcw0VEeO-8I6yck2Tzw" bindingContext="_nZWgcg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwspcQ0VEeO-8I6yck2Tzw" bindingContext="_nwspcA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwtQgQ0VEeO-8I6yck2Tzw" bindingContext="_nwtQgA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwt3kQ0VEeO-8I6yck2Tzw" bindingContext="_nwt3kA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwt3kw0VEeO-8I6yck2Tzw" bindingContext="_nwt3kg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwueoQ0VEeO-8I6yck2Tzw" bindingContext="_nwueoA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwvFsQ0VEeO-8I6yck2Tzw" bindingContext="_nwvFsA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwvswQ0VEeO-8I6yck2Tzw" bindingContext="_nwvswA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwwT0Q0VEeO-8I6yck2Tzw" bindingContext="_nwwT0A0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwwT0w0VEeO-8I6yck2Tzw" bindingContext="_nwwT0g0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nww64Q0VEeO-8I6yck2Tzw" bindingContext="_nww64A0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwxh8Q0VEeO-8I6yck2Tzw" bindingContext="_nwxh8A0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwxh8w0VEeO-8I6yck2Tzw" bindingContext="_nwxh8g0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwyJAQ0VEeO-8I6yck2Tzw" bindingContext="_nwyJAA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwywEQ0VEeO-8I6yck2Tzw" bindingContext="_nwywEA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwywEw0VEeO-8I6yck2Tzw" bindingContext="_nwywEg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwzXIQ0VEeO-8I6yck2Tzw" bindingContext="_nwzXIA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nwz-MQ0VEeO-8I6yck2Tzw" bindingContext="_nwz-MA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw0lQA0VEeO-8I6yck2Tzw" bindingContext="_nwz-Mg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw1MUA0VEeO-8I6yck2Tzw" bindingContext="_nw0lQQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw1MUg0VEeO-8I6yck2Tzw" bindingContext="_nw1MUQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw1zYQ0VEeO-8I6yck2Tzw" bindingContext="_nw1zYA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw2acQ0VEeO-8I6yck2Tzw" bindingContext="_nw2acA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw3BgA0VEeO-8I6yck2Tzw" bindingContext="_nw2acg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw3Bgg0VEeO-8I6yck2Tzw" bindingContext="_nw3BgQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw3okQ0VEeO-8I6yck2Tzw" bindingContext="_nw3okA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw4PoQ0VEeO-8I6yck2Tzw" bindingContext="_nw4PoA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw42sQ0VEeO-8I6yck2Tzw" bindingContext="_nw42sA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw5dwA0VEeO-8I6yck2Tzw" bindingContext="_nw42sg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw6E0A0VEeO-8I6yck2Tzw" bindingContext="_nw5dwQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw6r4A0VEeO-8I6yck2Tzw" bindingContext="_nw6E0Q0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw7S8Q0VEeO-8I6yck2Tzw" bindingContext="_nw7S8A0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw76AQ0VEeO-8I6yck2Tzw" bindingContext="_nw76AA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw8hEQ0VEeO-8I6yck2Tzw" bindingContext="_nw8hEA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw9IIQ0VEeO-8I6yck2Tzw" bindingContext="_nw9IIA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw9vMQ0VEeO-8I6yck2Tzw" bindingContext="_nw9vMA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw9vMw0VEeO-8I6yck2Tzw" bindingContext="_nw9vMg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw-WQQ0VEeO-8I6yck2Tzw" bindingContext="_nw-WQA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw-9UQ0VEeO-8I6yck2Tzw" bindingContext="_nw-9UA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw_kYA0VEeO-8I6yck2Tzw" bindingContext="_nw-9Ug0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nw_kYg0VEeO-8I6yck2Tzw" bindingContext="_nw_kYQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxALcQ0VEeO-8I6yck2Tzw" bindingContext="_nxALcA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxAygQ0VEeO-8I6yck2Tzw" bindingContext="_nxAygA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxBZkA0VEeO-8I6yck2Tzw" bindingContext="_nxAygg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxBZkg0VEeO-8I6yck2Tzw" bindingContext="_nxBZkQ0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxCAoQ0VEeO-8I6yck2Tzw" bindingContext="_nxCAoA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxCnsQ0VEeO-8I6yck2Tzw" bindingContext="_nxCnsA0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_nxCnsw0VEeO-8I6yck2Tzw" bindingContext="_nxCnsg0VEeO-8I6yck2Tzw"/>
+ <bindingTables xmi:id="_uAvfoQ0fEeOIacLjN9pZUA" bindingContext="_uAvfoA0fEeOIacLjN9pZUA"/>
+ <rootContext xmi:id="_nNAtkg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.contexts.dialogAndWindow" contributorURI="platform:/plugin/org.eclipse.ui.workbench" name="In Dialogs and Windows" description="Either a dialog or a window is open">
+ <children xmi:id="_nNAtkw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.contexts.window" contributorURI="platform:/plugin/org.eclipse.ui.workbench" name="In Windows" description="A window is open">
+ <children xmi:id="_nNAtlA0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.contexts.views" contributorURI="platform:/plugin/org.eclipse.ui.workbench" name="%bindingcontext.name.bindingView"/>
+ <children xmi:id="_nOwaAQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.compareEditorScope" name="Comparing in an Editor" description="Comparing in an Editor"/>
+ <children xmi:id="_nOwaAw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesView" name="In Git Repositories View"/>
+ <children xmi:id="_nOwaBA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.ReflogView" name="In Git Reflog View"/>
+ <children xmi:id="_nOwaBQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.cViewScope" name="In C/C++ Views" description="In C/C++ Views"/>
+ <children xmi:id="_nOwaBg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.debugging" name="Debugging" description="Debugging Programs">
+ <children xmi:id="_nOwaBw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.context" name="In Disassembly" description="When debugging in assembly mode"/>
+ <children xmi:id="_nOwaCA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.memory.abstractasynctablerendering" name="In Table Memory Rendering" description="In Table Memory Rendering"/>
+ <children xmi:id="_nOwaCw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.debugging" name="Debugging C/C++" description="Debugging C/C++ Programs"/>
+ <children xmi:id="_nOxBHA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.debugging" name="Debugging Java" description="Debugging Java programs"/>
+ </children>
+ <children xmi:id="_nOwaCg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.BreakpointView" name="In Breakpoints View" description="The breakpoints view context"/>
+ <children xmi:id="_nOwaDA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.console" name="In I/O Console" description="In I/O Console"/>
+ <children xmi:id="_nOwaDQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.textEditorScope" name="Editing Text" description="Editing Text Context">
+ <children xmi:id="_nOxBEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.AntEditorScope" name="Editing Ant Buildfiles" description="Editing Ant Buildfiles Context"/>
+ <children xmi:id="_nOxBEQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.structuredTextEditorScope" name="Editing in Structured Text Editors" description="Editing in Structured Text Editors">
+ <children xmi:id="_nOxBEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.occurrences" name="XML Source Occurrences" description="XML Source Occurrences"/>
+ <children xmi:id="_nOxBEw0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.navigation" name="XML Source Navigation" description="XML Source Navigation"/>
+ <children xmi:id="_nOxBFA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.cleanup" name="XML Source Cleanup" description="XML Source Cleanup"/>
+ <children xmi:id="_nOxBFQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.grammar" name="XML Source Grammar" description="XML Source Grammar"/>
+ <children xmi:id="_nOxBFg0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.comments" name="Source Comments in Structured Text Editors" description="Source Comments in Structured Text Editors"/>
+ <children xmi:id="_nOxBFw0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.selection" name="XML Source Selection" description="XML Source Selection"/>
+ <children xmi:id="_nOxBGA0VEeO-8I6yck2Tzw" elementId="org.eclipse.core.runtime.xml" name="Editing XML Source" description="Editing XML Source"/>
+ <children xmi:id="_nOxBIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.comments" name="XML Source Comments" description="XML Source Comments"/>
+ <children xmi:id="_nOxBJA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.dependencies" name="XML Source Dependencies" description="XML Source Dependencies"/>
+ <children xmi:id="_nOxoIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.expand" name="XML Source Expand/Collapse" description="XML Source Expand/Collapse"/>
+ </children>
+ <children xmi:id="_nOxBGQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.makefileEditorScope" name="Makefile Editor" description="Editor for makefiles"/>
+ <children xmi:id="_nOxBGg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.cEditorScope" name="C/C++ Editor" description="Editor for C/C++ Source Files"/>
+ <children xmi:id="_nOxBGw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.javaEditorScope" name="Editing Java Source" description="Editing Java Source Context"/>
+ <children xmi:id="_nOxBHg0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.text.editor.context" name="Editing XSD context"/>
+ <children xmi:id="_nOxBIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.propertiesEditorScope" name="Editing Properties Files" description="Editing Properties Files Context"/>
+ </children>
+ <children xmi:id="_nOxBHw0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.memoryview" name="In Memory View" description="In Memory View"/>
+ <children xmi:id="_nOxBIg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.console.ConsoleView" name="In Console View" description="In Console View"/>
+ </children>
+ <children xmi:id="_nNAtlQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.contexts.dialog" contributorURI="platform:/plugin/org.eclipse.ui.workbench" name="In Dialogs" description="A dialog is open"/>
+ <children xmi:id="_nOxoIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.macroExpansionHoverScope" name="In Macro Expansion Hover" description="In Macro Expansion Hover"/>
+ </rootContext>
+ <rootContext xmi:id="_nOwaAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.editor.designView" name="XSD Editor Design View" description="XSD Editor Design View"/>
+ <rootContext xmi:id="_nOwaAg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.contexts.workbenchMenu" name="Workbench Menu" description="When no Workbench windows are active"/>
+ <rootContext xmi:id="_nOwaCQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.editor.sourceView" name="XSD Editor Source View" description="XSD Editor Source View"/>
+ <rootContext xmi:id="_nOxBHQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.contexts.actionSet" name="Action Set" description="Parent context for action sets"/>
+ <rootContext xmi:id="_nOxBIw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.breadcrumbEditorScope" name="Editor Breadcrumb Navigation" description="Editor Breadcrumb Navigation Context"/>
+ <rootContext xmi:id="_nZMvcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.OpenExternalDocAction" name="Auto::org.eclipse.ant.ui.OpenExternalDocAction"/>
+ <rootContext xmi:id="_nZN9kA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.actions.ManageBreakpointRulerAction" name="Auto::org.eclipse.ant.ui.actions.ManageBreakpointRulerAction"/>
+ <rootContext xmi:id="_nZOkoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.CEditor.RulerTobbleBreakpointAction" name="Auto::org.eclipse.cdt.debug.ui.CEditor.RulerTobbleBreakpointAction"/>
+ <rootContext xmi:id="_nZOkog0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.texteditor.BookmarkRulerAction" name="Auto::org.eclipse.ui.texteditor.BookmarkRulerAction"/>
+ <rootContext xmi:id="_nZPLsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.internal.ui.text.correction.CSelectRulerAction" name="Auto::org.eclipse.cdt.internal.ui.text.correction.CSelectRulerAction"/>
+ <rootContext xmi:id="_nZPLsg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction" name="Auto::org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction"/>
+ <rootContext xmi:id="_nZPywA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.SnippetExecute" name="Auto::org.eclipse.jdt.debug.ui.SnippetExecute"/>
+ <rootContext xmi:id="_nZRn8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.SnippetDisplay" name="Auto::org.eclipse.jdt.debug.ui.SnippetDisplay"/>
+ <rootContext xmi:id="_nZS2EA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.SnippetInspect" name="Auto::org.eclipse.jdt.debug.ui.SnippetInspect"/>
+ <rootContext xmi:id="_nZTdIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.internal.ui.javaeditor.BookmarkRulerAction" name="Auto::org.eclipse.jdt.internal.ui.javaeditor.BookmarkRulerAction"/>
+ <rootContext xmi:id="_nZUEMQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction" name="Auto::org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction"/>
+ <rootContext xmi:id="_nZUrQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.internal.ui.propertiesfileeditor.BookmarkRulerAction" name="Auto::org.eclipse.jdt.internal.ui.propertiesfileeditor.BookmarkRulerAction"/>
+ <rootContext xmi:id="_nZUrQg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.internal.ui.propertiesfileeditor.SelectRulerAction" name="Auto::org.eclipse.jdt.internal.ui.propertiesfileeditor.SelectRulerAction"/>
+ <rootContext xmi:id="_nZVSUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.texteditor.SelectRulerAction" name="Auto::org.eclipse.ui.texteditor.SelectRulerAction"/>
+ <rootContext xmi:id="_nZVSUg0VEeO-8I6yck2Tzw" elementId="StructureSelectEnclosing" name="Auto::StructureSelectEnclosing"/>
+ <rootContext xmi:id="_nZV5YQ0VEeO-8I6yck2Tzw" elementId="StructureSelectNext" name="Auto::StructureSelectNext"/>
+ <rootContext xmi:id="_nZWgcA0VEeO-8I6yck2Tzw" elementId="StructureSelectPrevious" name="Auto::StructureSelectPrevious"/>
+ <rootContext xmi:id="_nZWgcg0VEeO-8I6yck2Tzw" elementId="StructureSelectHistory" name="Auto::StructureSelectHistory"/>
+ <rootContext xmi:id="_nwspcA0VEeO-8I6yck2Tzw" elementId="adt.actionSet.wizards" name="Auto::adt.actionSet.wizards"/>
+ <rootContext xmi:id="_nwtQgA0VEeO-8I6yck2Tzw" elementId="adt.actionSet.refactorings" name="Auto::adt.actionSet.refactorings"/>
+ <rootContext xmi:id="_nwt3kA0VEeO-8I6yck2Tzw" elementId="adt.actionSet.avdManager" name="Auto::adt.actionSet.avdManager"/>
+ <rootContext xmi:id="_nwt3kg0VEeO-8I6yck2Tzw" elementId="adt.actionSet.lint" name="Auto::adt.actionSet.lint"/>
+ <rootContext xmi:id="_nwueoA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.gltrace.actionset" name="Auto::com.android.ide.eclipse.gltrace.actionset"/>
+ <rootContext xmi:id="_nwvFsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.actionSet.presentation" name="Auto::org.eclipse.ant.ui.actionSet.presentation"/>
+ <rootContext xmi:id="_nwvswA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.debugActionSet" name="Auto::org.eclipse.cdt.debug.ui.debugActionSet"/>
+ <rootContext xmi:id="_nwwT0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.reverseDebuggingActionSet" name="Auto::org.eclipse.cdt.debug.ui.reverseDebuggingActionSet"/>
+ <rootContext xmi:id="_nwwT0g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.tracepointActionSet" name="Auto::org.eclipse.cdt.debug.ui.tracepointActionSet"/>
+ <rootContext xmi:id="_nww64A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.debugViewLayoutActionSet" name="Auto::org.eclipse.cdt.debug.ui.debugViewLayoutActionSet"/>
+ <rootContext xmi:id="_nwxh8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.updateModes" name="Auto::org.eclipse.cdt.dsf.debug.ui.updateModes"/>
+ <rootContext xmi:id="_nwxh8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.updateActionSet" name="Auto::org.eclipse.cdt.make.ui.updateActionSet"/>
+ <rootContext xmi:id="_nwyJAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.makeTargetActionSet" name="Auto::org.eclipse.cdt.make.ui.makeTargetActionSet"/>
+ <rootContext xmi:id="_nwywEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.CodingActionSet" name="Auto::org.eclipse.cdt.ui.CodingActionSet"/>
+ <rootContext xmi:id="_nwywEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.SearchActionSet" name="Auto::org.eclipse.cdt.ui.SearchActionSet"/>
+ <rootContext xmi:id="_nwzXIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.NavigationActionSet" name="Auto::org.eclipse.cdt.ui.NavigationActionSet"/>
+ <rootContext xmi:id="_nwz-MA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.OpenActionSet" name="Auto::org.eclipse.cdt.ui.OpenActionSet"/>
+ <rootContext xmi:id="_nwz-Mg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.buildConfigActionSet" name="Auto::org.eclipse.cdt.ui.buildConfigActionSet"/>
+ <rootContext xmi:id="_nw0lQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.CElementCreationActionSet" name="Auto::org.eclipse.cdt.ui.CElementCreationActionSet"/>
+ <rootContext xmi:id="_nw1MUQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.text.c.actionSet.presentation" name="Auto::org.eclipse.cdt.ui.text.c.actionSet.presentation"/>
+ <rootContext xmi:id="_nw1zYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.breakpointActionSet" name="Auto::org.eclipse.debug.ui.breakpointActionSet"/>
+ <rootContext xmi:id="_nw2acA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.debugActionSet" name="Auto::org.eclipse.debug.ui.debugActionSet"/>
+ <rootContext xmi:id="_nw2acg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.launchActionSet" name="Auto::org.eclipse.debug.ui.launchActionSet"/>
+ <rootContext xmi:id="_nw3BgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.profileActionSet" name="Auto::org.eclipse.debug.ui.profileActionSet"/>
+ <rootContext xmi:id="_nw3okA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.gitaction" name="Auto::org.eclipse.egit.ui.gitaction"/>
+ <rootContext xmi:id="_nw4PoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.navigation" name="Auto::org.eclipse.egit.ui.navigation"/>
+ <rootContext xmi:id="_nw42sA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.JDTDebugActionSet" name="Auto::org.eclipse.jdt.debug.ui.JDTDebugActionSet"/>
+ <rootContext xmi:id="_nw42sg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.JUnitActionSet" name="Auto::org.eclipse.jdt.junit.JUnitActionSet"/>
+ <rootContext xmi:id="_nw5dwQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.text.java.actionSet.presentation" name="Auto::org.eclipse.jdt.ui.text.java.actionSet.presentation"/>
+ <rootContext xmi:id="_nw6E0Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaElementCreationActionSet" name="Auto::org.eclipse.jdt.ui.JavaElementCreationActionSet"/>
+ <rootContext xmi:id="_nw7S8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaActionSet" name="Auto::org.eclipse.jdt.ui.JavaActionSet"/>
+ <rootContext xmi:id="_nw76AA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.A_OpenActionSet" name="Auto::org.eclipse.jdt.ui.A_OpenActionSet"/>
+ <rootContext xmi:id="_nw8hEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.CodingActionSet" name="Auto::org.eclipse.jdt.ui.CodingActionSet"/>
+ <rootContext xmi:id="_nw9IIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.SearchActionSet" name="Auto::org.eclipse.jdt.ui.SearchActionSet"/>
+ <rootContext xmi:id="_nw9vMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.cheatsheets.actionSet" name="Auto::org.eclipse.ui.cheatsheets.actionSet"/>
+ <rootContext xmi:id="_nw9vMg0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.searchActionSet" name="Auto::org.eclipse.search.searchActionSet"/>
+ <rootContext xmi:id="_nw-WQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.actionSet" name="Auto::org.eclipse.team.ui.actionSet"/>
+ <rootContext xmi:id="_nw-9UA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.actionSet.annotationNavigation" name="Auto::org.eclipse.ui.edit.text.actionSet.annotationNavigation"/>
+ <rootContext xmi:id="_nw-9Ug0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.actionSet.navigation" name="Auto::org.eclipse.ui.edit.text.actionSet.navigation"/>
+ <rootContext xmi:id="_nw_kYQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo" name="Auto::org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo"/>
+ <rootContext xmi:id="_nxALcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.externaltools.ExternalToolsSet" name="Auto::org.eclipse.ui.externaltools.ExternalToolsSet"/>
+ <rootContext xmi:id="_nxAygA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.NavigateActionSet" name="Auto::org.eclipse.ui.NavigateActionSet"/>
+ <rootContext xmi:id="_nxAygg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.actionSet.keyBindings" name="Auto::org.eclipse.ui.actionSet.keyBindings"/>
+ <rootContext xmi:id="_nxBZkQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.WorkingSetModificationActionSet" name="Auto::org.eclipse.ui.WorkingSetModificationActionSet"/>
+ <rootContext xmi:id="_nxCAoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.WorkingSetActionSet" name="Auto::org.eclipse.ui.WorkingSetActionSet"/>
+ <rootContext xmi:id="_nxCnsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.actionSet.openFiles" name="Auto::org.eclipse.ui.actionSet.openFiles"/>
+ <rootContext xmi:id="_nxCnsg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.actionSet.presentation" name="Auto::org.eclipse.ui.edit.text.actionSet.presentation"/>
+ <rootContext xmi:id="_uAvfoA0fEeOIacLjN9pZUA" elementId="com.android.ide.eclipse.adt.debug.LaunchConfigType.internal.org.eclipse.debug.ui.DebugPerspective" name="Auto::com.android.ide.eclipse.adt.debug.LaunchConfigType.internal.org.eclipse.debug.ui.DebugPerspective"/>
+ <descriptors xmi:id="_nV48wA0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.compatibility.editor" allowMultiple="true" category="org.eclipse.e4.primaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor">
+ <tags>Editor</tags>
+ </descriptors>
+ <descriptors xmi:id="_nV91QA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.editors.resources.explorer.ResourceExplorerView" label="Resource Explorer" iconURI="platform:/plugin/com.android.ide.eclipse.adt/icons/draw9patch-16.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWFxEA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.internal.lint.LintViewPart" label="Lint Warnings" iconURI="platform:/plugin/com.android.ide.eclipse.adt/icons/lintview.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWGYIA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.DeviceView" label="Devices" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/device.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWHmQA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.OldLogCatView" label="LogCat (deprecated)" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/android.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWINUA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.LogCatView" label="LogCat" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/logcat.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWJbcA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.ThreadView" label="Threads" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/thread.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWKCgA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.HeapView" label="Heap" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/heap.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWKpkA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.FileExplorerView" label="File Explorer" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/android.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWLQoA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.EmulatorControlView" label="Emulator Control" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/emulator-16.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWL3sA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.AllocTrackerView" label="Allocation Tracker" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/heap.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWMewA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.NetworkStatsView" label="Network Statistics" iconURI="platform:/plugin/com.android.ide.eclipse.ddms/icons/networkstats.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWNF0A0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.ddms.views.SysInfoView" label="System Information" iconURI="platform:/plugin/org.eclipse.ui/icons/full/eview16/defaultview_misc.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWNs4A0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.gltrace.views.FrameBuffer" label="Frame Summary" iconURI="platform:/plugin/com.android.ide.eclipse.gldebugger/icons/opengl.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Tracer for OpenGL ES</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWO7AA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.gltrace.views.State" label="GL State" iconURI="platform:/plugin/com.android.ide.eclipse.gldebugger/icons/opengl.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Tracer for OpenGL ES</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWPiEA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.gltrace.views.Details" label="Details" iconURI="platform:/plugin/com.android.ide.eclipse.gldebugger/icons/opengl.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Tracer for OpenGL ES</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWQJIA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.DeviceSelectorView" label="Windows" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/device.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWQwMA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.PixelPerfectView" label="Pixel Perfect" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/pixel-perfect.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWR-UA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.PixelPerfectLoupeView" label="Pixel Perfect Loupe" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/pixel-perfect.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWSlYA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.PixelPerfectTreeView" label="Pixel Perfect Tree" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/pixel-perfect.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWTzgA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.TreeViewView" label="Tree View" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/tree-view.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWUakA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.PropertyView" label="View Properties" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/tree-view.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWVosA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.TreeOverviewView" label="Tree Overview" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/tree-view.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWWPwA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.hierarchyviewer.views.LayoutView" label="Layout View" iconURI="platform:/plugin/com.android.ide.eclipse.hierarchyviewer/icons/tree-view.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Android</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWW20A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.views.AntView" label="Ant" iconURI="platform:/plugin/org.eclipse.ant.ui/icons/full/eview16/ant_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Ant</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWYE8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.codan.internal.ui.views.ProblemDetails" label="Problem Details" iconURI="platform:/plugin/org.eclipse.cdt.codan.ui/icons/edit_bug.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:&amp;C/C++</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWYsAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.executablesView" label="Executables" iconURI="platform:/plugin/org.eclipse.cdt.debug.ui/icons/obj16/exec_view_obj.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWZ6IA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.SignalsView" label="Signals" iconURI="platform:/plugin/org.eclipse.cdt.debug.ui/icons/view16/signals_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWahMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view" label="Trace Control" iconURI="platform:/plugin/org.eclipse.cdt.dsf.gdb.ui/icons/full/view16/tracecontrol_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWbIQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.view" label="Disassembly" iconURI="platform:/plugin/org.eclipse.cdt.dsf.ui/icons/disassembly.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWbvUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.views.MakeView" label="Make Target" iconURI="platform:/plugin/org.eclipse.cdt.make.ui/icons/view16/make_target.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Make</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWcWYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.CView" label="C/C++ Projects" iconURI="platform:/plugin/org.eclipse.cdt.ui/icons/view16/cview.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:&amp;C/C++</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWdkgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.IndexView" label="C/C++ Index" iconURI="platform:/plugin/org.eclipse.cdt.ui/icons/view16/types.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:&amp;C/C++</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWeyoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.includeBrowser" label="Include Browser" iconURI="platform:/plugin/org.eclipse.cdt.ui/icons/view16/includeBrowser.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:&amp;C/C++</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWfZsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.callHierarchy" label="Call Hierarchy" iconURI="platform:/plugin/org.eclipse.cdt.ui/icons/view16/call_hierarchy.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:&amp;C/C++</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWgn0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.typeHierarchy" label="Type Hierarchy" iconURI="platform:/plugin/org.eclipse.cdt.ui/icons/view16/class_hi.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:&amp;C/C++</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWhO4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.texteditor.TemplatesView" label="Templates" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/templates.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWjrIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.DebugView" label="Debug" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/debug_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWk5QA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.BreakpointView" label="Breakpoints" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/breakpoint_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWmucA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.VariableView" label="Variables" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/variable_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWnVgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.ExpressionView" label="Expressions" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/watchlist_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWojoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.RegisterView" label="Registers" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/register_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWpxwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.ModuleView" label="Modules" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/module_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWqY0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.MemoryView" label="Memory" iconURI="platform:/plugin/org.eclipse.debug.ui/icons/full/eview16/memory_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWrm8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesView" label="Git Repositories" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/repo_rep.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWs1EA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.StagingView" label="Git Staging" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/staging.png" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWuDMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.CompareTreeView" label="Git Tree Compare" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/obj16/gitrepository.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWuqQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.ReflogView" label="Git Reflog" iconURI="platform:/plugin/org.eclipse.egit.ui/icons/eview16/reflog.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Git</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWv4YA0VEeO-8I6yck2Tzw" elementId="org.eclipse.gef.ui.palette_view" label="Palette" iconURI="platform:/plugin/org.eclipse.gef/icons/palette_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWxGgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.help.ui.HelpView" label="Help" iconURI="platform:/plugin/org.eclipse.help.ui/icons/view16/help_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWyUoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.DisplayView" label="Display" iconURI="platform:/plugin/org.eclipse.jdt.debug.ui/icons/full/etool16/disp_sbook.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Debug</tags>
+ </descriptors>
+ <descriptors xmi:id="_nWziwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.ResultView" label="JUnit" iconURI="platform:/plugin/org.eclipse.jdt.junit/icons/full/eview16/junit.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW0w4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.PackageExplorer" label="Package Explorer" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/package.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW2mEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.TypeHierarchy" label="Type Hierarchy" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/class_hi.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW30MA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.ProjectsView" label="Projects" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/projects.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW4bQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.PackagesView" label="Packages" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/packages.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW5pYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.TypesView" label="Types" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/types.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW6QcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.MembersView" label="Members" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/members.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java Browsing</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW7ekA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.callhierarchy.view" label="Call Hierarchy" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/call_hierarchy.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW8ssA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.SourceView" label="Declaration" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/source.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW9TwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavadocView" label="Javadoc" iconURI="platform:/plugin/org.eclipse.jdt.ui/icons/full/eview16/javadoc.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Java</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW-h4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.SearchResultView" label="Classic Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nW_I8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.views.SearchView" label="Search" iconURI="platform:/plugin/org.eclipse.search/icons/full/eview16/searchres.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXAXEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.sync.views.SynchronizeView" label="Synchronize" iconURI="platform:/plugin/org.eclipse.team.ui/icons/full/eview16/synch_synch.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Team</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXBlMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.GenericHistoryView" label="History" iconURI="platform:/plugin/org.eclipse.team.ui/icons/full/eview16/history_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Team</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXCMQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.internal.introview" label="Welcome" iconURI="platform:/plugin/org.eclipse.ui/icons/full/eview16/defaultview_misc.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXDaYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.browser.view" label="Internal Web Browser" iconURI="platform:/plugin/org.eclipse.ui.browser/icons/obj16/internal_browser.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXEBcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.cheatsheets.views.CheatSheetView" label="Cheat Sheets" iconURI="platform:/plugin/org.eclipse.ui.cheatsheets/icons/view16/cheatsheet_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:Help</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXFPkA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.console.ConsoleView" label="Console" iconURI="platform:/plugin/org.eclipse.ui.console/icons/full/cview16/console_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXF2oA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProgressView" label="Progress" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/pview.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXHEwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ResourceNavigator" label="Navigator" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/filenav_nav.gif" category="org.eclipse.e4.primaryNavigationStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXHr0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.BookmarkView" label="Bookmarks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/bkmrk_nav.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXIS4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.TaskList" label="Tasks" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/tasks_tsk.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXJhAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ProblemView" label="Problems" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/problems_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXKIEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.AllMarkersView" label="Markers" iconURI="platform:/plugin/org.eclipse.ui.ide/icons/full/eview16/problems_view.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXLWMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer" iconURI="platform:/plugin/org.eclipse.ui.navigator.resources/icons/full/eview16/resource_persp.gif" category="org.eclipse.e4.primaryNavigationStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXL9QA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.PropertySheet" label="Properties" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/prop_ps.gif" allowMultiple="true" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXNLYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.ContentOutline" label="Outline" iconURI="platform:/plugin/org.eclipse.ui.views/icons/full/eview16/outline_co.gif" category="org.eclipse.e4.secondaryNavigationStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXNycA0VEeO-8I6yck2Tzw" elementId="org.eclipse.pde.runtime.LogView" label="Error Log" iconURI="platform:/plugin/org.eclipse.ui.views.log/icons/eview16/error_log.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXPAkA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.common.snippets.internal.ui.SnippetsView" label="Snippets" iconURI="platform:/plugin/org.eclipse.wst.common.snippets/icons/snippets_view.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:General</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXQOsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.views.annotations.XMLAnnotationsView" label="Documentation" iconURI="platform:/plugin/org.eclipse.wst.xml.ui/icons/full/obj16/comment_obj.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:XML</tags>
+ </descriptors>
+ <descriptors xmi:id="_nXQ1wA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.contentmodel.view" label="Content Model" iconURI="platform:/plugin/org.eclipse.wst.xml.ui/icons/full/view16/hierarchy.gif" category="org.eclipse.e4.secondaryDataStack" closeable="true" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView">
+ <tags>View</tags>
+ <tags>categoryTag:XML</tags>
+ </descriptors>
+ <commands xmi:id="_nNAtlg0VEeO-8I6yck2Tzw" elementId="e4.exit" contributorURI="platform:/plugin/org.eclipse.ui.workbench" commandName="%command.name.exit" description=""/>
+ <commands xmi:id="_nNAtlw0VEeO-8I6yck2Tzw" elementId="e4.show.view" contributorURI="platform:/plugin/org.eclipse.ui.workbench" commandName="%command.name.showView">
+ <parameters xmi:id="_nNAtmA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" contributorURI="platform:/plugin/org.eclipse.ui.workbench" name="View"/>
+ </commands>
+ <commands xmi:id="_nNAtmQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.saveCommands" contributorURI="platform:/plugin/org.eclipse.ui.workbench" commandName="%command.name.save"/>
+ <commands xmi:id="_nNAtmg0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.saveAllCommands" contributorURI="platform:/plugin/org.eclipse.ui.workbench" commandName="%command.name.saveAll"/>
+ <commands xmi:id="_nOTuEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.refactor.makeTypeGlobal" commandName="Make &amp;Anonymous Type Global" description="Promotes anonymous type to global level and replaces its references" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuEQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.command.nextpage" commandName="Next Page of Memory" description="Load next page of memory" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.implementors.in.project" commandName="Implementors in Project" description="Search for implementors of the selected interface in the enclosing project" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuEw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.removeTrailingWhitespace" commandName="Remove Trailing Whitespace" description="Removes the trailing whitespace of each line" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuFA0VEeO-8I6yck2Tzw" elementId="sed.tabletree.expandAll" commandName="Expand All" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuFQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.toggleMarkOccurrences" commandName="Toggle Mark Occurrences" description="Toggles mark occurrences in Java editors" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuFg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.AllInstances" commandName="All Instances" description="View all instances of the selected type loaded in the target VM" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuFw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.commands.gotoAddress" commandName="Go to Address..." description="Navigate to address" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuGA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.showChangeRulerInformation" commandName="Show Quick Diff Ruler Tooltip" description="Displays quick diff or revision information for the caret line in a focused hover" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuGQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.delimiter.macOS9" commandName="Convert Line Delimiters to MacOS 9 (CR, \r, 0D, &#xa4;)" description="Converts the line delimiters to MacOS 9 (CR, \r, 0D, &#xa4;)" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuGg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.use.supertype" commandName="Use Supertype Where Possible" description="Change occurrences of a type to use a supertype instead" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOTuGw0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.structure.select.enclosing" commandName="Select Enclosing Element" description="Expand selection to include enclosing element" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewClone" commandName="Clone a Git Repository" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.disable.grammar.constraints" commandName="Turn off Grammar Constraints" description="Turn off grammar Constraints" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVIg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.open.quick.type.hierarchy" commandName="Quick Type Hierarchy" description="Shows quick type hierarchy" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVIw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.textStart" commandName="Select Text Start" description="Select to the beginning of the text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVJA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.groupDebugContexts" commandName="Group" description="Groups the selected debug contexts" category="_nOSf9w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVJQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.cheatsheets.openCheatSheetURL" commandName="Open Cheat Sheet from URL" description="Open a Cheat Sheet from file at a specified URL." category="_nOTHAg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOUVJg0VEeO-8I6yck2Tzw" elementId="cheatSheetId" name="Identifier" optional="false"/>
+ <parameters xmi:id="_nOUVJw0VEeO-8I6yck2Tzw" elementId="name" name="Name" optional="false"/>
+ <parameters xmi:id="_nOUVKA0VEeO-8I6yck2Tzw" elementId="url" name="URL" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOUVKQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewRefresh" commandName="Refresh" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVKg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.navigate.open.type.in.hierarchy" commandName="Open Type in Hierarchy" description="Open a type in the type hierarchy view" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOUVKw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaBrowsingPerspective" commandName="Java Browsing" description="Show the Java Browsing perspective" category="_nOR44A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8MA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.buildAll" commandName="Build All" description="Build all projects" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8MQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.lockToolBar" commandName="Lock the Toolbars" description="Lock the Toolbars" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8Mg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.expandAll" commandName="Expand All" description="Expand the current tree" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8Mw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.gdb.ui.command.selectNextTraceRecord" commandName="Next Trace Record" description="Select Next Trace Record" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8NA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.import" commandName="Import" description="Import" category="_nOSf8Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOU8NQ0VEeO-8I6yck2Tzw" elementId="importWizardId" name="Import Wizard"/>
+ </commands>
+ <commands xmi:id="_nOU8Ng0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.lineEnd" commandName="Select Line End" description="Select to the end of the line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8Nw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.helpSearch" commandName="Help Search" description="Open the help search" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8OA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.CompareWithHead" commandName="Compare with HEAD Revision" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8OQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.smartEnterInverse" commandName="Insert Line Above Current Line" description="Adds a new line above the current line" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8Og0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.extract.local.variable" commandName="Extract Local Variable - Refactoring " description="Extract a local variable for the selected expression" category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOU8Ow0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.externalTools.commands.OpenExternalToolsConfigurations" commandName="External Tools..." description="Open external tools launch configuration dialog" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.windowEnd" commandName="Window End" description="Go to the end of the window" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.add.include" commandName="Add Include" description="Create include statement on selection" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjQg0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.TeamSynchronizingPerspective" commandName="Team Synchronizing" description="Open the Team Synchronizing Perspective" category="_nOR44A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjQw0VEeO-8I6yck2Tzw" elementId="org.eclipse.help.ui.indexcommand" commandName="Index" description="Show Keyword Index" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjRA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.StepOver" commandName="Step Over" description="Step over" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjRQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.renameInFile" commandName="Rename In File" description="Renames all references within the same buildfile" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjRg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.hover.backwardMacroExpansion" commandName="Back" description="Step backward in macro expansions" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjRw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewOpenInEditor" commandName="Open in Editor" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjSA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.RenameBranch" commandName="Rename Branch..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjSQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.surround.with.quickMenu" commandName="Surround With Quick Menu" description="Shows the Surround With quick menu" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjSg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.addMemoryMonitor" commandName="Add Memory Block" description="Add Memory block" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjSw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewRebase" commandName="Rebase" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOVjTA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.revertToSaved" commandName="Revert to Saved" description="Revert to the last saved state" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Rebase" commandName="Rebase" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKUQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.pinEditor" commandName="Pin Editor" description="Pin the current editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKUg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.implement.occurrences" commandName="Search Implement Occurrences in File" description="Search for implement occurrences of a selected type" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKUw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.encapsulateField.assist" commandName="Quick Assist - Create getter/setter for field" description="Invokes quick assist and selects 'Create getter/setter for field'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKVA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.Inspect" commandName="Inspect" description="Inspect result of evaluating selected text" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKVQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.toggle.comment" commandName="Toggle Comment" description="Toggle comment the selected lines" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKVg0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.format.active.elements" commandName="Format Active Elements" description="Format active elements" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKVw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.add.block.comment" commandName="Add Block Comment" description="Enclose the selection with a block comment" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKWA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.surround.with.try.catch" commandName="Surround with try/catch Block" description="Surround the selected text with a try/catch block" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKWQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.convert.anonymous.to.nested" commandName="Convert Anonymous Class to Nested" description="Convert an anonymous class to a nested class" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKWg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Tag" commandName="Tag" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWKWw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ShowRepositoriesView" commandName="Show Git Repositories View" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.folding.restore" commandName="Reset Structure" description="Resets the folding structure" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxYQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.restartWorkbench" commandName="Restart" description="Restart the workbench" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxYg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.export" commandName="Export" description="Export" category="_nOSf8Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOWxYw0VEeO-8I6yck2Tzw" elementId="exportWizardId" name="Export Wizard"/>
+ </commands>
+ <commands xmi:id="_nOWxZA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.occurrences.in.file.quickMenu" commandName="Show Occurrences in File Quick Menu" description="Shows the Occurrences in File quick menu" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxZQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewConfigurePush" commandName="Configure Push..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxZg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.command.breakpointProperties" commandName="C/C++ Breakpoint Properties" description="View and edit properties for a given C/C++ breakpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxZw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.lineDown" commandName="Select Line Down" description="Extend the selection to the next line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxaA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.resetPerspective" commandName="Reset Perspective" description="Reset the current perspective to its default state" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxaQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.refactoring.commands.renameResource" commandName="Rename Resource" description="Rename the selected resource and notify LTK participants." category="_nOTHBQ0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxag0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.PushHeadToGerrit" commandName="Push Current Head to Gerrit" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxaw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.showContextMenu" commandName="Show Context Menu" description="Show the context menu" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxbA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.stash.drop" commandName="Delete Stashed Commit..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxbQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.savePerspective" commandName="Save Perspective As" description="Save the current perspective" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxbg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.ConfigureUpstreamPush" commandName="Configure Upstream Push" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxbw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.showInformation" commandName="Show Tooltip Description" description="Displays information for the current caret location in a focused hover" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.markCompleted" commandName="Mark Completed" description="Mark the selected tasks as completed" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxcQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ConfigureFetch" commandName="Configure Upstream Fetch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOWxcg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.nextMemoryBlock" commandName="Next Memory Monitor" description="Show renderings from next memory monitor." category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.extract.constant" commandName="Extract Constant - Refactoring " description="Extract a constant for the selected expression" category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYcQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.toggleOverwrite" commandName="Toggle Overwrite" description="Toggle overwrite mode" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYcg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.textEnd" commandName="Text End" description="Go to the end of the text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYcw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.project" commandName="Write Access in Project" description="Search for write references to the selected element in the enclosing project" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYdA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.specific_content_assist.command" commandName="Content Assist" description="A parameterizable command that invokes content assist with a single completion proposal category" category="_nOSf-g0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOXYdQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.specific_content_assist.category_id" name="type" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOXYdg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.copy.qualified.name" commandName="Copy Qualified Name" description="Copy a fully qualified name to the system clipboard" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYdw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.showKeyAssist" commandName="Show Key Assist" description="Show the key assist dialog" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYeA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.delete" commandName="Delete" description="Delete the selection" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYeQ0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.extract.include" commandName="Extract as Include" description="Extract Views as Included Layout" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYeg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.saveAs" commandName="Save As" description="Save the current contents to another location" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYew0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewChangeCredentials" commandName="Change Credentials" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYfA0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.performTextSearchWorkspace" commandName="Find Text in Workspace" description="Searches the files in the workspace for specific text." category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYfQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.surround.with.try.multicatch" commandName="Surround with try/multi-catch Block" description="Surround the selected text with a try/multi-catch block" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYfg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.implementors.in.working.set" commandName="Implementors in Working Set" description="Search for implementors of the selected interface in a working set" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYfw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.getters.and.setters" commandName="Generate Getters and Setters..." description="Generates getters and setters for a selected field" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.hide.method" commandName="Hide Memeber Function..." category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaPerspective" commandName="Java" description="Show the Java perspective" category="_nOR44A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYgg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.openEditorDropDown" commandName="Quick Switch Editor" description="Open the editor drop down list" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYgw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CreateTag" commandName="Create Tag" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYhA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.ProfileLast" commandName="Profile" description="Launch in profile mode" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYhQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.changeToStatic" commandName="Quick Fix - Change to static access" description="Invokes quick assist and selects 'Change to static access'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYhg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.override.methods" commandName="Override/Implement Methods" description="Override or implement methods from super types" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOXYhw0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.performTextSearchFile" commandName="Find Text in File" description="Searches the files in the file for specific text." category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_gA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.workspace" commandName="References in Workspace" description="Search for references to the selected element in the workspace" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_gQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.specific_content_assist.command" commandName="C/C++ Content Assist" description="A parameterizable command that invokes content assist with a single completion proposal category" category="_nOSf-g0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOX_gg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.specific_content_assist.category_id" name="type" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOX_gw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.extract.function" commandName="Extract Function - Refactoring " description="Extract a function for the selected list of expressions or statements" category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_hA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewPaste" commandName="Paste Repository Path or URI" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_hQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.paste" commandName="Paste" description="Paste from the clipboard" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_hg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.convertAnonymousToLocal.assist" commandName="Quick Assist - Convert anonymous to local class" description="Invokes quick assist and selects 'Convert anonymous to local class'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_hw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.previous" commandName="Previous" description="Navigate to the previous item" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_iA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.source.quickMenu" commandName="Show Source Quick Menu" description="Shows the source quick menu" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_iQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewCopyPath" commandName="Copy Path to Clipboard" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_ig0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Ignore" commandName="Ignore" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_iw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.toggleBreadcrumb" commandName="Toggle Java Editor Breadcrumb" description="Toggle the Java editor breadcrumb" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_jA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.call.hierarchy" commandName="Open Call Hierarchy" description="Open a call hierarchy on the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_jQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewCreateTag" commandName="Create Tag..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_jg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.reverseStepInto" commandName="Reverse Step Into" description="Perform Reverse Step Into" category="_nOSf_A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_jw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.RemoveFromIndex" commandName="Remove from Git Index" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_kA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.extractConstant.assist" commandName="Quick Assist - Extract constant" description="Invokes quick assist and selects 'Extract constant'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_kQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.open.quick.macro.explorer" commandName="Explore Macro Expansion" description="Opens a quick view for macro expansion exploration" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_kg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.lineUp" commandName="Line Up" description="Go up one line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_kw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.newQuickMenu" commandName="New menu" description="Open the New menu" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_lA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.deleteNext" commandName="Delete Next" description="Delete the next character" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_lQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.deleteNextWord" commandName="Delete Next Word" description="Delete the next word" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_lg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.working.set" commandName="Write Access in Working Set" description="Search for write references to the selected element in a working set" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOX_lw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.undo" commandName="Undo" description="Undo the last operation" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmkA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.castToType" commandName="Cast To Type..." category="_nOSf9A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmkQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.back" commandName="Back" description="Navigate back" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmkg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.DebugLast" commandName="Debug" description="Launch in debug mode" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmkw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.excludeCommand" commandName="Exclude from Build" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmlA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editors.lineNumberToggle" commandName="Show Line Numbers" description="Toggle display of line numbers" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmlQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.ToggleStepFilters" commandName="Use Step Filters" description="Toggles enablement of debug step filters" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmlg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesLinkWithSelection" commandName="Link with Selection" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmlw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.workspace" commandName="Read Access in Workspace" description="Search for read references to the selected element in the workspace" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmmA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.renameInFile.assist" commandName="Quick Assist - Rename in file" description="Invokes quick assist and selects 'Rename in file'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmmQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.newEditor" commandName="New Editor" description="Open another editor on the active editor's input" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmmg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.org.eclipse.egit.ui.AbortRebase" commandName="Abort Rebase" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmmw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Fetch" commandName="Fetch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmnA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.SetQuickdiffBaseline" commandName="Set quickdiff baseline" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmnQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.wordPrevious" commandName="Previous Word" description="Go to the previous word" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmng0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewDelete" commandName="Delete Repository" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmnw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.ShowBlame" commandName="Show Annotations" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.recenter" commandName="Recenter" description="Recenter the window based on the cursor" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmoQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.installationDialog" commandName="Installation Information" description="Open the installation dialog" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmog0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Pull" commandName="Pull" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmow0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.restoreDefaultType" commandName="Restore Original Type" description="View and edit properties for a given C/C++ breakpoint" category="_nOSf9A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmpA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.CompareWithIndex" commandName="Compare with Git Index" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmpQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.shiftRight" commandName="Shift Right" description="Shift a block of text to the right" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOYmpg0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.nextSibling" commandName="Next Sibling" description="Go to Next Sibling" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.indent" commandName="Indent Line" description="Indents the current line" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNoQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.refresh" commandName="Refresh" description="Refresh the selected items" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNog0VEeO-8I6yck2Tzw" elementId="org.eclipse.gef.ui.palette_view" commandName="Palette" category="_nOR45Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNow0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.commands.gotoPC" commandName="Go to Program Counter" description="Navigate to current program counter" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNpA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.Merge" commandName="Merge" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNpQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.performTextSearchWorkingSet" commandName="Find Text in Working Set" description="Searches the files in the working set for specific text." category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNpg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.working.set" commandName="References in Working Set" description="Search for references to the selected element in a working set" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNpw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.add.unimplemented.constructors" commandName="Generate Constructors from Superclass" description="Evaluate and add constructors from superclass" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNqA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.delete.line.to.end" commandName="Delete to End of Line" description="Delete to the end of a line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNqQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CreateBranch" commandName="Create Branch" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNqg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.move.element" commandName="Move - Refactoring " description="Move the selected element to a new location" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNqw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.nextEditor" commandName="Next Editor" description="Switch to the next editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNrA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.factory" commandName="Introduce Factory" description="Introduce a factory method to encapsulate invocation of the selected constructor" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNrQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ShowInReflog" commandName="Reflog" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNrg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ShowBlame" commandName="Show Annotations" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNrw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.forward" commandName="Forward" description="Navigate forward" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.cmnd.contentmodel.sych" commandName="Synch" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNsQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.pageUp" commandName="Page Up" description="Go up one page" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNsg0VEeO-8I6yck2Tzw" elementId="sed.tabletree.collapseAll" commandName="Collapse All" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNsw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.replace.invocations" commandName="Replace Invocations" description="Replace invocations of the selected method" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNtA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.OpenRunConfigurations" commandName="Run..." description="Open run launch configuration dialog" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNtQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.AssumeUnchanged" commandName="Assume Unchanged" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZNtg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.uncall" commandName="Uncall" description="Perform Uncall" category="_nOSf_A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0sA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.commands.showElementInTypeHierarchyView" commandName="Show Java Element Type Hierarchy" description="Show a Java element in the Type Hierarchy view" category="_nOTHBg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOZ0sQ0VEeO-8I6yck2Tzw" elementId="elementRef" name="Java element reference" typeId="org.eclipse.jdt.ui.commands.javaElementReference" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOZ0sg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.deletePreviousWord" commandName="Delete Previous Word" description="Delete the previous word" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0sw0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.toggle.comment" commandName="Toggle Comment" description="Toggle Comment" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0tA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.deletePrevious" commandName="Delete Previous" description="Delete the previous character" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0tQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.SkipAllBreakpoints" commandName="Skip All Breakpoints" description="Sets whether or not any breakpoint should suspend execution" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0tg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.extractLocalNotReplaceOccurrences.assist" commandName="Quick Assist - Extract local variable" description="Invokes quick assist and selects 'Extract local variable'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0tw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.set.mark" commandName="Set Mark" description="Set the mark" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0uA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.refactor.show.refactoring.history" commandName="Open Refactoring History " description="Opens the refactoring history" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0uQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.OpenCommit" commandName="Open Git Commit" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0ug0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.RenameBranch" commandName="Rename Branch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0uw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.AddToIndex" commandName="Add to Git Index" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0vA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.exit" commandName="Exit" description="Exit the application" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0vQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.navigate.open.type.in.hierarchy" commandName="Open Type in Hierarchy" description="Open a type in the type hierarchy view" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0vg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ConfigurePush" commandName="Configure Upstream Push" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0vw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.customizePerspective" commandName="Customize Perspective" description="Customize the current perspective" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0wA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.showInQuickMenu" commandName="Show In..." description="Open the Show In menu" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0wQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.hierarchy" commandName="Read Access in Hierarchy" description="Search for read references of the selected element in its hierarchy" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0wg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.deleteCompleted" commandName="Delete Completed Tasks" description="Delete the tasks marked as completed" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0ww0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.DebugPerspective" commandName="Debug" description="Open the debug perspective" category="_nOR44A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOZ0xA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.change.type" commandName="Generalize Declared Type" description="Change the declaration of a selected variable to a more general type consistent with usage" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.rename" commandName="Rename" description="Rename the selected item" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabwQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.refactoring.commands.deleteResources" commandName="Delete Resources" description="Delete the selected resources and notify LTK participants." category="_nOTHBQ0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabwg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.CheckoutCommand" commandName="Checkout" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabww0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.next" commandName="Next" description="Navigate to the next item" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabxA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.show.outline" commandName="Quick Outline" description="Show the quick outline for the editor input" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabxQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.buildAutomatically" commandName="Build Automatically" description="Toggle the workspace build automatically function" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabxg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.project" commandName="References in Project" description="Search for references to the selected element in the enclosing project" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabxw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.occurrences.in.file" commandName="Search All Occurrences in File" description="Search for all occurrences of the selected element in its declaring file" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabyA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.unwrap" commandName="Remove Container" description="Unwraps Views From Their Container" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabyQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.structure.select.last" commandName="Restore Last Selection" description="Restore last selection" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabyg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.implementation" commandName="Open Implementation" description="Opens the Implementations of a method in its hierarchy" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabyw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.workspace" commandName="Declaration in Workspace" description="Search for declarations of the selected element in the workspace" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabzA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.internal.reflog.OpenInCommitViewerCommand" commandName="Open in Commit Viewer" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabzQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.lineUp" commandName="Select Line Up" description="Extend the selection to the previous line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabzg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.project" commandName="Read Access in Project" description="Search for read references to the selected element in the enclosing project" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOabzw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ShowHistory" commandName="Show in History" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOab0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.compareWithOther" commandName="Compare With Other Resource" description="Compare resources, clipboard contents or editors" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOab0Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.goto.next.bookmark" commandName="Next Bookmark" description="Goto next bookmark of the selected file" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOab0g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.junitShortcut.rerunFailedFirst" commandName="Rerun JUnit Test - Failures First" description="Rerun JUnit Test - Failures First" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.select.last" commandName="Restore Last Selection" description="Restore last selection" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC0Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.browser.openBundleResource" commandName="Open Resource in Browser" description="Opens a bundle resource in the default web browser." category="_nOR44Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nObC0g0VEeO-8I6yck2Tzw" elementId="plugin" name="Plugin"/>
+ <parameters xmi:id="_nObC0w0VEeO-8I6yck2Tzw" elementId="path" name="Path"/>
+ </commands>
+ <commands xmi:id="_nObC1A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.stash.apply" commandName="Apply Stashed Changes" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC1Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.ContinueRebase" commandName="Continue Rebase" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC1g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Push" commandName="Push" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC1w0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.copyAllLeftToRight" commandName="Copy All from Left to Right" description="Copy All Changes from Left to Right" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC2A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.toggleShowWhitespaceCharacters" commandName="Show Whitespace Characters" description="Shows whitespace characters in current text editor" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC2Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.preferences" commandName="Preferences" description="Open the preferences dialog" category="_nOR44Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nObC2g0VEeO-8I6yck2Tzw" elementId="preferencePageId" name="Preference Page"/>
+ </commands>
+ <commands xmi:id="_nObC2w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.selectAll" commandName="Select All" description="Select all" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC3A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.close" commandName="Close" description="Close the active editor" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC3Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.internal.reflog.CopyCommand" commandName="Copy" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC3g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.newWizard" commandName="New" description="Open the New item wizard" category="_nOSf8Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nObC3w0VEeO-8I6yck2Tzw" elementId="newWizardId" name="New Wizard"/>
+ </commands>
+ <commands xmi:id="_nObC4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.comment" commandName="Comment" description="Turn the selected lines into // style comments" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC4Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.help.ui.ignoreMissingPlaceholders" commandName="Do not warn of missing documentation" description="Sets the help preferences to no longer report a warning about the current set of missing documents." category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC4g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.inline" commandName="Inline" description="Inline a constant, local variable or method" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC4w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.tipsAndTricksAction" commandName="Tips and Tricks" description="Open the tips and tricks help page" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC5A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.find.word" commandName="Find Word" description="Select a word and find the next occurrence" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC5Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.copy" commandName="Copy" description="Copy the selection to the clipboard" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObC5g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.deleteConfigsCommand" commandName="Reset to Default" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.Revert" commandName="Revert Commit" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp4Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.project" commandName="Declaration in Project" description="Search for declarations of the selected element in the enclosing project" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp4g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewCreateBranch" commandName="Create Branch..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp4w0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.RunToLine" commandName="Run to Line" description="Resume and break when execution reaches the current line" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp5A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.select.previous" commandName="Select Previous C/C++ Element" description="Expand the selection to enclosing C/C++ element" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp5Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.openExternalDoc" commandName="Open External Documentation" description="Open the External documentation for the current task in the Ant editor" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp5g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.toggle.function" commandName="Toggle Function - Refactoring " description="Toggles the implementation between header and implementation file" category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp5w0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.gotoMatchingTag" commandName="Matching Tag" description="Go to Matching Tag" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp6A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.JavaHierarchyPerspective" commandName="Java Type Hierarchy" description="Show the Java Type Hierarchy perspective" category="_nOR44A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp6Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.infer.type.arguments" commandName="Infer Generic Type Arguments" description="Infer type arguments for references to generic classes and remove unnecessary casts" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp6g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.copyConfigCommand" commandName="Copy Configuration Data To Clipboard" description="Copies the configuration data (system properties, installed bundles, etc) to the clipboard." category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp6w0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.Restart" commandName="Restart" description="Restart a process or debug target without terminating and re-launching" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp7A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.indent" commandName="Correct Indentation" description="Corrects the indentation of the selected lines" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp7Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.exception.occurrences" commandName="Search Exception Occurrences in File" description="Search for exception occurrences of a selected exception type" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp7g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.part.previousPage" commandName="Previous Page" description="Switch to the previous page" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp7w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.openResource" commandName="Open Resource" description="Open an editor on a particular resource" category="_nOTHBg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nObp8A0VEeO-8I6yck2Tzw" elementId="filePath" name="File Path" typeId="org.eclipse.ui.ide.resourcePath"/>
+ </commands>
+ <commands xmi:id="_nObp8Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Synchronize" commandName="Synchronize" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.InstanceCount" commandName="Instance Count" description="View the instance count of the selected type loaded in the target VM" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp8w0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy" commandName="Quick Hierarchy" description="Show the quick hierarchy of the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp9A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.helpContents" commandName="Help Contents" description="Open the help contents" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp9Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.reverseStepOver" commandName="Reverse Step Over" description="Perform Reverse Step Over" category="_nOSf_A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp9g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.opencview" commandName="Show in C/C++ Project view" description="Show the selected resource in the C/C++ Project view" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nObp9w0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.format" commandName="Format" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.qualifyField" commandName="Quick Fix - Qualify field access" description="Invokes quick assist and selects 'Qualify field access'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ8Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.saveAll" commandName="Save All" description="Save all current contents" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.GarbageCollect" commandName="Collect Garbage" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ8w0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.assignToLocal.assist" commandName="Quick Assist - Assign to local variable" description="Invokes quick assist and selects 'Assign to local variable'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ9A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.references.in.hierarchy" commandName="References in Hierarchy" description="Search for references of the selected element in its hierarchy" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ9Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.format.document" commandName="Format" description="Format selection" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ9g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.textEnd" commandName="Select Text End" description="Select to the end of the text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ9w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.delete.line" commandName="Delete Line" description="Delete a line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ-A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.showViewMenu" commandName="Show View Menu" description="Show the view menu" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ-Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.folding.collapseComments" commandName="Collapse Comments" description="Collapse all comments" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ-g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.findIncremental" commandName="Incremental Find" description="Incremental find" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ-w0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.performTextSearchProject" commandName="Find Text in Project" description="Searches the files in the project for specific text." category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ_A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewOpenProperties" commandName="Open Properties View" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ_Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.targetBuildLastCommand" commandName="Rebuild Last Target" description="Rebuild the last make target for the selected container or project." category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ_g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.previousEditor" commandName="Previous Editor" description="Switch to the previous editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcQ_w0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.DeleteBranch" commandName="Delete Branch..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcRAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.commands.openElementInEditor" commandName="Open Java Element" description="Open a Java element in its editor" category="_nOTHBg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOcRAQ0VEeO-8I6yck2Tzw" elementId="elementRef" name="Java element reference" typeId="org.eclipse.jdt.ui.commands.javaElementReference" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOcRAg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.maximizePart" commandName="Maximize Active View or Editor" description="Toggles maximize/restore state of active view or editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOcRAw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.configureColumns" commandName="Configure Columns..." description="Configure the columns in the markers view" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4AA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.AddClassPrepareBreakpoint" commandName="Add Class Load Breakpoint" description="Add a class load breakpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4AQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editors.revisions.id.toggle" commandName="Toggle Revision Id Display" description="Toggles the display of the revision id" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4Ag0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.folding.collapse_all" commandName="Collapse All" description="Collapses all folded regions" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4Aw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.commit.CherryPick" commandName="Cherry Pick" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4BA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.perspectives.showPerspective" commandName="Show Perspective" description="Show a particular perspective" category="_nOR44A0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOc4BQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.perspectives.showPerspective.perspectiveId" name="Parameter"/>
+ <parameters xmi:id="_nOc4Bg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.perspectives.showPerspective.newWindow" name="In New Window"/>
+ </commands>
+ <commands xmi:id="_nOc4Bw0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.eof" commandName="EOF" description="Send end of file" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4CA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.goto.matching.bracket" commandName="Go to Matching Bracket" description="Moves the cursor to the matching bracket" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4CQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.reload.dependencies" commandName="Reload Dependencies" description="Reload Dependencies" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4Cg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editors.quickdiff.revert" commandName="Revert Lines" description="Revert the current selection, block or deleted lines" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4Cw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.previousSubTab" commandName="Previous Sub-Tab" description="Switch to the previous sub-tab" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4DA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.method.exits" commandName="Search Method Exit Occurrences in File" description="Search for method exit occurrences of a selected return type" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4DQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.refactor.makeElementGlobal" commandName="Make Local Element &amp;Global" description="Promotes local element to global level and replaces its references" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4Dg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.smartEnter" commandName="Insert Line Below Current Line" description="Adds a new line below the current line" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOc4Dw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.pageDown" commandName="Page Down" description="Go down one page" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Reset" commandName="Reset" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfEQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.windowStart" commandName="Window Start" description="Go to the start of the window" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.goInto" commandName="Go Into" description="Navigate into the selected item" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfEw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.stopTracing" commandName="Stop Tracing " description="Stop Tracing Experiment" category="_nOTHBA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfFA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.ungroupDebugContexts" commandName="Ungroup" description="Ungroups the selected debug contexts" category="_nOSf9w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfFQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.contentAssist.proposals" commandName="Content Assist" description="Content Assist" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfFg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.folding.expand_all" commandName="Expand All" description="Expands all folded regions" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfFw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.nextTab" commandName="Next Tab" description="Switch to the next tab" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfGA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.add.block.comment" commandName="Add Block Comment" description="Enclose the selection with a block comment" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfGQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Discard" commandName="Replace with File in Git Index" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfGg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.OpenMarkersView" commandName="Open Another" description="Open another view" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfGw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.goto.matching.bracket" commandName="Go to Matching Bracket" description="Moves the cursor to the matching bracket" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfHA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.Terminate" commandName="Terminate" description="Terminate" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfHQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.NoAssumeUnchanged" commandName="No Assume Unchanged" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfHg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.sort.lines" commandName="Sort Lines" description="Sort selected lines alphabetically" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfHw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.windowEnd" commandName="Select Window End" description="Select to the end of the window" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.command.gotoaddress" commandName="Go to Address" description="Go to Address" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.edit.text.makefile.uncomment" commandName="Uncomment" description="Uncomment the selected # style comment lines" category="_nOSf8A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOdfIg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.switchToEditor" commandName="Switch to Editor" description="Switch to an editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.command.shareProject" commandName="Share with Git" description="Share the project using Git" category="_nOSf-w0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOeGIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.command.projectNameParameter" name="Project" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOeGIg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.Suspend" commandName="Suspend" description="Suspend" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGIw0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.extract.string" commandName="Extract Android String" description="Extract Strings into Android String Resources" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGJA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.previousView" commandName="Previous View" description="Switch to the previous view" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGJQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.navigate.open.element.in.call.hierarchy" commandName="Open Element in Call Hierarchy" description="Open an element in the call hierarchy view" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGJg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.hierarchy" commandName="Write Access in Hierarchy" description="Search for write references of the selected element in its hierarchy" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGJw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.linkWithEditor" commandName="Toggle Link with Editor " description="Toggles linking of a view's selection with the active editor's selection" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGKA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.closeRendering" commandName="Close Rendering" description="Close the selected rendering." category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGKQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.commands.showElementInPackageView" commandName="Show Java Element in Package Explorer" description="Select Java element in the Package Explorer view" category="_nOTHBg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOeGKg0VEeO-8I6yck2Tzw" elementId="elementRef" name="Java element reference" typeId="org.eclipse.jdt.ui.commands.javaElementReference" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOeGKw0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.synchronizeAll" commandName="Synchronize..." description="Synchronize resources in the workspace with another location" category="_nOTHAQ0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGLA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.displayHelp" commandName="Display Help" description="Display a Help topic" category="_nOTHAg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOeGLQ0VEeO-8I6yck2Tzw" elementId="href" name="Help topic href"/>
+ </commands>
+ <commands xmi:id="_nOeGLg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.navigate.open.type" commandName="Open Type" description="Open a type in a Java editor" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGLw0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.open.file.from.source" commandName="Open Selection" description="Open an editor on the selected link" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.previousPerspective" commandName="Previous Perspective" description="Switch to the previous perspective" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGMQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Branch" commandName="Branch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGMg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.junitShortcut.debug" commandName="Debug JUnit Test" description="Debug JUnit Test" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOeGMw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.closeProject" commandName="Close Project" description="Close the selected project" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.assignParamToField.assist" commandName="Quick Assist - Assign parameter to field" description="Invokes quick assist and selects 'Assign parameter to field'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetMQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactoring.command.ExtractConstant" commandName="Extract Constant..." category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetMg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.FetchGerritChange" commandName="Fetch From Gerrit" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetMw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.folding.expand" commandName="Expand" description="Expands the folded region at the current selection" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetNA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.junitShortcut.rerunLast" commandName="Rerun JUnit Test" description="Rerun JUnit Test" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetNQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewRemove" commandName="Remove Repository" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetNg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.navigate.java.open.structure" commandName="Open Structure" description="Show the structure of the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetNw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.lineStart" commandName="Line Start" description="Go to the start of the line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetOA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.refactor.rename.element" commandName="&amp;Rename XSD element" description="Rename XSD element" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetOQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.select.next" commandName="Select Next C/C++ Element" description="Expand the selection to next C/C++ element" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetOg0VEeO-8I6yck2Tzw" elementId="org.eclipse.help.ui.closeTray" commandName="Close User Assistance Tray" description="Close the user assistance tray containing context help information and cheat sheets." category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetOw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.gotoTest" commandName="Referring Tests" description="Referring Tests" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetPA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.properties" commandName="Properties" description="Display the properties of the selected item's project " category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetPQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.toggleBlockSelectionMode" commandName="Toggle Block Selection" description="Toggle block / column selection in the current text editor" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetPg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.save" commandName="Save" description="Save the current contents" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetPw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CompareWithWorkingTree" commandName="Compare with Working Tree" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.closePart" commandName="Close Part" description="Close the active workbench part" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.ToggleWatchpoint" commandName="Toggle Watchpoint" description="Creates or removes a watchpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetQg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewConfigureBranch" commandName="Configure Branch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetQw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.OpenInCommitViewerCommand" commandName="Open in Commit Viewer" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetRA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.type.hierarchy" commandName="Open Type Hierarchy" description="Open a type hierarchy on the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOetRQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.refactor.apply.refactoring.script" commandName="Apply Script" description="Perform refactorings from a refactoring script on the local workspace" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.gef.zoom_in" commandName="Zoom In" description="Zoom In" category="_nOTHAA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.correction.assist.proposals" commandName="Quick Fix" description="Suggest possible fixes for a problem" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUQg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editors.revisions.rendering.cycle" commandName="Cycle Revision Coloring Mode" description="Cycles through the available coloring modes for revisions" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUQw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.Watch" commandName="Watch" description="Create new watch expression" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfURA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.showRulerContextMenu" commandName="Show Ruler Context Menu" description="Show the context menu for the ruler" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfURQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.minimizePart" commandName="Minimize Active View or Editor" description="Minimizes the active view or editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfURg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.ToggleMethodBreakpoint" commandName="Toggle Method Breakpoint" description="Creates or removes a method breakpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfURw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.part.nextPage" commandName="Next Page" description="Switch to the next page" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUSA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ReplaceWithRef" commandName="Replace with branch, tag, or reference" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUSQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.delete.line.to.beginning" commandName="Delete to Beginning of Line" description="Delete to the beginning of a line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUSg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.backwardHistory" commandName="Backward History" description="Move backward in the editor navigation history" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUSw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.swap.mark" commandName="Swap Mark" description="Swap the mark with the cursor position" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUTA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactoring.command.ExtractLocalVariable" commandName="Extract Local Variable..." category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUTQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.goto.previous.member" commandName="Go to Previous Member" description="Move the caret to the previous member of the compilation unit" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUTg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.buildProject" commandName="Build Project" description="Build the selected project" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOfUTw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.antShortcut.run" commandName="Run Ant Build" description="Run Ant Build" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7UA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.saveTraceData" commandName="Save Trace Data " description="Save Trace Data to File" category="_nOTHBA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7UQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.add.block.comment" commandName="Add Block Comment" description="Add Block Comment" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Ug0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.showSystemMenu" commandName="Show System Menu" description="Show the system menu" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Uw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.select.enclosing" commandName="Select Enclosing Element" description="Expand selection to include enclosing element" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7VA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.lowerCase" commandName="To Lower Case" description="Changes the selection to lower case" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7VQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.self.encapsulate.field" commandName="Encapsulate Field" description="Create getting and setting methods for the field and use only those to access the field" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Vg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.goto.next.member" commandName="Go to Next Member" description="Move the caret to the next member of the translation unit" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Vw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.pageDown" commandName="Select Page Down" description="Select to the bottom of the page" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7WA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.newRendering" commandName="New Rendering" description="Add a new rendering." category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7WQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.SimplePush" commandName="Push to Upstream" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Wg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.MergeTool" commandName="Merge Tool" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Ww0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.open.hyperlink" commandName="Open Hyperlink" description="Opens the hyperlink at the caret location or opens a chooser if more than one hyperlink is available" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7XA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.OpenInTextEditorCommand" commandName="Open in Text Editor" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7XQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.openLocalFile" commandName="Open File..." description="Open a file" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Xg0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.selectPreviousChange" commandName="Select Previous Change" description="Select Previous Change" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7Xw0VEeO-8I6yck2Tzw" elementId="org.eclipse.gef.zoom_out" commandName="Zoom Out" description="Zoom Out" category="_nOTHAA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOf7YA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.toggleShowSelectedElementOnly" commandName="Show Selected Element Only" description="Show Selected Element Only" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiYA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.wordPrevious" commandName="Select Previous Word" description="Select the previous word" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiYQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ToggleCoolbarAction" commandName="Toggle Toolbar Visibility" description="Toggles the visibility of the window toolbar" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiYg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.Reset" commandName="Reset" category="_nOSf-w0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOgiYw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.ResetMode" name="Reset mode" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOgiZA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.rename.element" commandName="Rename - Refactoring " description="Rename the selected element" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiZQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.AddExceptionBreakpoint" commandName="Add Java Exception Breakpoint" description="Add a Java exception breakpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiZg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.reverseToggle" commandName="Reverse Toggle" description="Toggle Reverse Debugging" category="_nOSf_A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiZw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CompareVersionsInTree" commandName="Compare in Tree" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiaA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.opendecl" commandName="Open Declaration" description="Open an editor on the selected element's declaration(s)" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiaQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.openProject" commandName="Open Project" description="Open a project" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiag0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.cut" commandName="Cut" description="Cut the selection to the clipboard" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgiaw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.moveLineDown" commandName="Move Lines Down" description="Moves the selected lines down" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgibA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.findReplace" commandName="Find and Replace" description="Find and replace text" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgibQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.StepIntoSelection" commandName="Step Into Selection" description="Step into the current selected statement" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgibg0VEeO-8I6yck2Tzw" elementId="org.eclipse.quickdiff.toggle" commandName="Quick Diff Toggle" description="Toggles quick diff information display on the line number ruler" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgibw0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.applyPatch" commandName="Apply Patch..." description="Apply a patch to one or more workspace projects." category="_nOTHAQ0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgicA0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.copyLeftToRight" commandName="Copy from Left to Right" description="Copy Current Change from Left to Right" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgicQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.refactoring.commands.moveResources" commandName="Move Resources" description="Move the selected resources and notify LTK participants." category="_nOTHBQ0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgicg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.startTracing" commandName="Start Tracing " description="Start Tracing Experiment" category="_nOTHBA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgicw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewRenameBranch" commandName="Rename Branch..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgidA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.toggleInsertMode" commandName="Toggle Insert Mode" description="Toggle insert mode" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOgidQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.editor" commandName="Open Declaration" description="Open an editor on the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJcA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.generate.constructor.using.fields" commandName="Generate Constructor using Fields" description="Choose fields to initialize and constructor from superclass to call " category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJcQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.line" commandName="Go to Line" description="Go to a specified line of text" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJcg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewAddToIndex" commandName="Add to Index" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJcw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.nextSubTab" commandName="Next Sub-Tab" description="Switch to the next sub-tab" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJdA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.stash.create" commandName="Stash Changes" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJdQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewRemoveRemote" commandName="Delete Remote" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJdg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.toggleMarkOccurrences" commandName="Toggle Mark Occurrences" description="Toggles mark occurrences in C/C++ editors" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJdw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.columnPrevious" commandName="Previous Column" description="Go to the previous column" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJeA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar" commandName="Run Last Launched External Tool" description="Runs the last launched external Tool" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJeQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Commit" commandName="Commit..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJeg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.search.findrefs" commandName="Find References" description="Find References" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJew0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.quick.format" commandName="Format Element" description="Format enclosing text element" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJfA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.remove.block.comment" commandName="Remove Block Comment" description="Remove Block Comment" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJfQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.addBookmark" commandName="Add Bookmark" description="Add a bookmark" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJfg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.lineStart" commandName="Select Line Start" description="Select to the beginning of the line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJfw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CheckoutCommand" commandName="Checkout" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.cut.line.to.end" commandName="Cut to End of Line" description="Cut to the end of a line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewAddRepository" commandName="Add a Git Repository" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJgg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.hover.forwardMacroExpansion" commandName="Forward" description="Step forward in macro expansions" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJgw0VEeO-8I6yck2Tzw" elementId="org.eclipse.equinox.p2.ui.sdk.update" commandName="Check for Updates" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJhA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.findIncrementalReverse" commandName="Incremental Find Reverse" description="Incremental find reverse" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhJhQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.rebuildAll" commandName="Rebuild All" description="Rebuild all projects" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwgA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.activateEditor" commandName="Activate Editor" description="Activate the editor" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwgQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.organize.imports" commandName="Organize Imports" description="Evaluate all required imports and replace the current imports" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwgg0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.copyAllRightToLeft" commandName="Copy All from Right to Left" description="Copy All Changes from Right to Left" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwgw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.generate.javadoc" commandName="Generate Javadoc" description="Generates Javadoc for a selectable set of Java resources" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwhA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.PushCommit" commandName="Push Commit..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwhQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.working.set" commandName="Declaration in Working Set" description="Search for declarations of the selected element in a working set" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwhg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.reverseResume" commandName="Reverse Resume" description="Perform Reverse Resume" category="_nOSf_A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwhw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.closeUnrelatedProjects" commandName="Close Unrelated Projects" description="Close unrelated projects" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwiA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.lineDown" commandName="Line Down" description="Go down one line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwiQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewConfigureGerritRemote" commandName="Gerrit Configuration..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwig0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.ToggleBreakpoint" commandName="Toggle Breakpoint" description="Creates or removes a breakpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwiw0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.ignoreWhiteSpace" commandName="Ignore White Space" description="Ignore white space where applicable" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwjA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.previousTab" commandName="Previous Tab" description="Switch to the previous tab" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwjQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.gotoLastEditPosition" commandName="Last Edit Location" description="Last edit location" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwjg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.SkipRebase" commandName="Skip Rebase" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwjw0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.toggleMemoryMonitorsPane" commandName="Toggle Memory Monitors Pane" description="Toggle visibility of the Memory Monitors Pane" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwkA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RebaseCurrent" commandName="Rebase" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwkQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.open.type.hierarchy" commandName="Open Type Hierarchy" description="Open a type hierarchy on the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwkg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.copyBuildIdCommand" commandName="Copy Build Id To Clipboard" description="Copies the build id to the clipboard." category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOhwkw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.dialogs.openInputDialog" commandName="Open Input Dialog" description="Open an Input Dialog" category="_nOSf9g0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOhwlA0VEeO-8I6yck2Tzw" elementId="title" name="Title"/>
+ <parameters xmi:id="_nOhwlQ0VEeO-8I6yck2Tzw" elementId="message" name="Message"/>
+ <parameters xmi:id="_nOiXkA0VEeO-8I6yck2Tzw" elementId="initialValue" name="Initial Value"/>
+ <parameters xmi:id="_nOiXkQ0VEeO-8I6yck2Tzw" elementId="cancelReturns" name="Return Value on Cancel"/>
+ </commands>
+ <commands xmi:id="_nOiXkg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.ShowVersions" commandName="Open" category="_nOSf-w0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOiXkw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CompareMode" name="Compare mode"/>
+ </commands>
+ <commands xmi:id="_nOiXlA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.navigate.opentype" commandName="Open Element" description="Open an element in an Editor" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXlQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.declarations.in.hierarchy" commandName="Declaration in Hierarchy" description="Search for declarations of the selected element in its hierarchy" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXlg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.properties.NewPropertySheetCommand" commandName="Properties" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXlw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.antShortcut.debug" commandName="Debug Ant Build" description="Debug Ant Build" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXmA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.return.continue.targets" commandName="Search break/continue Target Occurrences in File" description="Search for break/continue target occurrences of a selected target name" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXmQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.implementors.in.workspace" commandName="Implementors in Workspace" description="Search for implementors of the selected interface" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXmg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.collapseAll" commandName="Collapse All" description="Collapse the current tree" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXmw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.inlineLocal.assist" commandName="Quick Assist - Inline local variable" description="Invokes quick assist and selects 'Inline local variable'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXnA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.folding.toggle" commandName="Toggle Folding" description="Toggles folding in the current editor" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXnQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.submodule.update" commandName="Update Submodule" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXng0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.referencedFileErrors" commandName="Show Details..." description="Show Details..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXnw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.move.inner.to.top.level" commandName="Move Type to New File" description="Move Type to New File" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.remove.block.comment" commandName="Remove Block Comment" description="Remove the block comment enclosing the selection" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXoQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.quick_outline" commandName="Quick Outline" description="Show the quick outline for the editor input" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXog0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.commit.Revert" commandName="Revert Commit" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXow0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.comment" commandName="Comment" description="Turn the selected lines into Java comments" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXpA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.addNonNLS" commandName="Quick Fix - Add non-NLS tag" description="Invokes quick assist and selects 'Add non-NLS tag'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXpQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.format" commandName="Format" description="Format the selected text" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOiXpg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.Display" commandName="Display" description="Display result of evaluating selected text" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-oA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewCreateRepository" commandName="Create a Repository" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-oQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.revert" commandName="Revert" description="Revert to the last saved state" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-og0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.folding.collapseMembers" commandName="Collapse Members" description="Collapse all members" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-ow0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.gotoBreadcrumb" commandName="Show In Breadcrumb" description="Shows the Java editor breadcrumb and sets the keyboard focus into it" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-pA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.scroll.lineDown" commandName="Scroll Line Down" description="Scroll down one line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-pQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.clean.up" commandName="Clean Up" description="Solve problems and improve code style on selected resources" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-pg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.redo" commandName="Redo" description="Redo the last operation" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-pw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.SimpleFetch" commandName="Fetch from Upstream" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-qA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.StepInto" commandName="Step Into" description="Step into" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-qQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.commit.Checkout" commandName="Checkout" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-qg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.join.lines" commandName="Join Lines" description="Join lines of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-qw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.search.finddecl" commandName="Find Declaration" description="Find Declaration" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-rA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.scroll.lineUp" commandName="Scroll Line Up" description="Scroll up one line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-rQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.TerminateAndRelaunch" commandName="Terminate and Relaunch" description="Terminate and Relaunch" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-rg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.externalize.strings" commandName="Externalize Strings" description="Finds all strings that are not externalized and moves them into a separate property file" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-rw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.print" commandName="Print" description="Print" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-sA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.forwardHistory" commandName="Forward History" description="Move forward in the editor navigation history" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-sQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.breakpoint.properties" commandName="Java Breakpoint Properties" description="View and edit the properties for a given Java breakpoint" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-sg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.pageUp" commandName="Select Page Up" description="Select to the top of the page" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-sw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.add.import" commandName="Add Import" description="Create import statement on selection" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-tA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.CompareWithPrevious" commandName="Compare with Previous Revision" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOi-tQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.extract.interface" commandName="Extract Interface" description="Extract a set of members into a new interface and try to use the new interface" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlsA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.dynamicHelp" commandName="Dynamic Help" description="Open the dynamic help" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlsQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.read.access.in.working.set" commandName="Read Access in Working Set" description="Search for read references to the selected element in a working set" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlsg0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.RunLast" commandName="Run" description="Launch in run mode" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlsw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.copyLineUp" commandName="Duplicate Lines" description="Duplicates the selected lines and leaves the selection unchanged" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjltA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.addCast" commandName="Quick Fix - Add cast" description="Invokes quick assist and selects 'Add cast'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjltQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.commit.CreateBranch" commandName="Create Branch..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjltg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.refactor.quickMenu" commandName="Show Refactor Quick Menu" description="Shows the refactor quick menu" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjltw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.removeFromWorkingSet" commandName="Remove From Working Set" description="Removes the selected object from a working set." category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjluA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.javaAppletShortcut.debug" commandName="Debug Java Applet" description="Debug Java Applet" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjluQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.localJavaShortcut.run" commandName="Run Java Application" description="Run Java Application" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlug0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ReplaceWithCommit" commandName="Replace with commit" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjluw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.DeleteBranch" commandName="Delete Branch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlvA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesToggleBranchHierarchy" commandName="Toggle Branch Representation" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlvQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ApplyPatch" commandName="Apply Patch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlvg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.showRulerAnnotationInformation" commandName="Show Ruler Annotation Tooltip" description="Displays annotation information for the caret line in a focused hover" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlvw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.folding.collapse" commandName="Collapse" description="Collapses the folded region at the current selection" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.source.quickMenu" commandName="Show Source Quick Menu" description="Shows the source quick menu" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlwQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.navigate.gotopackage" commandName="Go to Package" description="Go to Package" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlwg0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.structure.select.next" commandName="Select Next Element" description="Expand selection to include next sibling" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlww0VEeO-8I6yck2Tzw" elementId="org.eclipse.equinox.p2.ui.sdk.install" commandName="Install New Software..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOjlxA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.nextView" commandName="Next View" description="Switch to the next view" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMwA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.buildLast" commandName="Repeat Working Set Build" description="Repeat the last working set build" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMwQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.textStart" commandName="Text Start" description="Go to the beginning of the text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMwg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.junit.junitShortcut.run" commandName="Run JUnit Test" description="Run JUnit Test" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMww0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.properties" commandName="Properties" description="Display the properties of the selected item" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMxA0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.openSearchDialog" commandName="Open Search Dialog" description="Open the Search dialog" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMxQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.actions.WatchCommand" commandName="Wa&amp;tch" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMxg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.openWorkspace" commandName="Switch Workspace" description="Open the workspace selection dialog" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMxw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.pull.up" commandName="Pull Up" description="Move members to a superclass" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMyA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.moveLineUp" commandName="Move Lines Up" description="Moves the selected lines up" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMyQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.configureFilters" commandName="Configure Contents..." description="Configure the filters to apply to the markers view" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMyg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.open.outline" commandName="Show outline" description="Shows outline" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMyw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.assignToField.assist" commandName="Quick Assist - Assign to field" description="Invokes quick assist and selects 'Assign to field'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMzA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.modify.method.parameters" commandName="Change Method Signature" description="Change method signature includes parameter names and parameter order" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMzQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.copyLineDown" commandName="Copy Lines" description="Duplicates the selected lines and moves the selection to the copy" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMzg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.open.call.hierarchy" commandName="Open Call Hierarchy" description="Open the call hierarchy for the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkMzw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.find.broken.nls.keys" commandName="Find Broken Externalized Strings" description="Finds undefined, duplicate and unused externalized string keys in property files" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkM0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xsd.ui.refactor.renameTargetNamespace" commandName="Rename Target Namespace" description="Changes the target namespace of the schema" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkM0Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.cleanup.document" commandName="Cleanup Document..." description="Cleanup document" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkM0g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.uncomment" commandName="Uncomment" description="Uncomment the selected Java comment lines" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkM0w0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.remove.occurrence.annotations" commandName="Remove Occurrence Annotations" description="Removes the occurrence annotations from the current editor" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkM1A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.addBlock.assist" commandName="Quick Assist - Replace statement with block" description="Invokes quick assist and selects 'Replace statement with block'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz0A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.wordNext" commandName="Next Word" description="Go to the next word" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz0Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CherryPick" commandName="Cherry Pick" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz0g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.ConfigureUpstreamFetch" commandName="Configure Upstream Fetch" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz0w0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.Merge" commandName="Merge" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz1A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.toggle.comment" commandName="Comment/Uncomment" description="Comment/Uncomment the selected lines" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz1Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.up" commandName="Up" description="Navigate up one level" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz1g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.parameter" commandName="Introduce Parameter" description="Introduce a new method parameter based on the selected expression" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz1w0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.splitJoinVariableDeclaration.assist" commandName="Quick Assist - Split/Join variable declaration" description="Invokes quick assist and selects 'Split/Join variable declaration'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz2A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.ResetQuickdiffBaseline" commandName="Reset quickdiff baseline" category="_nOSf-w0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOkz2Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.ResetQuickdiffBaselineTarget" name="Reset target (HEAD, HEAD^1)" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOkz2g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.submodule.add" commandName="Add Submodule" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz2w0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.changeview" commandName="Change Widget Type" description="Changes the widget type for the selection" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz3A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.targetBuildCommand" commandName="Make Target Build" description="Invoke a make target build for the selected container." category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz3Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.hideShowEditors" commandName="Toggle Editor Area Visibility" description="Toggles the visibility of the editor area" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz3g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.closePerspective" commandName="Close Perspective" description="Close the current perspective" category="_nOR44Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOkz3w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.closePerspective.perspectiveId" name="Perspective Id"/>
+ </commands>
+ <commands xmi:id="_nOkz4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.rebuildProject" commandName="Rebuild Project" description="Rebuild the selected projects" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz4Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.move" commandName="Move..." description="Move the selected item" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz4g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.surround.with.quickMenu" commandName="Surround With Quick Menu" description="Shows the Surround With quick menu" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOkz4w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.clear.mark" commandName="Clear Mark" description="Clear the mark" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla4A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.goto.prev.member" commandName="Go to Previous Member" description="Move the caret to the previous member of the translation unit" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla4Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.generate.tostring" commandName="Generate toString()" description="Generates the toString() method for the type" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla4g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.ReplaceWithHead" commandName="Replace with HEAD revision" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla4w0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.OpenProfileConfigurations" commandName="Profile..." description="Open profile launch configuration dialog" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla5A0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.external.javadoc" commandName="Open Attached Javadoc" description="Open the attached Javadoc of the selected element in a browser" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla5Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.cheatsheets.openCheatSheet" commandName="Open Cheat Sheet" description="Open a Cheat Sheet." category="_nOTHAg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOla5g0VEeO-8I6yck2Tzw" elementId="cheatSheetId" name="Identifier"/>
+ </commands>
+ <commands xmi:id="_nOla5w0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewOpen" commandName="Open" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla6A0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesToggleBranchCommit" commandName="Toggle Latest Branch Commit" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla6Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.castToArray" commandName="Cast To Type..." category="_nOSf9A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla6g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.contentAssist.contextInformation" commandName="Context Information" description="Show Context Information" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla6w0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CompareVersions" commandName="Compare with each other" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla7A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.browser.openBrowser" commandName="Open Browser" description="Opens the default web browser." category="_nOR44Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOla7Q0VEeO-8I6yck2Tzw" elementId="url" name="URL"/>
+ <parameters xmi:id="_nOla7g0VEeO-8I6yck2Tzw" elementId="browserId" name="Browser Id"/>
+ <parameters xmi:id="_nOla7w0VEeO-8I6yck2Tzw" elementId="name" name="Browser Name"/>
+ <parameters xmi:id="_nOla8A0VEeO-8I6yck2Tzw" elementId="tooltip" name="Browser Tooltip"/>
+ </commands>
+ <commands xmi:id="_nOla8Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.generate.hashcode.equals" commandName="Generate hashCode() and equals()" description="Generates hashCode() and equals() methods for the type" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.navigate.gototype" commandName="Go to Type" description="Go to Type" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla8w0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.indirection" commandName="Introduce Indirection" description="Introduce an indirection to encapsulate invocations of a selected method" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOla9A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.columnNext" commandName="Select Next Column" description="Select the next column" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.select.last" commandName="Restore Last C/C++ Selection" description="Restore last selection in C/C++ editor" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB8Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.goto.matching.bracket" commandName="Matching Bracket" description="Go to Matching Bracket" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.upperCase" commandName="To Upper Case" description="Changes the selection to upper case" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB8w0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.localJavaShortcut.debug" commandName="Debug Java Application" description="Debug Java Application" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB9A0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.DropToFrame" commandName="Drop to Frame" description="Drop to Frame" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB9Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.format" commandName="Format" description="Format Source Code" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB9g0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewNewRemote" commandName="Create Remote..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB9w0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.openFileSearchPage" commandName="File Search" description="Open the Search dialog's file search page" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB-A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.command.resumeWithoutSignal" commandName="Resume Without Signal" description="Resume Without Signal" category="_nOSf_g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB-Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.synchronizeLast" commandName="Repeat last synchronization" description="Repeat the last synchronization" category="_nOTHAQ0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB-g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.extract.local.variable" commandName="Extract Local Variable" description="Extracts an expression into a new local variable and uses the new local variable" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB-w0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.history.CreatePatch" commandName="Create Patch" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB_A0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.generate.xml" commandName="&amp;XML File..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB_Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.xml.ui.previousSibling" commandName="Previous Sibling" description="Go to Previous Sibling" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB_g0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.select.previous" commandName="Select Previous Element" description="Expand selection to include previous sibling" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmB_w0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.columnNext" commandName="Next Column" description="Go to the next column" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmCAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.extract.class" commandName="Extract Class..." description="Extracts fields into a new class" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmCAQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.selectWorkingSets" commandName="Select Working Sets" description="Select the working sets that are applicable for this window." category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmCAg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.aboutAction" commandName="About" description="Open the about dialog" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.copyRightToLeft" commandName="Copy from Right to Left" description="Copy Current Change from Right to Left" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpAQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.uncomment" commandName="Uncomment" description="Uncomment the selected // style comment lines" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpAg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.command.configureTrace" commandName="Configure Git Debug Trace" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpAw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.extract.method" commandName="Extract Method" description="Extract a set of statements or an expression into a new method and use the new method" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpBA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.CompareWithRevision" commandName="Compare with History" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpBQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.selectNextChange" commandName="Select Next Change" description="Select Next Change" category="_nOTHAw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpBg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.debug.ui.disassembly.commands.rulerToggleBreakpoint" commandName="Toggle Breakpoint" description="Toggle breakpoint in disassembly ruler" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpBw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.newWindow" commandName="New Window" description="Open another window" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpCA0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.RemoveAllBreakpoints" commandName="Remove All Breakpoints" description="Removes all breakpoints" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpCQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.showResourceByPath" commandName="Show Resource in Navigator" description="Show a resource in the Navigator given its path" category="_nOTHBg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOmpCg0VEeO-8I6yck2Tzw" elementId="resourcePath" name="Resource Path" typeId="org.eclipse.ui.ide.resourcePath" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOmpCw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.refactor.implement.method" commandName="Implement Method - Source Generation " description="Implements a method for a selected method declaration" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpDA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.convert" commandName="Change Layout" description="Converts Layouts from One Type to Another" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpDQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.targetCreateCommand" commandName="Create Make Target" description="Create a new make build target for the selected container." category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpDg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.addImport" commandName="Quick Fix - Add import" description="Invokes quick assist and selects 'Add import'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpDw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.extractLocal.assist" commandName="Quick Assist - Extract local variable (replace all occurrences)" description="Invokes quick assist and selects 'Extract local variable (replace all occurrences)'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.dsf.gdb.ui.command.selectPreviousTraceRecord" commandName="Previous Trace Record" description="Select Previous Trace Record" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpEQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.introduce.parameter.object" commandName="Introduce Parameter Object" description="Introduce a parameter object to a selected method" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.shiftLeft" commandName="Shift Left" description="Shift a block of text to the left" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOmpEw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.create.delegate.methods" commandName="Generate Delegate Methods" description="Add delegate methods for a type's fields" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQEA0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.search.find.occurrences" commandName="Occurrences in File" description="Find occurrences of the selection in the file" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQEQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.project.cleanAction" commandName="Build Clean" description="Discard old built state" category="_nOR45A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQEg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.addThrowsDecl" commandName="Quick Fix - Add throws declaration" description="Invokes quick assist and selects 'Add throws declaration'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQEw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.activeContextInfo" commandName="Show activeContext Info" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQFA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.findNext" commandName="Find Next" description="Find next item" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQFQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.Disconnect" commandName="Disconnect" description="Disconnect" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQFg0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.extract.style" commandName="Extract Styles" description="Extract Styles" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQFw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.addSuppressWarnings" commandName="Quick Fix - Add @SuppressWarnings" description="Invokes quick fix and selects 'Add @SuppressWarnings' " category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQGA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.commit.CreateTag" commandName="Create Tag..." category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQGQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.structure.select.previous" commandName="Select Previous Element" description="Expand selection to include previous sibling" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQGg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.edit.text.makefile.comment" commandName="Comment" description="Turn the selected lines into # style comments" category="_nOSf8A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQGw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.select.enclosing" commandName="Select Enclosing C/C++ Element" description="Expand the selection to enclosing C/C++ element" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQHA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.create.getter.setter" commandName="Generate Getters and Setters" description="Generate Getter and Setter methods for type's fields" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQHQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.windowStart" commandName="Select Window Start" description="Select to the start of the window" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQHg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.c.toggle.source.header" commandName="Toggle Source/Header" description="Toggles between corresponding source and header files" category="_nOSf_Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQHw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.internal.reflog.CheckoutCommand" commandName="Checkout" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQIA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.refactor.migrate.jar" commandName="Migrate JAR File" description="Migrate a JAR File to a new version" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQIQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.wst.sse.ui.outline.customFilter" commandName="&amp;Filters" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQIg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.open.super.implementation" commandName="Open Super Implementation" description="Open the Implementation in the Super Type" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQIw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.help.quickStartAction" commandName="Welcome" description="Show help for beginning users" category="_nOTHAg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOnQJA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.addTask" commandName="Add Task..." description="Add a task" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3IA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.closeAllPerspectives" commandName="Close All Perspectives" description="Close all open perspectives" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3IQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editors.quickdiff.revertLine" commandName="Revert Line" description="Revert the current line" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Ig0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.command.prevpage" commandName="Previous Page of Memory" description="Load previous page of memory" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Iw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.findPrevious" commandName="Find Previous" description="Find previous item" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3JA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.push.down" commandName="Push Down" description="Move members to subclasses" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3JQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ant.ui.toggleMarkOccurrences" commandName="Toggle Ant Mark Occurrences" description="Toggles mark occurrences in Ant editors" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Jg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView" commandName="Show View" description="Shows a particular view" category="_nOR45Q0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOn3Jw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.viewId" name="View"/>
+ <parameters xmi:id="_nOn3KA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.secondaryId" name="Secondary Id"/>
+ <parameters xmi:id="_nOn3KQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.views.showView.makeFast" name="As FastView"/>
+ </commands>
+ <commands xmi:id="_nOn3Kg0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.commands.viewMemory" commandName="View Memory" description="View variable in memory view" category="_nOSf-w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Kw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.extract.superclass" commandName="Extract Superclass" description="Extract a set of members into a new superclass and try to use the new superclass" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3LA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.refactor.create.refactoring.script" commandName="Create Script" description="Create a refactoring script from refactorings on the local workspace" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3LQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.delimiter.windows" commandName="Convert Line Delimiters to Windows (CRLF, \r\n, 0D0A, &#xa4;&#xb6;)" description="Converts the line delimiters to Windows (CRLF, \r\n, 0D0A, &#xa4;&#xb6;)" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Lg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.cut.line" commandName="Cut Line" description="Cut a line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Lw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.columnPrevious" commandName="Select Previous Column" description="Select the previous column" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3MA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.wrapin" commandName="Wrap in Container" description="Wraps Views in a New Container" category="_nOSf8w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3MQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.closeAll" commandName="Close All" description="Close all editors" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Mg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.cut.line.to.beginning" commandName="Cut to Beginning of Line" description="Cut to the beginning of a line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3Mw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.codan.commands.runCodanCommand" commandName="Run Code Analysis" category="_nOR44g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOn3NA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.text.rename.element" commandName="Rename - Refactoring " description="Rename the selected element" category="_nOR44w0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeMA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.promote.local.variable" commandName="Convert Local Variable to Field" description="Convert a local variable to a field" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeMQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.select.wordNext" commandName="Select Next Word" description="Select the next word" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeMg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.goToResource" commandName="Go to" description="Go to a particular resource in the active view" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeMw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.spy" commandName="Show Contributing Plug-in" description="Shows contribution information for the currently selected element" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeNA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.submodule.sync" commandName="Sync Submodule" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeNQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.quickAccess" commandName="Quick Access" description="Quickly access UI elements" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeNg0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.CompareIndexWithHead" commandName="Compare File in Git Index with HEAD Revision" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeNw0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.StepReturn" commandName="Step Return" description="Step return" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeOA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.addToWorkingSet" commandName="Add to Working Set" description="Adds the selected object to a working set." category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeOQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.goto.next.member" commandName="Go to Next Member" description="Move the caret to the next member of the compilation unit" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeOg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.select.next" commandName="Select Next Element" description="Expand selection to include next sibling" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeOw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.goto.lineEnd" commandName="Line End" description="Go to the end of the line of text" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoePA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.ForceReturn" commandName="Force Return" description="Forces return from method with value of selected expression " category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoePQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.remove.block.comment" commandName="Remove Block Comment" description="Remove the block comment enclosing the selection" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoePg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.search.write.access.in.workspace" commandName="Write Access in Workspace" description="Search for write references to the selected element in the workspace" category="_nOSf-Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoePw0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.team.CreatePatch" commandName="Create Patch" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOoeQA0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.launch.LaunchShortcut.run" commandName="Run Android Application" description="Run Android Application" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFQA0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewImportProjects" commandName="Import Projects..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFQQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.delimiter.unix" commandName="Convert Line Delimiters to Unix (LF, \n, 0A, &#xb6;)" description="Converts the line delimiters to Unix (LF, \n, 0A, &#xb6;)" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFQg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.showIn" commandName="Show In" category="_nOTHBg0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOpFQw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.navigate.showIn.targetId" name="Show In Target Id" optional="false"/>
+ </commands>
+ <commands xmi:id="_nOpFRA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.javaAppletShortcut.run" commandName="Run Java Applet" description="Run Java Applet" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFRQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.correction.convertLocalToField.assist" commandName="Quick Assist - Convert local variable to field" description="Invokes quick assist and selects 'Convert local variable to field'" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFRg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.dialogs.openMessageDialog" commandName="Open Message Dialog" description="Open a Message Dialog" category="_nOSf9g0VEeO-8I6yck2Tzw">
+ <parameters xmi:id="_nOpFRw0VEeO-8I6yck2Tzw" elementId="title" name="Title"/>
+ <parameters xmi:id="_nOpFSA0VEeO-8I6yck2Tzw" elementId="message" name="Message"/>
+ <parameters xmi:id="_nOpFSQ0VEeO-8I6yck2Tzw" elementId="imageType" name="Image Type Constant" typeId="org.eclipse.ui.dialogs.Integer"/>
+ <parameters xmi:id="_nOpFSg0VEeO-8I6yck2Tzw" elementId="defaultIndex" name="Default Button Index" typeId="org.eclipse.ui.dialogs.Integer"/>
+ <parameters xmi:id="_nOpFSw0VEeO-8I6yck2Tzw" elementId="buttonLabel0" name="First Button Label"/>
+ <parameters xmi:id="_nOpFTA0VEeO-8I6yck2Tzw" elementId="buttonLabel1" name="Second Button Label"/>
+ <parameters xmi:id="_nOpFTQ0VEeO-8I6yck2Tzw" elementId="buttonLabel2" name="Third Button Label"/>
+ <parameters xmi:id="_nOpFTg0VEeO-8I6yck2Tzw" elementId="buttonLabel3" name="Fourth Button Label"/>
+ <parameters xmi:id="_nOpFTw0VEeO-8I6yck2Tzw" elementId="cancelReturns" name="Return Value on Cancel"/>
+ </commands>
+ <commands xmi:id="_nOpFUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.AllReferences" commandName="All References" description="Inspect all references to the selected object" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFUQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.command.OpenFromClipboard" commandName="Open from Clipboard" description="Opens a Java element or a Java stack trace from clipboard" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFUg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.window.nextPerspective" commandName="Next Perspective" description="Switch to the next perspective" category="_nOR44Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpFUw0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.OpenDebugConfigurations" commandName="Debug..." description="Open debug launch configuration dialog" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsUA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.edit.text.hippieCompletion" commandName="Word Completion" description="Context insensitive completion" category="_nOSf-g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsUQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewClearCredentials" commandName="Clear Credentials" category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsUg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.extract.constant" commandName="Extract Constant" description="Extracts a constant into a new static field and uses the new static field" category="_nOTHCA0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsUw0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.edit.open.include.browser" commandName="Open Include Browser" description="Open an include browser on the selected element" category="_nOTHBg0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsVA0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.file.closeOthers" commandName="Close Others" description="Close all editors except the one that is active" category="_nOSf8Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsVQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.edit.text.makefile.opendecl" commandName="Open declaration" description="Follow to the directive definition" category="_nOSf8A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsVg0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.add.javadoc.comment" commandName="Add Javadoc Comment" description="Add a Javadoc comment stub to the member element" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsVw0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.editors.revisions.author.toggle" commandName="Toggle Revision Author Display" description="Toggles the display of the revision author" category="_nOSf-A0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsWA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.edit.text.java.sort.members" commandName="Sort Members" description="Sort all members using the member order preference" category="_nOTHBw0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsWQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.RepositoriesViewConfigureFetch" commandName="Configure Fetch..." category="_nOSf9Q0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsWg0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.launch.LaunchShortcut.debug" commandName="Debug Android Application" description="Debug Android Application" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsWw0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.commands.Resume" commandName="Resume" description="Resume" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nOpsXA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.debug.ui.commands.Execute" commandName="Execute" description="Evaluate selected text" category="_nOSf8g0VEeO-8I6yck2Tzw"/>
+ <commands xmi:id="_nZQZ0A0VEeO-8I6yck2Tzw" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions/org.eclipse.jdt.debug.ui.SnippetExecute" commandName="E&amp;xecute"/>
+ <commands xmi:id="_nZSPAA0VEeO-8I6yck2Tzw" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions/org.eclipse.jdt.debug.ui.SnippetDisplay" commandName="Displa&amp;y"/>
+ <commands xmi:id="_nZTdIA0VEeO-8I6yck2Tzw" elementId="AUTOGEN:::org.eclipse.jdt.debug.ui.JavaSnippetToolbarActions/org.eclipse.jdt.debug.ui.SnippetInspect" commandName="Insp&amp;ect"/>
+ <addons xmi:id="_nNAtmw0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.core.commands.service" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_nNAtnA0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.contexts.service" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_nNAtnQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.bindings.service" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+ <addons xmi:id="_nNAtng0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.workbench.commands.model" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_nNAtnw0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_nNAtoA0VEeO-8I6yck2Tzw" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+ <addons xmi:id="_nNAtoQ0VEeO-8I6yck2Tzw" elementId="Cleanup Addon" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.cleanupaddon.CleanupAddon"/>
+ <addons xmi:id="_nNAtog0VEeO-8I6yck2Tzw" elementId="DnD Addon" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.dndaddon.DnDAddon"/>
+ <addons xmi:id="_nNAtow0VEeO-8I6yck2Tzw" elementId="MinMax Addon" contributorURI="platform:/plugin/org.eclipse.ui.workbench" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon"/>
+ <categories xmi:id="_nOR44A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.perspectives" name="Perspectives" description="Commands for opening perspectives"/>
+ <categories xmi:id="_nOR44Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.window" name="Window"/>
+ <categories xmi:id="_nOR44g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.codan.ui.commands.category" name="Code Analysis"/>
+ <categories xmi:id="_nOR44w0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.category.refactoring" name="Refactor - C++" description="C/C++ Refactorings"/>
+ <categories xmi:id="_nOR45A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.project" name="Project"/>
+ <categories xmi:id="_nOR45Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.views" name="Views" description="Commands for opening views"/>
+ <categories xmi:id="_nOR45g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.ide.markerContents" name="Contents" description="The category for menu contents"/>
+ <categories xmi:id="_nOSf8A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.make.ui.category.source" name="Makefile Source" description="Makefile Source Actions"/>
+ <categories xmi:id="_nOSf8Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.file" name="File"/>
+ <categories xmi:id="_nOSf8g0VEeO-8I6yck2Tzw" elementId="org.eclipse.debug.ui.category.run" name="Run/Debug" description="Run/Debug command category"/>
+ <categories xmi:id="_nOSf8w0VEeO-8I6yck2Tzw" elementId="com.android.ide.eclipse.adt.refactoring.category" name="Android Refactorings" description="Refactorings for Android Projects"/>
+ <categories xmi:id="_nOSf9A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.category.casting" name="Cast to Type or Array" description="Set of commands for displaying variables and expressions as other types or arrays."/>
+ <categories xmi:id="_nOSf9Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.egit.ui.commandCategory" name="Git"/>
+ <categories xmi:id="_nOSf9g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.dialogs" name="Dialogs" description="Commands for opening dialogs"/>
+ <categories xmi:id="_nOSf9w0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.category.debugViewLayout" name="Debug View Layout Commands" description="Set of commands for controlling the Debug View Layout"/>
+ <categories xmi:id="_nOSf-A0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.textEditor" name="Text Editing" description="Text Editing Commands"/>
+ <categories xmi:id="_nOSf-Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.search.ui.category.search" name="Search" description="Search command category"/>
+ <categories xmi:id="_nOSf-g0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.edit" name="Edit"/>
+ <categories xmi:id="_nOSf-w0VEeO-8I6yck2Tzw" elementId="org.eclipse.core.commands.categories.autogenerated" name="Uncategorized" description="Commands that were either auto-generated or have no category"/>
+ <categories xmi:id="_nOSf_A0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.category.reverseDebugging" name="Reverse Debugging Commands" description="Set of commands for Reverse Debugging"/>
+ <categories xmi:id="_nOSf_Q0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.ui.category.source" name="C/C++ Source" description="C/C++ Source Actions"/>
+ <categories xmi:id="_nOSf_g0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.category.runControl" name="Run Control Commands" description="Set of commands for Run Control"/>
+ <categories xmi:id="_nOTHAA0VEeO-8I6yck2Tzw" elementId="org.eclipse.gef.category.view" name="View" description="View"/>
+ <categories xmi:id="_nOTHAQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.team.ui.category.team" name="Team" description="Actions that apply when working with a Team"/>
+ <categories xmi:id="_nOTHAg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.help" name="Help"/>
+ <categories xmi:id="_nOTHAw0VEeO-8I6yck2Tzw" elementId="org.eclipse.compare.ui.category.compare" name="Compare" description="Compare command category"/>
+ <categories xmi:id="_nOTHBA0VEeO-8I6yck2Tzw" elementId="org.eclipse.cdt.debug.ui.category.tracing" name="Tracing Commands" description="Category for Tracing Commands"/>
+ <categories xmi:id="_nOTHBQ0VEeO-8I6yck2Tzw" elementId="org.eclipse.ltk.ui.category.refactoring" name="Refactoring"/>
+ <categories xmi:id="_nOTHBg0VEeO-8I6yck2Tzw" elementId="org.eclipse.ui.category.navigate" name="Navigate"/>
+ <categories xmi:id="_nOTHBw0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.category.source" name="Source" description="Java Source Actions"/>
+ <categories xmi:id="_nOTHCA0VEeO-8I6yck2Tzw" elementId="org.eclipse.jdt.ui.category.refactoring" name="Refactor - Java" description="Java Refactoring Actions"/>
+</application:Application>
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/1806444800.index b/client/.metadata/.plugins/org.eclipse.jdt.core/1806444800.index
new file mode 100644
index 0000000..786559b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/1806444800.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/3531037650.index b/client/.metadata/.plugins/org.eclipse.jdt.core/3531037650.index
new file mode 100644
index 0000000..ea9bc09
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/3531037650.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/924937420.index b/client/.metadata/.plugins/org.eclipse.jdt.core/924937420.index
new file mode 100644
index 0000000..4612303
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/924937420.index
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/client/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps
new file mode 100644
index 0000000..3a59e57
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache b/client/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
new file mode 100644
index 0000000..593f470
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/client/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt
new file mode 100644
index 0000000..8586397
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt
@@ -0,0 +1 @@
+java \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/client/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
new file mode 100644
index 0000000..5e2a2af
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/client/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
new file mode 100644
index 0000000..0c58e46
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
@@ -0,0 +1,4 @@
+INDEX VERSION 1.126+/home/goblin/code/android/piztor/piztor/client/.metadata/.plugins/org.eclipse.jdt.core
+1806444800.index
+3531037650.index
+924937420.index
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/client/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
new file mode 100644
index 0000000..980f9e8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/client/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml
new file mode 100644
index 0000000..4fd9668
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<dirs>
+<entry loc="/usr/lib/jvm/java-7-openjdk-amd64" stamp="1374765892000"/>
+</dirs>
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/client/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml
new file mode 100644
index 0000000..6f3eb14
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<libraryInfos>
+<libraryInfo home="/usr/lib/jvm/java-7-openjdk-amd64" version="1.7.0_25">
+<bootpath>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/resources.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/sunrsasign.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jsse.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/charsets.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/netx.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/plugin.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rhino.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jfr.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/classes"/>
+</bootpath>
+<extensionDirs>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext"/>
+<entry path="/usr/java/packages/lib/ext"/>
+</extensionDirs>
+<endorsedDirs>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/endorsed"/>
+</endorsedDirs>
+</libraryInfo>
+<libraryInfo home="/usr/lib/jvm/java-7-openjdk-amd64/jre" version="1.7.0_25">
+<bootpath>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/resources.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/sunrsasign.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jsse.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/charsets.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/netx.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/plugin.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rhino.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jfr.jar"/>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/classes"/>
+</bootpath>
+<extensionDirs>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext"/>
+<entry path="/usr/java/packages/lib/ext"/>
+</extensionDirs>
+<endorsedDirs>
+<entry path="/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/endorsed"/>
+</endorsedDirs>
+</libraryInfo>
+</libraryInfos>
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/client/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
new file mode 100644
index 0000000..a4ee3cb
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<typeInfoHistroy/>
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/client/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
new file mode 100644
index 0000000..146c7de
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<qualifiedTypeNameHistroy>
+<fullyQualifiedTypeName name="com.macaroon.piztor.CannotFindThisClass"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.PiztorExcepiton"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.InitAct"/>
+<fullyQualifiedTypeName name="android.widget.EditText"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.R.id"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.Transam"/>
+<fullyQualifiedTypeName name="android.view.View.OnClickListener"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.ActMgr"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.EmptyStatus"/>
+<fullyQualifiedTypeName name="android.os.Handler"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.ResLogin"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.UserInfo"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.Login"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.ActStatus"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.AppMgr"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.ReqLogin"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.Login.LoginStatus"/>
+<fullyQualifiedTypeName name="com.macaroon.piztor.PiztorAct"/>
+</qualifiedTypeNameHistroy>
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/client/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
new file mode 100644
index 0000000..e762235
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="OptionalMessageDialog.hide.">
+ <item value="true" key="org.eclipse.jdt.ui.typecomment.deprecated"/>
+ </section>
+ <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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#x0A;&lt;packageExplorer group_libraries=&quot;1&quot; layout=&quot;2&quot; linkWithEditor=&quot;0&quot; rootMode=&quot;1&quot; workingSetName=&quot;&quot;&gt;&#x0A;&lt;customFilters userDefinedPatternsEnabled=&quot;false&quot;&gt;&#x0A;&lt;xmlDefinedFilters&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.LocalTypesFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.StaticsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ClosedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonSharedProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaElementFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ContainedLibraryFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.CuAndClassFileFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonJavaProjectsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.EmptyPackageFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.ImportDeclarationFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.FieldsFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.internal.ui.PackageExplorer.HideInnerClassFilesFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.NonPublicFilter&quot; isEnabled=&quot;false&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.EmptyLibraryContainerFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;child filterId=&quot;org.eclipse.jdt.ui.PackageExplorer.SyntheticMembersFilter&quot; isEnabled=&quot;true&quot;/&gt;&#x0A;&lt;/xmlDefinedFilters&gt;&#x0A;&lt;/customFilters&gt;&#x0A;&lt;/packageExplorer&gt;" key="memento"/>
+ </section>
+ <section name="completion_proposal_size">
+ </section>
+ <section name="JavaElementSearchActions">
+ </section>
+ <section name="NewClassWizardPage">
+ <item value="false" key="create_constructor"/>
+ <item value="false" key="create_unimplemented"/>
+ <item value="false" key="create_main"/>
+ </section>
+ <section name="quick_assist_proposal_size">
+ </section>
+ <section name="RenameInformationPopup">
+ </section>
+ <section name="org.eclipse.ltk.ui.refactoring.settings">
+ </section>
+</section>
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.png
new file mode 100644
index 0000000..2856a9f
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.png
new file mode 100644
index 0000000..a930fe1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/10.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/10.png
new file mode 100644
index 0000000..2b74bb8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/10.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/11.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/11.png
new file mode 100644
index 0000000..01c3533
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/11.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/12.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/12.png
new file mode 100644
index 0000000..d198a93
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/12.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/13.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/13.png
new file mode 100644
index 0000000..0fd0925
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/13.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/14.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/14.png
new file mode 100644
index 0000000..31311ab
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/14.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/15.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/15.png
new file mode 100644
index 0000000..9abe3c5
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/15.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/16.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/16.png
new file mode 100644
index 0000000..b691dc8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/16.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/17.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/17.png
new file mode 100644
index 0000000..b6bfd02
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/17.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/18.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/18.png
new file mode 100644
index 0000000..9135b56
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/18.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/19.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/19.png
new file mode 100644
index 0000000..7a08c10
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/19.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.png
new file mode 100644
index 0000000..7aaef4e
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/20.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/20.png
new file mode 100644
index 0000000..0cdcec6
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/20.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/21.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/21.png
new file mode 100644
index 0000000..4768f95
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/21.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.png
new file mode 100644
index 0000000..a6abcd8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.png
new file mode 100644
index 0000000..38192cf
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.png
new file mode 100644
index 0000000..89944ce
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.png
new file mode 100644
index 0000000..c5df4a4
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/7.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/7.png
new file mode 100644
index 0000000..a95f608
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/7.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/8.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/8.png
new file mode 100644
index 0000000..a5976f1
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/8.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/9.png b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/9.png
new file mode 100644
index 0000000..1fa2c34
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/9.png
Binary files differ
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.history b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.history
new file mode 100644
index 0000000..0040d8b
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.history
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">
+<refactoring comment="Delete resource &apos;Piztor&apos;" deleteContents="true" description="Delete resource &apos;Piztor&apos;" element1="/Piztor" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1377392773613"/>
+</session> \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.index b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.index
new file mode 100644
index 0000000..8492c11
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2013/8/35/refactorings.index
@@ -0,0 +1 @@
+1377392773613 Delete resource 'Piztor'
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.history b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.history
new file mode 100644
index 0000000..e90d11d
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;com.macaroon.piztor.Main.java&apos;" description="Delete element" element1="/src&lt;com.macaroon.piztor{Main.java" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1377388026563" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;activity_main.xml&apos;" description="Delete element" element1="res/layout/activity_main.xml" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="1" stamp="1377388032182" subPackages="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.index b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.index
new file mode 100644
index 0000000..7d11799
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/34/refactorings.index
@@ -0,0 +1,2 @@
+1377388026563 Delete element
+1377388032182 Delete element
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.history b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.history
new file mode 100644
index 0000000..379706a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.history
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<session version="1.0">&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;Piztor/src/(default package)&apos;" description="Delete element" element1="/src&lt;" elements="1" flags="589830" id="org.eclipse.jdt.ui.delete" resources="0" stamp="1377392934414" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Rename field &apos;hasToken&apos; in &apos;com.macaroon.piztor.AppMgr&apos; to &apos;noToken&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;com.macaroon.piztor.AppMgr.hasToken&apos;&#x0A;- Renamed element: &apos;com.macaroon.piztor.AppMgr.noToken&apos;&#x0A;- Update references to refactored element&#x0A;- Update textual occurrences in comments and strings" delegate="false" deprecate="false" description="Rename field &apos;hasToken&apos;" flags="589830" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src&lt;com.macaroon.piztor{AppMgr.java[AppMgr^hasToken" name="noToken" references="true" setter="false" stamp="1377397016165" textual="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;activity_settings.xml&apos;" description="Delete element" element1="res/layout/activity_settings.xml" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="1" stamp="1377411359326" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;gather_footbar.xml&apos;" description="Delete element" element1="res/layout/gather_footbar.xml" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="1" stamp="1377411372378" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;main_footbar.xml&apos;" description="Delete element" element1="res/layout/main_footbar.xml" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="1" stamp="1377411385119" subPackages="false" version="1.0"/>&#x0A;<refactoring accessors="true" comment="Delete element from project &apos;Piztor&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;settings_headbar.xml&apos;" description="Delete element" element1="res/layout/settings_headbar.xml" elements="0" flags="589830" id="org.eclipse.jdt.ui.delete" resources="1" stamp="1377411390582" subPackages="false" version="1.0"/>&#x0A;<refactoring comment="Rename field &apos;handler&apos; in &apos;com.macaroon.piztor.Main&apos; to &apos;fromGPS&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;com.macaroon.piztor.Main.handler&apos;&#x0A;- Renamed element: &apos;com.macaroon.piztor.Main.fromGPS&apos;&#x0A;- Update references to refactored element&#x0A;- Update textual occurrences in comments and strings" delegate="false" deprecate="false" description="Rename field &apos;handler&apos;" flags="589830" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src&lt;com.macaroon.piztor{Main.java[Main^handler" name="fromGPS" references="true" setter="false" stamp="1377424059025" textual="false" version="1.0"/>&#x0A;<refactoring comment="Rename type &apos;com.macaroon.piztor.UserInfo&apos; to &apos;Infomation&apos;&#x0A;- Original project: &apos;Piztor&apos;&#x0A;- Original element: &apos;com.macaroon.piztor.UserInfo&apos;&#x0A;- Renamed element: &apos;com.macaroon.piztor.Infomation&apos;&#x0A;- Update references to refactored element&#x0A;- Update textual occurrences in comments and strings" description="Rename type &apos;UserInfo&apos;" flags="589830" id="org.eclipse.jdt.ui.rename.type" input="/src&lt;com.macaroon.piztor{UserInfo.java[UserInfo" matchStrategy="1" name="Infomation" qualified="false" references="true" similarDeclarations="false" stamp="1377433048470" textual="false" version="1.0"/>
+</session> \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.index b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.index
new file mode 100644
index 0000000..b99462a
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/Piztor/2013/8/35/refactorings.index
@@ -0,0 +1,8 @@
+1377392934414 Delete element
+1377397016165 Rename field 'hasToken'
+1377411359326 Delete element
+1377411372378 Delete element
+1377411385119 Delete element
+1377411390582 Delete element
+1377424059025 Rename field 'handler'
+1377433048470 Rename type 'UserInfo'
diff --git a/client/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/client/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml
new file mode 100644
index 0000000..27eb404
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="RefactoringWizard.preview">
+ <item value="400" key="height"/>
+ <item value="600" key="width"/>
+ </section>
+</section>
diff --git a/client/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/client/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml
new file mode 100644
index 0000000..0d5a4e0
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="org.eclipse.ui.texteditor.FindReplaceDialog_dialogBounds">
+ <item value="330" key="DIALOG_WIDTH"/>
+ <item value="274" key="DIALOG_Y_ORIGIN"/>
+ <item value="997" key="DIALOG_X_ORIGIN"/>
+ <item value="436" key="DIALOG_HEIGHT"/>
+ <item value="1|文泉驿微米黑|11.0|0|GTK|1|" key="DIALOG_FONT_NAME"/>
+ </section>
+ <section name="org.eclipse.ui.texteditor.FindReplaceDialog">
+ <item value="true" key="wrap"/>
+ <item value="false" key="casesensitive"/>
+ <item value="false" key="isRegEx"/>
+ <item value="false" key="incremental"/>
+ <item value="false" key="wholeword"/>
+ <item value="reqtask" key="selection"/>
+ <list key="findhistory">
+ <item value="reqtask"/>
+ <item value="android:id"/>
+ <item value="main"/>
+ </list>
+ <list key="replacehistory">
+ </list>
+ </section>
+</section>
diff --git a/client/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/client/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
new file mode 100644
index 0000000..58352ff
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="org.eclipse.ui.internal.QuickAccess">
+ <item value="853" key="dialogWidth"/>
+ <item value="480" key="dialogHeight"/>
+ <list key="orderedProviders">
+ </list>
+ <list key="textArray">
+ </list>
+ <list key="orderedElements">
+ </list>
+ <list key="textEntries">
+ </list>
+ </section>
+ <section name="WorkbenchPreferenceDialogSettings">
+ <item value="19" key="DIALOG_Y_ORIGIN"/>
+ <item value="340" key="DIALOG_X_ORIGIN"/>
+ </section>
+ <section name="NewWizardAction">
+ <item value="com.android.ide.eclipse.editors.wizards.NewActivityWizard" key="NewWizardSelectionPage.STORE_SELECTED_ID"/>
+ <list key="NewWizardSelectionPage.STORE_EXPANDED_CATEGORIES_ID">
+ <item value="com.android.ide.eclipse.wizards.category"/>
+ </list>
+ </section>
+ <section name="org.eclipse.ui.preferences.keysPreferencePage">
+ <item value="true" key="uncategorizedFilter"/>
+ <item value="true" key="internalFilter"/>
+ <item value="true" key="actionSetFilter"/>
+ </section>
+</section>
diff --git a/client/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/client/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
new file mode 100644
index 0000000..c0af6a8
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workingSetManager>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377387227682_0" label="Window Working Set" name="Aggregate for window 1377387227681"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377390324114_1" label="Window Working Set" name="Aggregate for window 1377390324114"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377390511830_2" label="Window Working Set" name="Aggregate for window 1377390511830"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377391780999_3" label="Window Working Set" name="Aggregate for window 1377391780999"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377394832733_4" label="Window Working Set" name="Aggregate for window 1377394832733"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377394977451_5" label="Window Working Set" name="Aggregate for window 1377394977451"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377402346033_6" label="Window Working Set" name="Aggregate for window 1377402346032"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377409238025_7" label="Window Working Set" name="Aggregate for window 1377409238025"/>
+<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1377409555650_8" label="Window Working Set" name="Aggregate for window 1377409555650"/>
+</workingSetManager> \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml b/client/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml
new file mode 100644
index 0000000..6574033
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><cache/> \ No newline at end of file
diff --git a/client/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml b/client/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml
new file mode 100644
index 0000000..63fae25
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section name="Workbench">
+ <section name="contentassistsize">
+ </section>
+</section>
diff --git a/client/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml b/client/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml
new file mode 100644
index 0000000..37faa16
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <nextCatalog catalog="user_catalog.xml" id="user_catalog"/>
+ <nextCatalog catalog="system_catalog.xml" id="system_catalog"/>
+</catalog>
diff --git a/client/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml b/client/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml
new file mode 100644
index 0000000..5b288a3
--- /dev/null
+++ b/client/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <public publicId="-//WAPFORUM//DTD WML 1.1//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/wml11.dtd"/>
+ <public publicId="-//W3C//DTD XHTML 1.0 Strict//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/xhtml1-strict.dtd" webURL="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
+ <public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/xhtml1-transitional.dtd" webURL="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+ <public publicId="-//W3C//DTD XHTML 1.0 Frameset//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/xhtml1-frameset.dtd" webURL="http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"/>
+ <public publicId="-//W3C//DTD XHTML Basic 1.0//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/xhtml-basic10-f.dtd" webURL="http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"/>
+ <public publicId="-//W3C//DTD XHTML 1.1//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/xhtml11-flat.dtd" webURL="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
+ <public publicId="-//WAPFORUM//DTD XHTML Mobile 1.0//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/xhtml-mobile10-flat.dtd" webURL="http://www.wapforum.org/DTD/xhtml-mobile10.dtd"/>
+ <public publicId="-//WAPFORUM//DTD WML 1.3//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/wml13.dtd" webURL="http://www.wapforum.org/DTD/wml13.dtd"/>
+ <public publicId="-//W3C//DTD HTML 4.01 Frameset//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/frameset.dtd" webURL="http://www.w3.org/TR/html4/frameset.dtd"/>
+ <public publicId="-//W3C//ENTITIES Latin 1//EN//HTML" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/HTMLlat1.ent" webURL="HTMLlat1.ent"/>
+ <public publicId="-//W3C//ENTITIES Special//EN//HTM" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/HTMLspecial.ent" webURL="HTMLspecial.ent"/>
+ <public publicId="-//W3C//ENTITIES Symbols//EN//HTML" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/HTMLsymbol.ent" webURL="HTMLsymbol.ent"/>
+ <public publicId="-//W3C//DTD HTML 4.01 Transitional//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/loose.dtd" webURL="http://www.w3.org/TR/html4/loose.dtd"/>
+ <public publicId="-//W3C//DTD HTML 4.01//EN" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/strict.dtd" webURL="http://www.w3.org/TR/html4/strict.dtd"/>
+ <uri name="http://schemas.xmlsoap.org/wsdl/" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/wsdl.xsd"/>
+ <uri name="http://schemas.xmlsoap.org/wsdl/soap/" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/soap.xsd"/>
+ <uri name="http://schemas.xmlsoap.org/wsdl/http/" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/http.xsd"/>
+ <uri name="http://schemas.xmlsoap.org/wsdl/mime/" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/wsdl-mime.xsd"/>
+ <uri name="http://schemas.xmlsoap.org/soap/encoding/" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/soapenc.xsd"/>
+ <uri name="http://schemas.xmlsoap.org/soap/envelope/" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/soapenv.xsd"/>
+ <uri name="urn:oasis:names:tc:entity:xmlns:xml:catalog" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/xsd/xmlcatalog11.xsd"/>
+ <uri name="http://www.w3.org/TR/html4/loose.dtd" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/loose.dtd"/>
+ <uri name="http://www.w3.org/TR/html4/strict.dtd" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.401.v201108151912.jar!/dtds/strict.dtd"/>
+ <system systemId="http://www.w3.org/2001/xml.xsd" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.xsd_2.7.1.v20120123-1045.jar!/cache/www.w3.org/2001/xml.xsd"/>
+ <uri name="http://www.w3.org/2001/XMLSchema" uri="jar:file:/home/goblin/code/android/adt-bundle-linux-x86_64-20130729/eclipse/plugins/org.eclipse.xsd_2.7.1.v20120123-1045.jar!/cache/www.w3.org/2001/XMLSchema.xsd"/>
+</catalog>