Listener output

Tower Ty tytower at
Thu Apr 24 16:29:23 PDT 2008

Barry Denton Wrote:

> Thanks Bill  I have typed listeners in tables  which are SetData and Selection type listeners.
> They should return  TableItem number and  x , y, point to identify them i think so.
> They do not , can not work on table to change cells

I had a look at this too . I notice TableEditor has to produce its own sources for the cell identification.  See the below -I couldn't get the item no to go into table so I changed it a bit . This example is given  in the TextEditor.d file itself

module testTableEditor;
import dwt.DWT;
import dwt.widgets.Display;
import dwt.widgets.Shell;
import dwt.widgets.Table;
import dwt.widgets.TableColumn;
import dwt.widgets.TableItem;
import dwt.layout.GridLayout;
import dwt.custom.TableEditor;
import tango.util.Convert;
import TextUtil = tango.text.Util;
import dwt.widgets.Control;
import dwt.widgets.Text;

void main () {
  Display display = new Display ();
  Shell shell = new Shell (display);
  shell.setText("Test TableEditor");
  GridLayout gridLayout = new GridLayout();

   final Table table = new Table(shell, DWT.FULL_SELECTION | DWT.HIDE_SELECTION);
   TableColumn column1 = new TableColumn(table, DWT.NONE);
   TableColumn column2 = new TableColumn(table, DWT.NONE);
   for (int i = 0; i < 10; i++) {
       TableItem item = new TableItem(table, DWT.NONE);
       char[][] needed = [ "item" , "edit this value" ];
      //item.setText(new char[][] {"item " + i, "edit this value"});original line

   final TableEditor
   editor = new TableEditor(table);
   //The editor must have the same size as the cell and must
   //not be any smaller than 50 pixels.
   editor.horizontalAlignment = DWT.LEFT;
   editor.grabHorizontal = true;
   editor.minimumWidth = 50;
   // editing the second column
   final int EDITABLECOLUMN = 1;

   table.addSelectionListener(new class SelectionAdapter {
       public void widgetSelected(SelectionEvent e) {
// Clean up any previous editor control
           Control oldEditor = editor.getEditor();
           if (oldEditor !is null) oldEditor.dispose();
           // Identify the selected row
           TableItem item = cast (TableItem)e.item;
           if (item is null) return;
           // The control that will be the editor must be a child of the Table
           Text newEditor = new Text(table, DWT.NONE);
           newEditor.addModifyListener(new class ModifyListener {
               public void modifyText(ModifyEvent e) {
                   Text text = cast (Text)editor.getEditor();
                   editor.getItem().setText(EDITABLECOLUMN, text.getText());
               }           }    );
           editor.setEditor(newEditor, item, EDITABLECOLUMN);

More information about the Digitalmars-d-dwt mailing list