org.yakindu.sct.examples.wizard.preferences.ExamplesPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for org.yakindu.sct.examples.wizard.preferences.ExamplesPreferencePage.java

Source

/**
 * Copyright (c) 2016 committers of YAKINDU and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * Contributors:
 *    committers of YAKINDU - initial API and implementation
 * 
 */
package org.yakindu.sct.examples.wizard.preferences;

import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.yakindu.sct.examples.wizard.ExampleActivator;

/**
 * @author andreas muelder - Initial contribution and API
 * 
 */
public class ExamplesPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

    protected static class StorageLocationFieldEditor extends DirectoryFieldEditor {

        public StorageLocationFieldEditor(String name, String labelText, Composite parent) {
            super(name, labelText, parent);
            setEmptyStringAllowed(false);
            setErrorMessage("Storage location must not be empty.");
        }

        /**
         * Checks only if the input text is not empty, but not if the directory
         * exists as in that case it will be created by the example wizard.
         */
        @Override
        protected boolean doCheckState() {
            String fileName = getTextControl().getText();
            fileName = fileName.trim();
            if (fileName.length() == 0 && !isEmptyStringAllowed()) {
                return false;
            }
            return true;
        }

    };

    public ExamplesPreferencePage() {
        super(GRID);
        setDescription("Examples Preference Page");
    }

    @Override
    protected void createFieldEditors() {
        Composite parent = getFieldEditorParent();
        addFields(parent);
    }

    protected void addFields(Composite main) {
        addField(new StorageLocationFieldEditor(ExamplesPreferenceConstants.STORAGE_LOCATION, "Storage Location:",
                main));
        separator();
        StringFieldEditor remoteLocationEditor = new StringFieldEditor(ExamplesPreferenceConstants.REMOTE_LOCATION,
                "Remote Location", main);
        remoteLocationEditor.getTextControl(main).setEditable(false);
        addField(remoteLocationEditor);
        separator();
        StringFieldEditor remoteBranchEditor = new StringFieldEditor(ExamplesPreferenceConstants.REMOTE_BRANCH,
                "Remote Branch:", main);
        addField(remoteBranchEditor);
    }

    private void separator() {
        Label label = new Label(getFieldEditorParent(), SWT.NONE);
        label.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));
    }

    public void init(IWorkbench workbench) {
        setPreferenceStore(ExampleActivator.getDefault().getPreferenceStore());
    }

}