home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / prosrc.bin / MutableCollectionItem.java < prev    next >
Encoding:
Java Source  |  1998-03-18  |  4.5 KB  |  159 lines

  1. package symantec.itools.db.beans.binding;
  2. import java.awt.Dimension;
  3. import java.util.Vector;
  4. import symantec.itools.db.beans.binding.databus.*;
  5. public class MutableCollectionItem implements MutableCollectionAccess,DataItemChangedListener,DataItemAddition
  6. {
  7.     private String Name;
  8.     public Vector dataItems=new Vector();
  9.     private Vector DIChangedListeners =new Vector();
  10.     private DataItemCursor Cursor=new DataItemCursor();
  11.     private int StatusFlag=0;
  12.     public MutableCollectionItem()
  13.     {
  14.     }
  15.     public MutableCollectionItem(String name)
  16.     {
  17.         this();
  18.         Name=name;
  19.     }
  20.     /**
  21.      * Sets the Name of the Data Input
  22.      * Format: TableName@column1,column2%numberOfRow
  23.      * @param name.     The name of the Data Input.
  24.      */
  25.     public void setName(String name)
  26.     {
  27.         Name=name;
  28.     }
  29.  
  30.  
  31.      /**
  32.      * Gets the Name of the Data Input
  33.      * Format: TableName@column1,column2%numberOfRow
  34.      * @return String.     The name of the Data Input.
  35.      */
  36.     public String getName()
  37.     {
  38.         return(Name);
  39.     }
  40.     public void addDataItem(DataItem item)
  41.     {
  42.         dataItems.addElement(item);
  43.        notifySizeChanged();
  44.     }
  45.  
  46.     public void insertBeforeCursor(DataCursor where, DataItem item)
  47.     {
  48.         DataItem DI=where.getCurrentItem();
  49.         int position=dataItems.indexOf(DI);
  50.         if (position>-1){
  51.             try{
  52.                 dataItems.insertElementAt(item,position);
  53.                 ((DataItem)item).addDataItemChangedListener((DataItemChangedListener)this);
  54.             }
  55.             catch( ArrayIndexOutOfBoundsException e){}
  56.         }
  57.         notifySizeChanged();
  58.  
  59.     }
  60.  
  61.     public void insertAfterCursor(DataCursor where, DataItem item)
  62.     {
  63.         DataItem DI=where.getCurrentItem();
  64.         int position=dataItems.indexOf(DI);
  65.         if (position>-1){
  66.             try{
  67.                 dataItems.insertElementAt(item,position+1);
  68.                 ((DataItem)item).addDataItemChangedListener((DataItemChangedListener)this);
  69.             }
  70.             catch( ArrayIndexOutOfBoundsException e){}
  71.         }
  72.         notifySizeChanged();
  73.     }
  74.  
  75.     public void removeDataItem(DataItem item)
  76.     {
  77.          dataItems.removeElement(item);
  78.            notifySizeChanged();
  79.     }
  80.  
  81.     public void removeAtCursor(DataCursor cursor)
  82.     {
  83.         DataItem DI=cursor.getCurrentItem();
  84.         dataItems.removeElement(DI);
  85.           notifySizeChanged();
  86.     }
  87.  
  88.     public DataCursor getCursor()
  89.     {
  90.         return new DataItemCursor(dataItems);
  91.     }
  92.  
  93.     public void addDataItemChangedListener(DataItemChangedListener dcl){
  94.         DIChangedListeners.addElement(dcl);
  95.         }
  96.     public void removeDataItemChangedListener(DataItemChangedListener dcl){
  97.         DIChangedListeners.removeElement(dcl);
  98.         }
  99.     public void notifyDataItemChanged(DataItemChangedEvent event)
  100.     {
  101.             Vector l;
  102.             try
  103.                 {
  104.                 DataItemChangedEvent dce=new DataItemChangedEvent(1,this);
  105.                 synchronized(this)
  106.                 {
  107.                     l=(Vector)DIChangedListeners.clone();
  108.                 }
  109.                 for(int i=0;i<l.size();i++)
  110.                 {
  111.                    ((DataItemChangedListener)l.elementAt(i)).notifyDataItemChanged(dce);
  112.                 }
  113.             }
  114.             catch(InvalidType e){System.out.println("invalidtype");}
  115.           
  116.             cleanUp();
  117.  
  118.     }
  119.     public void cleanUp()
  120.     {
  121.         for(int i=0;i<dataItems.size();i++)
  122.         {
  123.             Object DI=dataItems.elementAt(i);
  124.             if(DI instanceof DataItemAddition && ((DataItemAddition)DI).getStatusFlag()!=DataItemAddition.EXISTING)
  125.             ((DataItemAddition)DI).cleanUp();
  126.         }
  127.         setStatusFlag(DataItemAddition.EXISTING);
  128.        
  129.     }
  130.     public void setStatusFlag(int i)
  131.     {
  132.         StatusFlag=i;
  133.     }
  134.     public int getStatusFlag()
  135.     {
  136.         return StatusFlag;
  137.     }
  138.  
  139.     public void notifySizeChanged()
  140.         {
  141.             Vector l;
  142.             try
  143.             {
  144.             DataItemChangedEvent dce=new DataItemChangedEvent(0,this);
  145.             synchronized(this)
  146.             {
  147.                 l=(Vector)DIChangedListeners.clone();
  148.             }
  149.             for(int i=0;i<l.size();i++)
  150.             {
  151.                ((DataItemChangedListener)l.elementAt(i)).notifyDataItemChanged(dce);
  152.             }
  153.             }
  154.             catch(InvalidType e){System.out.println("invalidtype");}
  155.         }
  156.     
  157.         
  158.     
  159. }