[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.dsdp.ercp] TextCellEditor does not work in TableViewer

Hi

I try to create a editable table wit eSWT 1.2 but without success. The CellModifier seems to work, because all of its methods get called in the proper order but the user does not have the chance to make any changes in the table, because no editor or even a cursor is shown. If I double click the field, tan modify gets called immediately.

Here is the code creating my table:

Table protocolTable = new Table(table, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
TableViewer tableViewer = new TableViewer(protocolTable);


tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
tableViewer.getTable().setLinesVisible(true);
tableViewer.getTable().setHeaderVisible(true);


tableViewer.setContentProvider(new ConfigurationProtocolTableContentProvider());
tableViewer.setLabelProvider(new ConfigurationProtocolTableLabelProvider());
tableViewer.setColumnProperties(new String[] { "DATE", "PROFILE_NAME", "INFO" });
tableViewer.setCellModifier(new ConfigurationProtocolTableCellModifier(tableViewer));


TableColumn columnDate = new TableColumn(tableViewer.getTable(), SWT.LEFT);
columnDate.setText(Messages.getString("protocol_table_date"));
columnDate.setWidth(110);


TableColumn columnProfileName = new TableColumn(tableViewer.getTable(), SWT.LEFT);
columnProfileName.setText(Messages.getString("protocol_table_profilename"));
columnProfileName.setWidth(200);


TableColumn columnInfo = new TableColumn(tableViewer.getTable(), SWT.LEFT);
columnInfo.setText(Messages.getString("protocol_table_info"));
columnInfo.setWidth(400);


tableViewer.setCellEditors(new CellEditor[] { null, null, new TextCellEditor(protocolTable) });

       tableViewer.setInput("1234567777");


And this is teh code of my CellModifier:

public class ConfigurationProtocolTableCellModifier implements ICellModifier {
private TableViewer viewer = null;


   public ConfigurationProtocolTableCellModifier(TableViewer viewer) {
       this.viewer = viewer;
   }

public final boolean canModify(final Object element, final String property) {
return true;
}


   public Object getValue(Object element, String property) {
       if (element instanceof DeviceProtocol) {
           DeviceProtocol protocol = (DeviceProtocol) element;
           return protocol.getProtocolInfo();
       }
       return "";
   }

   public void modify(Object element, String property, Object value) {
       if (element instanceof DeviceProtocol) {
           DeviceProtocol protocol = (DeviceProtocol) element;
           protocol.setProtocolInfo((String) value);

           viewer.refresh(protocol);
       }
   }
}

Does anybody know what I am doing wrong or is there a problem in the eSWT implementation?

Thanks

Markus