Does SWT Designer support inline editing of Trees and Tables?
Are there any considerations to follow when adding editing features manually to the widgets? How does it play together with Databinding?
Moderators: Konstantin.Scheglov, gnebling, Alexander.Mitin, jwren, Eric Clayberg
Christian Schneider wrote:Does SWT Designer support inline editing of Trees and Tables?
Christian Schneider wrote:Are there any considerations to follow when adding editing features manually to the widgets?
Christian Schneider wrote:How does it play together with Databinding?
final TableViewerColumn newColumnTableColumn_3 = new TableViewerColumn(tableViewer, SWT.NONE);
newColumnTableColumn_3.setEditingSupport(new BeanEditingSupport(tableViewer, "name"));
newColumnTableColumn_3.setLabelProvider(new BeanColumnLabelProvider("name", MyColumnImages.getColumnImages()));
newColumnTableColumn_3.getColumn().setWidth(200);
newColumnTableColumn_3.getColumn().setText("Name");
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanMap;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.graphics.Image;
import com.swtdesigner.ResourceManager;
public class BeanColumnLabelProvider extends ColumnLabelProvider {
private String propertyName;
Map<String, String> columnImages;
public BeanColumnLabelProvider(String propertyName, HashMap<String, String> columnImages) {
super();
this.propertyName = propertyName;
}
@Override
public String getText(Object element) {
BeanMap bm = new BeanMap(element);
return (String)bm.get(propertyName);
}
@Override
public String getToolTipText(Object element) {
return super.getToolTipText(element);
}
@Override
public Image getImage(Object element) {
String className = element.getClass().getSimpleName();
if (!columnImages.containsKey(className)) return null;
String iconPath = columnImages.get(className);
ImageDescriptor imageDesc = ResourceManager.getImageDescriptor(BeanColumnLabelProvider.class, iconPath);
return imageDesc.createImage();
}
}
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.beanutils.BeanMap;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.TreeItem;
public class BeanEditingSupport extends EditingSupport {
private CellEditor cellEditor;
private String propertyName;
private TypeRepository typeRepo;
public BeanEditingSupport(ColumnViewer viewer, String propertyName) {
super(viewer);
Composite parent = null;
if (viewer instanceof TableViewer) {
TableViewer tv = (TableViewer) viewer;
parent = tv.getTable();
}
if (viewer instanceof TreeViewer) {
TreeViewer tv = (TreeViewer) viewer;
parent = tv.getTree();
}
this.propertyName = propertyName;
this.cellEditor = new TextCellEditor(parent);
}
@Override
protected boolean canEdit(Object element) {
return true;
}
@Override
protected CellEditor getCellEditor(Object element) {
return cellEditor;
}
@Override
protected Object getValue(Object element) {
BeanMap beanMap = new BeanMap(element);
Object value = beanMap.containsKey(propertyName)?beanMap.get(propertyName):"";
return value;
}
@Override
protected void setValue(Object element, Object value) {
if (element instanceof TableItem) {
element = ((TableItem)element).getData();
}
if (element instanceof TreeItem) {
element = ((TreeItem)element).getData();
}
BeanMap beanMap = new BeanMap(element);
if (beanMap.containsKey(propertyName)) {
beanMap.put(propertyName, value);
}
getViewer().refresh(element);
}
}
Christian Schneider wrote:The interfaces I used are ColumnLabelProvider and EditingSupport. They are used together with the new TableViewerColumns.
The only bad thing is that they ar not visible in SWTDesigner. I guess this is because they are quite new. Will you support those in the near future?
madamovic wrote:Is the table cell editing with Data Bindings supported in the latest version (v7.0)?
Eric Clayberg wrote:Support for table cell editing with Data Bindings will be added in the future.
madamovic wrote:Do you know approximately when this will be supported?
Eric Clayberg wrote:madamovic wrote:Do you know approximately when this will be supported?
In the next month or two.
Users browsing this forum: No registered users and 2 guests