home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jsamples.z / Frame1.java < prev    next >
Text File  |  1997-07-24  |  5KB  |  135 lines

  1. package borland.samples.tutorial.dataset.filterrows;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import borland.jbcl.control.*;
  6. import borland.jbcl.layout.*;
  7. import borland.jbcl.dataset.*;
  8. import borland.jbcl.model.*;
  9. import borland.jbcl.util.Variant;
  10.  
  11. public class Frame1 extends DecoratedFrame {
  12.   BorderLayout borderLayout1 = new BorderLayout();
  13.   BevelPanel bevelPanel1 = new BevelPanel();
  14.   QueryDataSet queryDataSet1 = new QueryDataSet();
  15.   Database database1 = new Database();
  16.   GridControl gridControl1 = new GridControl();
  17.   TextFieldControl textFieldControl1 = new TextFieldControl();
  18.   TextFieldControl textFieldControl2 = new TextFieldControl();
  19.   ButtonControl buttonControl1 = new ButtonControl();
  20.  
  21.   // User defined variables.
  22.   String columnName = "Last_Name";
  23.   String columnValue = "Young";
  24.   VariantFormatter formatter;
  25.   RowFilterListener listener;
  26.   Variant v = new Variant();
  27.   GridBagLayout gridBagLayout1 = new GridBagLayout();
  28.  
  29.   //Construct the frame
  30.   public Frame1() {
  31.     try {
  32.       jbInit();
  33.     }
  34.     catch (Exception e) {
  35.       borland.jbcl.util.Diagnostic.printStackTrace(e);
  36.     }
  37.   }
  38.  
  39.   //Component initialization
  40.   public void jbInit() throws Exception{
  41.     this.setLayout(borderLayout1);
  42.     this.setSize(new Dimension(846, 300));
  43.     this.setTitle("Frame Title");
  44.     bevelPanel1.setLayout(gridBagLayout1);
  45.     queryDataSet1.setQuery(new borland.jbcl.dataset.QueryDescriptor(database1, "select * from employee", null, true, false));
  46.     //queryDataSet1.addRowFilterListener(new Frame1_queryDataSet1_rowFilterAdapter(this));
  47.     database1.setConnection(new borland.jbcl.dataset.ConnectionDescriptor("jdbc:odbc:dataset tutorial", "SYSDBA", "masterkey", false, "sun.jdbc.odbc.JdbcOdbcDriver"));
  48.     gridControl1.setDataSet(queryDataSet1);
  49.     buttonControl1.setLabel("Filter now");
  50.     buttonControl1.addActionListener(new Frame1_buttonControl1_actionAdapter(this));
  51.     this.add(bevelPanel1, BorderLayout.CENTER);
  52.     bevelPanel1.add(gridControl1, new GridBagConstraints2(0, 1, 4, 1, 1.0, 1.0
  53.             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(6, 15, 4, 8), -710, -673));
  54.     bevelPanel1.add(textFieldControl1, new GridBagConstraints2(0, 0, 1, 1, 1.0, 0.0
  55.             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 8, 0, 0), 63, -2));
  56.     bevelPanel1.add(textFieldControl2, new GridBagConstraints2(1, 0, 1, 1, 1.0, 0.0
  57.             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4, 0, 0, 0), 64, -1));
  58.     bevelPanel1.add(buttonControl1, new GridBagConstraints2(2, 0, 1, 1, 0.0, 0.0
  59.             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(4, 10, 0, 0), 28, 1));
  60.     textFieldControl1.setText(columnName);
  61.     textFieldControl2.setText(columnValue);
  62.   }
  63.  
  64.   void queryDataSet1_filterRow(ReadRow readRow, RowFilterResponse rowFilterResponse) throws DataSetException
  65.   {
  66.     if (formatter == null || columnName == null || columnValue == null ||
  67.         columnName.length() == 0 || columnValue.length() == 0)
  68.         // user set field(s) blank, so add all rows
  69.         rowFilterResponse.add();
  70.     else {
  71.       readRow.getVariant(columnName, v);  // fetches row's value of column
  72.       String s = formatter.format(v);     // formats this to a string
  73.                                           // true means show this row
  74.       if (columnValue.equals(s))
  75.          rowFilterResponse.add();
  76.       else rowFilterResponse.ignore();
  77.     }
  78.   }
  79.  
  80. void buttonControl1_actionPerformed(ActionEvent e) {
  81.  
  82.   try {
  83.  
  84.   // Here is where we manufacture a RowFilterListener from the
  85.   // textField values. The Filter class is defined below and
  86.   // is only one way to implement this.
  87.  
  88.     columnName = textFieldControl1.getText();
  89.     columnValue = textFieldControl2.getText();
  90.     Column column = queryDataSet1.getColumn(columnName);
  91.     formatter = column.getFormatter();
  92.  
  93.     // Remove the old listener and then add it back in again.  This will
  94.     // trigger a recalc of the filters
  95.  
  96.     if (listener != null)
  97.         queryDataSet1.removeRowFilterListener(listener);
  98.     listener = new Frame1_queryDataSet1_rowFilterAdapter(this);
  99.     queryDataSet1.addRowFilterListener(listener);
  100.     queryDataSet1.refilter();
  101.  
  102.     // The grid should now repaint only those rows matching these criteria
  103.     }
  104.     catch (Exception ex) {
  105.       System.err.println("Filter example failed");
  106. //      ex.printStackTrace(System.err);
  107.     }
  108.   }
  109. }
  110.  
  111. class Frame1_queryDataSet1_rowFilterAdapter implements borland.jbcl.dataset.RowFilterListener {
  112.   Frame1 adaptee;
  113.  
  114.   Frame1_queryDataSet1_rowFilterAdapter(Frame1 adaptee) {
  115.     this.adaptee = adaptee;
  116.   }
  117.  
  118.   public void filterRow(ReadRow readRow, RowFilterResponse rowFilterResponse) throws DataSetException{
  119.     adaptee.queryDataSet1_filterRow(readRow, rowFilterResponse);
  120.   }
  121. }
  122.  
  123. class Frame1_buttonControl1_actionAdapter implements java.awt.event.ActionListener {
  124.   Frame1 adaptee;
  125.  
  126.   Frame1_buttonControl1_actionAdapter(Frame1 adaptee) {
  127.     this.adaptee = adaptee;
  128.   }
  129.  
  130.   public void actionPerformed(ActionEvent e) {
  131.     adaptee.buttonControl1_actionPerformed(e);
  132.   }
  133. }
  134.  
  135.