Skip to content

Commit 7105ff0

Browse files
committed
Set SDK target version and properly update menus
1 parent 9be1342 commit 7105ff0

File tree

2 files changed

+47
-6
lines changed

2 files changed

+47
-6
lines changed

src/processing/mode/android/AndroidBuild.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
class AndroidBuild extends JavaBuild {
4343
// static final String basePackage = "changethispackage.beforesubmitting.tothemarket";
4444
static final String basePackage = "processing.test";
45-
static final String sdkName = "2.3.3";
46-
static final String sdkVersion = "10"; // Android 2.3.3 (Gingerbread)
45+
static String sdkName = "2.3.3";
46+
static String sdkVersion = "10"; // Android 2.3.3 (Gingerbread)
4747
static final String sdkTarget = "android-" + sdkVersion;
4848

4949
private final AndroidSDK sdk;
@@ -67,6 +67,10 @@ public AndroidBuild(final Sketch sketch, final AndroidMode mode) {
6767
coreZipFile = mode.getCoreZipLocation();
6868
}
6969

70+
public static void setSdkTarget(AndroidSDK.SDKTarget target) {
71+
sdkName = target.name;
72+
sdkVersion = Integer.toString(target.version);
73+
}
7074

7175
/**
7276
* Build into temporary folders (needed for the Windows 8.3 bugs in the Android SDK).

src/processing/mode/android/AndroidEditor.java

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,11 @@ public void actionPerformed(ActionEvent e) {
227227
@Override
228228
public void run() {
229229
while(androidMode == null || androidMode.getSDK() == null) {
230-
System.out.println("Still null");
230+
try {
231+
Thread.sleep(3000);
232+
} catch (InterruptedException e) {
233+
e.printStackTrace();
234+
}
231235
}
232236
updateSdkMenu(sdkMenu);
233237
}
@@ -271,16 +275,49 @@ public void actionPerformed(ActionEvent e) {
271275
return menu;
272276
}
273277

274-
private void updateSdkMenu(JMenu sdkMenu) {
278+
private void updateSdkMenu(final JMenu sdkMenu) {
275279
try {
276280
ArrayList<AndroidSDK.SDKTarget> targets = androidMode.getSDK().getAvailableSdkTargets();
277281

278282
if(targets.size() != 0) sdkMenu.removeAll();
279283

280-
for(AndroidSDK.SDKTarget target : targets) {
281-
JCheckBoxMenuItem item = new JCheckBoxMenuItem("API " + target.name + " (" + target.version + ")");
284+
AndroidSDK.SDKTarget lowestTargetAvailable = null;
285+
JCheckBoxMenuItem lowestTargetMenuItem = null;
286+
287+
for(final AndroidSDK.SDKTarget target : targets) {
288+
final JCheckBoxMenuItem item = new JCheckBoxMenuItem("API " + target.name + " (" + target.version + ")");
289+
290+
if(lowestTargetAvailable == null || lowestTargetAvailable.version > target.version) {
291+
lowestTargetAvailable = target;
292+
lowestTargetMenuItem = item;
293+
}
294+
295+
item.addChangeListener(new ChangeListener() {
296+
@Override
297+
public void stateChanged(ChangeEvent e) {
298+
if (target.name.equals(AndroidBuild.sdkName)) item.setState(true);
299+
else item.setState(false);
300+
}
301+
});
302+
303+
item.addActionListener(new ActionListener() {
304+
@Override
305+
public void actionPerformed(ActionEvent e) {
306+
AndroidBuild.setSdkTarget(target);
307+
308+
for (int i = 0; i < sdkMenu.getItemCount(); i++) {
309+
((JCheckBoxMenuItem) sdkMenu.getItem(i)).setState(false);
310+
}
311+
312+
item.setState(true);
313+
}
314+
});
315+
282316
sdkMenu.add(item);
283317
}
318+
319+
AndroidBuild.setSdkTarget(lowestTargetAvailable);
320+
lowestTargetMenuItem.setState(true);
284321
} catch (IOException e) {
285322
e.printStackTrace();
286323
}

0 commit comments

Comments
 (0)