Hi!
I use a ContextMenu in Grid's Header.
After que Column Reorder in Grid the ContextMenu doesn't show up again.
Procedure: Run the the test-case, right-click the column header, reorder the column and try to show the context menu again.
Test-Case:
Code:
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class GxtTest implements EntryPoint {
/**
* This is the entry point method.
*/
public void onModuleLoad() {
RootPanel rootPanel = RootPanel.get();
LayoutContainer cont = new GridExample();
rootPanel.add(cont);
}
class GridExample extends LayoutContainer {
private ColumnModel cm;
@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
setLayout(new FlowLayout(10));
getAriaSupport().setPresentation(true);
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("name");
column.setHeader("Company");
column.setWidth(200);
column.setRowHeader(true);
configs.add(column);
column = new ColumnConfig();
column.setId("symbol");
column.setHeader("Symbol");
column.setWidth(100);
configs.add(column);
ListStore<Stock> store = new ListStore<Stock>();
store.add(TestData.getStocks());
cm = new ColumnModel(configs);
ContentPanel cp = new ContentPanel();
cp.setBodyBorder(true);
cp.setHeading("Basic Grid");
cp.setButtonAlign(HorizontalAlignment.CENTER);
cp.setLayout(new FitLayout());
cp.getHeader().setIconAltText("Grid Icon");
cp.setSize(300, 300);
final Grid<Stock> grid = new Grid<Stock>(store, cm);
grid.setAutoExpandColumn("name");
grid.setBorders(false);
grid.setStripeRows(true);
grid.setColumnLines(true);
grid.setColumnReordering(true);
cp.add(grid);
grid.addListener(Events.Attach, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
Menu contextMenu = new Menu();
contextMenu.add(new MenuItem("ContextMenu Option"));
grid.getView().getHeader().setContextMenu(contextMenu);
}
});
add(cp);
}
}
@SuppressWarnings("serial")
public static class Stock extends BaseModelData {
}
static class TestData {
public static List<Stock> getStocks() {
List<Stock> stockList = new ArrayList<Stock>();
Stock stock1 = new Stock();
stock1.set("name", "name");
stock1.set("symbol", "symbol");
stock1.set("date", new Date());
stockList.add(stock1);
return stockList;
}
}
}