Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [platform-swt-dev] ComboBoxCellEditor not working as expected

Thanks Nick

There are times when you get too close to spot the obvious

Cheers

Mike

-----Original Message-----
From: platform-swt-dev-bounces@xxxxxxxxxxx
[mailto:platform-swt-dev-bounces@xxxxxxxxxxx] On Behalf Of Nick Edgar
Sent: 18 July 2005 19:00
To: Eclipse Platform SWT component developers list.
Subject: Re: [platform-swt-dev] ComboBoxCellEditor not working as
expected


The case statement is missing breaks, so each case falls through to the 
next and then to default.




"Mike Bennett" <mike@xxxxxxxxxxxxx> 
Sent by: platform-swt-dev-bounces@xxxxxxxxxxx
07/18/2005 08:04 AM
Please respond to
"Eclipse Platform SWT component developers list."


To
<platform-swt-dev@xxxxxxxxxxx>
cc

Subject
[platform-swt-dev] ComboBoxCellEditor not working as expected






Hello
 
I am trying to use the ComboBoxCellEditor for a column in a table.
 
When the table first populates, the cells display the values as
expected, 
however if the combo box is used to change the value of a cell, the new 
value is always that associated with index 0 in the list of possible 
values.
 
I have an object called CellValue, this has the following getters and 
setters:
 
  public String getItemType() {
    return (itemType==null?"":itemType);
  }
  public int getItemTypeIndex() {
    if (itemType == null) return 0;
    if (itemType.equals("text")) return 0;
    else if (itemType.equals("integer")) return 1;
    else if (itemType.equals("double")) return 2;
    return 0;
  }
  public void setItemType(String itemType) {
    System.out.println("CellValue.setItemType: itemType " + itemType);
    this.itemType = itemType.trim().toLowerCase();
  }
  public void setItemTypeIndex(int itemType) {
    System.out.println("CellValue.setItemTypeIndex: itemType " + 
itemType);
    switch (itemType) {
      case 0: setItemType("text");
      case 1: setItemType("integer");
      case 2: setItemType("double");
      default: setItemType("text");
    }
  }
The methods in my modifier are:
 
  public Object getValue(Object rowData, String property) {
    System.out.println("getValue: property "  + property);
    CellValue cellValue = (CellValue)rowData;
    if (CellValue.NAME.equals(property)) {
      return cellValue.getDataItemName();
    } else if (CellValue.VALUE.equals(property)) {
      return cellValue.getValue();
    } else if (CellValue.TYPE.equals(property)) {
      System.out.println("Type is " + cellValue.getItemTypeIndex());
      return new Integer(cellValue.getItemTypeIndex());
    } else if (CellValue.SHOW.equals(property)) {
      return (new Boolean(cellValue.isShowOnSheet()));
    } 
    return null;
  }
 
  public void modify(Object rowData, String property, Object value) {
     System.out.println("CellValueModifier.modify: rowData " + 
rowData.getClass().toString() +
                        " value " + value.getClass().toString());
    if (rowData instanceof Item) rowData = ((Item)rowData).getData();
 
    CellValue cellValue = (CellValue)rowData;
    if (CellValue.NAME.equals(property)) {
      cellValue.setDataItemName((String)value);
    } else if (CellValue.VALUE.equals(property)) {
      cellValue.setValue((String)value);
    } else if (CellValue.TYPE.equals(property)) {
      cellValue.setItemTypeIndex(((Integer)value).intValue());
    } else if (CellValue.SHOW.equals(property)) {
      cellValue.setShowOnSheet(((Boolean)value).booleanValue());
    } 
 
    viewer.refresh();
  }
As you can see I have added a number of debug lines. The results I get 
are:
 
CellValueModifier.modify: rowData class
org.eclipse.swt.widgets.TableItem 
value class java.lang.Integer
CellValue.setItemTypeIndex: itemType 2
CellValue.setItemType: itemType double
CellValue.setItemType: itemType text
CellValueModifier.modify: before refresh 
CellValueModifier.modify: after refresh 
The problem seams to be caused by the second setItemType method call.
This 
is very strange as the only place I call this is in the setItemTypeIndex

method and the trace shows that this is only called once.
 
I am doing something daft that I can't see or is there a problem here?
 
Thanks
 
Mike_______________________________________________
platform-swt-dev mailing list
platform-swt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/platform-swt-dev


_______________________________________________
platform-swt-dev mailing list
platform-swt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/platform-swt-dev





Back to the top