blob: 73444b90e7b1426f1830077c761669a87dbad126 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.edit.ui;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.epf.library.edit.LibraryEditResources;
import org.eclipse.epf.library.edit.TngAdapterFactory;
import org.eclipse.epf.library.edit.command.IUserInteractionHandler;
import org.eclipse.epf.library.edit.util.AdapterFactoryItemLabelProvider;
import org.eclipse.epf.library.edit.util.ExtensionManager;
import org.eclipse.epf.uma.Role;
import org.eclipse.epf.uma.TeamProfile;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Shell;
/**
* UI Dialog class which will ask user to assign a role to team automatically.
*
* @author Shilpa Toraskar
* @since 1.0
*/
public class TeamSelection {
/**
* It shows dialog box all teams. Returns team user selected
*
* @param element
* @return
*/
public static TeamProfile getSelectedTeam(List teamList, Role role, Shell shell) {
// ILabelProvider labelProvider = new AdapterFactoryLabelProvider(
// TngAdapterFactory.INSTANCE.getOBS_ComposedAdapterFactory()) {
// public String getText(Object obj) {
// if (obj instanceof TeamProfile) {
// return ((TeamProfile) obj).getName();
// }
// return ""; //$NON-NLS-1$
// }
// };
// if(shell == null) {
// try {
// shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); //MsgBox.getDefaultShell();
// }
// catch(Exception e) {
//
// }
// }
// ElementListSelectionDialog dlg = new ElementListSelectionDialog(shell, labelProvider);
//
// dlg.setBlockOnOpen(true);
// dlg.setElements(teamList.toArray());
// dlg.setMultipleSelection(false);
// dlg
// .setMessage(NLS.bind(LibraryEditResources.selectTeamsDialog_text, (new Object[] { role.getName() })));
// dlg.setTitle(LibraryEditResources.selectTeamsDialog_title); //$NON-NLS-1$
// dlg.setFilter(null);
// dlg.open();
// Object obj = dlg.getFirstResult();
// // dispose
// labelProvider.dispose();
// return (TeamProfile) obj;
final IUserInteractionHandler uiHandler = ExtensionManager
.getDefaultUserInteractionHandler();
if (uiHandler != null) {
final IItemLabelProvider labelProvider = new AdapterFactoryItemLabelProvider(
TngAdapterFactory.INSTANCE.getOBS_ComposedAdapterFactory());
final String title = LibraryEditResources.selectTeamsDialog_title;
final String msg = NLS.bind(LibraryEditResources.selectTeamsDialog_text, (new Object[] { role.getName() }));
final List finalSelected = new ArrayList();
final List finalTeams = new ArrayList();
finalTeams.addAll(teamList);
UserInteractionHelper.getUIHelper().runSafely(new Runnable() {
public void run() {
List selected = uiHandler.select(finalTeams, labelProvider, false,
finalTeams, title, msg);
if (selected != null)
finalSelected.addAll(selected);
}
}, true);
if (finalSelected == null) {
throw new OperationCanceledException();
}
if(finalSelected.isEmpty()) {
return null;
}
return (TeamProfile) finalSelected.get(0);
}
// no user interaction handler available
// return null
return null;
}
}