Hi,

I extended one of your examples in order to ask the following question:

Can tell me how come the valuechanged listener that I added is never executed? I want to to know when the checkbox has been changed. The same applies for ULCTextField.

==============

import com.ulcjava.base.application.*;
import com.ulcjava.base.application.event.IValueChangedListener;
import com.ulcjava.base.application.border.ULCAbstractBorder;
import com.ulcjava.base.application.border.ULCEmptyBorder;
import com.ulcjava.base.application.table.DefaultTableModel;
import com.ulcjava.base.application.table.ITableCellRenderer;
import com.ulcjava.base.development.DevelopmentRunner;

public class TestULCTextField extends AbstractApplication {
   private static final int CHECK_BOX_COLUMN = 2;
  // CLASS HERE
   class MyIValueChangedListener implements IValueChangedListener
   {
public void valueChanged(com.ulcjava.base.application.event.ValueChangedEvent event){
           ULCCheckBox source = (ULCCheckBox)event.getSource();
           System.out.println("value changed for: " + source.getText()
                       + ". new value is: " + source.isSelected());
       }
   }

   public void start() {
       ULCTable table = new ULCTable(new DummyTableModel());


table.getColumnModel().getColumn(CHECK_BOX_COLUMN).setCellRenderer(new CheckBoxRenderer());

       ULCCheckBox editorComponent = new ULCCheckBox();
       editorComponent.setBorderPainted(true);
       editorComponent.setHorizontalAlignment(ULCCheckBox.CENTER);
       editorComponent.setOpaque(true);
       editorComponent.setForeground(table.getSelectionForeground());
       editorComponent.setBackground(table.getSelectionBackground());

       MyIValueChangedListener listener = new MyIValueChangedListener();

       // LISTENER HERE
       // How come this value changed listerner is never called? ---
       editorComponent.addValueChangedListener(listener);

       
editorComponent.setBorder(ClientContext.getBorder("Table.focusCellHighlightBorder"));
       table.getColumnModel().getColumn(CHECK_BOX_COLUMN).setCellEditor(new
       DefaultCellEditor(editorComponent));

       ULCFrame frame = new ULCFrame("TestULCTextField");
       frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);
       frame.add(new ULCScrollPane(table));
       frame.setVisible(true);
   }

   public static void main(String[] args) {

   DevelopmentRunner.setApplicationClass(TestULCTextField.class);
       DevelopmentRunner.main(args);
   }

   private static class CheckBoxRenderer extends ULCCheckBox implements

   ITableCellRenderer {
       private ULCAbstractBorder fNoFocusBorder;

       public CheckBoxRenderer() {
           fNoFocusBorder = new ULCEmptyBorder(1, 1, 1, 1);

           setBorderPainted(true);
           setHorizontalAlignment(CENTER);
           setOpaque(true);
       }

public IRendererComponent getTableCellRendererComponent(ULCTable table, Object value, boolean isSelected, boolean hasFocus, int row) {
           if (isSelected) {
               setForeground(table.getSelectionForeground());
               setBackground(table.getSelectionBackground());
           } else {
               setForeground(table.getForeground());
               setBackground(table.getBackground());
           }

setBorder(hasFocus ? ClientContext.getBorder("Table.focusCellHighlightBorder") : fNoFocusBorder);

           return this;
       }
   }

   private static class DummyTableModel extends DefaultTableModel {
       public DummyTableModel() {
super(new Object[0][5], new String[]{"one", "two", "three","four", "five"});
           for (int row = 0; row < 100; row++) {
addRow(new Object[]{row + ":0", row + ":1", row % CHECK_BOX_COLUMN == 0 ? Boolean.TRUE : Boolean.FALSE, row + ":3", row +":4"});
           }
       }
   }
}

Mario
_______________________________________________
ULC-developer mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/ulc-developer

Reply via email to