au.gov.ansto.bragg.echidna.ui.preference.DRAPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for au.gov.ansto.bragg.echidna.ui.preference.DRAPreferencePage.java

Source

/*******************************************************************************
 * Copyright (c) 2010 Australian Nuclear Science and Technology Organisation.
 * 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: 
 *    Norman Xiong (nxi@Bragg Institute) - initial API and implementation
 ******************************************************************************/
package au.gov.ansto.bragg.echidna.ui.preference;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;

import au.gov.ansto.bragg.echidna.ui.internal.Activator;
import au.gov.ansto.bragg.echidna.ui.internal.EchidnaAnalysisPerspective;
import au.gov.ansto.bragg.echidna.ui.views.EchidnaAnalysisControlView;
import au.gov.ansto.bragg.kakadu.ui.util.Util;

/**
 * @author nxi
 *
 */
public class DRAPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

    public DRAPreferencePage() {
        super(GRID);
        setPreferenceStore(Activator.getDefault().getPreferenceStore());
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
     */
    @Override
    public void init(IWorkbench workbench) {
        // TODO Auto-generated method stub

    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
     */
    @Override
    protected void createFieldEditors() {

        Label newProfileLabel = new Label(getFieldEditorParent(), SWT.NONE);
        newProfileLabel.setText("Configurations for data reduction");
        GridDataFactory.fillDefaults().span(3, 1).grab(true, false).applyTo(newProfileLabel);

        final StringFieldEditor efficiencyFileText = new StringFieldEditor(PreferenceConstants.P_EFFICIENCY_FILE,
                "Detector efficiency file:", 40, getFieldEditorParent());
        Button browseButton = new Button(getFieldEditorParent(), SWT.PUSH);
        browseButton.setText("Browse...");
        browseButton.setToolTipText("Click to browse the file system");
        addField(efficiencyFileText);
        GridDataFactory.fillDefaults().grab(true, false).applyTo(browseButton);
        browseButton.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                String filename = Util.getFilenameFromShell(getShell(), "", "");
                if (filename != null && filename.trim().length() > 0) {
                    efficiencyFileText.setStringValue(filename);
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
            }
        });

        final StringFieldEditor angularOffsetFileText = new StringFieldEditor(
                PreferenceConstants.P_ANGULAR_OFFSET_FILE, "Angular offset file:", 40, getFieldEditorParent());
        Button browseButton2 = new Button(getFieldEditorParent(), SWT.PUSH);
        browseButton2.setCursor(Display.getDefault().getSystemCursor(SWT.CURSOR_HAND));
        browseButton2.setToolTipText("Click to browse the file system");
        browseButton2.setText("Browse...");
        addField(angularOffsetFileText);
        GridDataFactory.fillDefaults().grab(true, false).applyTo(browseButton2);
        browseButton2.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                String filename = Util.getFilenameFromShell(getShell(), "", "");
                if (filename != null && filename.trim().length() > 0) {
                    angularOffsetFileText.setStringValue(filename);
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
            }
        });

        final ComboFieldEditor normRefCombo = new ComboFieldEditor(PreferenceConstants.P_NORM_REF,
                "Normalisation reference: ", new String[][] { { "bm1_counts", "bm1_counts" },
                        { "bm2_counts", "bm2_counts" }, { "bm3_counts", "bm3_counts" } },
                getFieldEditorParent());
        addField(normRefCombo);
        new Label(getFieldEditorParent(), SWT.NONE);

        final StringFieldEditor userOutputFileText = new StringFieldEditor(
                PreferenceConstants.P_USER_OUTPUT_DIRECTORY, "User Output Directory:", 40, getFieldEditorParent());
        Button browseButton3 = new Button(getFieldEditorParent(), SWT.PUSH);
        browseButton3.setCursor(Display.getDefault().getSystemCursor(SWT.CURSOR_HAND));
        browseButton3.setToolTipText("Click to browse the file system");
        browseButton3.setText("Browse...");
        addField(userOutputFileText);
        GridDataFactory.fillDefaults().grab(true, false).applyTo(browseButton3);
        browseButton3.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                String filename = Util.selectDirectoryFromShell(getShell());
                if (filename != null && filename.trim().length() > 0) {
                    userOutputFileText.setStringValue(filename);
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
            }
        });

        final StringFieldEditor calibrationOutputFileText = new StringFieldEditor(
                PreferenceConstants.P_CALIBRATION_OUTPUT_DIRECTORY, "Calibration Output Directory:", 40,
                getFieldEditorParent());
        Button browseButton4 = new Button(getFieldEditorParent(), SWT.PUSH);
        browseButton4.setCursor(Display.getDefault().getSystemCursor(SWT.CURSOR_HAND));
        browseButton4.setToolTipText("Click to browse the file system");
        browseButton4.setText("Browse...");
        addField(calibrationOutputFileText);
        GridDataFactory.fillDefaults().grab(true, false).applyTo(browseButton4);
        browseButton4.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                String filename = Util.selectDirectoryFromShell(getShell());
                if (filename != null && filename.trim().length() > 0) {
                    calibrationOutputFileText.setStringValue(filename);
                }
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
            }
        });
        //      GridDataFactory.fillDefaults().grab(false, false).span(2, 1).applyTo(normRefCombo.get);
    }

    @Override
    public void createControl(Composite parent) {
        // TODO Auto-generated method stub
        super.createControl(parent);
        GridLayoutFactory.swtDefaults().numColumns(3).applyTo(getFieldEditorParent());
    }

    @Override
    public boolean performOk() {
        boolean isOK = super.performOk();
        IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
        for (IWorkbenchWindow window : windows) {
            IWorkbenchPage[] pages = window.getPages();
            for (IWorkbenchPage page : pages) {
                IPerspectiveDescriptor[] perspectives = page.getOpenPerspectives();
                for (IPerspectiveDescriptor perspective : perspectives) {
                    if (perspective.getId().equals(EchidnaAnalysisPerspective.ANALYSIS_PERSPECTIVE_ID)) {
                        IViewPart view = page.findView(EchidnaAnalysisPerspective.ANALYSIS_PARAMETERS_VIEW_ID);
                        if (view instanceof EchidnaAnalysisControlView) {
                            ((EchidnaAnalysisControlView) view).loadPreference();
                            return isOK;
                        }
                    }
                }
            }
        }
        return isOK;
    }
}