home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 39 / IOPROG_39.ISO / SOFT / sdkjava40.exe / data1.cab / fg_Samples / Samples / ActiveX / AFCBean / AFCBean.java < prev    next >
Encoding:
Java Source  |  2000-05-04  |  4.6 KB  |  195 lines

  1. //////////////////////////////////////////////////////////////////////////
  2. //
  3. //  AFCBean.java
  4. //
  5. //      This example demonstrates how one can write a 100% pure AFC
  6. //      object and host it inside of an ActiveX container. When used in
  7. //      development tool that has a design mode, when the PropertyViewer
  8. //      for the bean is displayed, it will use a UIComponent for a 
  9. //      customizer.
  10. //
  11. //  (C) Copyright 1995 - 1999 Microsoft Corporation.  All rights reserved.
  12. //
  13. //////////////////////////////////////////////////////////////////////////
  14.  
  15. import java.awt.*;
  16. import com.ms.ui.*;
  17. import com.ms.ui.event.*;
  18. import com.ms.beans.*;
  19. import java.util.Vector;
  20.  
  21. public class AFCBean extends AwtUIApplet
  22. {
  23.     AFCBeanImpl inner;                          // The inner UIApplet being hosted.
  24.  
  25.     public AFCBean()
  26.     {
  27.         super( new AFCBeanImpl());
  28.  
  29.         inner = (AFCBeanImpl) getUIApplet();
  30.     }
  31.  
  32.     public void newItem(String str)
  33.     {
  34.         inner.newItem(str);
  35.     }
  36.  
  37.     public String getSelecteditem()
  38.     {
  39.         return inner.getSelectedItem();
  40.     }
  41.  
  42.     public void setSelectedItem(int itemNumber)
  43.     {
  44.         inner.setSelectedItem(itemNumber);
  45.     }
  46.  
  47.     public void showPropertyViewer()
  48.     {
  49.         inner.showPropertyViewer();
  50.     }
  51.  
  52.     public void addAFCBeanListener(AFCBeanListener l)
  53.     {
  54.         inner.addAFCBeanListener(l);
  55.     }
  56.  
  57.     public void removeAFCBeanListener(AFCBeanListener l)
  58.     {
  59.         inner.removeAFCBeanListener(l);
  60.     }
  61. }
  62.  
  63. class AFCBeanImpl extends UIApplet
  64. {
  65.     private UIList              m_list;         // list of text strings
  66.     private UIScrollViewer      m_scroll;       // scroll viewer
  67.     private transient Vector    m_listeners;    // list of objects wanting events
  68.     private transient PropertyViewer pv = null; // The property viewer for this java object
  69.  
  70.     public AFCBeanImpl()
  71.     {
  72.         m_listeners = new Vector();
  73.         m_list      = new UIList();
  74.         m_scroll    = new UIScrollViewer(m_list);
  75.  
  76.         m_list.setBackground(Color.white);
  77.         m_scroll.setBackground(Color.lightGray);
  78.  
  79.         setLayout(new UIBorderLayout());
  80.         add(m_scroll, "center");
  81.     }
  82.  
  83.     /**
  84.      *  Remove the property viewer when the applet is 
  85.      *  is removed.
  86.      */
  87.     public void removeNotify()
  88.     {
  89.         if (pv != null)
  90.         {
  91.             pv.hide();
  92.             pv = null;
  93.         }
  94.  
  95.         super.removeNotify();
  96.     }
  97.  
  98.     /**
  99.      *  sets the color of the list.
  100.      */
  101.     public void setBackground(Color c)
  102.     {
  103.         super.setBackground(c);
  104.         m_list.setBackground(c);
  105.     }
  106.     
  107.     /**
  108.      *  this property will retrieve the current selected item.
  109.      */
  110.     public String getSelectedItem()
  111.     {
  112.         IUIComponent c = m_list.getSelectedItem();
  113.         return c.getName();
  114.     }
  115.  
  116.     /**
  117.      *  this property will set the selection based on the index.
  118.      */
  119.     public void setSelectedItem(int index)
  120.     {
  121.         m_list.setSelectedIndex(index);
  122.     }
  123.  
  124.     /**
  125.      *  adds a new item to the list.
  126.      */
  127.     public void newItem(String s)
  128.     {
  129.         m_list.add(s);
  130.     }
  131.  
  132.     /**
  133.      *  displays the propertyviewer for the object.
  134.      */
  135.     public void showPropertyViewer()
  136.     {
  137.         if( pv == null )
  138.         {
  139.             pv = new PropertyViewer(this);
  140.         }
  141.  
  142.         pv.show();
  143.     }
  144.  
  145.     /**
  146.      * Close the property viewer when the applet is destroyed
  147.      */
  148.     public void destroy()
  149.     {
  150.         if( pv != null )
  151.         {
  152.             pv.hide();
  153.         }
  154.     }
  155.  
  156.     /**
  157.      *  when a item is selected, an action is performed. the LIST_SELECT
  158.      *  event is parsed and an event called itemSelected is fired.
  159.      */
  160.      public boolean handleEvent(Event e)
  161.      {
  162.         if ((e.target instanceof UIList) && (e.id == Event.LIST_SELECT))
  163.         {
  164.             AFCBeanListener listener[];
  165.  
  166.             synchronized (m_listeners)
  167.             {
  168.                 listener = new AFCBeanListener[m_listeners.size()];
  169.                 m_listeners.copyInto(listener);
  170.             }
  171.  
  172.             for (int i=0; i<listener.length; i++)
  173.                 listener[i].itemSelected();
  174.         }
  175.  
  176.         return super.handleEvent(e);
  177.     }
  178.  
  179.     /**
  180.      *  add event sink.
  181.      */
  182.     public void addAFCBeanListener(AFCBeanListener listener)
  183.     {
  184.         m_listeners.addElement(listener);
  185.     }
  186.  
  187.     /**
  188.      *  remove event sink.
  189.      */
  190.     public void removeAFCBeanListener(AFCBeanListener listener)
  191.     {
  192.         m_listeners.removeElement(listener);
  193.     }
  194. }
  195.