home *** CD-ROM | disk | FTP | other *** search
/ An Introduction to Progr…l Basic 6.0 (4th Edition) / An Introduction to Programming using Visual Basic 6.0.iso / COMMON / TOOLS / VB / CABINETS / MSDAO350.CAB / icontrols / HTMLControl$DropTarget.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-01-08  |  4.0 KB  |  113 lines

  1. package icontrols;
  2.  
  3. import com.ms.com.ComSuccessException;
  4. import com.ms.wd.app.DataObject;
  5. import com.ms.wd.app.IDataObject;
  6. import com.ms.wd.core.ISite;
  7. import com.ms.wd.ole32.FORMATETC;
  8. import com.ms.wd.ole32.IEnumFORMATETC;
  9. import com.ms.wd.ole32.IOleDataObject;
  10. import com.ms.wd.ole32.IOleDropTarget;
  11. import com.ms.wd.ole32.POINTL;
  12. import com.ms.wd.ui.Control;
  13. import com.ms.wd.ui.DragEvent;
  14. import com.ms.wd.win32.POINT;
  15. import com.ms.wd.win32.Windows;
  16. import iforms.CodeManager;
  17.  
  18. class HTMLControl$DropTarget implements IOleDropTarget {
  19.    private IDataObject lastDataObject;
  20.    // $FF: synthetic field
  21.    final HTMLControl this$0;
  22.  
  23.    HTMLControl$DropTarget(HTMLControl this$0) {
  24.       (this.this$0 = this$0).getClass();
  25.       this.lastDataObject = null;
  26.    }
  27.  
  28.    public final void OleDragEnter(IOleDataObject pDataObj, int grfKeyState, POINTL pt, int[] pdwEffect) {
  29.       pdwEffect[0] = 3;
  30.    }
  31.  
  32.    public final void OleDragOver(int grfKeyState, POINTL pt, int[] pdwEffect) {
  33.       pdwEffect[0] = 3;
  34.    }
  35.  
  36.    public final void OleDrop(IOleDataObject pDataObj, int grfKeyState, POINTL pt, int[] pdwEffect) {
  37.       DataObject dobj = new DataObject(pDataObj);
  38.       IEnumFORMATETC[] fe = new IEnumFORMATETC[1];
  39.       dobj.OleEnumFormatEtc(1, fe);
  40.       if (fe[0] != null) {
  41.          FORMATETC fe1 = new FORMATETC();
  42.          int[] pInt = new int[1];
  43.  
  44.          while(true) {
  45.             try {
  46.                if (fe[0] != null) {
  47.                   fe[0].Next(1, fe1, pInt);
  48.                }
  49.  
  50.                if (pInt[0] == 0) {
  51.                   break;
  52.                }
  53.             } catch (ComSuccessException var14) {
  54.                break;
  55.             }
  56.  
  57.             System.out.println(fe1.cfFormat);
  58.             if (fe1.tymed == 4) {
  59.                byte[] data = this.this$0.getIStreamData(dobj, fe1);
  60.                ISite site = this.this$0.getSite();
  61.  
  62.                Object obj;
  63.                try {
  64.                   if (site != null) {
  65.                      CodeManager cm = (CodeManager)site.getContainer();
  66.                      obj = cm.createComponent(this.this$0.extractNameFromData(data), true);
  67.                   } else {
  68.                      obj = Class.forName(this.this$0.extractNameFromData(data)).newInstance();
  69.                   }
  70.                } catch (Exception var13) {
  71.                   pdwEffect[0] = 0;
  72.                   this.lastDataObject = null;
  73.                   return;
  74.                }
  75.  
  76.                if (obj != null && obj instanceof Control) {
  77.                   POINT pt2 = new POINT();
  78.                   pt2.x = pt.x;
  79.                   pt2.y = pt.y;
  80.                   Windows.ScreenToClient(this.this$0.getHandle(), pt2);
  81.                   ((Control)obj).setLocation(pt2.x, pt2.y);
  82.                   this.this$0.add((Control)obj);
  83.                }
  84.             }
  85.          }
  86.       }
  87.  
  88.       pdwEffect[0] = 3;
  89.       this.lastDataObject = null;
  90.    }
  91.  
  92.    private final DragEvent createDragEvent(IOleDataObject pDataObj, int grfKeyState, POINTL pt, int[] pdwEffect) {
  93.       IDataObject data = null;
  94.       Object var8;
  95.       if (pDataObj == null) {
  96.          var8 = this.lastDataObject;
  97.       } else {
  98.          try {
  99.             var8 = (IDataObject)pDataObj;
  100.          } catch (Exception var7) {
  101.             var8 = new DataObject(pDataObj);
  102.          }
  103.       }
  104.  
  105.       DragEvent event = new DragEvent((IDataObject)var8, grfKeyState, pt.x, pt.y, pdwEffect[0]);
  106.       this.lastDataObject = (IDataObject)var8;
  107.       return event;
  108.    }
  109.  
  110.    public final void OleDragLeave() {
  111.    }
  112. }
  113.