LordLuky
19 Feb 2009, 5:25 AM
Hi, I need have in my Table in some rows instead of text another Table.
But if I do this and select second row in inner table for example, then second row in outer table is selected (highlighted) automaticly, I can't figure out how to disable this behaviour.
So i need to disable highlighting at all, or destroy connection between rows these tables.
(I'm sorry for my poor English and java. ~o))
Here is code:
package balik.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.table.Table;
import com.extjs.gxt.ui.client.widget.table.TableColumn;
import com.extjs.gxt.ui.client.widget.table.TableColumnModel;
import com.extjs.gxt.ui.client.widget.table.TableItem;
public class Test implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(new TableInTable());
}
public class TableInTable extends LayoutContainer {
public TableInTable() {
List<TableColumn> columns = new ArrayList<TableColumn>();
TableColumn column = new TableColumn("name", 0.3f);
columns.add(column);
column = new TableColumn("value", 0.7f);
column.setSortable(false);
columns.add(column);
TableColumnModel cm = new TableColumnModel(columns);
final Table outerTable = new Table(cm);
outerTable.setBorders(true);
outerTable.setBulkRender(false);
// build outer table
for (int i = 0; i < 5; i++) {
outerTable.add(createOuterTableItem(i));
}
Viewport v = new Viewport();
v.setLayout(new FitLayout());
outerTable.setStripeRows(true);
v.add(outerTable);
add(v);
}
protected TableItem createOuterTableItem(int rowId) {
// Create outer table row
final TableItem item = new TableItem(new Object[2]);
Text param = new Text("xx");
item.setWidget(0, param);
if (rowId == 3) {
// in outer table will be as value another table
InnerTable tab = new InnerTable(rowId);
item.setWidget(1, tab);
} else {
// in outer table will be only some text as value
Text hodn = new Text("yy");
hodn.setWidth(280);
item.setWidget(1, hodn);
}
return item;
}
private class InnerTable extends LayoutContainer {
public InnerTable(int rowId) {
List<TableColumn> columns = new ArrayList<TableColumn>();
TableColumn column = new TableColumn("inner name", 100);
column.setSortable(false);
columns.add(column);
column = new TableColumn("inner value", 100);
column.setSortable(false);
columns.add(column);
column = new TableColumn("", 70);
column.setSortable(false);
columns.add(column);
TableColumnModel cm = new TableColumnModel(columns);
Table innerTable = new Table(cm);
innerTable.setBulkRender(false);
// build inner table
for (int i = 0; i < 5; i++) {
innerTable.add(createInnerTableItem(i));
}
innerTable.setAutoHeight(true);
innerTable.setAutoWidth(true);
add(innerTable);
}
}
protected TableItem createInnerTableItem(int rowId) {
final TableItem item = new TableItem(new Object[3]);
Text param = new Text("x");
item.setWidget(0, param);
Text hodn = new Text("y");
item.setWidget(1, hodn);
Button butt = new Button("b",
new SelectionListener<ComponentEvent>() {
@Override
public void componentSelected(ComponentEvent e) {
}
});
item.setWidget(2, butt);
return item;
}
}
}
I'm using GXT 1.2.2 and GWT 1.5.3
But if I do this and select second row in inner table for example, then second row in outer table is selected (highlighted) automaticly, I can't figure out how to disable this behaviour.
So i need to disable highlighting at all, or destroy connection between rows these tables.
(I'm sorry for my poor English and java. ~o))
Here is code:
package balik.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import java.util.ArrayList;
import java.util.List;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.table.Table;
import com.extjs.gxt.ui.client.widget.table.TableColumn;
import com.extjs.gxt.ui.client.widget.table.TableColumnModel;
import com.extjs.gxt.ui.client.widget.table.TableItem;
public class Test implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(new TableInTable());
}
public class TableInTable extends LayoutContainer {
public TableInTable() {
List<TableColumn> columns = new ArrayList<TableColumn>();
TableColumn column = new TableColumn("name", 0.3f);
columns.add(column);
column = new TableColumn("value", 0.7f);
column.setSortable(false);
columns.add(column);
TableColumnModel cm = new TableColumnModel(columns);
final Table outerTable = new Table(cm);
outerTable.setBorders(true);
outerTable.setBulkRender(false);
// build outer table
for (int i = 0; i < 5; i++) {
outerTable.add(createOuterTableItem(i));
}
Viewport v = new Viewport();
v.setLayout(new FitLayout());
outerTable.setStripeRows(true);
v.add(outerTable);
add(v);
}
protected TableItem createOuterTableItem(int rowId) {
// Create outer table row
final TableItem item = new TableItem(new Object[2]);
Text param = new Text("xx");
item.setWidget(0, param);
if (rowId == 3) {
// in outer table will be as value another table
InnerTable tab = new InnerTable(rowId);
item.setWidget(1, tab);
} else {
// in outer table will be only some text as value
Text hodn = new Text("yy");
hodn.setWidth(280);
item.setWidget(1, hodn);
}
return item;
}
private class InnerTable extends LayoutContainer {
public InnerTable(int rowId) {
List<TableColumn> columns = new ArrayList<TableColumn>();
TableColumn column = new TableColumn("inner name", 100);
column.setSortable(false);
columns.add(column);
column = new TableColumn("inner value", 100);
column.setSortable(false);
columns.add(column);
column = new TableColumn("", 70);
column.setSortable(false);
columns.add(column);
TableColumnModel cm = new TableColumnModel(columns);
Table innerTable = new Table(cm);
innerTable.setBulkRender(false);
// build inner table
for (int i = 0; i < 5; i++) {
innerTable.add(createInnerTableItem(i));
}
innerTable.setAutoHeight(true);
innerTable.setAutoWidth(true);
add(innerTable);
}
}
protected TableItem createInnerTableItem(int rowId) {
final TableItem item = new TableItem(new Object[3]);
Text param = new Text("x");
item.setWidget(0, param);
Text hodn = new Text("y");
item.setWidget(1, hodn);
Button butt = new Button("b",
new SelectionListener<ComponentEvent>() {
@Override
public void componentSelected(ComponentEvent e) {
}
});
item.setWidget(2, butt);
return item;
}
}
}
I'm using GXT 1.2.2 and GWT 1.5.3