package demo6;
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.table.client.ListFilterController;
import org.openswing.swing.message.receive.java.*;
import java.util.*;
/**
* <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 GridFrame extends JFrame {
GridControl grid = new GridControl();
JPanel buttonsPanel = new JPanel();
ReloadButton reloadButton = new ReloadButton();
DeleteButton deleteButton = new DeleteButton();
FlowLayout flowLayout1 = new FlowLayout();
TextColumn colText = new TextColumn();
DecimalColumn colDecimal = new DecimalColumn();
CurrencyColumn colCurrency = new CurrencyColumn();
DateColumn colDate = new DateColumn();
ComboColumn colCombo = new ComboColumn();
TextColumn colLookup = new TextColumn();
TextColumn textColumn1 = new TextColumn();
CheckBoxColumn colCheck = new CheckBoxColumn();
InsertButton insertButton = new InsertButton();
private Connection conn = null;
EditButton editButton = new EditButton();
public GridFrame(Connection conn,GridFrameController controller) {
super.setDefaultCloseOperation(super.EXIT_ON_CLOSE);
this.conn = conn;
try {
jbInit();
setSize(750,300);
grid.setController(controller);
grid.setGridDataLocator(controller);
// add combo-box filters...
// Note that it is possible to create many instances of ListFilterController,
// one for each column to filter OR define a unique instance for all attributes and use it to filter the current column,
// according to "attributeName" attribute current value
ColumnsFilter filter = new ColumnsFilter();
grid.addListFilter("stringValue",filter);
grid.addListFilter("comboValue",filter);
grid.addListFilter("intValue",filter);
grid.addListFilter("currencyValue",filter);
colDate.setListFilter(filter);
setVisible(true);
}
catch(Exception e) {
e.printStackTrace();
}
}
public void reloadData() {
grid.reloadData();
}
private void jbInit() throws Exception {
buttonsPanel.setLayout(flowLayout1);
flowLayout1.setAlignment(FlowLayout.LEFT);
grid.setDeleteButton(deleteButton);
grid.setEditButton(editButton);
grid.setFunctionId("F1");
grid.setInsertButton(null);
grid.setReloadButton(reloadButton);
grid.setValueObjectClassName("demo6.TestVO");
colText.setColumnFilterable(true);
colText.setColumnName("stringValue");
colText.setColumnSortable(true);
colDecimal.setDecimals(2);
colDecimal.setColumnName("numericValue");
colCurrency.setColumnName("currencyValue");
colCurrency.setDecimals(3);
colCurrency.setColumnFilterable(true);
colDate.setColumnName("dateValue");
colDate.setColumnFilterable(true);
colCombo.setDomainId("ORDERSTATE");
colCombo.setColumnName("comboValue");
colCombo.setColumnFilterable(true);
colLookup.setColumnName("lookupValue");
colLookup.setColumnFilterable(true);
textColumn1.setColumnName("descrLookupValue");
textColumn1.setPreferredWidth(150);
colCheck.setColumnName("checkValue");
insertButton.setText("insertButton1");
insertButton.addActionListener(new GridFrame_insertButton_actionAdapter(this));
this.getContentPane().add(grid, BorderLayout.CENTER);
this.getContentPane().add(buttonsPanel, BorderLayout.NORTH);
buttonsPanel.add(insertButton, null);
buttonsPanel.add(editButton, null);
buttonsPanel.add(reloadButton, null);
buttonsPanel.add(deleteButton, null);
grid.getColumnContainer().add(colText, null);
grid.getColumnContainer().add(colDecimal, null);
grid.getColumnContainer().add(colCurrency, null);
grid.getColumnContainer().add(colDate, null);
grid.getColumnContainer().add(colCombo, null);
grid.getColumnContainer().add(textColumn1, null);
grid.getColumnContainer().add(colCheck, null);
grid.getColumnContainer().add(colLookup, null);
}
void insertButton_actionPerformed(ActionEvent e) {
new DetailFrameController(this,null,conn);
}
/**
* <p>Description: Inner class used to collect items to fill in the list-filter.
* Note that it is possible to create many instances of ListFilterController,
* one for each column to filter OR define a unique instance for all attributes and use it to filter the current column,
* according to "attributeName" attribute current value.</p>
* <p>Copyright: Copyright (C) 2008 Mauro Carniel</p>
* @version 1.0
*/
class ColumnsFilter extends ListFilterController {
/**
* @param attributeName attribute name that identifies current column
* @return Response VOListResponse that contains the list of items to show in the list-filter
*/
public Response getListControlValues(String attributeName) {
Statement stmt = null;
ResultSet rset = null;
try {
ArrayList rows = new ArrayList();
stmt = conn.createStatement();
if (attributeName.equals("stringValue")) {
rset = stmt.executeQuery("select distinct DEMO6.TEXT from DEMO6");
while (rset.next()) {
rows.add(rset.getObject(1));
}
}
else if (attributeName.equals("comboValue")) {
rset = stmt.executeQuery("select distinct DEMO6.COMBO from DEMO6");
while (rset.next()) {
rows.add(rset.getObject(1));
}
}
else if (attributeName.equals("intValue")) {
rset = stmt.executeQuery("select distinct DEMO6.INTNUM from DEMO6");
while (rset.next()) {
rows.add(rset.getObject(1));
}
}
else if (attributeName.equals("currencyValue")) {
rset = stmt.executeQuery("select distinct DEMO6.CURRNUM from DEMO6");
while (rset.next()) {
rows.add(rset.getObject(1));
}
}
else if (attributeName.equals("dateValue")) {
rset = stmt.executeQuery("select distinct DEMO6.THEDATE from DEMO6");
while (rset.next()) {
rows.add(rset.getObject(1));
}
}
return new VOListResponse(rows, false, rows.size());
}
catch (Exception ex) {
return new ErrorResponse(ex.getMessage());
}
finally {
try {
stmt.close();
}
catch (Exception ex1) {
}
}
}
}
}
class GridFrame_insertButton_actionAdapter implements java.awt.event.ActionListener {
GridFrame adaptee;
GridFrame_insertButton_actionAdapter(GridFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.insertButton_actionPerformed(e);
}
}