package demo42; import javax.swing.*; import org.openswing.swing.client.*; import java.awt.*; import org.openswing.swing.table.columns.client.*; import org.openswing.swing.lookup.client.LookupController; import java.sql.*; import java.awt.event.*; import org.openswing.swing.table.java.*; import org.openswing.swing.mdi.client.InternalFrame; import org.openswing.swing.table.model.client.VOListTableModel; import org.openswing.swing.message.receive.java.ValueObject; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Grid Frame</p> * <p>Copyright: Copyright (C) 2006 Mauro Carniel</p> * <p> </p> * @author Mauro Carniel * @version 1.0 */ public class EmpGridFrame extends InternalFrame { GridControl grid = new GridControl(); JPanel buttonsPanel = new JPanel(); ReloadButton reloadButton = new ReloadButton(); DeleteButton deleteButton = new DeleteButton(); FlowLayout flowLayout1 = new FlowLayout(); TextColumn colEmpCode = new TextColumn(); TextColumn colFName = new TextColumn(); private Connection conn = null; ExportButton exportButton1 = new ExportButton(); NavigatorBar navigatorBar1 = new NavigatorBar(); TextColumn colLName = new TextColumn(); TextColumn colDeptCode = new TextColumn(); TextColumn colDeptDescr = new TextColumn(); FilterButton filterButton1 = new FilterButton(); public EmpGridFrame(Connection conn,EmpGridFrameController controller) { this.conn = conn; try { jbInit(); setSize(900,700); grid.setController(controller); grid.setGridDataLocator(controller); setTitle("Employees"); } catch(Exception e) { e.printStackTrace(); } } public void reloadData() { grid.reloadData(); } private void jbInit() throws Exception { grid.setAnchorLastColumn(true); buttonsPanel.setLayout(flowLayout1); flowLayout1.setAlignment(FlowLayout.LEFT); grid.setDeleteButton(deleteButton); grid.setExportButton(exportButton1); grid.setFilterButton(filterButton1); grid.setFunctionId("getEmployees"); grid.setInsertButton(null); grid.setNavBar(navigatorBar1); grid.setReloadButton(reloadButton); grid.setValueObjectClassName("demo42.GridEmpVO"); colEmpCode.setColumnFilterable(true); colEmpCode.setColumnName("empCode"); colEmpCode.setColumnSortable(false); colFName.setColumnFilterable(true); colFName.setColumnName("firstName"); colFName.setColumnSortable(true); colFName.setPreferredWidth(150); exportButton1.setText("exportButton1"); colLName.setColumnFilterable(true); colLName.setColumnName("lastName"); colLName.setPreferredWidth(150); colDeptCode.setColumnFilterable(true); colDeptCode.setColumnName("deptCode"); colDeptCode.setPreferredWidth(70); colDeptDescr.setColumnName("deptDescription"); colDeptDescr.setPreferredWidth(200); filterButton1.setText("filterButton1"); this.getContentPane().add(grid, BorderLayout.CENTER); this.getContentPane().add(buttonsPanel, BorderLayout.NORTH); buttonsPanel.add(reloadButton, null); buttonsPanel.add(deleteButton, null); buttonsPanel.add(exportButton1, null); buttonsPanel.add(filterButton1, null); buttonsPanel.add(navigatorBar1, null); grid.getColumnContainer().add(colEmpCode, null); grid.getColumnContainer().add(colFName, null); grid.getColumnContainer().add(colLName, null); grid.getColumnContainer().add(colDeptCode, null); grid.getColumnContainer().add(colDeptDescr, 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) { GridEmpVO gridVO = (GridEmpVO)model.getObjectForRow(rowNum); EmpDetailPanelController c = new EmpDetailPanelController(grid,gridVO,conn); EmpDetailPanel p = c.getPanel(); p.setPreferredSize(new Dimension(590,480)); p.setBorder(BorderFactory.createEtchedBorder()); return p; } /** * @param showedComponent component currently showed * @return component that will receive focus when showing frame; null to do not set focus automatically */ public Component getFocusableComponent(JComponent showedComponent) { EmpDetailPanel p = (EmpDetailPanel)showedComponent; return p.getMainPanel(); } }); } public GridControl getGrid() { return grid; } /** * Callback method invoked by closeFrame. * @return <code>true</code> allows the closing operation to continue, <code>false</code> the closing operation will be interrupted */ protected boolean beforeCloseFrame() { // grid = null; return true; } }