
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_swing_TransferHandler$PropertyTransferable__
#define __javax_swing_TransferHandler$PropertyTransferable__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace datatransfer
      {
          class DataFlavor;
      }
    }
    namespace beans
    {
        class PropertyDescriptor;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JComponent;
        class TransferHandler$PropertyTransferable;
    }
  }
}

class javax::swing::TransferHandler$PropertyTransferable : public ::java::lang::Object
{

public: // actually package-private
  TransferHandler$PropertyTransferable(::javax::swing::JComponent *, ::java::beans::PropertyDescriptor *);
public:
  virtual JArray< ::java::awt::datatransfer::DataFlavor * > * getTransferDataFlavors();
  virtual jboolean isDataFlavorSupported(::java::awt::datatransfer::DataFlavor *);
  virtual ::java::lang::Object * getTransferData(::java::awt::datatransfer::DataFlavor *);
private:
  ::javax::swing::JComponent * __attribute__((aligned(__alignof__( ::java::lang::Object)))) component;
  ::java::beans::PropertyDescriptor * property;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_TransferHandler$PropertyTransferable__
