home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / dbSampleFrame.java < prev    next >
Text File  |  1998-05-08  |  17KB  |  460 lines

  1. /*
  2.  * Copyright (c) 1997-1998 Borland International, Inc. All Rights Reserved.
  3.  * 
  4.  * This SOURCE CODE FILE, which has been provided by Borland as part
  5.  * of a Borland product for use ONLY by licensed users of the product,
  6.  * includes CONFIDENTIAL and PROPRIETARY information of Borland.  
  7.  *
  8.  * USE OF THIS SOFTWARE IS GOVERNED BY THE TERMS AND CONDITIONS 
  9.  * OF THE LICENSE STATEMENT AND LIMITED WARRANTY FURNISHED WITH
  10.  * THE PRODUCT.
  11.  *
  12.  * IN PARTICULAR, YOU WILL INDEMNIFY AND HOLD BORLAND, ITS RELATED
  13.  * COMPANIES AND ITS SUPPLIERS, HARMLESS FROM AND AGAINST ANY CLAIMS
  14.  * OR LIABILITIES ARISING OUT OF THE USE, REPRODUCTION, OR DISTRIBUTION
  15.  * OF YOUR PROGRAMS, INCLUDING ANY CLAIMS OR LIABILITIES ARISING OUT OF
  16.  * OR RESULTING FROM THE USE, MODIFICATION, OR DISTRIBUTION OF PROGRAMS
  17.  * OR FILES CREATED FROM, BASED ON, AND/OR DERIVED FROM THIS SOURCE
  18.  * CODE FILE.
  19.  */
  20. package borland.samples.tutorial.dataset.dbsample;
  21.  
  22. import java.awt.*;
  23. import java.awt.event.*;
  24. import borland.jbcl.control.*;
  25. import borland.jbcl.layout.*;
  26. import borland.sql.dataset.*;
  27. import borland.jbcl.dataset.*;
  28. import java.math.*;
  29.  
  30. public class dbSampleFrame extends DecoratedFrame {
  31.   BorderLayout borderLayout1 = new BorderLayout();
  32.   BorderLayout borderLayout2 = new BorderLayout();
  33.   MenuBar menuBar1 = new MenuBar();
  34.   Menu menuFile = new Menu();
  35.   MenuItem menuFileExit = new MenuItem();
  36.   Menu menuHelp = new Menu();
  37.   MenuItem menuHelpAbout = new MenuItem();
  38.   StatusBar statusBar = new StatusBar();
  39.   Database db = new Database();
  40.   QueryDataSet qDataSet = new QueryDataSet();
  41.   BevelPanel topPanel = new BevelPanel();
  42.   CheckboxPanel checkboxPanel1 = new CheckboxPanel();
  43.   BevelPanel middlePanel = new BevelPanel();
  44.   BevelPanel functionPanel = new BevelPanel();
  45.   Panel locatePanel = new Panel();
  46.   LocatorControl locateControl = new LocatorControl();
  47.   GridBagLayout gridBagLayout2 = new GridBagLayout();
  48.   Label locateLabel = new Label();
  49.   NavigatorControl navigatorControl1 = new NavigatorControl();
  50.   CardLayout cardLayout1 = new CardLayout();
  51.   GridControl gridControl1 = new GridControl();
  52.   BorderLayout borderLayout3 = new BorderLayout();
  53.   Column column1 = new Column();
  54.   Column column2 = new Column();
  55.   Column column3 = new Column();
  56.   Column column4 = new Column();
  57.   Column column5 = new Column();
  58.   Column column6 = new Column();
  59.   Column column7 = new Column();
  60.   Column column8 = new Column();
  61.   Column column9 = new Column();
  62.   Column column10 = new Column();
  63.   Column column11 = new Column();
  64.  
  65.   MenuItem navigateMenuItem = new MenuItem();
  66.   Panel calcResultsPanel = new Panel();
  67.   Panel bottomPanel = new Panel();
  68.   BorderLayout borderLayout5 = new BorderLayout();
  69.  
  70.   XYLayout xYLayout1 = new XYLayout();
  71.   Label label4 = new Label();
  72.   Label label5 = new Label();
  73.   Label label6 = new Label();
  74.   MenuItem findMenuItem = new MenuItem();
  75.   FieldControl orgTotal = new FieldControl();
  76.   FieldControl newTotal = new FieldControl();
  77.   FieldControl difference = new FieldControl();
  78.  
  79.  
  80.  
  81.  
  82.   //Construct the frame
  83.   public dbSampleFrame() {
  84.     try {
  85.       jbInit();
  86.     }
  87.     catch (Exception e) {
  88.       e.printStackTrace();
  89.     }
  90.   }
  91.  
  92.   //Component initialization
  93.   private void jbInit() throws Exception{
  94.     this.setLayout(borderLayout1);
  95.     this.setTitle("dbSample");
  96.     menuFile.setLabel("File");
  97.     menuFileExit.setLabel("Exit");
  98.     menuFileExit.addActionListener(new dbSampleFrame_menuFileExit_ActionAdapter(this));
  99.     menuHelp.setLabel("Help");
  100.     menuHelpAbout.setLabel("About");
  101.     statusBar.setAlignment(Label.CENTER);
  102.     statusBar.setDataSet(qDataSet);
  103.     statusBar.setForeground(Color.blue);
  104.     statusBar.setFont(new Font("Helvetica", 1, 12));
  105.     menuHelpAbout.addActionListener(new dbSampleFrame_menuHelpAbout_ActionAdapter(this));
  106.     topPanel.setLayout(borderLayout2);
  107.     checkboxPanel1.setFont(new Font("Dialog", 1, 12));
  108.     checkboxPanel1.setGrouped(true);
  109.     checkboxPanel1.setLabels(new String[] {"Navigate", "Find"});
  110.     checkboxPanel1.setSelectedIndex(0);
  111.     middlePanel.setBevelOuter(BevelPanel.LOWERED);
  112.     middlePanel.setLayout(borderLayout3);
  113.     checkboxPanel1.addItemListener(new dbSampleFrame_checkboxPanel1_itemAdapter(this));
  114.     checkboxPanel1.setOrientation(borland.jbcl.util.Orientation.HORIZONTAL);
  115.     functionPanel.setBevelOuter(BevelPanel.LOWERED);
  116.     locateControl.setDataSet(qDataSet);
  117.     locateLabel.setFont(new Font("Dialog", 1, 12));
  118.     locateLabel.setText(" Find");
  119.     navigatorControl1.setDataSet(qDataSet);
  120.     gridControl1.setDataSet(qDataSet);
  121.  
  122.     // Set column Properties
  123.     column1.setColumnName("EMP_NO");
  124.     column1.setDataType(borland.jbcl.util.Variant.SHORT);
  125.     column1.setWidth(10);
  126.  
  127.     column2.setColumnName("FULL_NAME");
  128.     column2.setDataType(borland.jbcl.util.Variant.STRING);
  129.     column2.setWidth(20);
  130.  
  131. // sets the display mask for the date column
  132.     column3.setColumnName("HIRE_DATE");
  133.     column3.setDisplayMask("MM-dd-yy");
  134.     column3.setDataType(borland.jbcl.util.Variant.TIMESTAMP);
  135.  
  136. // sets the edit mask for the date column
  137.     column3.setEditMask("MM-dd-yyyy");
  138.  
  139.     column4.setColumnName("DEPT_NO");
  140.     column4.setDataType(borland.jbcl.util.Variant.STRING);
  141.     column4.setWidth(10);
  142.  
  143.     column5.setCaption("COUNTRY");
  144.     column5.setColumnName("JOB_COUNTRY");
  145.     column5.setDataType(borland.jbcl.util.Variant.STRING);
  146.     column5.setWidth(15);
  147.  
  148.     column6.setCaption("SALARY");
  149.     column6.setColumnName("SALARY");
  150.     column6.setDataType(borland.jbcl.util.Variant.BIGDECIMAL);
  151.     column6.setScale(2);
  152.     column6.setWidth(12);
  153.  
  154.     column7.setCalcType(borland.jbcl.dataset.CalcType.CALC);
  155.     column7.setColumnName("NEW_SALARY");
  156.     column7.setDataType(borland.jbcl.util.Variant.BIGDECIMAL);
  157.     column7.setVisible(borland.jbcl.util.TriState.NO);
  158.  
  159.     // Aggregator on a dataColumn..
  160.     column8.setCalcType(borland.jbcl.dataset.CalcType.AGGREGATE);
  161.     column8.setAgg(new AggDescriptor(null,"Salary",new SumAggOperator()));
  162.     column8.setColumnName("ORG_TOTAL");
  163.     column8.setDataType(borland.jbcl.util.Variant.BIGDECIMAL);
  164.     column8.setScale(2);
  165.  
  166.     // Aggregator on a calcColumn..
  167.     column9.setCalcType(borland.jbcl.dataset.CalcType.AGGREGATE);
  168.     column9.setColumnName("NEW_TOTAL");
  169.     column9.setAgg(new AggDescriptor(null,"NEW_SALARY",new SumAggOperator()));
  170.     column9.setDataType(borland.jbcl.util.Variant.BIGDECIMAL);
  171.     column9.setScale(2);
  172.  
  173.     // Calc on Aggregated Column..
  174.     column10.setCalcType(borland.jbcl.dataset.CalcType.CALC);
  175.     column10.setColumnName("DIFF_SALARY");
  176.     column10.setDataType(borland.jbcl.util.Variant.BIGDECIMAL);
  177.     column10.setScale(2);
  178.     column10.setVisible(borland.jbcl.util.TriState.NO);
  179.  
  180.     // Aggregator on calcColumn..
  181.     column11.setCalcType(borland.jbcl.dataset.CalcType.AGGREGATE);
  182.     column11.setColumnName("DIFF_TOTAL");
  183.     column11.setAgg(new AggDescriptor(null,"DIFF_SALARY",new SumAggOperator()));
  184.     column11.setDataType(borland.jbcl.util.Variant.BIGDECIMAL);
  185.     column11.setPrecision(2);
  186.  
  187.  
  188.     navigateMenuItem.setLabel("Navigate");
  189.     findMenuItem.setLabel("Find");
  190.     orgTotal.setColumnName("ORG_TOTAL");
  191.     orgTotal.setDataSet(qDataSet);
  192.     newTotal.setColumnName("NEW_TOTAL");
  193.     newTotal.setDataSet(qDataSet);
  194.     difference.setColumnName("DIFF_TOTAL");
  195.     difference.setDataSet(qDataSet);
  196.     findMenuItem.addActionListener(new dbSampleFrame_findMenuItem_actionAdapter(this));
  197.     calcResultsPanel.setLayout(xYLayout1);
  198.  
  199.  
  200.     navigateMenuItem.addActionListener(new dbSampleFrame_navigateMenuItem_actionAdapter(this));
  201.  
  202.     functionPanel.setLayout(cardLayout1);
  203.     locatePanel.setLayout(gridBagLayout2);
  204.     menuFile.add(navigateMenuItem);
  205.     menuFile.add(findMenuItem);
  206.     menuFile.add(menuFileExit);
  207.     menuHelp.add(menuHelpAbout);
  208.     menuBar1.add(menuFile);
  209.     menuBar1.add(menuHelp);
  210.     db.setConnection(new borland.sql.dataset.ConnectionDescriptor("jdbc:odbc:dataset tutorial", "sysdba", "masterkey", false, "sun.jdbc.odbc.JdbcOdbcDriver"));
  211.     qDataSet.setQuery(new borland.sql.dataset.QueryDescriptor(db, "select Emp_no,Full_name,Hire_date,Dept_No,Job_Country,Salary  from employee", null, true, Load.ALL));
  212.     qDataSet.addCalcFieldsListener(new dbSampleFrame_qDataSet_calcFieldsAdapter(this));
  213.  
  214.     label4.setText("Original Total");
  215.     label5.setText("New Total");
  216.     label6.setText("Difference");
  217.  
  218.     bottomPanel.setLayout(borderLayout5);
  219.     this.setMenuBar(menuBar1);
  220.     this.setSize(new Dimension(722, 439));
  221.     this.add(topPanel, BorderLayout.NORTH);
  222.     this.add(middlePanel, BorderLayout.CENTER);
  223.     this.add(bottomPanel, BorderLayout.SOUTH);
  224.  
  225.  
  226.  
  227.     // Set the top Pannel
  228.     functionPanel.add(navigatorControl1, "navigatorControl1");
  229.     locatePanel.add(locateControl, new GridBagConstraints2(1, 0, 1, 2, 1.0, 0.0
  230.             ,GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 214, 0));
  231.     locatePanel.add(locateLabel, new GridBagConstraints2(0, 1, 1, 1, 0.0, 0.0
  232.             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), -4, 0));
  233.     functionPanel.add(locatePanel, "locatePanel");
  234.     topPanel.add(functionPanel, BorderLayout.WEST);
  235.  
  236.     topPanel.add(checkboxPanel1, BorderLayout.CENTER);
  237.     // Set the middlePannel
  238.     middlePanel.add(gridControl1, BorderLayout.CENTER);
  239.  
  240.     // Set the bottomPannel
  241.     bottomPanel.add(calcResultsPanel, BorderLayout.NORTH);
  242.     calcResultsPanel.add(label4, new XYConstraints(7, 14, -1, -1));
  243.     calcResultsPanel.add(label5, new XYConstraints(229, 14, 95, -1));
  244.     calcResultsPanel.add(label6, new XYConstraints(459, 14, -1, -1));
  245.     calcResultsPanel.add(orgTotal, new XYConstraints(89, 14, -1, -1));
  246.     calcResultsPanel.add(newTotal, new XYConstraints(325, 14, -1, -1));
  247.     calcResultsPanel.add(difference, new XYConstraints(538, 14, -1, -1));
  248.     bottomPanel.add(statusBar, BorderLayout.SOUTH);
  249.     qDataSet.setColumns(new Column[] {column1, column2, column3, column4, column5, column6, column7, column8, column9, column10, column11});
  250.   }
  251.  
  252.   //File | Exit action performed
  253.   public void fileExit_actionPerformed(ActionEvent e) {
  254.     System.exit(0);
  255.   }
  256.  
  257.   //Help | About action performed
  258.   public void helpAbout_actionPerformed(ActionEvent e) {
  259.     dbSampleFrame_AboutBox dlg = new dbSampleFrame_AboutBox(this);
  260.     Dimension dlgSize = dlg.getPreferredSize();
  261.     Dimension frmSize = getSize();
  262.     Point loc = getLocation();
  263.     dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
  264.     dlg.setModal(true);
  265.     dlg.show();
  266.   }
  267.  
  268.  
  269.  
  270.   void checkboxPanel1_itemStateChanged(ItemEvent e) {
  271.      switch(checkboxPanel1.getSelectedIndex()){
  272.         case 0  : cardLayout1.show(functionPanel,"navigatorControl1"); break;
  273.         case 1  : cardLayout1.show(functionPanel,"locatePanel");break;
  274.         case 2  : break;
  275.         default : break;
  276.      }
  277.   }
  278.  
  279.  
  280.   void qDataSet_calcFields(ReadRow readRow, DataRow dataRow, boolean boolean1) throws DataSetException{
  281.         BigDecimal bDin  = readRow.getBigDecimal("Salary");
  282.         BigDecimal bDout = bDin.add(new BigDecimal(bDin.doubleValue()*10.0/100));
  283.         dataRow.setBigDecimal("NEW_SALARY",bDout);
  284.         dataRow.setBigDecimal("DIFF_SALARY",bDout.subtract(bDin));
  285.   }
  286.  
  287.  
  288.   void findMenuItem_actionPerformed(ActionEvent e) {
  289.     checkboxPanel1.setSelectedIndex(1);
  290.     cardLayout1.show(functionPanel,"locatePanel");
  291.   }
  292.   void navigateMenuItem_actionPerformed(ActionEvent e) {
  293.     checkboxPanel1.setSelectedIndex(0);
  294.     cardLayout1.show(functionPanel,"navigatorControl1");
  295.   }
  296.  
  297.  
  298. }
  299. class dbSampleFrame_menuFileExit_ActionAdapter implements ActionListener{
  300.   dbSampleFrame adaptee;
  301.  
  302.   dbSampleFrame_menuFileExit_ActionAdapter(dbSampleFrame adaptee) {
  303.     this.adaptee = adaptee;
  304.   }
  305.  
  306.   public void actionPerformed(ActionEvent e) {
  307.     adaptee.fileExit_actionPerformed(e);
  308.   }
  309. }
  310.  
  311. class dbSampleFrame_menuHelpAbout_ActionAdapter implements ActionListener{
  312.   dbSampleFrame adaptee;
  313.  
  314.   dbSampleFrame_menuHelpAbout_ActionAdapter(dbSampleFrame adaptee) {
  315.     this.adaptee = adaptee;
  316.   }
  317.  
  318.   public void actionPerformed(ActionEvent e) {
  319.     adaptee.helpAbout_actionPerformed(e);
  320.   }
  321. }
  322.  
  323. class dbSampleFrame_AboutBox extends Dialog implements ActionListener {
  324.   Panel panel1 = new Panel();
  325.   BevelPanel bevelPanel1 = new BevelPanel();
  326.   dbSampleFrame_InsetsPanel insetsPanel1 = new dbSampleFrame_InsetsPanel();
  327.   dbSampleFrame_InsetsPanel insetsPanel2 = new dbSampleFrame_InsetsPanel();
  328.   dbSampleFrame_InsetsPanel insetsPanel3 = new dbSampleFrame_InsetsPanel();
  329.   Button button1 = new Button();
  330.   ImageControl imageControl1 = new ImageControl();
  331.   Label label1 = new Label();
  332.   Label label2 = new Label();
  333.   Label label3 = new Label();
  334.   Label label4 = new Label();
  335.   BorderLayout borderLayout1 = new BorderLayout();
  336.   BorderLayout borderLayout2 = new BorderLayout();
  337.   FlowLayout flowLayout1 = new FlowLayout();
  338.   GridLayout gridLayout1 = new GridLayout();
  339.   String product = "DataBase Sample";
  340.   String version = "";
  341.   String copyright = "Copyright (c) 1997";
  342.   String comments = "DataBase Sample";
  343.  
  344.   public dbSampleFrame_AboutBox(Frame parent) {
  345.     super(parent);
  346.     try {
  347.       jbInit();
  348.     }
  349.     catch (Exception e) {
  350.       e.printStackTrace();
  351.     }
  352.     pack();
  353.   }
  354.  
  355.   void jbInit() throws Exception{
  356.     this.setTitle("About");
  357.     setResizable(false);
  358.     panel1.setLayout(borderLayout1);
  359.     bevelPanel1.setLayout(borderLayout2);
  360.     insetsPanel2.setLayout(flowLayout1);
  361.     insetsPanel2.setInsets(new Insets(10, 10, 10, 10));
  362.     gridLayout1.setRows(4);
  363.     gridLayout1.setColumns(1);
  364.     label1.setText(product);
  365.     label2.setText(version);
  366.     label3.setText(copyright);
  367.     label4.setText(comments);
  368.     insetsPanel3.setLayout(gridLayout1);
  369.     insetsPanel3.setInsets(new Insets(10, 60, 10, 10));
  370.     button1.setLabel("OK");
  371.     button1.addActionListener(this);
  372.     imageControl1.setImageName("");
  373.     insetsPanel2.add(imageControl1, null);
  374.     bevelPanel1.add(insetsPanel2, BorderLayout.WEST);
  375.     this.add(panel1, null);
  376.     insetsPanel3.add(label1, null);
  377.     insetsPanel3.add(label2, null);
  378.     insetsPanel3.add(label3, null);
  379.     insetsPanel3.add(label4, null);
  380.     bevelPanel1.add(insetsPanel3, BorderLayout.CENTER);
  381.     insetsPanel1.add(button1, null);
  382.     panel1.add(insetsPanel1, BorderLayout.SOUTH);
  383.     panel1.add(bevelPanel1, BorderLayout.NORTH);
  384.     pack();
  385.   }
  386.  
  387.   public void actionPerformed(ActionEvent e) {
  388.     if (e.getSource() == button1) {
  389.     setVisible(false);
  390.     dispose();
  391.     }
  392.   }
  393. }
  394.  
  395. class dbSampleFrame_InsetsPanel extends Panel {
  396.   protected Insets insets;
  397.  
  398.   public Insets getInsets() {
  399.     return insets == null ? super.getInsets() : insets;
  400.   }
  401.  
  402.   public void setInsets(Insets insets) {
  403.     this.insets = insets;
  404.   }
  405. }
  406.  
  407.  
  408. class dbSampleFrame_checkboxPanel1_itemAdapter implements java.awt.event.ItemListener{
  409.   dbSampleFrame adaptee;
  410.  
  411.   dbSampleFrame_checkboxPanel1_itemAdapter(dbSampleFrame adaptee) {
  412.     this.adaptee = adaptee;
  413.   }
  414.  
  415.   public void itemStateChanged(ItemEvent e) {
  416.     adaptee.checkboxPanel1_itemStateChanged(e);
  417.   }
  418. }
  419.  
  420. class dbSampleFrame_navigateMenuItem_actionAdapter implements java.awt.event.ActionListener{
  421.   dbSampleFrame adaptee;
  422.  
  423.   dbSampleFrame_navigateMenuItem_actionAdapter(dbSampleFrame adaptee) {
  424.     this.adaptee = adaptee;
  425.   }
  426.  
  427.   public void actionPerformed(ActionEvent e) {
  428.     adaptee.navigateMenuItem_actionPerformed(e);
  429.   }
  430. }
  431.  
  432. class dbSampleFrame_qDataSet_calcFieldsAdapter implements borland.jbcl.dataset.CalcFieldsListener {
  433.   dbSampleFrame adaptee;
  434.  
  435.   dbSampleFrame_qDataSet_calcFieldsAdapter(dbSampleFrame adaptee) {
  436.     this.adaptee = adaptee;
  437.   }
  438.  
  439.   public void calcFields(ReadRow readRow, DataRow dataRow, boolean boolean1) throws DataSetException{
  440.     adaptee.qDataSet_calcFields(readRow, dataRow, boolean1);
  441.   }
  442. }
  443.  
  444.  
  445. class dbSampleFrame_findMenuItem_actionAdapter implements java.awt.event.ActionListener {
  446.   dbSampleFrame adaptee;
  447.  
  448.   dbSampleFrame_findMenuItem_actionAdapter(dbSampleFrame adaptee) {
  449.     this.adaptee = adaptee;
  450.   }
  451.  
  452.   public void actionPerformed(ActionEvent e) {
  453.     adaptee.findMenuItem_actionPerformed(e);
  454.   }
  455. }
  456.  
  457.  
  458.  
  459.  
  460.