blob: d162cb4141c5224a3848f194e78083ad2093afed [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.ui.dialogs.IWorkingSetEditWizard;
import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
/**
* A working set manager stores working sets and provides property
* change notification when a working set is added or removed.
* <p>
* The workbench working set manager can be accessed using
* <code>IWorkbench#getWorkingSetManager()</code>
* </p>
* <p>
* This interface is not intended to be implemented by clients.
* </p>
*
* @see IWorkingSet
* @since 2.0 initial version
* @since 3.0 added createWorkingSet(IMemento)
*/
public interface IWorkingSetManager {
/**
* Change event id when a working set is added
* newValue of the PropertyChangeEvent will be the added working set.
* oldValue will be null.
*
* @see IPropertyChangeListener
*/
public static final String CHANGE_WORKING_SET_ADD = "workingSetAdd"; //$NON-NLS-1$
/**
* Change event id when a working set is removed
* newValue of the PropertyChangeEvent will be null.
* oldValue will be the removed working set.
*
* @see IPropertyChangeListener
*/
public static final String CHANGE_WORKING_SET_REMOVE = "workingSetRemove"; //$NON-NLS-1$
/**
* Change event id when the working set contents changed
* newValue of the PropertyChangeEvent will be the changed working set.
* oldValue will be null.
*
* @see IPropertyChangeListener
*/
public static final String CHANGE_WORKING_SET_CONTENT_CHANGE = "workingSetContentChange"; //$NON-NLS-1$
/**
* Change event id when the working set name changed.
* newValue of the PropertyChangeEvent will be the changed working set.
* oldValue will be null.
*
* @see IPropertyChangeListener
*/
public static final String CHANGE_WORKING_SET_NAME_CHANGE = "workingSetNameChange"; //$NON-NLS-1$
/**
* Adds a property change listener.
*
* @param listener the property change listener to add
*/
public void addPropertyChangeListener(IPropertyChangeListener listener);
/**
* Adds a working set to the top of the list of most recently used
* working sets, making it the most recently used working set.
* The last (oldest) item will be deleted if the list exceeds the
* size limit.
*
* @param workingSet the working set to add to the list of most
* recently used working sets.
*/
public void addRecentWorkingSet(IWorkingSet workingSet);
/**
* Adds a working set to the receiver. The working set must
* not exist yet.
*
* @param workingSet the working set to add
*/
public void addWorkingSet(IWorkingSet workingSet);
/**
* Creates a new working set.
* The working set is not added to the working set manager.
*
* @param name the name of the new working set. Should not have
* leading or trailing whitespace.
* @param elements the working set contents
* @return a new working set with the specified name and content
*/
public IWorkingSet createWorkingSet(String name, IAdaptable[] elements);
/**
* Re-creates and returns a working set from the state captured within the
* given memento.
*
* @param memento a memento containing the state for the working set
* @return the restored working set, or <code>null</code> if it could not be created
*
* @since 3.0
*/
public IWorkingSet createWorkingSet(IMemento memento);
/**
* Creates a working set edit wizard for the specified working set.
* The working set will already be set in the wizard.
* The caller is responsible for creating and opening a wizard dialog.
*
* Example:
* <code>
* IWorkingSetEditWizard wizard = workingSetManager.createWorkingSetEditWizard(workingSet);
* WizardDialog dialog = new WizardDialog(shell, wizard);
*
* dialog.create();
* if (dialog.open() == Window.OK) {
* workingSet = wizard.getSelection();
* }
* </code>
*
* @param workingSet working set to create a working set edit wizard
* for.
* @return a working set edit wizard to edit the specified working set.
* If the specific edit wizard for the working set could not be loaded
* a default IResource based wizard will be returned.
* If the default edit wizard can not be loaded null is returned.
* @since 2.1
*/
public IWorkingSetEditWizard createWorkingSetEditWizard(IWorkingSet workingSet);
/**
* @deprecated use createWorkingSetSelectionDialog(parent, true) instead
*/
public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(Shell parent);
/**
* Creates a working set selection dialog that lists all working
* sets and allows the user to add, remove and edit working sets.
* The caller is responsible for opening the dialog with
* <code>IWorkingSetSelectionDialog#open</code>, and subsequently
* extracting the selected working sets using
* <code>IWorkingSetSelectionDialog#getSelection</code>.
*
* @param parentShell the parent shell of the working set selection dialog
* @param multi true=more than one working set can be chosen
* in the dialog. false=only one working set can be chosen. Multiple
* working sets can still be selected and removed from the list but
* the dialog can only be closed when a single working set is selected.
* @return a working set selection dialog
*/
public IWorkingSetSelectionDialog createWorkingSetSelectionDialog(Shell parentShell, boolean multi);
/**
* Returns the list of most recently used working sets.
* The most recently used working set appears first in the list.
*
* @return the list of most recently used working sets
*/
public IWorkingSet[] getRecentWorkingSets();
/**
* Returns the working set with the specified name.
* Returns null if there is no working set with that name.
*
* @param name the name of the working set to return
* @return the working set with the specified name.
*/
public IWorkingSet getWorkingSet(String name);
/**
* Returns an array of all working sets stored in the receiver.
*
* @return the working sets stored in the receiver
*/
public IWorkingSet[] getWorkingSets();
/**
* Removes the property change listener.
*
* @param listener the property change listener to remove
*/
public void removePropertyChangeListener(IPropertyChangeListener listener);
/**
* Removes the working set
*
* @param workingSet the working set to remove
*/
public void removeWorkingSet(IWorkingSet workingSet);
}