2727import processing .app .Mode ;
2828import processing .app .Platform ;
2929import processing .app .Preferences ;
30+ import processing .app .Settings ;
3031import processing .app .SketchException ;
3132import processing .app .ui .EditorException ;
3233import processing .app .ui .EditorState ;
4950
5051@ SuppressWarnings ("serial" )
5152public class AndroidEditor extends JavaEditor {
52- private int appComponent = AndroidBuild .FRAGMENT ;
53+ private int appComponent ;
54+
55+ private Settings settings ;
5356 private boolean resetManifest = false ;
5457
5558 private AndroidMode androidMode ;
5659
5760 private java .util .Timer updateDevicesTimer ;
5861
62+ private JCheckBoxMenuItem fragmentItem ;
63+ private JCheckBoxMenuItem wallpaperItem ;
64+ private JCheckBoxMenuItem watchfaceItem ;
65+ private JCheckBoxMenuItem cardboardItem ;
66+
5967 protected AndroidEditor (Base base , String path , EditorState state ,
6068 Mode mode ) throws EditorException {
6169 super (base , path , state , mode );
70+
71+ loadModeSettings ();
72+
6273 androidMode = (AndroidMode ) mode ;
6374 androidMode .resetUserSelection ();
64- androidMode .checkSDK (this );
75+ androidMode .checkSDK (this );
6576 }
6677
6778 @ Override
@@ -240,10 +251,10 @@ public void actionPerformed(ActionEvent e) {
240251
241252 menu .addSeparator ();
242253
243- final JCheckBoxMenuItem fragmentItem = new JCheckBoxMenuItem ("App" );
244- final JCheckBoxMenuItem wallpaperItem = new JCheckBoxMenuItem ("Wallpaper" );
245- final JCheckBoxMenuItem watchfaceItem = new JCheckBoxMenuItem ("Watch Face" );
246- final JCheckBoxMenuItem cardboardItem = new JCheckBoxMenuItem ("Cardboard" );
254+ fragmentItem = new JCheckBoxMenuItem ("App" );
255+ wallpaperItem = new JCheckBoxMenuItem ("Wallpaper" );
256+ watchfaceItem = new JCheckBoxMenuItem ("Watch Face" );
257+ cardboardItem = new JCheckBoxMenuItem ("Cardboard" );
247258
248259 fragmentItem .addActionListener (new ActionListener () {
249260 @ Override
@@ -289,11 +300,11 @@ public void actionPerformed(ActionEvent e) {
289300 androidMode .showSelectComponentMessage (AndroidBuild .CARDBOARD );
290301 }
291302 });
292-
293- fragmentItem .setState (true );
303+
304+ fragmentItem .setState (false );
294305 wallpaperItem .setState (false );
295306 watchfaceItem .setSelected (false );
296- cardboardItem .setSelected (false );
307+ cardboardItem .setSelected (false );
297308
298309 menu .add (fragmentItem );
299310 menu .add (wallpaperItem );
@@ -455,6 +466,17 @@ private void setAppComponent(int opt) {
455466 if (appComponent != opt ) {
456467 appComponent = opt ;
457468 resetManifest = true ;
469+
470+ if (appComponent == AndroidBuild .FRAGMENT ) {
471+ settings .set ("component" , "app" );
472+ } else if (appComponent == AndroidBuild .WALLPAPER ) {
473+ settings .set ("component" , "wallpaper" );
474+ } else if (appComponent == AndroidBuild .WATCHFACE ) {
475+ settings .set ("component" , "watchface" );
476+ } else if (appComponent == AndroidBuild .CARDBOARD ) {
477+ settings .set ("component" , "cardboard" );
478+ }
479+ settings .save ();
458480 }
459481 }
460482
@@ -751,4 +773,63 @@ public void run() {
751773 public int getAppComponent () {
752774 return appComponent ;
753775 }
776+
777+ private void loadModeSettings () {
778+ File sketchProps = new File (sketch .getCodeFolder (), "sketch.properties" );
779+ try {
780+ settings = new Settings (sketchProps );
781+ boolean save = false ;
782+ String component ;
783+ if (!sketchProps .exists ()) {
784+ component = AndroidBuild .DEFAULT_COMPONENT ;
785+ settings .set ("component" , component );
786+ settings .set ("basePackage" , AndroidBuild .DEFAULT_BASE_PACKAGE );
787+ settings .set ("version" , AndroidBuild .DEFAULT_VERSION );
788+ settings .set ("prettyVersion" , AndroidBuild .DEFAULT_PRETTY_VERSION );
789+ save = true ;
790+ } else {
791+ component = settings .get ("component" );
792+ if (component == null ) {
793+ component = AndroidBuild .DEFAULT_COMPONENT ;
794+ settings .set ("component" , component );
795+ save = true ;
796+ }
797+ String basePackage = settings .get ("basePackage" );
798+ if (basePackage == null ) {
799+ basePackage = AndroidBuild .DEFAULT_BASE_PACKAGE ;
800+ settings .set ("basePackage" , basePackage );
801+ save = true ;
802+ }
803+ String version = settings .get ("version" );
804+ if (version == null ) {
805+ version = AndroidBuild .DEFAULT_VERSION ;
806+ settings .set ("version" , version );
807+ save = true ;
808+ }
809+ String prettyVersion = settings .get ("prettyVersion" );
810+ if (prettyVersion == null ) {
811+ prettyVersion = AndroidBuild .DEFAULT_PRETTY_VERSION ;
812+ settings .set ("version" , prettyVersion );
813+ save = true ;
814+ }
815+ }
816+ if (save ) settings .save ();
817+
818+ if (component .equals ("app" )) {
819+ appComponent = AndroidBuild .FRAGMENT ;
820+ fragmentItem .setState (true );
821+ } else if (component .equals ("wallpaper" )) {
822+ appComponent = AndroidBuild .WALLPAPER ;
823+ wallpaperItem .setState (true );
824+ } else if (component .equals ("watchface" )) {
825+ appComponent = AndroidBuild .WATCHFACE ;
826+ watchfaceItem .setState (true );
827+ } else if (component .equals ("cardboard" )) {
828+ appComponent = AndroidBuild .CARDBOARD ;
829+ cardboardItem .setState (true );
830+ }
831+ } catch (IOException e ) {
832+ System .err .println ("While creating " + sketchProps + ": " + e .getMessage ());
833+ }
834+ }
754835}
0 commit comments