Package bndtools.preferences.ui

Source Code of bndtools.preferences.ui.BndProjectPropertyPage

package bndtools.preferences.ui;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.dialogs.PropertyPage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;

import bndtools.Plugin;
import bndtools.preferences.CompileErrorAction;
import bndtools.preferences.EclipseClasspathPreference;

public class BndProjectPropertyPage extends PropertyPage {

    private CompileErrorAction action;
    private EclipseClasspathPreference classpathPref;

    public BndProjectPropertyPage() {
        setTitle("Bndtools");
    }

    /**
     * Create contents of the property page.
     *
     * @param parent
     */
    @Override
    public Control createContents(Composite parent) {
        // CREATE CONTROLS
        Composite container = new Composite(parent, SWT.NULL);
        container.setLayout(new GridLayout(1, false));

        Group grpJavaCompilationErrors = new Group(container, SWT.NONE);
        grpJavaCompilationErrors.setLayout(new GridLayout(1, false));
        grpJavaCompilationErrors.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        grpJavaCompilationErrors.setText("Java Compilation Errors");

        Label lblHowShouldBndtools = new Label(grpJavaCompilationErrors, SWT.WRAP);
        lblHowShouldBndtools.setBounds(0, 0, 59, 14);
        lblHowShouldBndtools.setText("How should Bndtools proceed when Java compilation errors exist?");

        final Button btnDelete = new Button(grpJavaCompilationErrors, SWT.RADIO);
        btnDelete.setText("Delete the output bundle");

        final Button btnSkip = new Button(grpJavaCompilationErrors, SWT.RADIO);
        btnSkip.setText("Skip building the output bundle (default)");

        final Button btnContinue = new Button(grpJavaCompilationErrors, SWT.RADIO);
        btnContinue.setText("Continue building the bundle");

        Group grpEclipseClasspathEntries = new Group(container, SWT.NONE);
        grpEclipseClasspathEntries.setLayout(new GridLayout(1, false));
        grpEclipseClasspathEntries.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
        grpEclipseClasspathEntries.setText("Eclipse Classpath Entries");

        final Button btnExposeEclipseClasspath = new Button(grpEclipseClasspathEntries, SWT.RADIO);
        btnExposeEclipseClasspath.setText("Expose Eclipse classpath entries to bnd");

        final Button btnHideEclipseClasspath = new Button(grpEclipseClasspathEntries, SWT.RADIO);
        btnHideEclipseClasspath.setText("Hide Eclipse classpath entries (safer)");

        // LOAD DATA
        IPreferenceStore store = getPreferenceStore();
        action = CompileErrorAction.parse(store.getString(CompileErrorAction.PREFERENCE_KEY));
        switch (action) {
        case delete :
            btnDelete.setSelection(true);
            btnSkip.setSelection(false);
            btnContinue.setSelection(false);
            break;
        case skip :
            btnDelete.setSelection(false);
            btnSkip.setSelection(true);
            btnContinue.setSelection(false);
            break;
        case build :
            btnDelete.setSelection(false);
            btnSkip.setSelection(false);
            btnContinue.setSelection(true);
            break;
        }
        classpathPref = EclipseClasspathPreference.parse(store.getString(EclipseClasspathPreference.PREFERENCE_KEY));
        switch (classpathPref) {
        case expose :
            btnExposeEclipseClasspath.setSelection(true);
            btnHideEclipseClasspath.setSelection(false);
            break;
        case hide :
            btnExposeEclipseClasspath.setSelection(false);
            btnHideEclipseClasspath.setSelection(true);
        }

        // LISTENERS
        SelectionAdapter errorActionListener = new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnDelete.getSelection())
                    action = CompileErrorAction.delete;
                else if (btnSkip.getSelection())
                    action = CompileErrorAction.skip;
                else if (btnContinue.getSelection())
                    action = CompileErrorAction.build;
            }
        };
        btnDelete.addSelectionListener(errorActionListener);
        btnSkip.addSelectionListener(errorActionListener);
        btnContinue.addSelectionListener(errorActionListener);

        SelectionAdapter classpathPrefListener = new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnExposeEclipseClasspath.getSelection())
                    classpathPref = EclipseClasspathPreference.expose;
                else if (btnHideEclipseClasspath.getSelection())
                    classpathPref = EclipseClasspathPreference.hide;
            }
        };
        btnExposeEclipseClasspath.addSelectionListener(classpathPrefListener);
        btnHideEclipseClasspath.addSelectionListener(classpathPrefListener);

        return container;
    }

    IProject getProject() {
        IAdaptable elem = getElement();
        if (elem instanceof IProject)
            return (IProject) elem;

        IProject project = (IProject) elem.getAdapter(IProject.class);
        if (project != null)
            return project;

        throw new IllegalArgumentException("Target element does not adapt to IProject");
    }

    @Override
    public boolean performOk() {
        IPreferenceStore store = getPreferenceStore();
        store.setValue(CompileErrorAction.PREFERENCE_KEY, action.name());
        store.setValue(EclipseClasspathPreference.PREFERENCE_KEY, classpathPref.name());

        return true;
    }

    @Override
    protected IPreferenceStore doGetPreferenceStore() {
        return new ScopedPreferenceStore(new ProjectScope(getProject()), Plugin.PLUGIN_ID);
    }
}
TOP

Related Classes of bndtools.preferences.ui.BndProjectPropertyPage

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.