| //------------------------------------------------------------------------------ |
| // 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.Collection; |
| import java.util.Collections; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.eclipse.emf.common.notify.AdapterFactory; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.emf.edit.command.CommandParameter; |
| import org.eclipse.emf.edit.provider.DelegatingWrapperItemProvider; |
| import org.eclipse.emf.edit.provider.IItemLabelProvider; |
| import org.eclipse.emf.edit.provider.ITableItemLabelProvider; |
| import org.eclipse.emf.edit.provider.ITreeItemContentProvider; |
| import org.eclipse.emf.edit.provider.IWrapperItemProvider; |
| import org.eclipse.epf.common.utils.StrUtil; |
| import org.eclipse.epf.library.edit.command.IActionManager; |
| import org.eclipse.epf.library.edit.command.IResourceAwareCommand; |
| import org.eclipse.epf.library.edit.util.PredecessorList; |
| import org.eclipse.epf.library.edit.util.TngUtil; |
| import org.eclipse.epf.uma.DescribableElement; |
| import org.eclipse.epf.uma.Process; |
| |
| |
| /** |
| * Wrapper item provider for DescribleElement |
| * |
| * @author Phong Nguyen Le |
| * @since 1.0 |
| */ |
| public class DescribableElementWrapperItemProvider extends |
| DelegatingWrapperItemProvider implements IBSItemProvider, |
| ITableItemLabelProvider { |
| |
| private int id; |
| |
| private Object topItem; |
| |
| protected boolean readOnly = true; |
| |
| protected boolean isInherited = false; |
| |
| protected boolean contributed = false; |
| |
| protected boolean isRollupChild = false; |
| |
| /** |
| * @param value |
| * @param owner |
| * @param adapterFactory |
| */ |
| public DescribableElementWrapperItemProvider(DescribableElement value, |
| Object owner, AdapterFactory adapterFactory) { |
| this(value, owner, null, CommandParameter.NO_INDEX, adapterFactory); |
| } |
| |
| /** |
| * @param value |
| * @param owner |
| * @param feature |
| * @param index |
| * @param adapterFactory |
| */ |
| public DescribableElementWrapperItemProvider(DescribableElement value, |
| Object owner, EStructuralFeature feature, int index, |
| AdapterFactory adapterFactory) { |
| super(value, owner, feature, index, adapterFactory); |
| } |
| |
| protected DescribableElementWrapperItemProvider(Object value, |
| Object owner, EStructuralFeature feature, int index, |
| AdapterFactory adapterFactory) { |
| super(value, owner, feature, index, adapterFactory); |
| } |
| |
| /** |
| * Checks if this wrapper is read-only |
| */ |
| public boolean isReadOnly() { |
| return readOnly; |
| } |
| |
| /** |
| * @param readOnly |
| * The readOnly to set. |
| */ |
| public void setReadOnly(boolean readOnly) { |
| this.readOnly = readOnly; |
| } |
| |
| /** |
| * @return the contributed |
| */ |
| public boolean isContributed() { |
| return contributed; |
| } |
| |
| public boolean isInherited() { |
| return isInherited; |
| } |
| |
| public boolean isRollupChild() { |
| return isRollupChild; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getId() |
| */ |
| public int getId() { |
| return id; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#setId(int) |
| */ |
| public void setId(int id) { |
| this.id = id; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#setParent(java.lang.Object) |
| */ |
| public void setParent(Object obj) { |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getTopItem() |
| */ |
| public Object getTopItem() { |
| Object parent = getParent(null); |
| if (topItem == null && parent != null) { |
| IBSItemProvider adapter = (IBSItemProvider) getRootAdapterFactory() |
| .adapt(parent, ITreeItemContentProvider.class); |
| if (adapter != null) { |
| Object top = adapter.getTopItem(); |
| if (top == null && parent instanceof Process |
| && ((Process) parent).getSuperActivities() == null) { |
| top = parent; |
| adapter.setTopItem(top); |
| } |
| return top; |
| } |
| } |
| return topItem; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#setTopItem(java.lang.Object) |
| */ |
| public void setTopItem(Object top) { |
| topItem = top; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#isRolledUp() |
| */ |
| public boolean isRolledUp() { |
| return false; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#setRolledUp(boolean) |
| */ |
| public void setRolledUp(boolean b) { |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#isFirstElement(java.lang.Object) |
| */ |
| public boolean isFirstElement(Object obj) { |
| return false; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#isLastElement(java.lang.Object) |
| */ |
| public boolean isLastElement(Object obj) { |
| return false; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getFilteredBreakdownElements(java.lang.Object, |
| * java.lang.Object) |
| */ |
| public List getFilteredBreakdownElements(Object activityObj, Object obj) { |
| return null; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#moveUp(java.lang.Object, |
| * com.ibm.library.edit.command.IActionManager) |
| */ |
| public void moveUp(Object obj, IActionManager actionMgr) { |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#moveDown(java.lang.Object, |
| * com.ibm.library.edit.command.IActionManager) |
| */ |
| public void moveDown(Object obj, IActionManager actionMgr) { |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getEClasses() |
| */ |
| public Collection getEClasses() { |
| return null; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getAttribute(java.lang.Object, |
| * java.lang.String) |
| */ |
| public String getAttribute(Object object, String property) { |
| DescribableElement e = (DescribableElement) TngUtil.unwrap(object); |
| if (property == IBSItemProvider.COL_NAME) { |
| return e.getName(); |
| } else if (property == IBSItemProvider.COL_ID) { |
| return String.valueOf(id); |
| } else if (property == IBSItemProvider.COL_PRESENTATION_NAME) { |
| String name = e.getPresentationName(); |
| if (StrUtil.isBlank(name)) { |
| name = e.getName(); |
| } |
| return name; |
| } |
| return ""; //$NON-NLS-1$ |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#setAttribute(java.lang.Object, |
| * java.lang.String, java.lang.String) |
| */ |
| public void setAttribute(Object object, String property, String textValue) { |
| |
| } |
| |
| // /* (non-Javadoc) |
| // * @see |
| // com.ibm.library.edit.process.IColumnAware#setColumnIndexToNameMap(java.util.Map) |
| // */ |
| // public void setColumnIndexToNameMap(Map map) { |
| // if (map != null) |
| // { |
| // columnIndexToNameMap = map; |
| // columnIndexToNameMapChanged = true; |
| // } |
| // } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getPredecessors() |
| */ |
| public PredecessorList getPredecessors() { |
| return null; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#isExpanded() |
| */ |
| public Boolean isExpanded() { |
| return null; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#setExpanded(java.lang.Boolean) |
| */ |
| public void setExpanded(Boolean b) { |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.emf.edit.provider.DelegatingWrapperItemProvider#createWrapper(java.lang.Object, |
| * java.lang.Object, org.eclipse.emf.common.notify.AdapterFactory) |
| */ |
| protected IWrapperItemProvider createWrapper(Object value, Object owner, |
| AdapterFactory adapterFactory) { |
| IWrapperItemProvider wip = doCreateWrapper(value, owner, adapterFactory); |
| if(wip instanceof DescribableElementWrapperItemProvider) { |
| DescribableElementWrapperItemProvider wrapper = (DescribableElementWrapperItemProvider) wip; |
| if (value instanceof DelegatingWrapperItemProvider) { |
| wrapper.feature = ((DelegatingWrapperItemProvider) value) |
| .getFeature(); |
| } |
| wrapper.setReadOnly(readOnly); |
| wrapper.isRollupChild = isRollupChild; |
| wrapper.isInherited = isInherited; |
| wrapper.contributed = isContributed(); |
| } |
| return wip; |
| } |
| |
| protected IWrapperItemProvider doCreateWrapper(Object value, Object owner, |
| AdapterFactory adapterFactory) { |
| Object e = TngUtil.unwrap(value); |
| if (e instanceof DescribableElement) { |
| DescribableElementWrapperItemProvider wrapper = new DescribableElementWrapperItemProvider( |
| (DescribableElement) e, owner, adapterFactory); |
| return wrapper; |
| } |
| return super.createWrapper(value, owner, adapterFactory); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.emf.edit.provider.ITableItemLabelProvider#getColumnImage(java.lang.Object, |
| * int) |
| */ |
| public Object getColumnImage(Object object, int columnIndex) { |
| if (delegateItemProvider instanceof ITableItemLabelProvider) { |
| return ((ITableItemLabelProvider) delegateItemProvider) |
| .getColumnImage(object, columnIndex); |
| } |
| if (columnIndex == 0 |
| && delegateItemProvider instanceof IItemLabelProvider) { |
| return ((IItemLabelProvider) delegateItemProvider).getImage(object); |
| } |
| |
| return null; |
| } |
| |
| protected String getColumnName(int columnIndex) { |
| AdapterFactory rootAdapterFactory = getRootAdapterFactory(); |
| if (rootAdapterFactory instanceof IColumnAware) { |
| Map columnIndexToNameMap = ((IColumnAware) rootAdapterFactory) |
| .getColumnIndexToNameMap(); |
| if (columnIndexToNameMap != null) { |
| return (String) columnIndexToNameMap.get(new Integer( |
| columnIndex)); |
| } |
| } |
| return null; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.emf.edit.provider.ITableItemLabelProvider#getColumnText(java.lang.Object, |
| * int) |
| */ |
| public String getColumnText(Object object, int columnIndex) { |
| // String colName = (String) columnIndexToNameMap.get(new |
| // Integer(columnIndex)); |
| String colName = getColumnName(columnIndex); |
| return getAttribute(object, colName); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#getListeners() |
| */ |
| public List getListeners() { |
| if (changeNotifier == null) |
| return null; |
| return Collections.unmodifiableList((List) changeNotifier); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.IMethodElementItemProvider#getChildrenFeatures(java.lang.Object) |
| */ |
| public Collection getChildrenFeatures(Object object) { |
| return null; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see com.ibm.library.edit.process.IBSItemProvider#createDropCommand(java.lang.Object, |
| * java.util.List) |
| */ |
| public IResourceAwareCommand createDropCommand(Object owner, |
| List dropElements) { |
| return null; |
| } |
| |
| @Override |
| public String toString() { |
| Object o = TngUtil.unwrap(this); |
| return super.toString() + " (wrapped object: " + o + ")"; //$NON-NLS-1$ //$NON-NLS-2$ |
| } |
| } |