package demo40;
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.message.receive.java.Response;
import java.util.Map;
import java.util.ArrayList;
import org.openswing.swing.message.receive.java.VOListResponse;
import java.math.BigDecimal;
import org.openswing.swing.table.client.GridController;
import javax.swing.text.MaskFormatter;
import javax.swing.text.DefaultFormatter;
import java.text.ParseException;
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 OrdersGridFrame extends JFrame {
GridControl grid = new GridControl();
JPanel buttonsPanel = new JPanel();
ReloadButton reloadButton = new ReloadButton();
FlowLayout flowLayout1 = new FlowLayout();
IntegerColumn colOrderNUmber = new IntegerColumn();
IntegerColumn colYear = new IntegerColumn();
TextColumn colCustomerId = new TextColumn();
CurrencyColumn colTotal = new CurrencyColumn();
private Connection conn = null;
ExportButton exportButton = new ExportButton();
NavigatorBar navigatorBar1 = new NavigatorBar();
DateColumn colOrderDate = new DateColumn();
ComboColumn colState = new ComboColumn();
public OrdersGridFrame(Connection conn,OrdersGridFrameController controller) {
this.conn = conn;
try {
jbInit();
setSize(590,600);
grid.setController(controller);
grid.setGridDataLocator(controller);
setVisible(true);
}
catch(Exception e) {
e.printStackTrace();
}
}
public void reloadData() {
grid.reloadData();
}
private void jbInit() throws Exception {
colState.setDomainId("ORDER_STATE");
buttonsPanel.setLayout(flowLayout1);
flowLayout1.setAlignment(FlowLayout.LEFT);
grid.setExpandableColumn(0);
grid.setExportButton(exportButton);
grid.setNavBar(navigatorBar1);
grid.setReloadButton(reloadButton);
grid.setValueObjectClassName("demo40.OrderVO");
colOrderNUmber.setColumnName("orderNumber");
// colOrderNUmber.setTextAlignment(SwingConstants.LEFT);
colOrderNUmber.setColumnSortable(true);
colOrderNUmber.setHeaderColumnName("Order Nr.");
colOrderNUmber.setPreferredWidth(70);
colOrderNUmber.setSortingOrder(2);
colOrderNUmber.setSortVersus(org.openswing.swing.util.java.Consts.ASC_SORTED);
colYear.setColumnName("orderYear");
colYear.setSortingOrder(1);
colYear.setColumnSortable(true);
colYear.setHeaderColumnName("Year");
colYear.setPreferredWidth(60);
colYear.setSortVersus(org.openswing.swing.util.java.Consts.ASC_SORTED);
colCustomerId.setColumnName("customerId");
colCustomerId.setHeaderColumnName("Customer Id");
colCustomerId.setPreferredWidth(150);
colTotal.setColumnName("total");
colTotal.setGrouping(true);
colTotal.setHeaderColumnName("Total Amount");
colOrderDate.setColumnName("orderDate");
colOrderDate.setHeaderColumnName("Order Date");
colState.setColumnName("state");
colState.setColumnFilterable(false);
colState.setHeaderColumnName("State");
colState.setPreferredWidth(60);
this.getContentPane().add(grid, BorderLayout.CENTER);
this.getContentPane().add(buttonsPanel, BorderLayout.NORTH);
buttonsPanel.add(reloadButton, null);
buttonsPanel.add(exportButton, null);
buttonsPanel.add(navigatorBar1, null);
grid.getColumnContainer().add(colYear, null);
grid.getColumnContainer().add(colOrderNUmber, null);
grid.getColumnContainer().add(colOrderDate, null);
grid.getColumnContainer().add(colCustomerId, null);
grid.getColumnContainer().add(colState, null);
grid.getColumnContainer().add(colTotal, 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 ((OrderVO)model.getObjectForRow(rowNum)).isHasOrderRows();
}
/**
* @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) {
// final Point pp = new Point(0,0);
// final Rectangle rr = new Rectangle(0,0,0,0);
//
// final JPanel p = new JPanel() {
//
// public void setBounds(Rectangle r) {
// super.setBounds(r);
// rr.x = r.x;
// rr.y = r.y;
// rr.height = r.height;
// rr.width = r.width;
// repaint();
// }
//
// public void setBounds(int a,int b,int c,int d) {
// super.setBounds(a,b,c,d);
// rr.x = a;
// rr.y = b;
// rr.height = c;
// rr.width = d;
// repaint();
// }
//
//
// public void paint(Graphics g) {
// super.paint(g);
// g.drawString(""+getLocation(),5,20);
// g.drawString(""+g.getClipBounds(),5,60);
// g.drawString(""+rr,5,40);
// g.drawString(""+pp,5,80);
// }
// };
// p.setLayout(new BorderLayout(0,0));
// p.setPreferredSize(new Dimension(300,100));
// p.addMouseListener(new MouseAdapter() {
// public void mouseClicked(MouseEvent e) {
// pp.x=e.getPoint().x;
// pp.y=e.getPoint().y;
// p.repaint();
// }
// });
// JPanel p = new JPanel();
// p.setLayout(new BorderLayout(0,0));
// p.setPreferredSize(new Dimension(300,100));
// JTextArea t = new JTextArea(80,20) {
//
// public void requestFocus() {
// super.requestFocus();
// }
//
// };
// t.setText("abc"+rowNum);
// p.add(new JScrollPane(t),BorderLayout.CENTER);
OrderVO vo = (OrderVO)model.getObjectForRow(rowNum);
OrderRowsController c = new OrderRowsController(conn,vo);
OrderRowsGridPanel p = new OrderRowsGridPanel(c,conn);
p.setPreferredSize(new Dimension(300,400));
return p;
// JPanel p = new JPanel();
// JTextField f = new JTextField("abc",20);
// p.add(f,null);
// p.setPreferredSize(new Dimension(400,100));
// 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) {
OrderRowsGridPanel p = (OrderRowsGridPanel)showedComponent;
return p.getGrid();
}
});
}
public GridControl getGrid() {
return grid;
}
}