blob: 400525187854aeb17a5f71e7f7d941ac68382bbd [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.process;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.ITableItemLabelProvider;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.epf.library.edit.IStatefulItemProvider;
import org.eclipse.epf.library.edit.util.TngUtil;
import org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory;
/**
* @author Phong Nguyen Le
* @since 1.0
*/
public class ItemProviderAdapterFactory extends UmaItemProviderAdapterFactory
implements IColumnAware {
private Map columnIndexToNameMap;
/**
* References to stateful adapters created by this adapter factory
*/
private Set disposableAdapters = new HashSet();
/**
*
*/
public ItemProviderAdapterFactory() {
super();
supportedTypes.add(ITableItemLabelProvider.class);
// createdAdapters = new HashSet();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.BreakdownAdapterFactory#createActivityAdapter()
*/
public Adapter createActivityAdapter() {
return new ActivityItemProvider(this);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.BreakdownAdapterFactory#createIterationAdapter()
*/
public Adapter createIterationAdapter() {
return createActivityAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.BreakdownAdapterFactory#createPhaseAdapter()
*/
public Adapter createPhaseAdapter() {
return createActivityAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.BreakdownAdapterFactory#createBreakdownElementAdapter()
*/
public Adapter createBreakdownElementAdapter() {
return new BreakdownElementItemProvider(this,
(ItemProviderAdapter) super.createBreakdownElementAdapter());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.DescriptorsAdapterFactory#createDescriptorAdapter()
*/
public Adapter createDescriptorAdapter() {
return new DescriptorItemProvider(this, (ItemProviderAdapter) TngUtil.umaItemProviderAdapterFactory
.createDescriptorAdapter());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.DescriptorsAdapterFactory#createRoleDescriptorAdapter()
*/
public Adapter createRoleDescriptorAdapter() {
return new RoleDescriptorItemProvider(this, (ItemProviderAdapter) TngUtil.umaItemProviderAdapterFactory
.createRoleDescriptorAdapter());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.DescriptorsAdapterFactory#createTaskDescriptorAdapter()
*/
public Adapter createTaskDescriptorAdapter() {
return new TaskDescriptorItemProvider(this, (ItemProviderAdapter) TngUtil.umaItemProviderAdapterFactory
.createTaskDescriptorAdapter());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.DescriptorsAdapterFactory#createWorkProductDescriptorAdapter()
*/
public Adapter createWorkProductDescriptorAdapter() {
return new WorkProductDescriptorItemProvider(this,
(ItemProviderAdapter) TngUtil.umaItemProviderAdapterFactory
.createWorkProductDescriptorAdapter());
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.IColumnAware#setColumnIndexToNameMap(java.util.Map)
*/
public void setColumnIndexToNameMap(Map map) {
if (map != null) {
columnIndexToNameMap = map;
}
}
public Object adapt(Object object, Object type) {
Object adapter = super.adapt(object, type);
if (adapter instanceof IColumnAware) {
((IColumnAware) adapter)
.setColumnIndexToNameMap(columnIndexToNameMap);
}
return adapter;
}
public Adapter adapt(Notifier notifier, Object type) {
Adapter adapter = super.adapt(notifier, type);
if (adapter instanceof IColumnAware) {
((IColumnAware) adapter)
.setColumnIndexToNameMap(columnIndexToNameMap);
}
if (adapter instanceof IStatefulItemProvider
&& notifier instanceof EObject
&& ((EObject) notifier).eContainer() != null) {
disposableAdapters.add(adapter);
}
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.ProcesstypesAdapterFactory#createProcessAdapter()
*/
// public Adapter createProcessAdapter() {
// return new ProcessItemProvider(this);
// }
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.ProcesstypesItemProviderAdapterFactory#createDeliveryProcessAdapter()
*/
// public Adapter createDeliveryProcessAdapter() {
// return createProcessAdapter();
// }
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.ProcesstypesItemProviderAdapterFactory#createCapabilityPatternAdapter()
*/
// public Adapter createCapabilityPatternAdapter() {
// return createProcessAdapter();
// }
public Adapter createProcessComponentAdapter() {
if (processComponentItemProvider == null) {
processComponentItemProvider = new ProcessComponentItemProvider(
this);
}
return processComponentItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createProcessPackageAdapter()
*/
public Adapter createProcessPackageAdapter() {
if (processPackageItemProvider == null) {
processPackageItemProvider = new ProcessPackageItemProvider(this);
}
return processPackageItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createCompositeRoleAdapter()
*/
public Adapter createCompositeRoleAdapter() {
return new CompositeRoleItemProvider(this, (ItemProviderAdapter) TngUtil.umaItemProviderAdapterFactory
.createCompositeRoleAdapter());
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createRoleAdapter()
*/
public Adapter createRoleAdapter() {
if (roleItemProvider == null) {
roleItemProvider = new RoleItemProvider(this);
}
return roleItemProvider;
}
public Adapter createWorkOrderAdapter() {
if (workOrderItemProvider == null) {
workOrderItemProvider = new WorkOrderItemProvider(this);
}
return workOrderItemProvider;
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.IColumnAware#getColumnIndexToNameMap()
*/
public Map getColumnIndexToNameMap() {
return columnIndexToNameMap;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#dispose()
*/
public void dispose() {
if (!disposableAdapters.isEmpty()) {
for (Iterator iter = disposableAdapters.iterator(); iter.hasNext();) {
IDisposable adapter = (IDisposable) iter.next();
adapter.dispose();
}
disposableAdapters.clear();
}
super.dispose();
}
}