00001 00011 #ifndef _MENU_H_ 00012 #define _MENU_H_ 00013 00014 #include "../jnilib.h" 00015 00016 #ifdef __cplusplus 00017 extern "C" { 00018 #endif 00019 00021 #define CLS_MENU "java/awt/Menu" 00022 00023 struct Menu_; 00024 00025 struct MenuCPP_; 00026 00027 #ifdef __cplusplus 00028 typedef MenuCPP_ Menu; 00029 #define createMenu createMenuCPP 00030 #define deleteMenu deleteMenuCPP 00031 #else 00032 typedef struct Menu_ Menu; 00033 #define createMenu createMenuC 00034 #define deleteMenu deleteMenuC 00035 #endif 00036 00040 typedef struct MenuData { 00041 jclass clsmenu; 00042 jobject menu; 00043 jmethodID mgetLabel; 00044 jmethodID msetLabel; 00045 jmethodID maddMenuItem; 00046 jmethodID mremoveMenuItem; 00047 jmethodID mremoveAll; 00048 jmethodID mgetItemCount; 00049 jmethodID maddSeparator; 00050 } MenuData; 00051 00055 typedef struct Menu_ { 00056 MenuData menu; 00057 jobject (*getObject)(Menu* menu); 00058 char* (*getLabel)(Menu* menu); 00059 void (*setLabel)(Menu* menu, const char* label); 00060 void (*addMenuItem)(Menu* menu, jobject menuitem); 00061 void (*removeMenuItem)(Menu* menu, jobject menuitem); 00062 void (*removeAll)(Menu* menu); 00063 jint (*getItemCount)(Menu* menu); 00064 void (*addSeparator)(Menu* menu); 00065 } Menu_; 00066 00070 typedef struct MenuCPP_ { 00071 MenuData menu; 00072 struct Menu_ *functions; 00073 00074 #ifdef __cplusplus 00075 jobject getObject() { 00076 return functions->getObject(this); 00077 } 00078 00079 char* getLabel() { 00080 return functions->getLabel(this); 00081 } 00082 00083 void setLabel(const char* label) { 00084 functions->setLabel(this, label); 00085 } 00086 00087 void addMenuItem(jobject menuitem) { 00088 functions->addMenuItem(this, menuitem); 00089 } 00090 00091 void removeMenuItem(jobject menuitem) { 00092 functions->removeMenuItem(this, menuitem); 00093 } 00094 00095 void removeAll() { 00096 functions->removeAll(this); 00097 } 00098 00099 jint getItemCount() { 00100 return functions->getItemCount(this); 00101 } 00102 00103 void addSeparator() { 00104 functions->addSeparator(this); 00105 } 00106 00107 #endif 00108 } MenuCPP_; 00109 00110 00111 void createMenuC(Menu_* menu); 00112 void createMenuCPP(MenuCPP_* menu); 00113 void deleteMenuC(Menu_* menu); 00114 void deleteMenuCPP(MenuCPP_* menu); 00115 00116 #ifdef __cplusplus 00117 } /* extern "C" */ 00118 #endif 00119 00120 #endif /* _MENU_H_ */ 00121 00122 /* end of file menu.h */