Package ariba.ideplugin.eclipse.preferences

Source Code of ariba.ideplugin.eclipse.preferences.AWPreferencesPage$ClassPathEntry

package ariba.ideplugin.eclipse.preferences;

import java.io.File;
import java.io.FilenameFilter;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.ant.core.AntCorePlugin;
import org.eclipse.ant.core.AntCorePreferences;
import org.eclipse.ant.core.IAntClasspathEntry;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbench;
import ariba.ideplugin.eclipse.Activator;

public class AWPreferencesPage extends FieldEditorPreferencePage implements
    IWorkbenchPreferencePage
{

  private String _prevHome;

  public AWPreferencesPage ()
    {
        super(GRID);
        setPreferenceStore(Activator.getDefault().getPreferenceStore());
        _prevHome = Activator.getDefault().getAWHome();
    }

  public void createFieldEditors ()
    {
        addField(new DirectoryFieldEditor(Activator.PrefAWPath,
            "AribaWeb Dir:", getFieldEditorParent()));
        addField(new BooleanFieldEditor(Activator.PrefAutoCheck,
            "Auto check on startup", getFieldEditorParent()));
    }

  public void init (IWorkbench workbench)
    {
    }

  public boolean performOk ()
    {
        boolean ret = super.performOk();
        try {
            JavaCore.setClasspathVariable("AW_HOME", new Path(Activator
                .getDefault().getAWHome()), new NullProgressMonitor());
        }
        catch (JavaModelException e) {
            setErrorMessage(e.getMessage());
            return false;
        }
        if (!Activator.getDefault().getAWHome().equals(_prevHome)) {
            updateAntHome();
        }
        return ret;
    }

  public void updateAntHome ()
    {
        Preferences pref = Activator.getDefault().getPluginPreferences();

        String awhome = pref.getString(Activator.PrefAWPath);
        File anthome = new File(awhome, "tools/ant/");
        if (awhome.length() > 0 && anthome.exists()) {
            File antLib = new File(anthome, "lib");
            String[] antJars = antLib.list(new FilenameFilter() {
                public boolean accept (File dir, String name)
                {
                    return name.endsWith(".jar");
                }
            });
            ClassPathEntry[] entries = new ClassPathEntry[antJars.length];
            for (int i = 0; i < antJars.length; i++) {
                File tjar = new File(antLib, antJars[i]);
                entries[i] = new ClassPathEntry(tjar);
            }
            AntCorePreferences antPref = AntCorePlugin.getPlugin().getPreferences();
            antPref.setAntHome(anthome.toString());
            antPref.setAntHomeClasspathEntries(entries);
            antPref.updatePluginPreferences();
        }
        else {
            AntCorePreferences antPref = AntCorePlugin.getPlugin().getPreferences();
            antPref.setAntHome(antPref.getDefaultAntHome());
            antPref.setAntHomeClasspathEntries(antPref.getDefaultAntHomeEntries());
            antPref.updatePluginPreferences();
        }
    }

  public class ClassPathEntry implements IAntClasspathEntry
    {
        File _entry;

        public ClassPathEntry (File entry)
        {
            _entry = entry;
        }

        public URL getEntryURL ()
        {
            try {
                return _entry.toURI().toURL();
            }
            catch (MalformedURLException e) {
                e.printStackTrace();
            }
            return null;
        }

        public String getLabel ()
        {
            return _entry.toString();
        }

        public boolean isEclipseRuntimeRequired ()
        {
            return false;
        }

        public boolean equals (Object o)
        {
            if (o instanceof ClassPathEntry) {
                return ((ClassPathEntry)o)._entry.equals(_entry);
            }
            else if (o instanceof IAntClasspathEntry) {
                return ((IAntClasspathEntry)o).getEntryURL().equals(getEntryURL());
            }
            return false;
        }
    }
}
TOP

Related Classes of ariba.ideplugin.eclipse.preferences.AWPreferencesPage$ClassPathEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.