blob: 60396cb5b545c4be2e5bb44cbf4483661e6aefdf [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 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.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.util.UniqueEList;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.epf.common.utils.StrUtil;
/**
* @author Phong Nguyen Le
*
* @since 1.2
*/
public class ComposedBreakdownElementWrapperItemProvider extends
BreakdownElementWrapperItemProvider {
private List values = new ArrayList();
/**
* @param value
* @param owner
* @param adapterFactory
*/
public ComposedBreakdownElementWrapperItemProvider(Object value,
Object owner, AdapterFactory adapterFactory) {
super(value, owner, adapterFactory);
addElement(value);
}
public List getValues() {
return values;
}
public void addElement(Object e) {
getValues().add(e);
}
/**
* Decides if the values of the given property of all elements in this composed wrapper can be merged.
* @param property
* @return
*/
protected boolean canMerge(String property) {
return property == IBSItemProvider.COL_MODEL_INFO;
}
@Override
public String getAttribute(Object object, String property) {
if(!values.isEmpty()) {
if(canMerge(property)) {
UniqueEList modelInfos = new UniqueEList();
for (Iterator iter = values.iterator(); iter.hasNext();) {
Object o = iter.next();
String info;
if(o instanceof IBSItemProvider) {
info = ((IBSItemProvider)o).getAttribute(o, property);
}
else {
IBSItemProvider ip = (IBSItemProvider) adapterFactory.adapt(o, ITreeItemContentProvider.class);
info = ip.getAttribute(o, property);
}
if(!StrUtil.isBlank(info)) {
modelInfos.add(info);
}
}
if(!modelInfos.isEmpty()) {
StringBuffer modelInfo = new StringBuffer((String)modelInfos.get(0));
int max = modelInfos.size();
for (int i = 1; i < max; i++) {
modelInfo.append(',').append(modelInfos.get(i));
}
return modelInfo.toString();
}
return ""; //$NON-NLS-1$
}
}
return super.getAttribute(object, property);
}
@Override
public boolean isInherited() {
for(int i = values.size() - 1; i > -1; i--) {
Object o = values.get(i);
if(!(o instanceof DescribableElementWrapperItemProvider)
|| !((DescribableElementWrapperItemProvider)o).isInherited()) {
return false;
}
}
return true;
}
}