Hi Asif,

Please see the snippet at the end of the mail that achieves your goal.

In ULC you cannot add a mouse listener but you can use the action listener
on the table header.

I hope this helps.

Thanks and regards,

Janak

>-----Original Message-----
>From: [EMAIL PROTECTED]
>[mailto:[EMAIL PROTECTED] Behalf Of M Asif
>Sent: Monday, July 10, 2006 5:44 AM
>To: [email protected]
>Subject: [ULC-developer] Editable check box in Table header
>
>
>Hi,
>
>I tried using renderer to put the check box in table header but it wont
>react to mouse click as by default the TableCellRenderer in a TableColumn
>doesn't receive any events. We can’t add mouse listener in this
>case as ULC
>doesn’t support that.
>
>What should be the proper way to install editable ULCCheckbox in sort
>enabled ULCTable Header ?
>
>
>I would appreciate if you could provide some sample code for
>above-mentioned
>problem.
>
>Regards,
>-Asif

import com.ulcjava.base.application.AbstractApplication;
import com.ulcjava.base.application.ClientContext;
import com.ulcjava.base.application.IRendererComponent;
import com.ulcjava.base.application.ULCBoxPane;
import com.ulcjava.base.application.ULCCheckBox;
import com.ulcjava.base.application.ULCFrame;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCTable;
import com.ulcjava.base.application.event.ActionEvent;
import com.ulcjava.base.application.event.IActionListener;
import com.ulcjava.base.application.table.ITableCellRenderer;
import com.ulcjava.base.application.table.ULCTableColumn;
import com.ulcjava.base.development.DevelopmentRunner;

public class EditableCheckBoxInTableHeaderSnippet extends
AbstractApplication {
    public static void main(String[] args) {
        DevelopmentRunner.setApplicationClass(EditableCheckBoxInTableHeaderS
nippet.class);
        DevelopmentRunner.run();
    }

    public void start() {
        ULCFrame frame = new
ULCFrame("EditableCheckBoxInTableHeaderSnippet");

        String[] cols = new String[2];

        cols[0] = "Col1";
        cols[1] = "Col2";

        String cell1 = "1";
        String cell2 = "2";
        String cell3 = "3";
        String cell4 = "4";

        Object[][] rows = new Object[2][2];

        rows[0][0] = cell1;
        rows[0][1] = cell2;
        rows[1][0] = cell3;
        rows[1][1] = cell4;

        ULCTable table = new ULCTable(rows, cols);


        ULCTableColumn col0 = table.getColumnModel().getColumn(0);
        col0.setHeaderRenderer(new MyDefaultTableHeaderCellRenderer(0));
        col0.setHeaderValue(Boolean.FALSE);

        ULCTableColumn col1 = table.getColumnModel().getColumn(1);
        col1.setHeaderRenderer(new MyDefaultTableHeaderCellRenderer(1));
        col1.setHeaderValue(Boolean.TRUE);

        table.getTableHeader().addActionListener(new
MyTableHeaderActionListener(frame));

        ULCBoxPane bp = new ULCBoxPane();
        bp.add(new ULCScrollPane(table));


        frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);
        frame.add(bp);
        frame.setVisible(true);
    }

    public static class MyDefaultTableHeaderCellRenderer extends ULCCheckBox
implements ITableCellRenderer {
        private int columnIndex;

        public MyDefaultTableHeaderCellRenderer(int index) {
            super();
            columnIndex = index;
        }

        public IRendererComponent getTableCellRendererComponent(ULCTable
table, Object value, boolean isSelected,
                boolean hasFocus, int row) {
            this.setText(table.getColumnName(columnIndex));
            this.setBorder(ClientContext.getBorder("TableHeader.cellBorder")
);
            this.setBorderPainted(true);
            return this;
        }
    }

    public static class MyTableHeaderActionListener implements
IActionListener {
        private ULCFrame fFrame;

        public MyTableHeaderActionListener(ULCFrame frame) {
            fFrame = frame;
        }

        public void actionPerformed(ActionEvent event) {
            ULCTableColumn column = (ULCTableColumn)event.getSource();
            Object val = column.getHeaderValue();
            if (((String)val).equals("false")) {
                column.setHeaderValue(Boolean.TRUE);
            } else {
                column.setHeaderValue(Boolean.FALSE);
            }
            fFrame.repaint();
        }
    }
}

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

Reply via email to