home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 39 / IOPROG_39.ISO / SOFT / sdkjava40.exe / data1.cab / fg_Samples / Samples / DirectX / dplay / SpDlg.java < prev   
Encoding:
Java Source  |  2000-05-04  |  3.3 KB  |  162 lines

  1. // 
  2. //  (C) Copyright 1995 - 1999 Microsoft Corporation.  All rights reserved.
  3. // 
  4. //  File:               SpDlg.java
  5. //  Description:        Lets the user pick a service provider
  6. //
  7.  
  8. import com.ms.com.*;
  9. import com.ms.directX.*;
  10. import com.ms.ui.resource.*;
  11. import com.ms.ui.*;
  12. import java.awt.*;
  13.  
  14. class SpInfo {
  15.     _Guid g;
  16.     String name;
  17. }
  18.  
  19.  
  20. class SpDlg extends Panel implements IEnumServiceProvidersCallback{
  21.  
  22.     Label            m_ServiceProviderLabel;
  23.     Choice            m_ServiceProviderList;
  24.     Button            m_OKButton;    
  25.     int                m_nProviders;
  26.     DpChat            m_ChatInfo;
  27.     SpInfo            m_spArray[]= new SpInfo[100];
  28.     
  29.     public    boolean    done=false;
  30.  
  31.     //=-----------------------------
  32.     // SpDlg
  33.     //=-----------------------------    
  34.     public SpDlg(DpChat chatinfo){
  35.         m_ChatInfo=chatinfo;
  36.         initUI();
  37.         enumSP();
  38.     }
  39.     
  40.     //=-----------------------------
  41.     // cleanup
  42.     //=-----------------------------        
  43.     void cleanup(){
  44.         m_ChatInfo=null;
  45.         System.gc();
  46.     }
  47.  
  48.     //=-----------------------------
  49.     // DoWait
  50.     //=-----------------------------        
  51.     synchronized int DoWait(){
  52.         try {
  53.             this.wait();
  54.         }
  55.         catch (InterruptedException e){
  56.             return -1;
  57.         }
  58.         return 0;
  59.     }
  60.  
  61.     //=-----------------------------
  62.     // EndWait
  63.     //=-----------------------------        
  64.     synchronized void EndWait(){
  65.         this.notify();
  66.     }
  67.  
  68.     //=-----------------------------
  69.     // reset
  70.     //=-----------------------------    
  71.     void reset(){
  72.         done=false;
  73.         m_OKButton.setEnabled(true);
  74.     }
  75.     //=-----------------------------
  76.     // enumSp
  77.     //=-----------------------------    
  78.     int enumSP(){        
  79.         //enum Service Providers        
  80.         m_nProviders=0;
  81.         m_ChatInfo.m_DirectPlay2.enumServiceProviders(this,null);                
  82.         return m_nProviders; 
  83.     }
  84.  
  85.  
  86.  
  87.     //=-----------------------------
  88.     // initUI
  89.     //=-----------------------------    
  90.     void initUI (){
  91.  
  92.         //create UI objects
  93.         m_ServiceProviderLabel = new Label("Select Service Provider");
  94.         m_ServiceProviderList = new Choice();
  95.         m_OKButton = new Button("Next");
  96.     
  97.         
  98.         //add components
  99.         add (m_ServiceProviderLabel);
  100.         add (m_ServiceProviderList);
  101.         add (m_OKButton);
  102.  
  103.  
  104.         //setBounds
  105.         setLayout(null);
  106.         
  107.         m_ServiceProviderLabel.setBounds(20,0,260,20);
  108.         m_ServiceProviderList.setBounds(20,25,260,30);        
  109.         m_OKButton.setBounds(420,25,50,30);
  110.         
  111.  
  112.     }
  113.  
  114.     //=-----------------------------
  115.     // callbackEnumServiceProviders
  116.     //=-----------------------------    
  117.     public void callbackEnumServiceProviders(_Guid spGuid, String spName,
  118.         int majorVer, int minorVer, IUnknown context)    
  119.     {        
  120.         
  121.         SpInfo spinfo = new SpInfo();
  122.         spinfo.name=spName;
  123.         spinfo.g=spGuid;
  124.         m_spArray[m_nProviders++]=spinfo;
  125.  
  126.         m_ServiceProviderList.add(spName);
  127.     
  128.         
  129.     }
  130.  
  131.  
  132.     //=-----------------------------
  133.     // handleEvent
  134.     //=-----------------------------    
  135.     public boolean handleEvent(Event evt){
  136.         
  137.  
  138.         if (evt.target==m_OKButton){
  139.         
  140.             if (evt.id==Event.ACTION_EVENT){
  141.                 int i=m_ServiceProviderList.getSelectedIndex();
  142.                 if (i>=0){
  143.                     SpInfo spinfo=m_spArray[i];
  144.                     m_ChatInfo.m_ServiceProviderGuid=spinfo.g;
  145.                     m_OKButton.setEnabled(false);
  146.                     done=true;
  147.                     EndWait();
  148.                     return true;
  149.                 }
  150.                 else{
  151.                     m_ServiceProviderLabel.setText("You Must Select Service Provider!");
  152.                     return true;    
  153.                 }
  154.             
  155.  
  156.             }
  157.         }        
  158.         return super.handleEvent(evt);
  159.     }
  160.  
  161. }
  162.