blob: 5dc0703fa5ec6581430e5c1701bc619e0a563fee [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2009 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.activities;
import java.util.Collections;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExecutableExtension;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.DeviceResourceException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.util.Util;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.IPreferenceConstants;
import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
import org.eclipse.ui.internal.OverlayIcon;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.activities.InternalActivityHelper;
import org.eclipse.ui.internal.activities.ws.ActivityEnabler;
import org.eclipse.ui.internal.activities.ws.ActivityMessages;
import org.eclipse.ui.plugin.AbstractUIPlugin;
/**
* Activities preference page that primarily shows categories and can optionally
* show an advanced dialog that allows fine-tune adjustmenet of activities. This
* page may be used by product developers to provide basic ability to tweak the
* enabled activity set. You may provide certain strings to this class via
* method #2 of {@link org.eclipse.core.runtime.IExecutableExtension}.
*
* @see #ACTIVITY_NAME
* @see #ALLOW_ADVANCED
* @see #CAPTION_MESSAGE
* @see #CATEGORY_NAME
* @see #ACTIVITY_PROMPT_BUTTON
* @see #ACTIVITY_PROMPT_BUTTON_TOOLTIP
*
* @since 3.1
*/
public final class ActivityCategoryPreferencePage extends PreferencePage implements
IWorkbenchPreferencePage, IExecutableExtension {
/**
* The name to use for the activities. Ie: "Capabilities".
*/
public static final String ACTIVITY_NAME = "activityName"; //$NON-NLS-1$
/**
* The parameter to use if you want the page to show the allow button. Must
* be true or false.
*/
public static final String ALLOW_ADVANCED = "allowAdvanced"; //$NON-NLS-1$
/**
* The string to use for the message at the top of the preference page.
*/
public static final String CAPTION_MESSAGE = "captionMessage"; //$NON-NLS-1$
/**
* The name to use for the activity categories. Ie: "Roles".
*/
public static final String CATEGORY_NAME = "categoryName"; //$NON-NLS-1$
/**
* The label to be used for the prompt button. Ie: "&Prompt when enabling capabilities".
*/
public static final String ACTIVITY_PROMPT_BUTTON = "activityPromptButton"; //$NON-NLS-1$
/**
* The tooltip to be used for the prompt button. Ie: "Prompt when a feature is first used that requires enablement of capabilities".
*/
public static final String ACTIVITY_PROMPT_BUTTON_TOOLTIP = "activityPromptButtonTooltip"; //$NON-NLS-1$
private class AdvancedDialog extends TrayDialog {
private static final String DIALOG_SETTINGS_SECTION = "ActivityCategoryPreferencePageAdvancedDialogSettings"; //$NON-NLS-1$
ActivityEnabler enabler;
/**
* @param parentShell
*/
protected AdvancedDialog(Shell parentShell) {
super(parentShell);
setShellStyle(getShellStyle() | SWT.SHEET);
}
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
String activityName = strings.getProperty(ACTIVITY_NAME, ActivityMessages.ActivityEnabler_activities);
activityName = Util.replaceAll(activityName, "&", ""); //strips possible mnemonic //$NON-NLS-1$ //$NON-NLS-2$
newShell.setText(NLS.bind(
ActivityMessages.ActivitiesPreferencePage_advancedDialogTitle,
activityName
));
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
enabler = new ActivityEnabler(workingCopy, strings);
Control enablerControl = enabler.createControl(composite);
enablerControl.setLayoutData(new GridData(GridData.FILL_BOTH));
return composite;
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
protected void okPressed() {
enabler.updateActivityStates();
super.okPressed();
}
/* (non-Javadoc)
* @see org.eclipse.jface.window.Dialog#getDialogBoundsSettings()
*
* @since 3.2
*/
protected IDialogSettings getDialogBoundsSettings() {
IDialogSettings settings = WorkbenchPlugin.getDefault().getDialogSettings();
IDialogSettings section = settings.getSection(DIALOG_SETTINGS_SECTION);
if (section == null) {
section = settings.addNewSection(DIALOG_SETTINGS_SECTION);
}
return section;
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#isResizable()
*/
protected boolean isResizable() {
return true;
}
}
private class CategoryLabelProvider extends LabelProvider implements
ITableLabelProvider, IActivityManagerListener {
private LocalResourceManager manager = new LocalResourceManager(
JFaceResources.getResources());
private ImageDescriptor lockDescriptor;
private boolean decorate;
/**
* @param decorate
*/
public CategoryLabelProvider(boolean decorate) {
this.decorate = decorate;
lockDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
PlatformUI.PLUGIN_ID, "icons/full/ovr16/lock_ovr.gif"); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
* int)
*/
public Image getColumnImage(Object element, int columnIndex) {
ICategory category = (ICategory) element;
ImageDescriptor descriptor = PlatformUI.getWorkbench()
.getActivitySupport().getImageDescriptor(category);
if (descriptor != null) {
try {
if (decorate) {
if (isLocked(category)) {
ImageData originalImageData = descriptor
.getImageData();
OverlayIcon overlay = new OverlayIcon(
descriptor, lockDescriptor, new Point(
originalImageData.width,
originalImageData.height));
return manager.createImage(overlay);
}
}
return manager.createImage(descriptor);
} catch (DeviceResourceException e) {
WorkbenchPlugin.log(e);
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
String name = null;
ICategory category = (ICategory) element;
try {
name = category.getName();
} catch (NotDefinedException e) {
name = category.getId();
}
if (decorate && isLocked(category)) {
name = NLS.bind(ActivityMessages.ActivitiesPreferencePage_lockedMessage, name);
}
return name;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
public String getColumnText(Object element, int columnIndex) {
return getText(element);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
public void dispose() {
super.dispose();
manager.dispose();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.activities.IActivityManagerListener#activityManagerChanged(org.eclipse.ui.activities.ActivityManagerEvent)
*/
public void activityManagerChanged(
ActivityManagerEvent activityManagerEvent) {
if (activityManagerEvent.haveEnabledActivityIdsChanged()) {
updateCategoryCheckState();
fireLabelProviderChanged(new LabelProviderChangedEvent(this));
}
}
}
private class CategoryContentProvider implements IStructuredContentProvider {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
public Object[] getElements(Object inputElement) {
// convert to category objects
return WorkbenchActivityHelper.resolveCategories(workingCopy,
(Set) inputElement);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
* java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
private class EmptyCategoryFilter extends ViewerFilter {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
* java.lang.Object, java.lang.Object)
*/
public boolean select(Viewer viewer, Object parentElement,
Object element) {
ICategory category = (ICategory) element;
if (InternalActivityHelper.getActivityIdsForCategory(workingCopy,
category).isEmpty()) {
return false;
}
return true;
}
}
protected IWorkbench workbench;
private CheckboxTableViewer categoryViewer;
private TableViewer dependantViewer;
private Text descriptionText;
private IMutableActivityManager workingCopy;
private Button activityPromptButton;
private boolean allowAdvanced = false;
private Button advancedButton;
private Properties strings = new Properties();
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
protected Control createContents(Composite parent) {
initializeDialogUnits(parent);
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
layout.marginHeight = layout.marginWidth = 0;
layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
composite.setLayout(layout);
Label label = new Label(composite, SWT.WRAP);
label
.setText(strings.getProperty(CAPTION_MESSAGE, ActivityMessages.ActivitiesPreferencePage_captionMessage));
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = 400;
data.horizontalSpan = 2;
label.setLayoutData(data);
label = new Label(composite, SWT.NONE); //spacer
data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
data.horizontalSpan = 2;
label.setLayoutData(data);
createPromptButton(composite);
createCategoryArea(composite);
createDetailsArea(composite);
createButtons(composite);
workbench.getHelpSystem().setHelp(parent,
IWorkbenchHelpContextIds.CAPABILITY_PREFERENCE_PAGE);
Dialog.applyDialogFont(composite);
return composite;
}
/**
* @param composite
*/
private void createPromptButton(Composite composite) {
activityPromptButton = new Button(composite, SWT.CHECK);
activityPromptButton.setText(strings.getProperty(ACTIVITY_PROMPT_BUTTON, ActivityMessages.activityPromptButton));
activityPromptButton.setToolTipText(strings.getProperty(ACTIVITY_PROMPT_BUTTON_TOOLTIP, ActivityMessages.activityPromptToolTip));
GridData data = new GridData();
data.horizontalSpan = 2;
activityPromptButton.setLayoutData(data);
activityPromptButton.setSelection(getPreferenceStore()
.getBoolean(
IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT));
}
private void createButtons(final Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(4, false);
layout.marginHeight = layout.marginWidth = 0;
layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
composite.setLayout(layout);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 2;
composite.setLayoutData(data);
Button enableAll = new Button(composite, SWT.PUSH);
enableAll.addSelectionListener(new SelectionAdapter() {
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
public void widgetSelected(SelectionEvent e) {
workingCopy.setEnabledActivityIds(workingCopy
.getDefinedActivityIds());
}
});
enableAll.setText(ActivityMessages.ActivityEnabler_selectAll);
setButtonLayoutData(enableAll);
Button disableAll = new Button(composite, SWT.PUSH);
disableAll.addSelectionListener(new SelectionAdapter() {
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
public void widgetSelected(SelectionEvent e) {
workingCopy.setEnabledActivityIds(Collections.EMPTY_SET);
}
});
disableAll.setText(ActivityMessages.ActivityEnabler_deselectAll);
setButtonLayoutData(disableAll);
if (allowAdvanced) {
Label spacer = new Label(composite, SWT.NONE);
data = new GridData(GridData.GRAB_HORIZONTAL);
spacer.setLayoutData(data);
advancedButton = new Button(composite, SWT.PUSH);
advancedButton.addSelectionListener(new SelectionAdapter() {
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
public void widgetSelected(SelectionEvent e) {
AdvancedDialog dialog = new AdvancedDialog(parent.getShell());
dialog.open(); // logic for updating the working copy is in the dialog class.
}
});
advancedButton.setText(ActivityMessages.ActivitiesPreferencePage_advancedButton);
setButtonLayoutData(advancedButton);
}
}
/**
* @param parent
*/
private void createDetailsArea(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = layout.marginWidth = 0;
layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
composite.setLayout(layout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
new Label(composite, SWT.NONE).setText(ActivityMessages.ActivityEnabler_description);
descriptionText = new Text(composite, SWT.WRAP | SWT.READ_ONLY | SWT.BORDER);
GridData data = new GridData(GridData.FILL_BOTH);
data.heightHint = 100;
data.widthHint = 200;
descriptionText.setLayoutData(data);
new Label(composite, SWT.NONE).setText(ActivityMessages.ActivitiesPreferencePage_requirements);
dependantViewer = new TableViewer(composite, SWT.BORDER);
dependantViewer.getControl().setLayoutData(
new GridData(GridData.FILL_BOTH));
dependantViewer.setContentProvider(new CategoryContentProvider());
dependantViewer.addFilter(new EmptyCategoryFilter());
dependantViewer.setLabelProvider(new CategoryLabelProvider(false));
dependantViewer.setInput(Collections.EMPTY_SET);
}
/**
* @param parent
*/
private void createCategoryArea(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.marginHeight = layout.marginWidth = 0;
layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
composite.setLayout(layout);
GridData data = new GridData(GridData.FILL_BOTH);
data.widthHint = 200;
composite.setLayoutData(data);
Label label = new Label(composite, SWT.NONE);
label.setText(strings.getProperty(CATEGORY_NAME, ActivityMessages.ActivityEnabler_categories) + ':');
Table table = new Table(composite, SWT.CHECK | SWT.BORDER | SWT.SINGLE);
table.addSelectionListener(new SelectionAdapter() {
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
public void widgetSelected(SelectionEvent e) {
if (e.detail == SWT.CHECK) {
TableItem tableItem = (TableItem) e.item;
ICategory category = (ICategory) tableItem.getData();
if (isLocked(category)) {
tableItem.setChecked(true);
e.doit = false; // veto the check
return;
}
Set activitySet = WorkbenchActivityHelper
.getActivityIdsForCategory(category);
if (tableItem.getChecked()) {
activitySet.addAll(workingCopy.getEnabledActivityIds());
} else {
HashSet newSet = new HashSet(workingCopy
.getEnabledActivityIds());
newSet.removeAll(activitySet);
activitySet = newSet;
}
workingCopy.setEnabledActivityIds(activitySet);
updateCategoryCheckState(); // even though we're reacting to
// a check change we may need to
// refresh a greying change.
// Just process the whole thing.
}
}
});
categoryViewer = new CheckboxTableViewer(table);
categoryViewer.getControl().setLayoutData(
new GridData(GridData.FILL_BOTH));
categoryViewer.setContentProvider(new CategoryContentProvider());
CategoryLabelProvider categoryLabelProvider = new CategoryLabelProvider(
true);
workingCopy.addActivityManagerListener(categoryLabelProvider);
categoryViewer.setLabelProvider(categoryLabelProvider);
categoryViewer.setComparator(new ViewerComparator());
categoryViewer.addFilter(new EmptyCategoryFilter());
categoryViewer
.addSelectionChangedListener(new ISelectionChangedListener() {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
public void selectionChanged(SelectionChangedEvent event) {
ICategory element = (ICategory) ((IStructuredSelection) event
.getSelection()).getFirstElement();
setDetails(element);
}
});
categoryViewer.setInput(workingCopy.getDefinedCategoryIds());
updateCategoryCheckState();
}
/**
* Updates the check and grey state of the categories in the category viewer.
*
* @since 3.2
*/
private void updateCategoryCheckState() {
ICategory[] enabledCategories = getEnabledCategories();
ICategory[] partiallyEnabledCategories = getPartialCategories();
Object[] allChecked = new Object[enabledCategories.length
+ partiallyEnabledCategories.length];
System.arraycopy(enabledCategories, 0, allChecked, 0, enabledCategories.length);
System.arraycopy(partiallyEnabledCategories, 0, allChecked, enabledCategories.length, partiallyEnabledCategories.length);
categoryViewer.setCheckedElements(allChecked);
categoryViewer.setGrayedElements(partiallyEnabledCategories);
}
private ICategory[] getPartialCategories() {
return WorkbenchActivityHelper.resolveCategories(workingCopy,
InternalActivityHelper
.getPartiallyEnabledCategories(workingCopy));
}
private ICategory[] getEnabledCategories() {
return WorkbenchActivityHelper.resolveCategories(workingCopy,
InternalActivityHelper.getEnabledCategories(workingCopy));
}
protected void setDetails(ICategory category) {
if (category == null) {
clearDetails();
return;
}
Set categories = null;
if (WorkbenchActivityHelper.isEnabled(workingCopy, category.getId())) {
categories = WorkbenchActivityHelper.getDisabledCategories(
workingCopy, category.getId());
} else {
categories = WorkbenchActivityHelper.getEnabledCategories(
workingCopy, category.getId());
}
categories = WorkbenchActivityHelper.getContainedCategories(
workingCopy, category.getId());
dependantViewer.setInput(categories);
try {
descriptionText.setText(category.getDescription());
} catch (NotDefinedException e) {
descriptionText.setText(""); //$NON-NLS-1$
}
}
/**
* Clear the details area.
*/
protected void clearDetails() {
dependantViewer.setInput(Collections.EMPTY_SET);
descriptionText.setText(""); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
this.workbench = workbench;
workingCopy = workbench.getActivitySupport().createWorkingCopy();
setPreferenceStore(WorkbenchPlugin.getDefault().getPreferenceStore());
}
/**
* Return whether the category is locked.
*
* @param category
* the category to test
* @return whether the category is locked
*/
protected boolean isLocked(ICategory category) {
return !WorkbenchActivityHelper.getDisabledCategories(workingCopy,
category.getId()).isEmpty();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performOk()
*/
public boolean performOk() {
workbench.getActivitySupport().setEnabledActivityIds(
workingCopy.getEnabledActivityIds());
getPreferenceStore().setValue(
IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT,
activityPromptButton.getSelection());
return true;
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
protected void performDefaults() {
super.performDefaults();
activityPromptButton.setSelection(getPreferenceStore()
.getDefaultBoolean(
IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT));
Set defaultEnabled = new HashSet();
Set activityIds = workingCopy.getDefinedActivityIds();
for (Iterator i = activityIds.iterator(); i.hasNext();) {
String activityId = (String) i.next();
IActivity activity = workingCopy.getActivity(activityId);
try {
if (activity.isDefaultEnabled()) {
defaultEnabled.add(activityId);
}
} catch (NotDefinedException e) {
// this can't happen - we're iterating over defined activities.
}
}
workingCopy.setEnabledActivityIds(defaultEnabled);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement,
* java.lang.String, java.lang.Object)
*/
public void setInitializationData(IConfigurationElement config,
String propertyName, Object data) {
if (data instanceof Hashtable) {
Hashtable table = (Hashtable)data;
allowAdvanced = Boolean.valueOf((String) table.remove(ALLOW_ADVANCED)).booleanValue();
strings.putAll(table);
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.DialogPage#dispose()
*/
public void dispose() {
if (workingCopy != null) {
workingCopy.removeActivityManagerListener((CategoryLabelProvider)categoryViewer.getLabelProvider());
}
super.dispose();
}
}