Package org.epic.core.preferences

Source Code of org.epic.core.preferences.PerlMainPreferencePage

package org.epic.core.preferences;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;

import org.epic.perleditor.PerlEditorPlugin;
import org.epic.perleditor.preferences.PreferenceConstants;

public class PerlMainPreferencePage
  extends PreferencePage
  implements IWorkbenchPreferencePage {

  private Text executableText;
  private Text browserLabelText;
  private Text debugPreviewKeysText;
  private Button warningsCheckBox;
  private Button methodsCheckBox;
  private Button taintCheckBox;
    private Button debugConsoleCheckBox;
    private Button suspendAtFirstCheckBox;

  private Button validateCheckBox;

  private Scale syntaxCheckInterval;
  private Combo interpreterTypeCombo;
  private Label syntaxIntervalSecondsLabel;
  private Composite fParent;
  private String[] intepreterTypes = {
        PreferenceConstants.DEBUG_INTERPRETER_TYPE_STANDARD,
        PreferenceConstants.DEBUG_INTERPRETER_TYPE_CYGWIN
        };

  /*
   * @see PreferencePage#createContents(Composite)
   */
  protected Control createContents(Composite parent) {

    fParent = parent;

    Composite top = new Composite(parent, SWT.NULL);

    //Create a data that takes up the extra space in the dialog .
    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    top.setLayoutData(data);

    GridLayout layout = new GridLayout();
    top.setLayout(layout);

    Composite buttonComposite = new Composite(top, SWT.NULL);

    GridLayout buttonLayout = new GridLayout();
    //buttonLayout.numColumns = 2;
    buttonLayout.numColumns = 3;
    buttonComposite.setLayout(buttonLayout);

    //Create a data that takes up the extra space in the dialog and spans both columns.
    data =
      new GridData(
        GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING);
    buttonComposite.setLayoutData(data);

    Label executableLabel = new Label(buttonComposite, SWT.NONE);
    executableLabel.setText("Perl executable:");

    executableText = new Text(buttonComposite, SWT.BORDER);

    Button browseButton =
      new Button(buttonComposite, SWT.PUSH | SWT.CENTER);

    browseButton.setText("..."); //$NON-NLS-1$
    browseButton.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        FileDialog fileBrowser = new FileDialog(fParent.getShell());
        String dir = fileBrowser.open();
        if (dir != null) {
          // Surround interpreter name by ""
          executableText.setText("\"" + dir + "\"");
        }
      }
    });

    data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    executableText.setLayoutData(data);

    executableText.setText(
      PerlEditorPlugin.getDefault().getPerlExecutable());

/*
    Label executableInfoLabel = new Label(top, SWT.NONE);
    executableInfoLabel.setText(
      "(Windows users, please specify path with forward slashes '/')");

    data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    Label dummy = new Label(top, SWT.CHECK);
    dummy.setLayoutData(data);
    */

//    data = new GridData(GridData.FILL_HORIZONTAL);
//    data.grabExcessHorizontalSpace = true;
    new Label(buttonComposite, SWT.NONE).setText("Interpreter type:");
    interpreterTypeCombo = new Combo(buttonComposite, SWT.READ_ONLY);
      interpreterTypeCombo.setItems(intepreterTypes);
    interpreterTypeCombo.setText(
            PerlEditorPlugin.getDefault().getPreferenceStore().getString(
                PreferenceConstants.DEBUG_INTERPRETER_TYPE));

    // Warning preference
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    warningsCheckBox = new Button(top, SWT.CHECK);
    warningsCheckBox.setText("Enable warnings");
    warningsCheckBox.setSelection(
      PerlEditorPlugin.getDefault().getBooleanPreference(
                PreferenceConstants.DEBUG_SHOW_WARNINGS));
    warningsCheckBox.setLayoutData(data);
   
    // Warning preference
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    methodsCheckBox = new Button(top, SWT.CHECK);
    methodsCheckBox.setText("Enable Method::Signature keywords");
    methodsCheckBox.setSelection(
      PerlEditorPlugin.getDefault().getBooleanPreference(
                PreferenceConstants.DEBUG_METHOD_SIGNATURES));
    methodsCheckBox.setLayoutData(data);

    // Taint check preference
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    taintCheckBox = new Button(top, SWT.CHECK);
    taintCheckBox.setText("Enable taint mode");
    taintCheckBox.setSelection(
            PerlEditorPlugin.getDefault().getBooleanPreference(
          PreferenceConstants.DEBUG_TAINT_MODE));
    taintCheckBox.setLayoutData(data);

        // Debugger console (experimental)
        data = new GridData(GridData.FILL_HORIZONTAL);
        data.grabExcessHorizontalSpace = true;
        debugConsoleCheckBox = new Button(top, SWT.CHECK);
        debugConsoleCheckBox.setText("Enable debugger console (experimental)");
        debugConsoleCheckBox.setSelection(
            PerlEditorPlugin.getDefault().getBooleanPreference(
                PreferenceConstants.DEBUG_DEBUG_CONSOLE));
        debugConsoleCheckBox.setLayoutData(data);       

        // Stop debugger at first line
        data = new GridData(GridData.FILL_HORIZONTAL);
        data.grabExcessHorizontalSpace = true;
        suspendAtFirstCheckBox = new Button(top, SWT.CHECK);
        suspendAtFirstCheckBox.setText("Suspend debugger at first statement");
        suspendAtFirstCheckBox.setSelection(
            PerlEditorPlugin.getDefault().getBooleanPreference(
                PreferenceConstants.DEBUG_SUSPEND_AT_FIRST));
        suspendAtFirstCheckBox.setLayoutData(data);
       
    //WebBrowser preferences
    Composite browserComposite = new Composite(top, SWT.NULL);
    GridLayout browserLayout = new GridLayout();
    browserLayout.numColumns = 2;
    browserComposite.setLayout(browserLayout);
    data = new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING);
    browserComposite.setLayoutData(data);
   
    Label browserLabel=new Label(browserComposite, SWT.NONE);
    browserLabel.setText("Default Web-Start page:");
   
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    browserLabelText = new Text(browserComposite, SWT.BORDER);
    browserLabelText.setLayoutData(data);
    browserLabelText.setText(
      PerlEditorPlugin.getDefault().getPreferenceStore().getString(
                PreferenceConstants.BROWSER_START_URL));

      // "Object identifying" hash keys for previewing hashes in debugger
        Composite idKeysComposite = new Composite(top, SWT.NULL);
        GridLayout idKeysLayout = new GridLayout();
        idKeysLayout.numColumns = 2;
        idKeysComposite.setLayout(idKeysLayout);
        data = new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING);
        idKeysComposite.setLayoutData(data);
       
        Label debugPreviewKeysLabel = new Label(browserComposite, SWT.NONE);
        debugPreviewKeysLabel.setText("Debugger preview keys:");
       
        data = new GridData(GridData.FILL_HORIZONTAL);
        data.grabExcessHorizontalSpace = true;
        debugPreviewKeysText = new Text(browserComposite, SWT.BORDER);
        debugPreviewKeysText.setLayoutData(data);
        debugPreviewKeysText.setText(
            PerlEditorPlugin.getDefault().getPreferenceStore().getString(
                PreferenceConstants.DEBUG_PREVIEW_KEYS));
   
    Composite syntaxIntervalComposite = new Composite(top, SWT.NULL);

    GridLayout syncIntervalLayout = new GridLayout();
    syncIntervalLayout.numColumns = 3;
    syntaxIntervalComposite.setLayout(syncIntervalLayout);
    data =
      new GridData(
        GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING);
    syntaxIntervalComposite.setLayoutData(data);

    validateCheckBox = new Button(syntaxIntervalComposite, SWT.CHECK);

    validateCheckBox.setText("Validate source when idle for ");

    validateCheckBox.setSelection(
            PerlEditorPlugin.getDefault().getBooleanPreference(
                PreferenceConstants.EDITOR_SYNTAX_VALIDATION));
 
    syntaxCheckInterval = new Scale(syntaxIntervalComposite, SWT.HORIZONTAL);
    syntaxCheckInterval.setMinimum(1);
    syntaxCheckInterval.setMaximum(10000);
    syntaxCheckInterval.setIncrement(100);
   
    syntaxIntervalSecondsLabel = new Label(syntaxIntervalComposite, SWT.NONE);
        displayInterval(PerlEditorPlugin.getDefault().getPreferenceStore().getInt(
            PreferenceConstants.EDITOR_SYNTAX_VALIDATION_INTERVAL));
   
    syntaxCheckInterval.addListener(SWT.Selection, new Listener () {
            public void handleEvent (Event event)
            {
                displayInterval(syntaxCheckInterval.getSelection());
            } });
     
   
    syntaxIntervalComposite.setLayoutData(data);

    return new Composite(parent, SWT.NULL);
  }

  /*
   * @see IWorkbenchPreferencePage#init(IWorkbench)
   */
  public void init(IWorkbench workbench) {
    //Initialize the preference store we wish to use
    setPreferenceStore(PerlEditorPlugin.getDefault().getPreferenceStore());
  }

  /**
   * Performs special processing when this page's Restore Defaults button has
   * been pressed.
   * Sets the contents of the color field to the default value in the preference
   * store.
   */
  protected void performDefaults() {
        IPreferenceStore prefs = PerlEditorPlugin.getDefault().getPreferenceStore();
       
    executableText.setText(
      prefs.getDefaultString(PreferenceConstants.DEBUG_PERL_EXECUTABLE));
    warningsCheckBox.setSelection(
      prefs.getDefaultBoolean(PreferenceConstants.DEBUG_SHOW_WARNINGS));
    methodsCheckBox.setSelection(
      prefs.getDefaultBoolean(PreferenceConstants.DEBUG_METHOD_SIGNATURES));
    taintCheckBox.setSelection(
            prefs.getDefaultBoolean(PreferenceConstants.DEBUG_TAINT_MODE));
        debugConsoleCheckBox.setSelection(
            prefs.getDefaultBoolean(PreferenceConstants.DEBUG_DEBUG_CONSOLE));
        suspendAtFirstCheckBox.setSelection(
            prefs.getDefaultBoolean(PreferenceConstants.DEBUG_SUSPEND_AT_FIRST));
    interpreterTypeCombo.setText(
            prefs.getDefaultString(PreferenceConstants.DEBUG_INTERPRETER_TYPE));
    browserLabelText.setText(
      prefs.getDefaultString(PreferenceConstants.BROWSER_START_URL));
        debugPreviewKeysText.setText(
            prefs.getDefaultString(PreferenceConstants.DEBUG_PREVIEW_KEYS));
    validateCheckBox.setSelection(
        prefs.getDefaultBoolean(PreferenceConstants.EDITOR_SYNTAX_VALIDATION));

        int defaultInterval = prefs.getDefaultInt(
            PreferenceConstants.EDITOR_SYNTAX_VALIDATION_INTERVAL);
        displayInterval(defaultInterval);
  }
  /**
   * Method declared on IPreferencePage. Save the
   * color preference to the preference store.
   */
  public boolean performOk() {
        IPreferenceStore prefs = PerlEditorPlugin.getDefault().getPreferenceStore();
       
    PerlEditorPlugin.getDefault().setPerlExecutable(
      executableText.getText());
        prefs.setValue(
            PreferenceConstants.DEBUG_SHOW_WARNINGS,
            warningsCheckBox.getSelection());
        prefs.setValue(
            PreferenceConstants.DEBUG_METHOD_SIGNATURES,
            methodsCheckBox.getSelection());
    prefs.setValue(
            PreferenceConstants.DEBUG_TAINT_MODE,
      taintCheckBox.getSelection());
        prefs.setValue(
            PreferenceConstants.DEBUG_DEBUG_CONSOLE,
            debugConsoleCheckBox.getSelection());
        prefs.setValue(
            PreferenceConstants.DEBUG_SUSPEND_AT_FIRST,
            suspendAtFirstCheckBox.getSelection());
    prefs.setValue(
            PreferenceConstants.EDITOR_SYNTAX_VALIDATION,
            validateCheckBox.getSelection());
    prefs.setValue(
            PreferenceConstants.DEBUG_INTERPRETER_TYPE,
            interpreterTypeCombo.getText());
    prefs.setValue(
            PreferenceConstants.EDITOR_SYNTAX_VALIDATION_INTERVAL,
            syntaxCheckInterval.getSelection());
    prefs.setValue(
            PreferenceConstants.BROWSER_START_URL,
            browserLabelText.getText());
        prefs.setValue(
            PreferenceConstants.DEBUG_PREVIEW_KEYS,
            debugPreviewKeysText.getText());
   
    return super.performOk();
  }
   
    private void displayInterval(int interval)
    {
        float intervalDisplay = Math.round(interval/10f)/100f;
        syntaxIntervalSecondsLabel.setText(intervalDisplay + " seconds ");
        syntaxCheckInterval.setSelection(interval);
    }
}
TOP

Related Classes of org.epic.core.preferences.PerlMainPreferencePage

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.