logo       

RE: Editable check box in Table header: msg#00050

java.ulc.devel

Subject: RE: Editable check box in Table header

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: ulc-developer-admin@xxxxxxxxxxxxxxx
>[mailto:ulc-developer-admin@xxxxxxxxxxxxxxx]On Behalf Of M Asif
>Sent: Monday, July 10, 2006 5:44 AM
>To: ulc-developer@xxxxxxxxxxxxxxx
>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();
}
}
}


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise