/*******************************************************************************
* Copyright (c) 2010 Oak Ridge National Laboratory.
* 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
******************************************************************************/
package org.csstudio.ui.util.swt.stringtable;
import java.util.List;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.widgets.Table;
/** Editor for table with List<String>
* @author Kay Kasemir
* @author Xihui Chen
*/
class StringColumnEditor extends EditingSupport
{
final private TableViewer table_viewer;
public StringColumnEditor(final TableViewer viewer)
{
super(viewer);
this.table_viewer = viewer;
}
@Override
protected boolean canEdit(final Object element)
{
return true;
}
@Override
protected CellEditor getCellEditor(final Object element)
{
final Table parent = (Table) getViewer().getControl();
return new TextCellEditor(parent);
}
@Override
protected Object getValue(Object element)
{
if (element == StringTableContentProvider.ADD_ELEMENT)
return ""; //$NON-NLS-1$
final int index = ((Integer)element).intValue();
@SuppressWarnings("unchecked") final List<String> items =
(List<String>) table_viewer.getInput();
return items.get(index);
}
@Override
protected void setValue(Object element, Object value)
{
@SuppressWarnings("unchecked") final List<String> items =
(List<String>) table_viewer.getInput();
if (element == StringTableContentProvider.ADD_ELEMENT)
{
items.add(value.toString());
getViewer().refresh();
return;
}
// else
final int index = ((Integer)element).intValue();
items.set(index, value.toString());
getViewer().refresh(element);
}
}