aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/preferences/NdkPreferencePage.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/preferences/NdkPreferencePage.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/preferences/NdkPreferencePage.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/preferences/NdkPreferencePage.java b/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/preferences/NdkPreferencePage.java
new file mode 100644
index 000000000..e1ab24768
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.ndk/src/com/android/ide/eclipse/ndk/internal/preferences/NdkPreferencePage.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/org/documents/epl-v10.php
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ide.eclipse.ndk.internal.preferences;
+
+import com.android.ide.eclipse.ndk.internal.Activator;
+import com.android.ide.eclipse.ndk.internal.Messages;
+import com.android.ide.eclipse.ndk.internal.NdkManager;
+
+import org.eclipse.jface.preference.DirectoryFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class NdkPreferencePage extends FieldEditorPreferencePage implements
+ IWorkbenchPreferencePage {
+
+ private NdkDirectoryFieldEditor mNdkDirectoryEditor;
+
+ public NdkPreferencePage() {
+ super(GRID);
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription(Messages.NDKPreferencePage_Preferences);
+ }
+
+ @Override
+ protected void createFieldEditors() {
+ mNdkDirectoryEditor = new NdkDirectoryFieldEditor(NdkManager.NDK_LOCATION,
+ Messages.NDKPreferencePage_Location, getFieldEditorParent());
+ addField(mNdkDirectoryEditor);
+ }
+
+ private static class NdkDirectoryFieldEditor extends DirectoryFieldEditor {
+ public NdkDirectoryFieldEditor(String name, String labelText, Composite parent) {
+ super(name, labelText, parent);
+ setEmptyStringAllowed(true);
+ }
+
+ @Override
+ protected boolean doCheckState() {
+ if (!super.doCheckState()) {
+ setErrorMessage(Messages.NDKPreferencePage_not_a_valid_directory);
+ return false;
+ }
+
+ String dirname = getTextControl().getText().trim();
+ if (!dirname.isEmpty() && !NdkManager.isValidNdkLocation(dirname)) {
+ setErrorMessage(Messages.NDKPreferencePage_not_a_valid_NDK_directory);
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public Text getTextControl(Composite parent) {
+ setValidateStrategy(VALIDATE_ON_KEY_STROKE);
+ return super.getTextControl(parent);
+ }
+
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ // Nothing to do herea
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+
+ if (mNdkDirectoryEditor != null) {
+ mNdkDirectoryEditor.dispose();
+ mNdkDirectoryEditor = null;
+ }
+ }
+
+}