diff options
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.java | 93 |
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; + } + } + +} |