00001
00011 #include "menu.h"
00012 #include "component.h"
00013
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017
00025 jobject getMenuObject(Menu* menu) {
00026 return menu->menu.menu;
00027 }
00028
00037 void setMenuLabel(Menu* menu, const char* label) {
00038 jstring jlabel = createJString(label);
00039 callVoidMethod(menu->menu.menu, menu->menu.msetLabel, jlabel);
00040 deleteGlobalReference(jlabel);
00041 }
00042
00052 char* getMenuLabel(Menu* menu) {
00053 char* label;
00054 jstring jlabel;
00055 jlabel = (jstring) callObjectMethod(menu->menu.menu, menu->menu.mgetLabel);
00056 label = convertJString(jlabel);
00057 deleteLocalReference(jlabel);
00058 return label;
00059 }
00060
00069 void addMenuMenuItem(Menu* menu, jobject menuitem) {
00070 callObjectMethod(menu->menu.menu, menu->menu.maddMenuItem, menuitem);
00071 }
00072
00082 void removeMenuMenuItem(Menu* menu, jobject menuitem) {
00083 callVoidMethod(menu->menu.menu, menu->menu.mremoveMenuItem, menuitem);
00084 }
00085
00093 void removeMenuAll(Menu* menu) {
00094 callVoidMethod(menu->menu.menu, menu->menu.mremoveAll);
00095 }
00096
00104 jint getMenuItemCount(Menu* menu) {
00105 return callIntMethod(menu->menu.menu, menu->menu.mgetItemCount);
00106 }
00107
00113 void addMenuSeparator(Menu* menu) {
00114 callVoidMethod(menu->menu.menu, menu->menu.maddSeparator);
00115 }
00116
00117
00123 void initMenu_(Menu_* menu) {
00124 menu->getObject = &getMenuObject;
00125 menu->setLabel = &setMenuLabel;
00126 menu->getLabel = &getMenuLabel;
00127 menu->addMenuItem = &addMenuMenuItem;
00128 menu->removeMenuItem = &removeMenuMenuItem;
00129 menu->getItemCount = &getMenuItemCount;
00130 menu->addSeparator = &addMenuSeparator;
00131 }
00132
00139 void createMenu_(Menu* menu) {
00140 menu->menu.clsmenu = findClass(CLS_MENU);
00141 menu->menu.mgetLabel = findMethod(menu->menu.clsmenu, "getLabel", "()Ljava/lang/String;");
00142 menu->menu.msetLabel = findMethod(menu->menu.clsmenu, "setLabel", "(Ljava/lang/String;)V");
00143 menu->menu.maddMenuItem = findMethod(menu->menu.clsmenu, "add", "(Ljava/awt/MenuItem;)Ljava/awt/MenuItem;");
00144 menu->menu.mremoveMenuItem = findMethod(menu->menu.clsmenu, "remove", "(Ljava/awt/MenuComponent;)V");
00145 menu->menu.mgetItemCount = findMethod(menu->menu.clsmenu, "getItemCount", "()I");
00146 menu->menu.maddSeparator = findMethod(menu->menu.clsmenu, "addSeparator", "()V");
00147
00148 menu->menu.menu = newObjectBySignature(menu->menu.clsmenu, "()V");
00149 }
00150
00157 void createMenuCPP(MenuCPP_* menu) {
00158 menu->functions = (Menu_*)malloc(sizeof(Menu_));
00159 initMenu_(menu->functions);
00160 createMenu_((Menu*)menu);
00161 }
00162
00169 void createMenuC(Menu_* menu) {
00170 initMenu_(menu);
00171 createMenu_((Menu*)menu);
00172 }
00173
00179 void deleteMenu_(Menu* menu) {
00180 deleteGlobalReference(menu->menu.menu);
00181 deleteGlobalReference(menu->menu.clsmenu);
00182 }
00183
00189 void deleteMenuCPP(MenuCPP_* menu) {
00190 deleteMenu_((Menu*)menu);
00191 free(menu->functions);
00192 }
00193
00199 void deleteMenuC(Menu_* menu) {
00200 deleteMenu_((Menu*)menu);
00201 }
00202
00203 #ifdef __cplusplus
00204 }
00205 #endif
00206
00207