home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / inprise / JSAMPLES.Z / Frame1.java < prev    next >
Text File  |  1998-05-08  |  6KB  |  152 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.filterrows;
  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 borland.jbcl.model.*;
  29. import borland.jbcl.util.Variant;
  30.  
  31. public class Frame1 extends DecoratedFrame {
  32.   BorderLayout borderLayout1 = new BorderLayout();
  33.   BevelPanel bevelPanel1 = new BevelPanel();
  34.   QueryDataSet queryDataSet1 = new QueryDataSet();
  35.   Database database1 = new Database();
  36.   GridControl gridControl1 = new GridControl();
  37.   TextFieldControl textFieldControl1 = new TextFieldControl();
  38.   TextFieldControl textFieldControl2 = new TextFieldControl();
  39.   ButtonControl buttonControl1 = new ButtonControl();
  40.  
  41.   // User defined variables.
  42.   String columnName = "Last_Name";
  43.   String columnValue = "Young";
  44.   VariantFormatter formatter;
  45.   RowFilterListener listener;
  46.   Variant v = new Variant();
  47.   GridBagLayout gridBagLayout1 = new GridBagLayout();
  48.  
  49.   //Construct the frame
  50.   public Frame1() {
  51.     try {
  52.       jbInit();
  53.     }
  54.     catch (Exception e) {
  55.       borland.jbcl.util.Diagnostic.printStackTrace(e);
  56.     }
  57.   }
  58.  
  59.   //Component initialization
  60.   private void jbInit() throws Exception{
  61.     this.setLayout(borderLayout1);
  62.     this.setTitle("Filter on Selected Column and Value");
  63.     bevelPanel1.setLayout(gridBagLayout1);
  64.     queryDataSet1.setQuery(new borland.sql.dataset.QueryDescriptor(database1, "select * from employee", null, true, Load.ALL));
  65.     database1.setConnection(new borland.sql.dataset.ConnectionDescriptor("jdbc:odbc:dataset tutorial", "SYSDBA", "masterkey", false, "sun.jdbc.odbc.JdbcOdbcDriver"));
  66.     gridControl1.setDataSet(queryDataSet1);
  67.     buttonControl1.setLabel("Filter now");
  68.     buttonControl1.addActionListener(new Frame1_buttonControl1_actionAdapter(this));
  69.     this.add(bevelPanel1, BorderLayout.CENTER);
  70.     bevelPanel1.add(gridControl1, new GridBagConstraints2(0, 1, 4, 1, 1.0, 1.0
  71.             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(6, 15, 4, 8), -710, -673));
  72.     bevelPanel1.add(textFieldControl1, new GridBagConstraints2(0, 0, 1, 1, 1.0, 0.0
  73.             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 8, 0, 0), 63, -2));
  74.     bevelPanel1.add(textFieldControl2, new GridBagConstraints2(1, 0, 1, 1, 1.0, 0.0
  75.             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 0, 0, 0), 64, -1));
  76.     bevelPanel1.add(buttonControl1, new GridBagConstraints2(2, 0, 1, 1, 0.0, 0.0
  77.             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(4, 10, 0, 0), 28, 1));
  78.     textFieldControl1.setText(columnName);
  79.     textFieldControl2.setText(columnValue);
  80.   }
  81.  
  82.   void queryDataSet1_filterRow(ReadRow readRow, RowFilterResponse rowFilterResponse) throws DataSetException
  83.   {
  84.     if (formatter == null || columnName == null || columnValue == null ||
  85.         columnName.length() == 0 || columnValue.length() == 0)
  86.         // user set field(s) blank, so add all rows
  87.         rowFilterResponse.add();
  88.     else {
  89.       readRow.getVariant(columnName, v);  // fetches row's value of column
  90.       String s = formatter.format(v);     // formats this to a string
  91.                                           // true means show this row
  92.       if (columnValue.equals(s))
  93.          rowFilterResponse.add();
  94.       else rowFilterResponse.ignore();
  95.     }
  96.   }
  97.  
  98. void buttonControl1_actionPerformed(ActionEvent e) {
  99.  
  100.   try {
  101.  
  102.   // Here is where we manufacture a RowFilterListener from the
  103.   // textField values. The Filter class is defined below and
  104.   // is only one way to implement this.
  105.  
  106.     columnName = textFieldControl1.getText();
  107.     columnValue = textFieldControl2.getText();
  108.     Column column = queryDataSet1.getColumn(columnName);
  109.     formatter = column.getFormatter();
  110.  
  111.     // Remove the old listener and then add it back in again.  This will
  112.     // trigger a recalc of the filters
  113.  
  114.     if (listener != null)
  115.         queryDataSet1.removeRowFilterListener(listener);
  116.     listener = new Frame1_queryDataSet1_rowFilterAdapter(this);
  117.     queryDataSet1.addRowFilterListener(listener);
  118.     queryDataSet1.refilter();
  119.  
  120.     // The grid should now repaint only those rows matching these criteria
  121.     }
  122.     catch (Exception ex) {
  123.       System.err.println("Filter example failed");
  124.     }
  125.   }
  126. }
  127.  
  128. class Frame1_queryDataSet1_rowFilterAdapter implements borland.jbcl.dataset.RowFilterListener {
  129.   Frame1 adaptee;
  130.  
  131.   Frame1_queryDataSet1_rowFilterAdapter(Frame1 adaptee) {
  132.     this.adaptee = adaptee;
  133.   }
  134.  
  135.   public void filterRow(ReadRow readRow, RowFilterResponse rowFilterResponse) throws DataSetException{
  136.     adaptee.queryDataSet1_filterRow(readRow, rowFilterResponse);
  137.   }
  138. }
  139.  
  140. class Frame1_buttonControl1_actionAdapter implements java.awt.event.ActionListener {
  141.   Frame1 adaptee;
  142.  
  143.   Frame1_buttonControl1_actionAdapter(Frame1 adaptee) {
  144.     this.adaptee = adaptee;
  145.   }
  146.  
  147.   public void actionPerformed(ActionEvent e) {
  148.     adaptee.buttonControl1_actionPerformed(e);
  149.   }
  150. }
  151.  
  152.