package demo40; import javax.swing.*; import org.openswing.swing.client.*; import java.awt.*; import org.openswing.swing.table.columns.client.*; import java.util.*; import org.openswing.swing.util.java.Consts; import org.openswing.swing.table.model.client.VOListTableModel; import java.sql.Connection; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Panel that contains a grid for order rows.</p> * <p>Copyright: Copyright (C) 2008 Mauro Carniel</p> * @version 1.0 */ public class OrderRowsGridPanel extends JPanel { GridControl grid = new GridControl(); BorderLayout borderLayout1 = new BorderLayout(); JPanel buttonsPanel = new JPanel(); FlowLayout flowLayout1 = new FlowLayout(); ReloadButton reloadButton1 = new ReloadButton(); ExportButton exportButton1 = new ExportButton(); NavigatorBar navigatorBar1 = new NavigatorBar(); TextColumn colItemCode = new TextColumn(); TextColumn colItemDescr = new TextColumn(); IntegerColumn colQty = new IntegerColumn(); CurrencyColumn colPrice = new CurrencyColumn(); private Connection conn = null; public OrderRowsGridPanel(OrderRowsController controller,Connection conn) { this.conn = conn; try { jbInit(); grid.setController(controller); grid.setGridDataLocator(controller); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setLayout(borderLayout1); buttonsPanel.setLayout(flowLayout1); flowLayout1.setAlignment(FlowLayout.LEFT); grid.setFilterPanelOnGridPolicy(Consts.FILTER_PANEL_ON_GRID_CLOSE_ON_EXIT); grid.setMaxNumberOfRowsOnInsert(2); grid.setNavBar(navigatorBar1); grid.setExportButton(exportButton1); grid.setReloadButton(reloadButton1); grid.setValueObjectClassName("demo40.OrderRowVO"); grid.setVisibleStatusPanel(false); colItemCode.setColumnName("itemId"); colItemCode.setColumnFilterable(true); colItemCode.setColumnSortable(true); colItemCode.setHeaderColumnName("Item Id"); colItemCode.setPreferredWidth(80); colItemDescr.setColumnName("itemDescription"); colItemDescr.setColumnFilterable(true); colItemDescr.setColumnSortable(true); colItemDescr.setHeaderColumnName("Description"); colItemDescr.setPreferredWidth(210); colQty.setColumnName("qty"); colQty.setHeaderColumnName("Qty"); colQty.setPreferredWidth(50); colPrice.setColumnName("price"); colPrice.setHeaderColumnName("Price"); colPrice.setPreferredWidth(90); this.setBorder(BorderFactory.createRaisedBevelBorder()); this.add(grid, BorderLayout.CENTER); this.add(buttonsPanel, BorderLayout.NORTH); buttonsPanel.add(reloadButton1, null); buttonsPanel.add(exportButton1, null); buttonsPanel.add(navigatorBar1, null); grid.getColumnContainer().add(colItemCode, null); grid.getColumnContainer().add(colItemDescr, null); grid.getColumnContainer().add(colQty, null); grid.getColumnContainer().add(colPrice, null); grid.setOverwriteRowWhenExpanding(false); grid.setSingleExpandableRow(true); grid.setExpandableRowController(new ExpandableRowController() { /** * @param model grid model * @param rowNum the current row number * @return <code>true</code> if the current row must be expanded, <code>false</code> otherwise */ public boolean isRowExpandable(VOListTableModel model,int rowNum) { return true; } /** * @param model grid model * @param rowNum the current row number * @return JComponent to show when expanding row; null to do not show anything */ public JComponent getComponentToShow(VOListTableModel model,int rowNum) { OrderRowVO vo = (OrderRowVO)model.getObjectForRow(rowNum); OrderRowDiscountsController c = new OrderRowDiscountsController(conn,vo); OrderRowDiscountsGridPanel p = new OrderRowDiscountsGridPanel(c); p.setPreferredSize(new Dimension(300,200)); return p; } }); } public GridControl getGrid() { return grid; } }