Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/OverlayPage.java')
-rw-r--r--codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/OverlayPage.java334
1 files changed, 0 insertions, 334 deletions
diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/OverlayPage.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/OverlayPage.java
deleted file mode 100644
index ddcac1652fb..00000000000
--- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/OverlayPage.java
+++ /dev/null
@@ -1,334 +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 org.eclipse.cdt.codan.internal.ui.preferences;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.QualifiedName;
-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.custom.CTabFolder;
-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.swt.widgets.TabFolder;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.ui.part.PageBook;
-
-/**
- * @author Berthold Daum
- */
-public abstract class OverlayPage extends PropertyPage {
-
- /*** 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$
-
- // Additional buttons for property pages
- private Button useWorkspaceSettingsButton,
- useProjectSettingsButton,
- configureButton;
-
- // Overlay preference store for property pages
- private PropertyStore overlayStore;
-
- // The image descriptor of this pages title image
- private ImageDescriptor image;
-
- // Cache for page id
- private String pageId;
-
- // Container for subclass controls
- private Composite contents;
-
- /**
- * Constructor
- */
- public OverlayPage() {
- super();
- }
-
- /**
- * Constructor
- * @param title - title string
- */
- public OverlayPage(String title) {
- super();
- setTitle(title);
- }
-
- /**
- * Constructor
- * @param title - title string
- * @param image - title image
- */
- public OverlayPage(String title, ImageDescriptor image) {
- super();
- setTitle(title);
- setImageDescriptor(image);
- 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();
-
- /**
- * 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 need to implement createContents method. In case of property pages we insert two radio buttons
- * and a push button at the top of the page. Below this group we create a new composite for the contents
- * created by subclasses.
- *
- * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
- */
- protected Control createContents(Composite parent) {
- if (isPropertyPage())
- createSelectionGroup(parent);
- contents = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- contents.setLayout(layout);
- contents.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- return contents;
- }
-
- /**
- * 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$
- 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);
- setControlsEnabled();
- }
- });
- return button;
- }
-
- /**
- * In case of property pages we create a new PropertyStore as local overlay store.
- * After all controls 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 enablement of all subclass controls
- if (isPropertyPage())
- setControlsEnabled();
- }
-
- /*
- * Returns in case of property pages the overlay store - otherwise 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 controls of this page
- */
- private void setControlsEnabled() {
- boolean enabled = useProjectSettingsButton.getSelection();
- setControlsEnabled(enabled);
- }
-
- /**
- * Enables or disables the controls of this page
- * Subclasses may override.
- *
- * @param enabled - true if controls shall be enabled
- */
- protected void setControlsEnabled(boolean enabled) {
- setControlsEnabled(contents, enabled);
- }
-
- /**
- * Enables or disables a tree of controls starting at the specified root.
- * We spare tabbed notebooks and pagebooks to allow for user navigation.
- *
- * @param root - the root composite
- * @param enabled - true if controls shall be enabled
- */
- private void setControlsEnabled(Composite root, boolean enabled) {
- Control[] children = root.getChildren();
- for (int i = 0; i < children.length; i++) {
- Control child = children[i];
- if (!(child instanceof CTabFolder) && !(child instanceof TabFolder) && !(child instanceof PageBook))
- child.setEnabled(enabled);
- if (child instanceof Composite)
- setControlsEnabled((Composite) child, enabled);
- }
- }
-
- /**
- * We override the performOk method. In case of property pages
- * we 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 page controls.
- *
- * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
- */
- protected void performDefaults() {
- if (isPropertyPage()) {
- useWorkspaceSettingsButton.setSelection(true);
- useProjectSettingsButton.setSelection(false);
- configureButton.setEnabled(true);
- setControlsEnabled();
- }
- super.performDefaults();
- }
-
- /**
- * Creates a new preferences page and opens it
- */
- 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();
- }
- });
- }
-
-}

Back to the top