package com.mobilesorcery.sdk.builder.android.ui.preferences; import org.eclipse.core.runtime.Path; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.preference.DirectoryFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import com.mobilesorcery.sdk.builder.android.Activator; import com.mobilesorcery.sdk.builder.android.launch.ADB; public class AndroidSDKPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ private final class SDKFieldEditor extends DirectoryFieldEditor { private SDKFieldEditor(String name, String labelText, Composite parent) { super(name, labelText, parent); setValidateStrategy(VALIDATE_ON_KEY_STROKE); } @Override protected boolean checkState() { boolean isEmpty = getStringValue().isEmpty(); ADB adb = ADB.findADB(new Path(getStringValue())); clearErrorMessage(); if (!adb.isValid()) { setMessage("This is an invalid Android SDK location (found no ADB binary)", IMessageProvider.WARNING); } else { setMessage(null, IMessageProvider.NONE); } return isEmpty || (adb.isValid() && super.checkState()); } } public AndroidSDKPreferencePage() { super(); noDefaultAndApplyButton(); setPreferenceStore(Activator.getDefault().getPreferenceStore()); } @Override public void init(IWorkbench workbench) { } @Override protected void createFieldEditors() { SDKFieldEditor sdkLocation = new SDKFieldEditor(Activator.EXTERNAL_SDK_PATH, "&SDK Location", getFieldEditorParent()); DirectoryFieldEditor ndkLocation = new DirectoryFieldEditor(Activator.NDK_PATH, "&NDK Location", getFieldEditorParent()); IntegerFieldEditor platformVersion = new IntegerFieldEditor(Activator.NDK_PLATFORM_VERSION, "NDK &Platform Version", getFieldEditorParent()); platformVersion.setValidRange(9, 100); addField(sdkLocation); addField(ndkLocation); addField(platformVersion); } }