menu.c

Go to the documentation of this file.
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 } /* extern "C" */
00205 #endif
00206 
00207 /* end of file menu.c */

Generated on Sat Nov 19 14:11:11 2005 for GrubC by  doxygen 1.4.4