home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jsamples.z / DBBrowserBean.java < prev    next >
Encoding:
Java Source  |  1997-07-17  |  6.0 KB  |  179 lines

  1.  
  2. package borland.samples.beans.dbbrowserbean;
  3.  
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.sql.*;
  7. import borland.jbcl.layout.*;
  8. import borland.jbcl.control.*;
  9. import borland.jbcl.dataset.*;
  10. import borland.jbcl.model.*;
  11. import borland.jbcl.view.*;
  12. import borland.jbcl.model.*;
  13. import borland.jbcl.util.*;
  14. import COM.objectspace.jgl.*;
  15.  
  16. public class DBBrowserBean extends BeanPanel implements BlackBox {
  17.   BevelPanel bevelPanel1 = new BevelPanel();
  18.   BorderLayout borderLayout1 = new BorderLayout();
  19.   BorderLayout borderLayout2 = new BorderLayout();
  20.   TreeControl treeControl1 = new TreeControl();
  21.   Database database1 = new Database();
  22.   String table = new String();
  23.  
  24.   public static final String TABLE_SELECTION_EVENT = "TableSelectionChanged";
  25.  
  26.   public DBBrowserBean() {
  27.     try {
  28.       jbInit();
  29.     }
  30.     catch (Exception e) {
  31.       e.printStackTrace();
  32.     }
  33.   }
  34.  
  35.   public void jbInit() throws Exception{
  36.     treeControl1.setEditInPlace(false);
  37.     treeControl1.setStyle(borland.jbcl.view.TreeView.STYLE_ARROWS);
  38.     treeControl1.addSelectionListener(new DBBrowserBean_treeControl1_selectionAdapter(this));
  39.     treeControl1.addMouseListener(new DBBrowserBean_treeControl1_mouseAdapter(this));
  40.     treeControl1.setExpandByDefault(false);
  41.     bevelPanel1.setLayout(borderLayout2);
  42.     this.setLayout(borderLayout1);
  43.     this.add(bevelPanel1, BorderLayout.CENTER);
  44.     bevelPanel1.add(treeControl1, BorderLayout.CENTER);
  45.   }
  46.  
  47.   public String getTableName() {return this.table;}
  48.   public Database getDatabase() {return this.database1;}
  49.   public void setDatabase(Database db) {
  50.     this.database1 = db;
  51.     this.setupTree();
  52.   }
  53.  
  54.   private void setupTree() {
  55.     String[] tableArray = {"",""};
  56.     Image imageUserTable = ImageLoader.loadFromResource("table.gif", this);
  57.     Image imageSystemTable = ImageLoader.loadFromResource("systable.gif", this);
  58.     Image imageView = ImageLoader.loadFromResource("view.gif", this);
  59.     ImageLoader.waitForImage(this, imageUserTable);
  60.     ImageLoader.waitForImage(this, imageSystemTable);
  61.     ImageLoader.waitForImage(this, imageView);
  62.  
  63.     treeControl1.setViewManager( new BasicViewManager(
  64.       new CompositeItemPainter(new ImageItemPainter(treeControl1, Alignment.LEFT),
  65.       new SelectableTextItemPainter())));
  66.  
  67.     int i = 0;
  68.     if (database1 != null) {
  69.       try {
  70.         DatabaseMetaData d1 = database1.getMetaData();
  71.         GraphLocation root = treeControl1.setRoot(new Pair(null, d1.getURL()));
  72.         GraphLocation user = treeControl1.addChild(root, new Pair(null, "User Tables"));
  73.         GraphLocation system = treeControl1.addChild(root, new Pair(null, "System Tables"));
  74.         GraphLocation view = treeControl1.addChild(root, new Pair(null, "Views"));
  75.         treeControl1.expand(root);
  76.  
  77.     tableArray = this.getTables(database1, "TABLE");
  78.         for (i=0;i<tableArray.length;i++) {
  79.           treeControl1.addChild(user, new Pair(imageUserTable, tableArray[i]));
  80.         }
  81.  
  82.     tableArray = this.getTables(database1, "SYSTEM TABLE");
  83.         for (i=0;i<tableArray.length;i++) {
  84.           treeControl1.addChild(system, new Pair(imageSystemTable, tableArray[i]));
  85.         }
  86.  
  87.     tableArray = this.getTables(database1, "VIEW");
  88.         for (i=0;i<tableArray.length;i++) {
  89.           treeControl1.addChild(view, new Pair(imageView, tableArray[i]));
  90.         }
  91.       }
  92.       catch(DataSetException de) {System.out.println(de);}
  93.       catch(java.sql.SQLException se) {System.out.println(se);}
  94.       catch(Exception e) {System.out.println(e);}
  95.     }
  96.   }
  97.  
  98.   private String[] getTables(Database d, String type) throws Exception {
  99.     DatabaseMetaData mData;
  100.     String[] tableArray = {"",""};
  101.     int nTables = 0;
  102.     int nColumns = 0;
  103.     int i = 0;
  104.     String x[] = {type};
  105.  
  106.     mData = d.getMetaData();
  107.     ResultSet resultSet = mData.getTables( null, null, null, x);
  108.     while(resultSet.next())
  109.       nTables++;
  110.  
  111.     resultSet = mData.getTables( null, null, null, x);
  112.     ResultSetMetaData rsmd = resultSet.getMetaData();
  113.     nColumns = rsmd.getColumnCount();
  114.  
  115.     tableArray = new String[nTables];
  116.     while(resultSet.next()) {
  117.       tableArray[i] = resultSet.getString(3);
  118.       i++;
  119.     }
  120.     return tableArray;
  121.   }
  122.  
  123.   /***
  124.    * Expand and contract the tree with a single click
  125.    */
  126.   void treeControl1_mouseClicked(MouseEvent e) {
  127.     GraphLocation[] selections = treeControl1.getSelection().getAll();
  128.     if (e.getClickCount() == 2) {
  129.       if (selections[0].hasChildren() == borland.jbcl.util.TriState.YES) {
  130.         if (treeControl1.isExpanded(selections[0]))
  131.           treeControl1.collapse(selections[0]);
  132.         else
  133.           treeControl1.expand(selections[0]);
  134.       }
  135.     }
  136.   }
  137.  
  138.   /***
  139.    * process the action event here for table name change
  140.    * use can use the ActionPerformed and check the following syntax:
  141.    * Event e
  142.    * if ( e.getActionCommand() == "TableSelectionChanged") {
  143.    *   // Your code here
  144.    * }
  145.    */
  146.   void treeControl1_selectionChanged(GraphSelectionEvent e) {
  147.     GraphLocation[] selections = treeControl1.getSelection().getAll();
  148.     if (selections[0].hasChildren() == borland.jbcl.util.TriState.NO) {
  149.       this.table = ((Pair) treeControl1.get(selections[0])).second.toString();
  150.       processActionEvent(new ActionEvent(this,ActionEvent.ACTION_PERFORMED, TABLE_SELECTION_EVENT));
  151.     }
  152.   }
  153. }
  154.  
  155. class DBBrowserBean_treeControl1_mouseAdapter extends java.awt.event.MouseAdapter {
  156.   DBBrowserBean adaptee;
  157.  
  158.   DBBrowserBean_treeControl1_mouseAdapter(DBBrowserBean adaptee) {
  159.     this.adaptee = adaptee;
  160.   }
  161.  
  162.   public void mouseClicked(MouseEvent e) {
  163.     adaptee.treeControl1_mouseClicked(e);
  164.   }
  165. }
  166.  
  167. class DBBrowserBean_treeControl1_selectionAdapter extends borland.jbcl.model.GraphSelectionAdapter {
  168.   DBBrowserBean adaptee;
  169.  
  170.   DBBrowserBean_treeControl1_selectionAdapter(DBBrowserBean adaptee) {
  171.     this.adaptee = adaptee;
  172.   }
  173.  
  174.   public void selectionChanged(GraphSelectionEvent e) {
  175.     adaptee.treeControl1_selectionChanged(e);
  176.   }
  177. }
  178.  
  179.