home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / prosrc.bin / Grid.java < prev    next >
Text File  |  1998-03-18  |  23KB  |  772 lines

  1. /*
  2.  * @(#Grid.java
  3.  *
  4.  * Copyright (c) 1997 Symantec Corporation. All Rights Reserved.
  5.  *
  6.  */
  7.  
  8. package symantec.itools.db.awt;
  9.  
  10. import java.awt.*;
  11. import java.util.*;
  12.  
  13. /**
  14.  * A component for displaying multiple data records.
  15.  * Provides an array, or spreadsheet-like display, of specified data.
  16.  * <p>
  17.  * You can also specify predefined buttons that will appear at the bottom of the grid.
  18.  * You can adjust column widths at runtime.
  19.  * You can customize column heading text in code.
  20. */
  21. public class Grid extends TableView {
  22.  
  23.     // mediator stuff
  24.  
  25.     /**
  26.      * The mediator used to bind this component with the data source.
  27.      */
  28.     public symantec.itools.db.beans.binding.Mediator m_Mediator;
  29.     private String[] m_GetMethods={"getjdbcDataSource()"};
  30.     private String[] m_SetMethods={"setjdbcDataSource(Value)"};
  31.  
  32.     Object m_DataSource = null;
  33.     symantec.itools.db.beans.binding.QueryNavigator jdbcDataSource = null;
  34.  
  35.     //BS: added rvmd variable to store metadata when table driven off relationView
  36.     symantec.itools.db.pro.RelationViewMetaData rvmd;
  37.     symantec.itools.db.pro.RelationView relation,
  38.                                         master;
  39.  
  40.  
  41.     /**
  42.      * Constructs a default Grid.
  43.      */
  44.     public Grid(){
  45.         super();
  46.     }
  47.  
  48.     /**
  49.      * Constructs a Grid with the specified number of columns.
  50.      * @param cols the requested number of columns
  51.      */
  52.     public Grid(int cols){
  53.         super(cols);
  54.         setColumnsNumber(cols);
  55.     }
  56.  
  57.     /**
  58.      * Constructs a Grid with the preferred height based on
  59.      * specified number of rows.
  60.      * @param rows the number of rows to show
  61.      */
  62.     public Grid(long rows){
  63.         super(rows);
  64.         setRowsNumber((int)rows);
  65.     }
  66.  
  67.     /**
  68.      * Constructs a Grid with the specified number of columns and
  69.      * showing the specified number of rows.
  70.      * @param cols the requested number of columns
  71.      * @param rows the number of rows to show
  72.      */
  73.     public Grid(long rows, int cols){
  74.         super(rows,cols);
  75.         setColumnsNumber(cols);
  76.         setRowsNumber((int)rows);
  77.     }
  78.  
  79.     /**
  80.      * Constructs a Grid with the specified number of columns and background color.
  81.      * @param cols the requested number of columns
  82.      * @param bg the requested background color
  83.      */
  84.     public Grid(int cols, Color bg) {
  85.         super(cols,bg);
  86.         setColumnsNumber(cols);
  87.     }
  88.  
  89.     //BS: added constructor for grid driven through dbAware source
  90.     // (DbaDataStore)
  91.  
  92.     /**
  93.      * Constructs a new Grid using the specified RelationView.
  94.      * The Grid will automatically setup the columns using meta
  95.      * data from the RelationView.
  96.      * @param relView the RelationView on which to drive the Grid
  97.      * @exception java.sql.SQLException when the Grid cannot
  98.      *          be successfully setup due to a database problem
  99.      */
  100.     public Grid(symantec.itools.db.pro.RelationView relView)
  101.         throws java.sql.SQLException
  102.     {
  103.         this(relView, null,0);
  104.     }
  105.  
  106.     /**
  107.      * Constructs a new Grid using the specified RelationView.
  108.      * The Grid will automatically setup the columns using meta
  109.      * data from the RelationView.
  110.      * The Grid will have a preferred width wide enough to show
  111.      * the requested number of columns.
  112.      * @param relView the RelationView on which to drive the Grid
  113.      * @param coltoshow the number of columns to show in the grid
  114.      * @exception java.sql.SQLException when the Grid cannot
  115.      *          be successfully setup due to a database problem
  116.      */
  117.     public Grid(symantec.itools.db.pro.RelationView relView,int coltoshow)
  118.         throws java.sql.SQLException
  119.     {
  120.  
  121.         this(relView, null, coltoshow);
  122.  
  123.  
  124.     }
  125.  
  126.  
  127.     /**
  128.      * Only here to support old projects.
  129.      * The Grid will have a preferred width wide enough to show
  130.      * the requested number of columns.
  131.      * @param relView the detail view to attach to the Grid
  132.      * @param masterView the master view
  133.      * @param coltoshow the number of columns to show in the grid
  134.      * @exception java.sql.SQLException when the Grid cannot
  135.      *          be successfully setup due to a database problem
  136.      */
  137.     public Grid(symantec.itools.db.pro.RelationView relView,
  138.                 symantec.itools.db.pro.RelationView masterView,
  139.                 int coltoshow)
  140.         throws java.sql.SQLException
  141.     {
  142.  
  143.         super();
  144.  
  145.         StringBuffer buffer = new StringBuffer(relView.getName());
  146.  
  147.         buffer.append("@");
  148.  
  149.         if (coltoshow == 0) {
  150.             buffer.append("All");
  151.         }
  152.         else {
  153.             buffer.append("1");
  154.             for (int index = 1; index < coltoshow; index++) {
  155.                 buffer.append(",");
  156.                 buffer.append(String.valueOf(index+1));
  157.             }
  158.         }
  159.  
  160.         setDataBinding(buffer.toString());
  161.  
  162.         setColumnsNumber(coltoshow);
  163.     }
  164.  
  165.     /**
  166.      * Handles redrawing of this component on the screen.
  167.      * <p>
  168.      * This is a standard Java AWT method which gets called by the Java AWT
  169.      * (repaint()) to handle repainting this component on the screen.
  170.      * The graphics context clipping region is set to the bounding rectangle
  171.      * of this component and its [0,0] coordinate is this component's top-left corner.
  172.      * <p>
  173.      * Typically this method paints the background color to clear the component's
  174.      * drawing space, sets graphics context to be the foreground color, and
  175.      * then calls paint() to draw the component.
  176.      * <p>
  177.      * It is overridden here to prevent the flicker associated with the standard
  178.      * update() method's repainting of the background before painting the
  179.      * component itself.
  180.      */
  181.     public void update(Graphics g) {
  182.         paint(g);
  183.     }
  184.  
  185.  
  186.     /**
  187.      * Paints this component using the given graphics context.
  188.      * <p>
  189.      * This is a standard Java AWT method which typically gets called by the
  190.      * AWT to handle painting this component. It paints this component using
  191.      * the given graphics context.
  192.      * The graphics context clipping region is set to the bounding rectangle
  193.      * of this component and its [0,0] coordinate is this component's
  194.      * top-left corner.
  195.      */
  196.     public void paint(Graphics g) {
  197.  
  198.         if(java.beans.Beans.isDesignTime())
  199.         {
  200.             Dimension d = size();
  201.  
  202.             for (int colStart = 0, colNum = 1; colStart < d.width; colStart += 30, colNum++)
  203.             {
  204.                 Color oldColor = g.getColor();
  205.                 g.setColor(Color.lightGray);
  206.                 g.fillRect(colStart, 0, 30, 10);
  207.                 g.setColor(Color.white);
  208.                 g.drawLine(colStart + 1, 2, colStart + 29, 2);
  209.                 g.drawLine(colStart + 2, 1, colStart + 2, 9);
  210.                 g.setColor(oldColor);
  211.  
  212.                 g.drawLine(colStart, 0, colStart, d.height);
  213.             }
  214.             for (int rowStart = 0, rowNum = 1; rowStart < d.height; rowStart += 10, rowNum++)
  215.             {
  216.                 Color oldColor = g.getColor();
  217.                 g.setColor(Color.lightGray);
  218.                 g.fillRect(0, rowStart, 30, 10);
  219.                 g.setColor(Color.white);
  220.                 g.drawLine(1, rowStart + 2, 29, rowStart + 2);
  221.                 g.drawLine(2, rowStart+1, 2, rowStart + 9);
  222.                 g.setColor(oldColor);
  223.                 g.drawLine( 0, rowStart, d.width, rowStart);
  224.             }
  225.  
  226.             g.drawRect(0, 0,d.width - 1, d.height - 1);
  227.             invalidate();
  228.             //showScrollbars();
  229.         }else{
  230.             super.paint(g);
  231.         }
  232.     }
  233.  
  234.     //BS: added for backward compatibility
  235.     /**
  236.      * Returns the current number of rows.
  237.      *
  238.      * @see #getNumberOfCols
  239.      */
  240.     public int getNumberOfRows() {
  241.       /*  if (java.beans.Beans.isDesignTime()) {
  242.             return m_NumberOfRows;
  243.         }*/
  244.         return rows();
  245.     }
  246.  
  247.     /**
  248.      * Returns the current number of columns.
  249.      *
  250.      * @see #getNumberOfRows
  251.      */
  252.     public int getNumberOfCols() {
  253.       /*  if (java.beans.Beans.isDesignTime()) {
  254.             return m_NumberOfColumns;
  255.         }*/
  256.         return cols();
  257.     }
  258.  
  259.     //BS: added for backward compatibility
  260.     /**
  261.      * Sets the width of a column.
  262.      * @param col the one-relative column index
  263.      * @param rightSide the new width of the column, in pixels
  264.      */
  265.     public void resizeColumn(int col, int rightSide){
  266.         setColumnSize(col, rightSide);
  267.     }
  268.  
  269.     /**
  270.      * Sets the RelationView that this component is bound with.
  271.      * @param relView the RelationView to bind with
  272.      * @see #getRelationView
  273.      * @exception java.sql.SQLException when a database error occurs
  274.      */
  275.     public void setRelationView(symantec.itools.db.pro.RelationView relView)
  276.         throws java.sql.SQLException{
  277.  
  278.         name = relView.getName();
  279.         relation = relView;
  280.  
  281.         DbaDataStore    store = new DbaDataStore(relView, null);
  282.  
  283.         store.setColtoShow(0);
  284.  
  285.         DataSource ds = new DbDataSource(this, store, store, store);
  286.  
  287.         setDataSource(ds,1);
  288.  
  289.     }
  290.  
  291.     /**
  292.      * Gets the RelationView that this component is bound with.
  293.      * @return the RelationView currently bound with
  294.      * @see #setRelationView
  295.      */
  296.     public symantec.itools.db.pro.RelationView getRelationView() {
  297.         return relation;
  298.     }
  299.  
  300.     /**
  301.      * Initializes this Grid to the specified size.
  302.      * @param rows the number of rows
  303.      * @param cols the number of columns
  304.      * @exception java.sql.SQLException when a database error occurs
  305.      */
  306.     public void setStaticSize(int rows, int cols)
  307.         throws java.sql.SQLException{
  308.  
  309.  
  310.         DataSource ds = new DefaultDataSource(this);
  311.  
  312.         setDataSource(ds,1);
  313.  
  314.         createColumns(cols);
  315.  
  316.         //setBackground(Color.white);
  317.  
  318.         try{
  319.             for( int i=0; i < rows; i++){
  320.                 appendRow();
  321.             }
  322.  
  323.             for(int i=0; i< cols;i++){
  324.                 setHeading( "Column:"+(i+1), i+1, 10);
  325.             }
  326.         } catch( Exception e){
  327.             System.out.println( "EXCEPTION " + e);
  328.         }
  329.  
  330.         preferredRowCount = (int)rows;
  331.  
  332.     }
  333.  
  334.     private int numOfRows = 0;
  335.     private int numOfCols = 0;
  336.  
  337.     /**
  338.      * Initializes this Grid to have the specified number of columns.
  339.      * @param cols the number of columns
  340.      * @see #getColumnsNumber
  341.      */
  342.     public void setColumnsNumber(int cols){
  343.  
  344.         if(java.beans.Beans.isDesignTime()){
  345.             numOfCols = cols;
  346.         }else{
  347.  
  348.             DataSource ds = new DefaultDataSource(this);
  349.             setDataSource(ds,1);
  350.             createColumns(cols);
  351.  
  352.             //were the row number set before ?
  353.             //build them if yes
  354.  
  355.             if(numOfRows > 0)
  356.                 setRowsNumber(numOfRows);
  357.  
  358.         }
  359.     }
  360.  
  361.     /**
  362.      * Gets the number of columns this grid has.
  363.      * @return the number of columns
  364.      * @see #setColumnsNumber
  365.      */
  366.     public int getColumnsNumber(){
  367.         if(java.beans.Beans.isDesignTime())
  368.             return numOfCols;
  369.         else
  370.             return cols();
  371.     }
  372.  
  373.     /**
  374.      * Initializes this Grid to have the specified number of rows.
  375.      * @param rows the number of rows
  376.      * @see #getRowsNumber
  377.      */
  378.     public void setRowsNumber(int rows){
  379.  
  380.         if(java.beans.Beans.isDesignTime()){
  381.             numOfRows = rows;
  382.         }else{
  383.             int cols = cols();
  384.             if(cols > 0){
  385.                 try{
  386.                     for( int i=0; i < rows; i++){
  387.                         appendRow();
  388.                     }
  389.  
  390.                     for(int i=0; i< cols;i++){
  391.                         setHeading( "Column:"+(i+1), i+1, 10);
  392.                     }
  393.                 } catch( Exception e){
  394.                     System.out.println( "EXCEPTION " + e);
  395.                 }
  396.  
  397.                 preferredRowCount = (int)rows;
  398.             }else{
  399.                 numOfRows = rows;
  400.             }
  401.         }
  402.     }
  403.  
  404.     /**
  405.      * Gets the number of rows this Grid has.
  406.      * @return the number of rows
  407.      * @see #setRowsNumber
  408.      */
  409.     public int getRowsNumber(){
  410.         if(java.beans.Beans.isDesignTime())
  411.             return numOfRows;
  412.         else
  413.             return rows();
  414.     }
  415.  
  416.     /**
  417.      * Sets whether the Grid has this button.
  418.      * @param on <code>true</code> if the Grid has the button,
  419.      * <code>false</code> otherwise
  420.      * @see #getAppendButton
  421.      */
  422.     public void setAppendButton(boolean on){
  423.         if(on)
  424.             addAppendButton();
  425.         else
  426.             removeAppendButton();
  427.     }
  428.  
  429.     /**
  430.      * Gets whether the Grid has this button.
  431.      * @return <code>true</code> if the Grid has the button,
  432.      * <code>false</code> otherwise
  433.      * @see #setAppendButton
  434.      */
  435.     public boolean getAppendButton(){
  436.         return getHasAppendButton();
  437.     }
  438.  
  439.     /**
  440.      * Sets whether the Grid has this button.
  441.      * @param on <code>true</code> if the Grid has the button,
  442.      * <code>false</code> otherwise
  443.      * @see #getInsertButton
  444.      */
  445.     public void setInsertButton(boolean on){
  446.         if(on)
  447.             addInsertButton();
  448.         else
  449.             removeInsertButton();
  450.     }
  451.  
  452.     /**
  453.      * Gets whether the Grid has this button.
  454.      * @return <code>true</code> if the Grid has the button,
  455.      * <code>false</code> otherwise
  456.      * @see #setInsertButton
  457.      */
  458.     public boolean getInsertButton(){
  459.         return getHasInsertButton();
  460.     }
  461.  
  462.     /**
  463.      * Sets whether the Grid has this button.
  464.      * @param on <code>true</code> if the Grid has the button,
  465.      * <code>false</code> otherwise
  466.      * @see #getGotoButton
  467.      */
  468.     public void setGotoButton(boolean on){
  469.         if(on)
  470.             addGotoButton();
  471.         else
  472.             removeGotoButton();
  473.     }
  474.  
  475.     /**
  476.      * Gets whether the Grid has this button.
  477.      * @return <code>true</code> if the Grid has the button,
  478.      * <code>false</code> otherwise
  479.      * @see #setGotoButton
  480.      */
  481.     public boolean getGotoButton(){
  482.         return getHasGotoButton();
  483.     }
  484.  
  485.     /**
  486.      * Sets whether the Grid has this button.
  487.      * @param on <code>true</code> if the Grid has the button,
  488.      * <code>false</code> otherwise
  489.      * @see #getUndoButton
  490.      */
  491.     public void setUndoButton(boolean on){
  492.         if(on)
  493.             addUndoButton();
  494.         else
  495.             removeUndoButton();
  496.     }
  497.  
  498.     /**
  499.      * Gets whether the Grid has this button.
  500.      * @return <code>true</code> if the Grid has the button,
  501.      * <code>false</code> otherwise
  502.      * @see #setUndoButton
  503.      */
  504.     public boolean getUndoButton(){
  505.         return getHasUndoButton();
  506.     }
  507.  
  508.     /**
  509.      * Sets whether the Grid has this button.
  510.      * @param on <code>true</code> if the Grid has the button,
  511.      * <code>false</code> otherwise
  512.      * @see #getRestartButton
  513.      */
  514.     public void setRestartButton(boolean on){
  515.         if(on)
  516.             addRestartButton();
  517.         else
  518.             removeRestartButton();
  519.     }
  520.  
  521.     /**
  522.      * Gets whether the Grid has this button.
  523.      * @return <code>true</code> if the Grid has the button,
  524.      * <code>false</code> otherwise
  525.      * @see #setRestartButton
  526.      */
  527.     public boolean getRestartButton(){
  528.         return getHasRestartButton();
  529.     }
  530.  
  531.     /**
  532.      * Sets whether the Grid has this button.
  533.      * @param on <code>true</code> if the Grid has the button,
  534.      * <code>false</code> otherwise
  535.      * @see #getDeleteButton
  536.      */
  537.     public void setDeleteButton(boolean on){
  538.         if(on)
  539.             addDeleteButton();
  540.         else
  541.             removeDeleteButton();
  542.     }
  543.  
  544.     /**
  545.      * Gets whether the Grid has this button.
  546.      * @return <code>true</code> if the Grid has the button,
  547.      * <code>false</code> otherwise
  548.      * @see #setDeleteButton
  549.      */
  550.     public boolean getDeleteButton(){
  551.         return getHasDeleteButton();
  552.     }
  553.  
  554.     /**
  555.      * Sets whether the Grid has this button.
  556.      * @param on <code>true</code> if the Grid has the button,
  557.      * <code>false</code> otherwise
  558.      * @see #getUndeleteButton
  559.      */
  560.     public void setUndeleteButton(boolean on){
  561.         if(on)
  562.             addUndeleteButton();
  563.         else
  564.             removeUndeleteButton();
  565.     }
  566.  
  567.     /**
  568.      * Gets whether the Grid has this button.
  569.      * @return <code>true</code> if the Grid has the button,
  570.      * <code>false</code> otherwise
  571.      * @see #setUndeleteButton
  572.      */
  573.     public boolean getUndeleteButton(){
  574.         return getHasUndeleteButton();
  575.     }
  576.  
  577.     /**
  578.      * Sets whether the Grid has this button.
  579.      * @param on <code>true</code> if the Grid has the button,
  580.      * <code>false</code> otherwise
  581.      * @see #getSaveButton
  582.      */
  583.     public void setSaveButton(boolean on){
  584.         if(on)
  585.             addSaveButton();
  586.         else
  587.             removeSaveButton();
  588.     }
  589.  
  590.     /**
  591.      * Gets whether the Grid has this button.
  592.      * @return <code>true</code> if the Grid has the button,
  593.      * <code>false</code> otherwise
  594.      * @see #setSaveButton
  595.      */
  596.     public boolean getSaveButton(){
  597.         return getHasSaveButton();
  598.     }
  599.  
  600.     /**
  601.      * Sets the background color of this Grid's toolbar.
  602.      * @param c the background color
  603.      * @see #getToolbarBackground
  604.      */
  605.     public void setToolbarBackground(Color c){
  606.         super.setToolbarBackground(c);
  607.     }
  608.  
  609.     /**
  610.      * Gets the background color of this Grid's toolbar.
  611.      * @return the background color
  612.      * @see #setToolbarBackground
  613.      */
  614.     public Color getToolbarBackground(){
  615.         return super.getToolbarBackground();
  616.     }
  617.  
  618.     /**
  619.      * Sets the column which does not scroll. All columns to the left of the
  620.      * locked column do not scroll, all of the columns to the right are
  621.      * scrollable.
  622.      * @param col the column to be locked, 0 if all columns should be scrollable
  623.      * @see #getLockedColumn
  624.      */
  625.     public void setLockedColumn(int col) {
  626.         super.setLockedColumn(col);
  627.     }
  628.  
  629.     /**
  630.      * Gets the column which does not scroll. All columns to the left of the
  631.      * locked column do not scroll, all of the columns to the right are
  632.      * scrollable.
  633.      * @return the locked column, 0 if all columns are scrollable
  634.      * @see #setLockedColumn
  635.      */
  636.     public int getLockedColumn() {
  637.         return super.getLockedColumn();
  638.     }
  639.  
  640.     /**
  641.      * Returns the preferred size of this component.
  642.      */
  643.     public Dimension getPreferredSize() {
  644.         if(java.beans.Beans.isDesignTime()){
  645.             return new Dimension(200,200);
  646.         }else{
  647.             return super.getPreferredSize();
  648.         }
  649.     }
  650.  
  651.     /* Mediator used method
  652.     */
  653.     /**
  654.      * Gets the QueryNavigator this component is using as a JDBC data source.
  655.      * @return the data source
  656.      * @see #setjdbcDataSource
  657.      */
  658.     public symantec.itools.db.beans.binding.QueryNavigator getjdbcDataSource(){
  659.         //System.out.println("in getjdbcDataSource");
  660.  
  661.         return jdbcDataSource;
  662.     }
  663.  
  664.  
  665.     /* Mediator used method
  666.     */
  667.     /**
  668.      * Sets the data source that this component should use.
  669.      * @param Value a QueryNavigator or RelationView data source
  670.      * @see #getjdbcDataSource
  671.      * @exception java.sql.SQLException when a database error occurs
  672.      */
  673.     public void setjdbcDataSource(Object Value)
  674.         throws java.sql.SQLException{
  675.  
  676.         //System.out.println("in setjdbcDataSource");
  677.         if(m_DataSource != Value){
  678.             m_DataSource = Value;
  679.  
  680.             if(m_DataSource instanceof symantec.itools.db.beans.binding.QueryNavigator){
  681.             //if(jdbcDataSource != ((symantec.itools.db.beans.binding.QueryNavigator) Value)){
  682.  
  683.             jdbcDataSource = (symantec.itools.db.beans.binding.QueryNavigator) Value;
  684.             JDBCDataSourceDataStore store = new JDBCDataSourceDataStore(jdbcDataSource);
  685.  
  686.             store.setColtoShow(0);
  687.             //this is tricky: we have a DataBinding containing the columns, etc.
  688.             //as set by the user, and a DataBinding as set by the setDataBinding method
  689.             //this is because we drive the Grid of the datasource directly
  690.             store.setColumnsNamesToShow(m_DataBinding);
  691.             DataSource ds = new DbDataSource(this, store, store, store);
  692.  
  693.             setDataSource(ds,1);
  694.             }else
  695.                 if(m_DataSource instanceof symantec.itools.db.pro.RelationView){
  696.                     relation = (symantec.itools.db.pro.RelationView) m_DataSource;
  697.                     name = relation.getName();
  698.  
  699.                     DbaDataStore    store = new DbaDataStore(relation, null);
  700.  
  701.                     store.setColtoShow(0);
  702.                     store.setColumnsNamesToShow(m_DataBinding);
  703.  
  704.                        DataSource ds = new DbDataSource(this, store, store, store);
  705.  
  706.                     setDataSource(ds,1);
  707.                 }
  708.         }
  709.  
  710.     }
  711.  
  712.     //String inputn = null;
  713.  
  714.     private void setupMediator(){
  715.         m_Mediator = new symantec.itools.db.beans.binding.Mediator();
  716.         m_Mediator.setOutput(this);
  717.         m_Mediator.setSetMethods(m_SetMethods);
  718.         m_Mediator.setGetMethods(m_GetMethods);
  719.     }
  720.  
  721.  
  722.     String m_DataBinding = "";
  723.  
  724.     /**
  725.      * Sets the name of the data item to bind this component to.
  726.      * @param name the data item name, like "MyTable@MyColumn"
  727.      * @see #getDataBinding
  728.      */
  729.     public void setDataBinding(String name){
  730.  
  731.         if(java.beans.Beans.isDesignTime()){
  732.             m_DataBinding = name;
  733.         }else{
  734.             m_DataBinding = name;
  735.  
  736.             setupMediator();
  737.  
  738.             StringTokenizer st = new StringTokenizer(name,"@");
  739.             String n = null;
  740.             if(st.hasMoreTokens()){
  741.                 n = st.nextToken();
  742.             }
  743.  
  744.             m_Mediator.setDataBinding(n +"@CurrentDataSource");
  745.  
  746.         //let mediator stuff initialize...
  747.             try{
  748.                 Thread.sleep(0);
  749.             }catch(InterruptedException e){}
  750.         }
  751.  
  752.  
  753.     }
  754.  
  755.     /**
  756.      * Gets the name of the data item this component is bound to.
  757.      * @returns the data item name, like "MyTable@MyColumn"
  758.      * @see #setDataBinding
  759.      */
  760.     public String getDataBinding()
  761.     {
  762.         if(java.beans.Beans.isDesignTime()){
  763.             return m_DataBinding;
  764.         }else{
  765.             return  m_Mediator.getDataBinding();
  766.         }
  767.  
  768.     }
  769.  
  770.  
  771. }
  772.