00001 #ifndef RAWCOMPONENT_H
00002 #define RAWCOMPONENT_H
00003
00004 #include <jni.h>
00005 #include <string>
00006 #include "Mga.h"
00007
00008
00009
00010
00011 #ifdef BUILDER_OBJECT_NETWORK
00012 #error This file should only be included in the RAW COM configurations
00013 #endif
00014
00015 typedef jint (JNICALL *P_JNI_CreateJavaVM) (JavaVM **pvm, void** penv, void *args);
00016 typedef jint (JNICALL *P_JNI_GetCreatedJavaVMs) (JavaVM **vmBuf,jsize bufLen, jsize *nVMs);
00017
00018 class RawComponent
00019 {
00020 public:
00021 RawComponent();
00022 ~RawComponent();
00023
00024 STDMETHODIMP Initialize(struct IMgaProject *);
00025 STDMETHODIMP Invoke(IMgaProject* gme, IMgaFCOs *models, long param);
00026 STDMETHODIMP InvokeEx( IMgaProject *project, IMgaFCO *currentobj, IMgaFCOs *selectedobjs, long param);
00027 STDMETHODIMP ObjectsInvokeEx( IMgaProject *project, IMgaObject *currentobj, IMgaObjects *selectedobjs, long param);
00028 STDMETHODIMP get_ComponentParameter(BSTR name, VARIANT *pVal);
00029 STDMETHODIMP put_ComponentParameter(BSTR name, VARIANT newVal);
00030
00031 #ifdef GME_ADDON
00032 STDMETHODIMP GlobalEvent(globalevent_enum event);
00033 STDMETHODIMP ObjectEvent(IMgaObject * obj, unsigned long eventmask, VARIANT v);
00034 #endif
00035
00036 protected:
00037 void getJvmDllPath();
00038 void loadJavaVM();
00039 void unloadJavaVM();
00040
00041
00042 public:
00043 #ifdef GME_ADDON
00044 CComPtr<IMgaProject> project;
00045 CComPtr<IMgaAddOn> addon;
00046 #endif
00047 bool interactive;
00048
00049 protected:
00050 HMODULE m_javaVMDll;
00051 P_JNI_CreateJavaVM m_createJavaVM;
00052 P_JNI_GetCreatedJavaVMs m_getCreatedJavaVMs;
00053
00054 JNIEnv * m_env;
00055 JavaVM * m_jvm;
00056
00057 std::string m_javaClassPath;
00058 std::string m_javaClass;
00059
00060 friend class CJavaCompFactory;
00061 };
00062
00063
00064 #endif //RAWCOMPONENT_H