/* * 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; } } }