Package org.epic.perleditor.preferences

Source Code of org.epic.perleditor.preferences.MarkOccurrencesPreferencePage

package org.epic.perleditor.preferences;

import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.epic.perleditor.PerlEditorPlugin;

/**
* This class is used to create a preference page for marking occurrences.
* Several buttons determine, if generally occurrences of a text will be marked,
* which types of a text should be marked and if the marks will be kept if the
* selection changed.
*
* @author Katrin Dust
*
*/
public class MarkOccurrencesPreferencePage extends FieldEditorPreferencePage
    implements IWorkbenchPreferencePage {

  /*
   * Boolean field to determine if occurrences should be highlighted
   */
  private BooleanFieldEditor markOcc;

  /*
   * Boolean field to determine if occurrences of variables will be marked
   */
  private BooleanFieldEditor variable;

  /*
   * Boolean field to determine if occurrences of comments will be marked
   */
  private BooleanFieldEditor comment;

  /*
   * Boolean field to determine if occurrences of numbers will be marked
   */
  private BooleanFieldEditor number;

  /*
   * Boolean field to determine if occurrences of literals will be marked
   */
  private BooleanFieldEditor literal;

    /*
     * Boolean field to determine if occurrences of subroutine/attribute names will be marked
     */
    private BooleanFieldEditor name;
   
  /*
   * Boolean field to determine if occurrences of operators will be marked
   */
  private BooleanFieldEditor operator;

  /*
   * Boolean field to determine if occurrences of keywords will be marked
   */
  private BooleanFieldEditor keyword;

  /*
   * Boolean field to determine if occurrences of pods will be marked
   */
  private BooleanFieldEditor pod;

  /*
   * Boolean field to determine if occurrences should be kept when selection
   * changed
   */
  private BooleanFieldEditor keepMarks;

  /**
   * Constructor sets layout (GRID) and the preference store
   *
   */
  public MarkOccurrencesPreferencePage() {
    super(GRID);
    setPreferenceStore(PerlEditorPlugin.getDefault().getPreferenceStore());
  }

  /**
   * The method creates and adds the fields
   */
  protected void createFieldEditors() {
    // create fields
    this.markOcc = new BooleanFieldEditor(
        MarkOccurrencesPreferences.MARK_OCCURRENCES,
        "Mark occurrences of the selected element in the current file",
        getFieldEditorParent());
    this.variable = new BooleanFieldEditor(
        MarkOccurrencesPreferences.VARIABLE, "Variable",
        getFieldEditorParent());
    this.comment = new BooleanFieldEditor(
        MarkOccurrencesPreferences.COMMENT, "Comment",
        getFieldEditorParent());
    this.number = new BooleanFieldEditor(MarkOccurrencesPreferences.NUMBER,
        "Number", getFieldEditorParent());
    this.literal = new BooleanFieldEditor(
        MarkOccurrencesPreferences.LITERAL, "Literal",
        getFieldEditorParent());
        this.name = new BooleanFieldEditor(
            MarkOccurrencesPreferences.NAME, "Name (subroutines/attributes)",
            getFieldEditorParent());
    this.operator = new BooleanFieldEditor(
        MarkOccurrencesPreferences.OPERATOR, "Operator",
        getFieldEditorParent());
    this.keyword = new BooleanFieldEditor(
        MarkOccurrencesPreferences.KEYWORD, "Keyword",
        getFieldEditorParent());
    this.pod = new BooleanFieldEditor(MarkOccurrencesPreferences.POD,
        "POD", getFieldEditorParent());
    this.keepMarks = new BooleanFieldEditor(
        MarkOccurrencesPreferences.KEEP_MARKS,
        "Keep marks when the selection changes",
        getFieldEditorParent());
    addField(markOcc);
    addField(variable);
    addField(comment);
    addField(literal);
        addField(name);
    addField(number);
    addField(operator);
    addField(keyword);
    addField(pod);
    addField(keepMarks);
    boolean defaultMarkOcc = PerlEditorPlugin.getDefault()
        .getPreferenceStore().getBoolean(
            MarkOccurrencesPreferences.MARK_OCCURRENCES);
    this.setButtonsEnabled(defaultMarkOcc);

  }

  /**
   * Calls the super method to restore default values. Sets buttons enabled or
   * disabled depending on the default value of the mark occurrence button.
   */
  protected void performDefaults() {
    super.performDefaults();
    boolean defaultMarkOcc = PerlEditorPlugin.getDefault()
        .getPreferenceStore().getBoolean(
            MarkOccurrencesPreferences.MARK_OCCURRENCES);
    this.setButtonsEnabled(defaultMarkOcc);
  }

  /**
   * nothing to do
   */
  public void init(IWorkbench workbench) {
  }

  /**
   * If the property of the mark occurrence changed to false, the other
   * fields will be disabled (otherwise enabled).
   */
  public void propertyChange(PropertyChangeEvent event) {
    if (event.getSource() != this.markOcc) {
      return;
    }
    boolean isMarkOcc = new Boolean(
            event.getNewValue().toString()).booleanValue();
    setButtonsEnabled(isMarkOcc);

  }

  /**
   * Enables or disables buttons.
   *
   * @param enabled
   *        true to enable, false to disable buttons
   */
  private void setButtonsEnabled(boolean enabled) {
    variable.setEnabled(enabled, getFieldEditorParent());
    comment.setEnabled(enabled, getFieldEditorParent());
    number.setEnabled(enabled, getFieldEditorParent());
    literal.setEnabled(enabled, getFieldEditorParent());
        name.setEnabled(enabled, getFieldEditorParent());
    operator.setEnabled(enabled, getFieldEditorParent());
    keyword.setEnabled(enabled, getFieldEditorParent());
    pod.setEnabled(enabled, getFieldEditorParent());
    keepMarks.setEnabled(enabled, getFieldEditorParent());
  }
}
TOP

Related Classes of org.epic.perleditor.preferences.MarkOccurrencesPreferencePage

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.