Home | History | Annotate | Download | only in preferences
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Eclipse Public License, Version 1.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.eclipse.org/org/documents/epl-v10.php
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.ide.eclipse.ndk.internal.preferences;
     18 
     19 import com.android.ide.eclipse.ndk.internal.Activator;
     20 import com.android.ide.eclipse.ndk.internal.Messages;
     21 import com.android.ide.eclipse.ndk.internal.NdkManager;
     22 
     23 import org.eclipse.jface.preference.DirectoryFieldEditor;
     24 import org.eclipse.jface.preference.FieldEditorPreferencePage;
     25 import org.eclipse.swt.widgets.Composite;
     26 import org.eclipse.swt.widgets.Text;
     27 import org.eclipse.ui.IWorkbench;
     28 import org.eclipse.ui.IWorkbenchPreferencePage;
     29 
     30 public class NdkPreferencePage extends FieldEditorPreferencePage implements
     31         IWorkbenchPreferencePage {
     32 
     33     private NdkDirectoryFieldEditor mNdkDirectoryEditor;
     34 
     35     public NdkPreferencePage() {
     36         super(GRID);
     37         setPreferenceStore(Activator.getDefault().getPreferenceStore());
     38         setDescription(Messages.NDKPreferencePage_Preferences);
     39     }
     40 
     41     @Override
     42     protected void createFieldEditors() {
     43         mNdkDirectoryEditor = new NdkDirectoryFieldEditor(NdkManager.NDK_LOCATION,
     44                 Messages.NDKPreferencePage_Location, getFieldEditorParent());
     45         addField(mNdkDirectoryEditor);
     46     }
     47 
     48     private static class NdkDirectoryFieldEditor extends DirectoryFieldEditor {
     49         public NdkDirectoryFieldEditor(String name, String labelText, Composite parent) {
     50             super(name, labelText, parent);
     51             setEmptyStringAllowed(true);
     52         }
     53 
     54         @Override
     55         protected boolean doCheckState() {
     56             if (!super.doCheckState()) {
     57                 setErrorMessage(Messages.NDKPreferencePage_not_a_valid_directory);
     58                 return false;
     59             }
     60 
     61             String dirname = getTextControl().getText().trim();
     62             if (!dirname.isEmpty() && !NdkManager.isValidNdkLocation(dirname)) {
     63                 setErrorMessage(Messages.NDKPreferencePage_not_a_valid_NDK_directory);
     64                 return false;
     65             }
     66 
     67             return true;
     68         }
     69 
     70         @Override
     71         public Text getTextControl(Composite parent) {
     72             setValidateStrategy(VALIDATE_ON_KEY_STROKE);
     73             return super.getTextControl(parent);
     74         }
     75 
     76     }
     77 
     78     @Override
     79     public void init(IWorkbench workbench) {
     80         // Nothing to do herea
     81     }
     82 
     83     @Override
     84     public void dispose() {
     85         super.dispose();
     86 
     87         if (mNdkDirectoryEditor != null) {
     88             mNdkDirectoryEditor.dispose();
     89             mNdkDirectoryEditor = null;
     90         }
     91     }
     92 
     93 }
     94