misc changes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / overlaypages / FieldEditorOverlayPage.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/overlaypages/FieldEditorOverlayPage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/overlaypages/FieldEditorOverlayPage.java
deleted file mode 100644 (file)
index 54daa64..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003 Berthold Daum.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Berthold Daum
- *******************************************************************************/
-package net.sourceforge.phpeclipse.overlaypages;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.jface.preference.FieldEditor;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.IPreferenceNode;
-import org.eclipse.jface.preference.IPreferencePage;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceDialog;
-import org.eclipse.jface.preference.PreferenceManager;
-import org.eclipse.jface.preference.PreferenceNode;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.BusyIndicator;
-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.ui.IWorkbenchPropertyPage;
-/**
- * @author Berthold Daum
- */
-public abstract class FieldEditorOverlayPage extends FieldEditorPreferencePage
-    implements
-      IWorkbenchPropertyPage {
-  /**
-   * * Name of resource property for the selection of workbench or project
-   * settings **
-   */
-  public static final String USEPROJECTSETTINGS = "useProjectSettings"; //$NON-NLS-1$
-  private static final String FALSE = "false"; //$NON-NLS-1$
-  private static final String TRUE = "true"; //$NON-NLS-1$
-  private boolean fUseFileSettings = false;
-  // Stores all created field editors
-  private List editors = new ArrayList();
-  // Stores owning element of properties
-  private IAdaptable element;
-  // Additional buttons for property pages
-  private Button useWorkspaceSettingsButton, useProjectSettingsButton,
-      configureButton;
-  // Overlay preference store for property pages
-  private IPreferenceStore overlayStore;
-  // The image descriptor of this pages title image
-  private ImageDescriptor image;
-  // Cache for page id
-  private String pageId;
-  /**
-   * Constructor
-   * 
-   * @param style -
-   *            layout style
-   */
-  public FieldEditorOverlayPage(int style) {
-    super(style);
-  }
-  /**
-   * Constructor
-   * 
-   * @param style -
-   *            layout style
-   */
-  public FieldEditorOverlayPage(int style, boolean isFileSettings) {
-    super(style);
-    fUseFileSettings = isFileSettings;
-  }
-  /**
-   * Constructor
-   * 
-   * @param title -
-   *            title string
-   * @param style -
-   *            layout style
-   */
-  public FieldEditorOverlayPage(String title, int style) {
-    super(title, style);
-  }
-  public FieldEditorOverlayPage(String title, int style, boolean isFileSettings) {
-    super(title, style);
-    fUseFileSettings = isFileSettings;
-  }
-  /**
-   * Constructor
-   * 
-   * @param title -
-   *            title string
-   * @param image -
-   *            title image
-   * @param style -
-   *            layout style
-   */
-  public FieldEditorOverlayPage(String title, ImageDescriptor image, int style) {
-    super(title, image, style);
-    this.image = image;
-  }
-  /**
-   * Returns the id of the current preference page as defined in plugin.xml
-   * Subclasses must implement.
-   * 
-   * @return - the qualifier
-   */
-  protected abstract String getPageId();
-  /**
-   * Receives the object that owns the properties shown in this property page.
-   * 
-   * @see org.eclipse.ui.IWorkbenchPropertyPage#setElement(org.eclipse.core.runtime.IAdaptable)
-   */
-  public void setElement(IAdaptable element) {
-    this.element = element;
-  }
-  /**
-   * Delivers the object that owns the properties shown in this property page.
-   * 
-   * @see org.eclipse.ui.IWorkbenchPropertyPage#getElement()
-   */
-  public IAdaptable getElement() {
-    return element;
-  }
-  /**
-   * Returns true if this instance represents a property page
-   * 
-   * @return - true for property pages, false for preference pages
-   */
-  public boolean isPropertyPage() {
-    return getElement() != null;
-  }
-  /**
-   * We override the addField method. This allows us to store each field editor
-   * added by subclasses in a list for later processing.
-   * 
-   * @see org.eclipse.jface.preference.FieldEditorPreferencePage#addField(org.eclipse.jface.preference.FieldEditor)
-   */
-  protected void addField(FieldEditor editor) {
-    editors.add(editor);
-    super.addField(editor);
-  }
-  /**
-   * We override the createControl method. In case of property pages we create
-   * a new PropertyStore as local preference store. After all control have been
-   * create, we enable/disable these controls.
-   * 
-   * @see org.eclipse.jface.preference.PreferencePage#createControl()
-   */
-  public void createControl(Composite parent) {
-    // Special treatment for property pages
-    if (isPropertyPage()) {
-      // Cache the page id
-      pageId = getPageId();
-      // Create an overlay preference store and fill it with properties
-      overlayStore = new PropertyStore((IResource) getElement(), super
-          .getPreferenceStore(), pageId);
-      // Set overlay store as current preference store
-    }
-    super.createControl(parent);
-    // Update state of all subclass controls
-    if (isPropertyPage())
-      updateFieldEditors();
-  }
-  /**
-   * We override the createContents method. In case of property pages we insert
-   * two radio buttons at the top of the page.
-   * 
-   * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
-   */
-  protected Control createContents(Composite parent) {
-    if (isPropertyPage())
-      createSelectionGroup(parent);
-    return super.createContents(parent);
-  }
-  /**
-   * Creates and initializes a selection group with two choice buttons and one
-   * push button.
-   * 
-   * @param parent -
-   *            the parent composite
-   */
-  private void createSelectionGroup(Composite parent) {
-    Composite comp = new Composite(parent, SWT.NONE);
-    GridLayout layout = new GridLayout(2, false);
-    layout.marginHeight = 0;
-    layout.marginWidth = 0;
-    comp.setLayout(layout);
-    comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-    Composite radioGroup = new Composite(comp, SWT.NONE);
-    radioGroup.setLayout(new GridLayout());
-    radioGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-    useWorkspaceSettingsButton = createRadioButton(radioGroup, Messages
-        .getString("OverlayPage.Use_Workspace_Settings")); //$NON-NLS-1$
-    if (fUseFileSettings) {
-      useProjectSettingsButton = createRadioButton(radioGroup, Messages
-          .getString("OverlayPage.Use_File_Settings")); //$NON-NLS-1$
-    } else {
-      useProjectSettingsButton = createRadioButton(radioGroup, Messages
-          .getString("OverlayPage.Use_Project_Settings")); //$NON-NLS-1$
-    }
-    configureButton = new Button(comp, SWT.PUSH);
-    configureButton.setText(Messages
-        .getString("OverlayPage.Configure_Workspace_Settings")); //$NON-NLS-1$
-    configureButton.addSelectionListener(new SelectionAdapter() {
-      public void widgetSelected(SelectionEvent e) {
-        configureWorkspaceSettings();
-      }
-    });
-    // Set workspace/project radio buttons
-    try {
-      String use = ((IResource) getElement())
-          .getPersistentProperty(new QualifiedName(pageId, USEPROJECTSETTINGS));
-      if (TRUE.equals(use)) {
-        useProjectSettingsButton.setSelection(true);
-        configureButton.setEnabled(false);
-      } else
-        useWorkspaceSettingsButton.setSelection(true);
-    } catch (CoreException e) {
-      useWorkspaceSettingsButton.setSelection(true);
-    }
-  }
-  /**
-   * Convenience method creating a radio button
-   * 
-   * @param parent -
-   *            the parent composite
-   * @param label -
-   *            the button label
-   * @return - the new button
-   */
-  private Button createRadioButton(Composite parent, String label) {
-    final Button button = new Button(parent, SWT.RADIO);
-    button.setText(label);
-    button.addSelectionListener(new SelectionAdapter() {
-      public void widgetSelected(SelectionEvent e) {
-        configureButton.setEnabled(button == useWorkspaceSettingsButton);
-        updateFieldEditors();
-      }
-    });
-    return button;
-  }
-  /**
-   * Returns in case of property pages the overlay store, in case of preference
-   * pages the standard preference store
-   * 
-   * @see org.eclipse.jface.preference.PreferencePage#getPreferenceStore()
-   */
-  public IPreferenceStore getPreferenceStore() {
-    if (isPropertyPage())
-      return overlayStore;
-    return super.getPreferenceStore();
-  }
-  /*
-   * Enables or disables the field editors and buttons of this page
-   */
-  private void updateFieldEditors() {
-    // We iterate through all field editors
-    boolean enabled = useProjectSettingsButton.getSelection();
-    updateFieldEditors(enabled);
-  }
-  /**
-   * Enables or disables the field editors and buttons of this page Subclasses
-   * may override.
-   * 
-   * @param enabled -
-   *            true if enabled
-   */
-  protected void updateFieldEditors(boolean enabled) {
-    Composite parent = getFieldEditorParent();
-    Iterator it = editors.iterator();
-    while (it.hasNext()) {
-      FieldEditor editor = (FieldEditor) it.next();
-      editor.setEnabled(enabled, parent);
-    }
-  }
-  /**
-   * We override the performOk method. In case of property pages we copy the
-   * values in the overlay store into the property values of the selected
-   * project. We also save the state of the radio buttons.
-   * 
-   * @see org.eclipse.jface.preference.IPreferencePage#performOk()
-   */
-  public boolean performOk() {
-    boolean result = super.performOk();
-    if (result && isPropertyPage()) {
-      // Save state of radiobuttons in project properties
-      IResource resource = (IResource) getElement();
-      try {
-        String value = (useProjectSettingsButton.getSelection()) ? TRUE : FALSE;
-        resource.setPersistentProperty(new QualifiedName(pageId,
-            USEPROJECTSETTINGS), value);
-      } catch (CoreException e) {
-      }
-    }
-    return result;
-  }
-  /**
-   * We override the performDefaults method. In case of property pages we
-   * switch back to the workspace settings and disable the field editors.
-   * 
-   * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
-   */
-  protected void performDefaults() {
-    if (isPropertyPage()) {
-      useWorkspaceSettingsButton.setSelection(true);
-      useProjectSettingsButton.setSelection(false);
-      configureButton.setEnabled(true);
-      updateFieldEditors();
-    }
-    super.performDefaults();
-  }
-  /**
-   * Creates a new preferences page and opens it
-   * 
-   * @see com.bdaum.SpellChecker.preferences.SpellCheckerPreferencePage#configureWorkspaceSettings()
-   */
-  protected void configureWorkspaceSettings() {
-    try {
-      // create a new instance of the current class
-      IPreferencePage page = (IPreferencePage) this.getClass().newInstance();
-      page.setTitle(getTitle());
-      page.setImageDescriptor(image);
-      // and show it
-      showPreferencePage(pageId, page);
-    } catch (InstantiationException e) {
-      e.printStackTrace();
-    } catch (IllegalAccessException e) {
-      e.printStackTrace();
-    }
-  }
-  /**
-   * Show a single preference pages
-   * 
-   * @param id -
-   *            the preference page identification
-   * @param page -
-   *            the preference page
-   */
-  protected void showPreferencePage(String id, IPreferencePage page) {
-    final IPreferenceNode targetNode = new PreferenceNode(id, page);
-    PreferenceManager manager = new PreferenceManager();
-    manager.addToRoot(targetNode);
-    final PreferenceDialog dialog = new PreferenceDialog(getControl()
-        .getShell(), manager);
-    BusyIndicator.showWhile(getControl().getDisplay(), new Runnable() {
-      public void run() {
-        dialog.create();
-        dialog.setMessage(targetNode.getLabelText());
-        dialog.open();
-      }
-    });
-  }
-}