| //------------------------------------------------------------------------------ |
| // 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(); |
| } |
| |
| } |