summaryrefslogtreecommitdiff
path: root/client/.metadata
diff options
context:
space:
mode:
Diffstat (limited to 'client/.metadata')
-rw-r--r--client/.metadata/.lock0
-rw-r--r--client/.metadata/.log1873
-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
-rw-r--r--client/.metadata/version.ini1
483 files changed, 34087 insertions, 0 deletions
diff --git a/client/.metadata/.lock b/client/.metadata/.lock
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/client/.metadata/.lock
diff --git a/client/.metadata/.log b/client/.metadata/.log
new file mode 100644
index 0000000..7bd3826
--- /dev/null
+++ b/client/.metadata/.log
@@ -0,0 +1,1873 @@
+!SESSION 2013-08-25 07:33:13.852 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:35:34.122
+!MESSAGE Failed to load properties file for project 'Piztor'
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 07:35:46.054
+!MESSAGE Failed to render set of icons for AnalogClock, AutoCompleteTextView, Button, SmallButton, CheckBox, CheckedTextView, DigitalClock, PlainText, Password, PasswordNumeric, PersonName, Phone, PostalAddress, MultilineText, Date, Time, Email, Number, NumberSigned, NumberDecimal, LargeText, MediumText, SmallText, MultiAutoCompleteTextView, ProgressBarNormal, ProgressBarHorizontal, ProgressBarLarge, ProgressBarSmall, QuickContactBadge, RadioButton, RatingBar, SeekBar, ListView, ExpandableListView, Spinner, TextView, ToggleButton, ZoomButton, ZoomControls, CalendarView, RadioGroup
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:35:46.054
+!MESSAGE
+!STACK 0
+java.lang.NullPointerException
+ at android.text.SpannableStringBuilder.<init>(SpannableStringBuilder.java:44)
+ at android.text.format.DateFormat.format(DateFormat.java:462)
+ at android.widget.DigitalClock$1.run(DigitalClock.java:87)
+ at android.widget.DigitalClock.onAttachedToWindow(DigitalClock.java:94)
+ at android.view.View.dispatchAttachedToWindow(View.java:12125)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
+ at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:393)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.render(PreviewIconFactory.java:273)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.initColors(PreviewIconFactory.java:595)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.getBackgroundColor(PreviewIconFactory.java:570)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PaletteControl.reloadPalette(PaletteControl.java:437)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.reloadPalette(GraphicalEditorPart.java:1320)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.changed(GraphicalEditorPart.java:764)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.onTargetChange(GraphicalEditorPart.java:1189)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.onDescriptorsChanged(LayoutEditorDelegate.java:916)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateInitUiRootNode(LayoutEditorDelegate.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateXmlModelChanged(LayoutEditorDelegate.java:393)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.xmlModelChanged(CommonXmlEditor.java:329)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor$XmlModelStateListener.modelChanged(AndroidXmlEditor.java:1653)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createTextEditor(AndroidXmlEditor.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createAndroidPages(AndroidXmlEditor.java:320)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:310)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:285)
+ at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)
+ at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:358)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:138)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:861)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:841)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:113)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:321)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:242)
+ at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
+ at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:894)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:629)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:731)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:702)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:696)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:681)
+ at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1115)
+ at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:67)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:4299)
+ at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:187)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
+ at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
+ at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
+ at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
+ at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
+ at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
+ at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
+ at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
+ at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:422)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:389)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:606)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:332)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1029)
+ at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3047)
+ at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:2969)
+ at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2951)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2947)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2911)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2902)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:655)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:614)
+ at com.android.ide.eclipse.adt.AdtPlugin.openFile(AdtPlugin.java:2009)
+ at com.android.ide.eclipse.adt.internal.wizards.templates.NewTemplateWizard$1.run(NewTemplateWizard.java:168)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3537)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3189)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:13.767
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:13.767
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:13.775
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:13.775
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:13.786
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:16.962
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:16.963
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:16.968
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:16.969
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 07:48:16.975
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+!SESSION 2013-08-25 08:27:59.088 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY org.eclipse.ui 4 4 2013-08-25 08:46:02.485
+!MESSAGE Referenced part does not exist yet: org.eclipse.ui.views.ProblemView.
+!SESSION 2013-08-25 08:49:26.434 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:06:44.825
+!MESSAGE Failed to load properties file for project 'Piztor'
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:27.529
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:27.529
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:27.537
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:27.537
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:27.549
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:29.390
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:29.390
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:29.395
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:29.395
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:23:29.402
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 09:24:17.835
+!MESSAGE activity_login.xml: Couldn't resolve resource @drawable/title_logo
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:24:17.835
+!MESSAGE activity_login.xml: Failed to convert @drawable/title_logo into a drawable
+!STACK 0
+java.lang.NumberFormatException: Color value '@drawable/title_logo' must start with #
+ at com.android.layoutlib.bridge.impl.ResourceHelper.getColor(ResourceHelper.java:71)
+ at com.android.layoutlib.bridge.impl.ResourceHelper.getDrawable(ResourceHelper.java:248)
+ at android.content.res.BridgeTypedArray.getDrawable(BridgeTypedArray.java:782)
+ at android.widget.ImageView.<init>(ImageView.java:127)
+ at android.widget.ImageView.<init>(ImageView.java:117)
+ at sun.reflect.GeneratedConstructorAccessor59.newInstance(Unknown Source)
+ at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
+ at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
+ at android.view.LayoutInflater.createView(LayoutInflater.java:594)
+ at android.view.BridgeInflater.onCreateView(BridgeInflater.java:86)
+ at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
+ at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
+ at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:131)
+ at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755)
+ at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
+ at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
+ at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:758)
+ at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
+ at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
+ at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
+ at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:385)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1545)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1302)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1059)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:686)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:360)
+ at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:292)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1300)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1285)
+ at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1079)
+ at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3028)
+ at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1749)
+ at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:278)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 09:26:14.628
+!MESSAGE activity_login.xml: Couldn't resolve resource @drawable/title_logo
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 09:26:14.629
+!MESSAGE activity_login.xml: Failed to convert @drawable/title_logo into a drawable
+!STACK 0
+java.lang.NumberFormatException: Color value '@drawable/title_logo' must start with #
+ at com.android.layoutlib.bridge.impl.ResourceHelper.getColor(ResourceHelper.java:71)
+ at com.android.layoutlib.bridge.impl.ResourceHelper.getDrawable(ResourceHelper.java:248)
+ at android.content.res.BridgeTypedArray.getDrawable(BridgeTypedArray.java:782)
+ at android.widget.ImageView.<init>(ImageView.java:127)
+ at android.widget.ImageView.<init>(ImageView.java:117)
+ at sun.reflect.GeneratedConstructorAccessor59.newInstance(Unknown Source)
+ at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
+ at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
+ at android.view.LayoutInflater.createView(LayoutInflater.java:594)
+ at android.view.BridgeInflater.onCreateView(BridgeInflater.java:86)
+ at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
+ at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
+ at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:131)
+ at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755)
+ at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
+ at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
+ at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:758)
+ at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
+ at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
+ at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
+ at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:385)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1545)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1302)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1059)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:686)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:360)
+ at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:292)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1300)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1285)
+ at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1079)
+ at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3028)
+ at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1749)
+ at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:278)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
+!SESSION 2013-08-25 09:40:05.187 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY org.eclipse.jdt.ui 4 10001 2013-08-25 09:42:28.041
+!MESSAGE Internal Error
+!STACK 1
+Java Model Exception: Java Model Status [Unknown javadoc format for Activity {key=Landroid/app/Activity;} [in Activity.class [in android.app [in /home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk/platforms/android-18/android.jar]]]]
+ at org.eclipse.jdt.internal.core.JavadocContents.getTypeDoc(JavadocContents.java:77)
+ at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:997)
+ at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557)
+ at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163)
+ at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85)
+ at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1009 2013-08-25 09:42:28.043
+!MESSAGE Unknown javadoc format for Activity {key=Landroid/app/Activity;} [in Activity.class [in android.app [in /home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk/platforms/android-18/android.jar]]]
+!SESSION 2013-08-25 09:42:45.714 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY org.eclipse.jdt.ui 4 10001 2013-08-25 09:43:26.571
+!MESSAGE Internal Error
+!STACK 1
+Java Model Exception: Java Model Status [Unknown javadoc format for HashMap {key=Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Class<Ljava/lang/Class;{0}*>;>;} [in HashMap.class [in java.util [in /home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk/platforms/android-18/android.jar]]]]
+ at org.eclipse.jdt.internal.core.JavadocContents.getTypeDoc(JavadocContents.java:77)
+ at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:997)
+ at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557)
+ at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163)
+ at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85)
+ at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1009 2013-08-25 09:43:26.573
+!MESSAGE Unknown javadoc format for HashMap {key=Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Class<Ljava/lang/Class;{0}*>;>;} [in HashMap.class [in java.util [in /home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk/platforms/android-18/android.jar]]]
+
+!ENTRY org.eclipse.jdt.ui 4 10001 2013-08-25 09:43:55.569
+!MESSAGE Internal Error
+!STACK 1
+Java Model Exception: Java Model Status [Unknown javadoc format for Activity {key=Landroid/app/Activity;} [in Activity.class [in android.app [in /home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk/platforms/android-18/android.jar]]]]
+ at org.eclipse.jdt.internal.core.JavadocContents.getTypeDoc(JavadocContents.java:77)
+ at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:997)
+ at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557)
+ at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163)
+ at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129)
+ at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85)
+ at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1009 2013-08-25 09:43:55.570
+!MESSAGE Unknown javadoc format for Activity {key=Landroid/app/Activity;} [in Activity.class [in android.app [in /home/goblin/code/android/adt-bundle-linux-x86_64-20130729/sdk/platforms/android-18/android.jar]]]
+
+!ENTRY org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation.
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for CTRL+I:
+Binding(CTRL+I,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.indent,Correct Indentation,
+ Corrects the indentation of the selected lines,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4bfccdfe,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+I,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.format.active.elements,Format Active Elements,
+ Format active elements,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@70704b7f,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for CTRL+SHIFT+F:
+Binding(CTRL+SHIFT+F,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.format,Format,
+ Format the selected text,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@423805ab,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+F,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.format.document,Format,
+ Format selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@289ba43c,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for CTRL+SHIFT+ARROW_DOWN:
+Binding(CTRL+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.next.member,Go to Next Member,
+ Move the caret to the next member of the compilation unit,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@6bfc3f83,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.wst.xml.ui.nextSibling,Next Sibling,
+ Go to Next Sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@146ef636,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_LEFT:
+Binding(ALT+SHIFT+ARROW_LEFT,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.previous,Select Previous Element,
+ Expand selection to include previous sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@7dade8d7,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_LEFT,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.previous,Select Previous Element,
+ Expand selection to include previous sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@42a46d79,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_UP:
+Binding(ALT+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.enclosing,Select Enclosing Element,
+ Expand selection to include enclosing element,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@2491bbb7,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.enclosing,Select Enclosing Element,
+ Expand selection to include enclosing element,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@2bb3be89,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for CTRL+SHIFT+P:
+Binding(CTRL+SHIFT+P,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.matching.bracket,Go to Matching Bracket,
+ Moves the cursor to the matching bracket,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@5bbafe22,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+P,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.goto.matching.bracket,Matching Bracket,
+ Go to Matching Bracket,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@39048c5d,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.943
+!MESSAGE A conflict occurred for CTRL+SHIFT+/:
+Binding(CTRL+SHIFT+/,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.add.block.comment,Add Block Comment,
+ Enclose the selection with a block comment,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@5182993a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+/,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.add.block.comment,Add Block Comment,
+ Add Block Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4689dbeb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.944
+!MESSAGE A conflict occurred for CTRL+O:
+Binding(CTRL+O,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.show.outline,Quick Outline,
+ Show the quick outline for the editor input,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@5519d8a4,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+O,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.quick_outline,Quick Outline,
+ Show the quick outline for the editor input,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@13de22a2,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.944
+!MESSAGE A conflict occurred for CTRL+SHIFT+ARROW_UP:
+Binding(CTRL+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.previous.member,Go to Previous Member,
+ Move the caret to the previous member of the compilation unit,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@5cb3c3de,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.wst.xml.ui.previousSibling,Previous Sibling,
+ Go to Previous Sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1ced4d1d,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.944
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_DOWN:
+Binding(ALT+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.last,Restore Last Selection,
+ Restore last selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1e00535e,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.last,Restore Last Selection,
+ Restore last selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@277897fb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.944
+!MESSAGE A conflict occurred for CTRL+SHIFT+C:
+Binding(CTRL+SHIFT+C,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.toggle.comment,Toggle Comment,
+ Toggle comment the selected lines,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@27614fb5,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+C,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.toggle.comment,Toggle Comment,
+ Toggle Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@58fa9c26,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.944
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_RIGHT:
+Binding(ALT+SHIFT+ARROW_RIGHT,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.next,Select Next Element,
+ Expand selection to include next sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@65b80845,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_RIGHT,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.next,Select Next Element,
+ Expand selection to include next sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4241d3ee,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 10:00:41.944
+!MESSAGE A conflict occurred for CTRL+SHIFT+\:
+Binding(CTRL+SHIFT+\,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.remove.block.comment,Remove Block Comment,
+ Remove the block comment enclosing the selection,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@15271e2f,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+\,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.remove.block.comment,Remove Block Comment,
+ Remove Block Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@309d4e11,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:47.747
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:47.747
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:47.778
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:47.779
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:47.802
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:49.645
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:49.646
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:49.651
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:49.652
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 11:03:49.659
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+!SESSION 2013-08-25 11:45:33.971 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation.
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+I:
+Binding(CTRL+I,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.indent,Correct Indentation,
+ Corrects the indentation of the selected lines,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@369a3f9c,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+I,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.format.active.elements,Format Active Elements,
+ Format active elements,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@102036a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+SHIFT+F:
+Binding(CTRL+SHIFT+F,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.format,Format,
+ Format the selected text,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@48c636c5,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+F,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.format.document,Format,
+ Format selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@70704b7f,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+SHIFT+ARROW_DOWN:
+Binding(CTRL+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.next.member,Go to Next Member,
+ Move the caret to the next member of the compilation unit,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4d35e4d6,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.wst.xml.ui.nextSibling,Next Sibling,
+ Go to Next Sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1ced4d1d,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_LEFT:
+Binding(ALT+SHIFT+ARROW_LEFT,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.previous,Select Previous Element,
+ Expand selection to include previous sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@d42c534,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_LEFT,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.previous,Select Previous Element,
+ Expand selection to include previous sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@277897fb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_UP:
+Binding(ALT+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.enclosing,Select Enclosing Element,
+ Expand selection to include enclosing element,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1aa0dfb9,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.enclosing,Select Enclosing Element,
+ Expand selection to include enclosing element,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4241d3ee,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+SHIFT+P:
+Binding(CTRL+SHIFT+P,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.matching.bracket,Go to Matching Bracket,
+ Moves the cursor to the matching bracket,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@37bff857,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+P,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.goto.matching.bracket,Matching Bracket,
+ Go to Matching Bracket,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@2f589e2b,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+SHIFT+/:
+Binding(CTRL+SHIFT+/,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.add.block.comment,Add Block Comment,
+ Enclose the selection with a block comment,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1c493459,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+/,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.add.block.comment,Add Block Comment,
+ Add Block Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@309d4e11,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+O:
+Binding(CTRL+O,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.show.outline,Quick Outline,
+ Show the quick outline for the editor input,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@a0bcd91,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+O,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.quick_outline,Quick Outline,
+ Show the quick outline for the editor input,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@ce4efbe,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.745
+!MESSAGE A conflict occurred for CTRL+SHIFT+ARROW_UP:
+Binding(CTRL+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.previous.member,Go to Previous Member,
+ Move the caret to the previous member of the compilation unit,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@a37a98f,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.wst.xml.ui.previousSibling,Previous Sibling,
+ Go to Previous Sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@57bcba63,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.746
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_DOWN:
+Binding(ALT+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.last,Restore Last Selection,
+ Restore last selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4c5cf086,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.last,Restore Last Selection,
+ Restore last selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@475144fb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.746
+!MESSAGE A conflict occurred for CTRL+SHIFT+C:
+Binding(CTRL+SHIFT+C,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.toggle.comment,Toggle Comment,
+ Toggle comment the selected lines,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@2ab71271,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+C,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.toggle.comment,Toggle Comment,
+ Toggle Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4689dbeb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.746
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_RIGHT:
+Binding(ALT+SHIFT+ARROW_RIGHT,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.next,Select Next Element,
+ Expand selection to include next sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@69b31494,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_RIGHT,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.next,Select Next Element,
+ Expand selection to include next sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@42a46d79,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 11:59:14.746
+!MESSAGE A conflict occurred for CTRL+SHIFT+\:
+Binding(CTRL+SHIFT+\,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.remove.block.comment,Remove Block Comment,
+ Remove the block comment enclosing the selection,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@6c0c36c2,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+\,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.remove.block.comment,Remove Block Comment,
+ Remove Block Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@7007bb8a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SESSION 2013-08-25 13:45:20.060 -----------------------------------------------
+eclipse.buildId=v22.0.5-757759
+java.version=1.7.0_25
+java.vendor=Oracle Corporation
+BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=zh_CN
+Framework arguments: -product com.android.ide.eclipse.adt.package.product
+Command-line arguments: -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product
+
+!ENTRY org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation.
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for CTRL+I:
+Binding(CTRL+I,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.indent,Correct Indentation,
+ Corrects the indentation of the selected lines,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@6f67cc4a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+I,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.format.active.elements,Format Active Elements,
+ Format active elements,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@9c64d70,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for CTRL+SHIFT+F:
+Binding(CTRL+SHIFT+F,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.format,Format,
+ Format the selected text,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@795476a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+F,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.format.document,Format,
+ Format selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1d1a925a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for CTRL+SHIFT+ARROW_DOWN:
+Binding(CTRL+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.next.member,Go to Next Member,
+ Move the caret to the next member of the compilation unit,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@59838409,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.wst.xml.ui.nextSibling,Next Sibling,
+ Go to Next Sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@7e4877a0,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_LEFT:
+Binding(ALT+SHIFT+ARROW_LEFT,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.previous,Select Previous Element,
+ Expand selection to include previous sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@495198c8,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_LEFT,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.previous,Select Previous Element,
+ Expand selection to include previous sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@359283fe,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_UP:
+Binding(ALT+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.enclosing,Select Enclosing Element,
+ Expand selection to include enclosing element,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@c059813,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.enclosing,Select Enclosing Element,
+ Expand selection to include enclosing element,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@413f04a,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for CTRL+SHIFT+P:
+Binding(CTRL+SHIFT+P,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.matching.bracket,Go to Matching Bracket,
+ Moves the cursor to the matching bracket,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@43430d8f,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+P,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.goto.matching.bracket,Matching Bracket,
+ Go to Matching Bracket,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@920693f,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for CTRL+SHIFT+/:
+Binding(CTRL+SHIFT+/,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.add.block.comment,Add Block Comment,
+ Enclose the selection with a block comment,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@672f49c8,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+/,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.add.block.comment,Add Block Comment,
+ Add Block Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4a589d85,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.358
+!MESSAGE A conflict occurred for CTRL+O:
+Binding(CTRL+O,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.show.outline,Quick Outline,
+ Show the quick outline for the editor input,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@51951e64,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+O,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.quick_outline,Quick Outline,
+ Show the quick outline for the editor input,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@14fe6114,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.359
+!MESSAGE A conflict occurred for CTRL+SHIFT+ARROW_UP:
+Binding(CTRL+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.goto.previous.member,Go to Previous Member,
+ Move the caret to the previous member of the compilation unit,
+ Category(org.eclipse.ui.category.navigate,Navigate,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@489772d0,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+ARROW_UP,
+ ParameterizedCommand(Command(org.eclipse.wst.xml.ui.previousSibling,Previous Sibling,
+ Go to Previous Sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@6ff5f8a1,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.359
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_DOWN:
+Binding(ALT+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.last,Restore Last Selection,
+ Restore last selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@4ef2daeb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_DOWN,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.last,Restore Last Selection,
+ Restore last selection,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@58973101,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.359
+!MESSAGE A conflict occurred for CTRL+SHIFT+C:
+Binding(CTRL+SHIFT+C,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.toggle.comment,Toggle Comment,
+ Toggle comment the selected lines,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@2a02a2cb,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+C,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.toggle.comment,Toggle Comment,
+ Toggle Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@32618c2,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.359
+!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_RIGHT:
+Binding(ALT+SHIFT+ARROW_RIGHT,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.next,Select Next Element,
+ Expand selection to include next sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@130dd2f9,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(ALT+SHIFT+ARROW_RIGHT,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.structure.select.next,Select Next Element,
+ Expand selection to include next sibling,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@1031b4db,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+!SUBENTRY 1 org.eclipse.jface 2 0 2013-08-25 13:59:29.359
+!MESSAGE A conflict occurred for CTRL+SHIFT+\:
+Binding(CTRL+SHIFT+\,
+ ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.remove.block.comment,Remove Block Comment,
+ Remove the block comment enclosing the selection,
+ Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true),
+ org.eclipse.ui.internal.MakeHandlersGo@7095e334,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.jdt.ui.javaEditorScope,,,system)
+Binding(CTRL+SHIFT+\,
+ ParameterizedCommand(Command(org.eclipse.wst.sse.ui.remove.block.comment,Remove Block Comment,
+ Remove Block Comment,
+ Category(org.eclipse.ui.category.edit,Edit,null,true),
+ org.eclipse.ui.internal.MakeHandlersGo@29e78923,
+ ,,true),null),
+ org.eclipse.ui.defaultAcceleratorConfiguration,
+ org.eclipse.wst.sse.ui.structuredTextEditorScope,,,system)
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.325
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/settings
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.468
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/show_sex
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.482
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/male
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.561
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/female
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.583
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/show_team
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.591
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/mine
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:15:47.655
+!MESSAGE activity_settings.xml: Couldn't resolve resource @string/all
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:02.856
+!MESSAGE gather_footbar.xml: Couldn't resolve resource @string/search
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:02.883
+!MESSAGE gather_footbar.xml: Couldn't resolve resource @string/fetch
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:02.934
+!MESSAGE gather_footbar.xml: Couldn't resolve resource @string/checkin
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:02.949
+!MESSAGE gather_footbar.xml: Couldn't resolve resource @string/focus
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:02.963
+!MESSAGE gather_footbar.xml: Couldn't resolve resource @string/settings
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:15.157
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/search
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:15.170
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/fetch
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:15.182
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/focus
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:16:15.196
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/settings
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:17:25.384
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/search
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:17:25.391
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/fetch
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:17:25.400
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/focus
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:17:25.407
+!MESSAGE main_footbar.xml: Couldn't resolve resource @string/settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:04.553
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:04.553
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:04.568
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:04.569
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:04.588
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:14.931
+!MESSAGE Warning: Ignoring name conflict in resource file for name action_settings
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:14.932
+!MESSAGE Warning: Ignoring name conflict in resource file for name hello_world
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:14.937
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:14.937
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_vertical_margin
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:20:14.943
+!MESSAGE Warning: Ignoring name conflict in resource file for name activity_horizontal_margin
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:34:01.177
+!MESSAGE Failed to render set of icons for AnalogClock, AutoCompleteTextView, Button, SmallButton, CheckBox, CheckedTextView, DigitalClock, PlainText, Password, PasswordNumeric, PersonName, Phone, PostalAddress, MultilineText, Date, Time, Email, Number, NumberSigned, NumberDecimal, LargeText, MediumText, SmallText, MultiAutoCompleteTextView, ProgressBarNormal, ProgressBarHorizontal, ProgressBarLarge, ProgressBarSmall, QuickContactBadge, RadioButton, RatingBar, SeekBar, ListView, ExpandableListView, Spinner, TextView, ToggleButton, ZoomButton, ZoomControls, CalendarView, RadioGroup
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.177
+!MESSAGE
+!STACK 0
+java.lang.NullPointerException
+ at android.text.SpannableStringBuilder.<init>(SpannableStringBuilder.java:44)
+ at android.text.format.DateFormat.format(DateFormat.java:462)
+ at android.widget.DigitalClock$1.run(DigitalClock.java:87)
+ at android.widget.DigitalClock.onAttachedToWindow(DigitalClock.java:94)
+ at android.view.View.dispatchAttachedToWindow(View.java:12125)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
+ at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:393)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.render(PreviewIconFactory.java:273)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.initColors(PreviewIconFactory.java:595)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.getBackgroundColor(PreviewIconFactory.java:570)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PaletteControl.reloadPalette(PaletteControl.java:437)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.reloadPalette(GraphicalEditorPart.java:1320)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.changed(GraphicalEditorPart.java:764)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.onTargetChange(GraphicalEditorPart.java:1189)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.onDescriptorsChanged(LayoutEditorDelegate.java:916)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateInitUiRootNode(LayoutEditorDelegate.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateXmlModelChanged(LayoutEditorDelegate.java:393)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.xmlModelChanged(CommonXmlEditor.java:329)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor$XmlModelStateListener.modelChanged(AndroidXmlEditor.java:1653)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createTextEditor(AndroidXmlEditor.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createAndroidPages(AndroidXmlEditor.java:320)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:310)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:285)
+ at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)
+ at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:358)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:138)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313)
+ at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:861)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:841)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:113)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:321)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:242)
+ at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
+ at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:894)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:629)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:731)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:702)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:696)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:681)
+ at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1115)
+ at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:67)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:4299)
+ at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:187)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
+ at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
+ at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
+ at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
+ at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
+ at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
+ at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
+ at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
+ at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:422)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:389)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:606)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:332)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1029)
+ at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3047)
+ at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:2969)
+ at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2951)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2947)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2911)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2902)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:655)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:614)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:360)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:167)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:538)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:866)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:864)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1152)
+ at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1256)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)
+ at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:269)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.185
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.186
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.186
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.187
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.187
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.189
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 14:34:01.190
+!MESSAGE Failed to render set of icons for Switch
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 14:34:01.190
+!MESSAGE
+!STACK 0
+java.lang.NullPointerException
+ at android.widget.Switch.jumpDrawablesToCurrentState(Switch.java:825)
+ at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
+ at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
+ at android.widget.FrameLayout.jumpDrawablesToCurrentState(FrameLayout.java:189)
+ at android.view.View.onAttachedToWindow(View.java:11717)
+ at android.view.View.dispatchAttachedToWindow(View.java:12125)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2450)
+ at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:393)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.render(PreviewIconFactory.java:273)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.initColors(PreviewIconFactory.java:595)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.getBackgroundColor(PreviewIconFactory.java:570)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PaletteControl.reloadPalette(PaletteControl.java:437)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.reloadPalette(GraphicalEditorPart.java:1320)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.changed(GraphicalEditorPart.java:764)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.onTargetChange(GraphicalEditorPart.java:1189)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.onDescriptorsChanged(LayoutEditorDelegate.java:916)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateInitUiRootNode(LayoutEditorDelegate.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateXmlModelChanged(LayoutEditorDelegate.java:393)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.xmlModelChanged(CommonXmlEditor.java:329)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor$XmlModelStateListener.modelChanged(AndroidXmlEditor.java:1653)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createTextEditor(AndroidXmlEditor.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createAndroidPages(AndroidXmlEditor.java:320)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:310)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:285)
+ at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)
+ at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:358)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:138)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313)
+ at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:861)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:841)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:113)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:321)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:242)
+ at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
+ at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:894)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:629)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:731)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:702)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:696)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:681)
+ at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1115)
+ at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:67)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:4299)
+ at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:187)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
+ at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
+ at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
+ at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
+ at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
+ at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
+ at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
+ at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
+ at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:422)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:389)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:606)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:332)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1029)
+ at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3047)
+ at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:2969)
+ at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2951)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2947)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2911)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2902)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:655)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:614)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:360)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:167)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:538)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:866)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:864)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1152)
+ at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1256)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)
+ at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:269)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 16:05:25.768
+!MESSAGE Failed to render set of icons for AnalogClock, AutoCompleteTextView, Button, SmallButton, CheckBox, CheckedTextView, DigitalClock, PlainText, Password, PasswordNumeric, PersonName, Phone, PostalAddress, MultilineText, Date, Time, Email, Number, NumberSigned, NumberDecimal, LargeText, MediumText, SmallText, MultiAutoCompleteTextView, ProgressBarNormal, ProgressBarHorizontal, ProgressBarLarge, ProgressBarSmall, QuickContactBadge, RadioButton, RatingBar, SeekBar, ListView, ExpandableListView, Spinner, TextView, ToggleButton, ZoomButton, ZoomControls, CalendarView, RadioGroup
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.769
+!MESSAGE
+!STACK 0
+java.lang.NullPointerException
+ at android.text.SpannableStringBuilder.<init>(SpannableStringBuilder.java:44)
+ at android.text.format.DateFormat.format(DateFormat.java:462)
+ at android.widget.DigitalClock$1.run(DigitalClock.java:87)
+ at android.widget.DigitalClock.onAttachedToWindow(DigitalClock.java:94)
+ at android.view.View.dispatchAttachedToWindow(View.java:12125)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
+ at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:393)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.render(PreviewIconFactory.java:273)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.initColors(PreviewIconFactory.java:595)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.getBackgroundColor(PreviewIconFactory.java:570)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PaletteControl.reloadPalette(PaletteControl.java:437)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.reloadPalette(GraphicalEditorPart.java:1320)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.changed(GraphicalEditorPart.java:764)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.onTargetChange(GraphicalEditorPart.java:1189)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.onDescriptorsChanged(LayoutEditorDelegate.java:916)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateInitUiRootNode(LayoutEditorDelegate.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateXmlModelChanged(LayoutEditorDelegate.java:393)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.xmlModelChanged(CommonXmlEditor.java:329)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor$XmlModelStateListener.modelChanged(AndroidXmlEditor.java:1653)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createTextEditor(AndroidXmlEditor.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createAndroidPages(AndroidXmlEditor.java:320)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:310)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:285)
+ at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)
+ at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:358)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:138)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313)
+ at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:861)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:841)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:113)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:321)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:242)
+ at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
+ at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:894)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:629)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:731)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:702)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:696)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:681)
+ at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1115)
+ at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:67)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:4299)
+ at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:187)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
+ at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
+ at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
+ at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
+ at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
+ at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
+ at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
+ at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
+ at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:422)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:389)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:606)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:332)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1029)
+ at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3047)
+ at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:2969)
+ at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2951)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2947)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2911)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2902)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:655)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:614)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:360)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:167)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:538)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:866)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:864)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1152)
+ at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1256)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)
+ at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:269)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.772
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.773
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.774
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.774
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.774
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.775
+!MESSAGE palette: Failed to find style 'switchStyle' in current theme
+
+!ENTRY com.android.ide.eclipse.adt 2 0 2013-08-25 16:05:25.776
+!MESSAGE Failed to render set of icons for Switch
+
+!ENTRY com.android.ide.eclipse.adt 4 0 2013-08-25 16:05:25.776
+!MESSAGE
+!STACK 0
+java.lang.NullPointerException
+ at android.widget.Switch.jumpDrawablesToCurrentState(Switch.java:825)
+ at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
+ at android.view.ViewGroup.jumpDrawablesToCurrentState(ViewGroup.java:5359)
+ at android.widget.FrameLayout.jumpDrawablesToCurrentState(FrameLayout.java:189)
+ at android.view.View.onAttachedToWindow(View.java:11717)
+ at android.view.View.dispatchAttachedToWindow(View.java:12125)
+ at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2450)
+ at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
+ at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:393)
+ at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
+ at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:440)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.render(PreviewIconFactory.java:273)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.initColors(PreviewIconFactory.java:595)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PreviewIconFactory.getBackgroundColor(PreviewIconFactory.java:570)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.PaletteControl.reloadPalette(PaletteControl.java:437)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.reloadPalette(GraphicalEditorPart.java:1320)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.changed(GraphicalEditorPart.java:764)
+ at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.onTargetChange(GraphicalEditorPart.java:1189)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.onDescriptorsChanged(LayoutEditorDelegate.java:916)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateInitUiRootNode(LayoutEditorDelegate.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateXmlModelChanged(LayoutEditorDelegate.java:393)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.xmlModelChanged(CommonXmlEditor.java:329)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor$XmlModelStateListener.modelChanged(AndroidXmlEditor.java:1653)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createTextEditor(AndroidXmlEditor.java:835)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.createAndroidPages(AndroidXmlEditor.java:320)
+ at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:310)
+ at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.addPages(CommonXmlEditor.java:285)
+ at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)
+ at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:358)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:138)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)
+ at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313)
+ at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:861)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:841)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:113)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:321)
+ at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:242)
+ at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:161)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:102)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:71)
+ at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:53)
+ at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:141)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:894)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:629)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:731)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:702)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:696)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:681)
+ at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1115)
+ at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:67)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:4299)
+ at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:187)
+ at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
+ at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
+ at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
+ at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
+ at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
+ at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
+ at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
+ at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
+ at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
+ at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
+ at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:422)
+ at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:389)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:606)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:332)
+ at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1029)
+ at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3047)
+ at org.eclipse.ui.internal.WorkbenchPage.access$22(WorkbenchPage.java:2969)
+ at org.eclipse.ui.internal.WorkbenchPage$8.run(WorkbenchPage.java:2951)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2947)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2911)
+ at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2902)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:655)
+ at org.eclipse.ui.ide.IDE.openEditor(IDE.java:614)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:360)
+ at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:167)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)
+ at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:376)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:538)
+ at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
+ at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:866)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
+ at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:864)
+ at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1152)
+ at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1256)
+ at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)
+ at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:269)
+ at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
+ at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
+ at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:606)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
+ at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
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>
diff --git a/client/.metadata/version.ini b/client/.metadata/version.ini
new file mode 100644
index 0000000..c51ff74
--- /dev/null
+++ b/client/.metadata/version.ini
@@ -0,0 +1 @@
+org.eclipse.core.runtime=1 \ No newline at end of file