/*
* Created on Feb 18, 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.jboss.tools.common.model.ui.attribute.adapter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import org.jboss.tools.common.model.ui.IStructuredChangeListener;
import org.jboss.tools.common.model.ui.IValueChangeListener;
import org.jboss.tools.common.model.ui.StructuredChange;
import org.jboss.tools.common.model.ui.StructuredChangedEvent;
import org.jboss.tools.common.model.ui.attribute.IListContentProvider;
import org.jboss.tools.common.model.ui.attribute.adapter.DefaultValueAdapter;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.Viewer;
/**
* @author aleksey
*
*/
public class ModelObjectChildEditorAdapter extends DefaultValueAdapter
implements IStructuredChangeListener, IListContentProvider {
public interface INewValueProvider {
public String getValue();
}
protected static final String DEFAULT_DELIMITER = ";"; //$NON-NLS-1$
ILabelProvider labelProvider = new LabelProvider();
INewValueProvider newValueProvider = null;
public Object getAdapter(Class adapter)
{
Object result = null;
if (adapter == INewValueProvider.class)
result = newValueProvider;
else if (adapter == IValueChangeListener.class)
result = this;
else if (adapter == IStructuredChangeListener.class)
result = this;
else if (adapter == IListContentProvider.class)
result = this;
else if (adapter == ILabelProvider.class)
result = labelProvider;
else
result = super.getAdapter(adapter);
return result;
}
// IStructuredChangeListener
public void structureChanged(StructuredChangedEvent event)
{
StringBuffer newValue = new StringBuffer();
StructuredChange change = (StructuredChange)event.getChange();
Iterator iterator = change.iterator();
if (iterator != null)
while (iterator.hasNext())
{
newValue.append(iterator.next());
if (iterator.hasNext()) newValue.append(DEFAULT_DELIMITER);
}
setValue(newValue.toString());
}
// IListContentProvider
public Object[] getElements(Object inputElement) {
List<String> tokens = new ArrayList<String>();
StringTokenizer tokenizer = new StringTokenizer(getStringValue(true), DEFAULT_DELIMITER);
while (tokenizer.hasMoreTokens()) tokens.add(tokenizer.nextToken());
return tokens.toArray();
}
public void dispose() {
super.dispose();
if (labelProvider!=null) labelProvider.dispose();
labelProvider = null;
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public void setNewValueProvider(INewValueProvider provider)
{
newValueProvider = provider;
}
}