00001 00011 #ifndef _MENUITEM_H_ 00012 #define _MENUITEM_H_ 00013 00014 #include "../jnilib.h" 00015 #include "listeners.h" 00016 00017 #ifdef __cplusplus 00018 extern "C" { 00019 #endif 00020 00022 #define CLS_MENUITEM "java/awt/MenuItem" 00023 00024 struct MenuItem_; 00025 00026 struct MenuItemCPP_; 00027 00028 #ifdef __cplusplus 00029 typedef MenuItemCPP_ MenuItem; 00030 #define createMenuItem createMenuItemCPP 00031 #define deleteMenuItem deleteMenuItemCPP 00032 #else 00033 typedef struct MenuItem_ MenuItem; 00034 #define createMenuItem createMenuItemC 00035 #define deleteMenuItem deleteMenuItemC 00036 #endif 00037 00041 typedef struct MenuItemData { 00042 jclass clsmenuitem; 00043 jobject menuitem; 00044 jmethodID mgetLabel; 00045 jmethodID msetLabel; 00046 jmethodID msetEnabled; 00047 jmethodID misEnabled; 00048 } MenuItemData; 00049 00053 typedef struct MenuItem_ { 00054 MenuItemData menuitem; 00055 jobject (*getObject)(MenuItem* menuitem); 00056 char* (*getLabel)(MenuItem* menuitem); 00057 void (*setLabel)(MenuItem* menuitem, const char* label); 00058 void (*setEnabled)(MenuItem* menuitem, jboolean enable); 00059 jboolean (*isEnabled)(MenuItem* menuitem); 00060 ActionListener (*addActionListener)(MenuItem* menuitem, void (*func)(Component)); 00061 void (*removeActionListener)(MenuItem* menuitem, ActionListener al); 00062 } MenuItem_; 00063 00067 typedef struct MenuItemCPP_ { 00068 MenuItemData menuitem; 00069 struct MenuItem_ *functions; 00070 00071 #ifdef __cplusplus 00072 jobject getObject() { 00073 return functions->getObject(this); 00074 } 00075 00076 char* getLabel() { 00077 return functions->getLabel(this); 00078 } 00079 00080 void setLabel(const char* label) { 00081 functions->setLabel(this, label); 00082 } 00083 00084 void setEnabled(jboolean enable) { 00085 functions->setEnabled(this, enable); 00086 } 00087 00088 jboolean isEnabled() { 00089 return functions->isEnabled(this); 00090 } 00091 00092 ActionListener addActionListener(void (*func)(Component)) { 00093 return functions->addActionListener(this, func); 00094 } 00095 00096 void removeActionListener(ActionListener al) { 00097 functions->removeActionListener(this, al); 00098 } 00099 00100 #endif 00101 } MenuItemCPP_; 00102 00103 00104 void createMenuItemC(MenuItem_* menuitem); 00105 void createMenuItemCPP(MenuItemCPP_* menuitem); 00106 void deleteMenuItemC(MenuItem_* menuitem); 00107 void deleteMenuItemCPP(MenuItemCPP_* menuitem); 00108 00109 #ifdef __cplusplus 00110 } /* extern "C" */ 00111 #endif 00112 00113 #endif /* _MENUITEM_H_ */ 00114 00115 /* end of file menuitem.h */