list.c

Go to the documentation of this file.
00001 
00011 #include "list.h"
00012 #include "component.h"
00013 
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017 
00025 jobject getListObject(List* list) {
00026    return list->list.list;
00027 }
00028 
00039 void setListSize(List* list, jint width, jint height) {
00040    setSize(list->list.list, width, height);
00041 }
00042 
00053 jint getListWidth(List* list) {
00054    return getWidth(list->list.list);
00055 }
00056 
00067 jint getListHeight(List* list) {
00068    return getHeight(list->list.list);
00069 }
00070 
00081 void setListLocation(List* list, jint x, jint y) {
00082    setLocation(list->list.list, x, y);
00083 }
00084 
00095 jint getListX(List* list) {
00096    return getX(list->list.list);
00097 }
00098 
00109 jint getListY(List* list) {
00110    return getY(list->list.list);
00111 }
00112 
00122 jint getListRows(List* list) {
00123    return callIntMethod(list->list.list, list->list.mgetRows);
00124 }
00125 
00134 char* getListItem(List* list, jint pos) {
00135    jstring jitem = (jstring)callObjectMethod(list->list.list, list->list.mgetItem, pos);
00136    char* item = convertJString(jitem);
00137    deleteLocalReference(jitem);
00138    return item;
00139 }
00140 
00151 void addListItem(List* list, const char* item, jint pos) {
00152    jstring jitem = createJString(item);
00153    callVoidMethod(list->list.list, list->list.maddItem, jitem, pos);
00154    deleteGlobalReference(jitem);
00155 }
00156 
00166 void removeListItem(List* list, const char* item) {
00167    jstring jitem = createJString(item);
00168    callVoidMethod(list->list.list, list->list.mremoveItem, jitem);
00169    deleteGlobalReference(jitem);
00170    exception();
00171 }
00172 
00182 void removeListItemAtPos(List* list, jint pos) {
00183    callVoidMethod(list->list.list, list->list.mremoveItemAtPos, pos);
00184    exception();
00185 }
00186 
00195 void removeListAll(List* list) {
00196    callVoidMethod(list->list.list, list->list.mremoveAll);
00197 }
00198 
00206 void replaceListItem(List* list, const char* item, jint pos) {
00207    jstring jitem = createJString(item);
00208    callVoidMethod(list->list.list, list->list.mreplaceItem, jitem, pos);
00209    deleteGlobalReference(jitem);
00210    exception();
00211 }
00212 
00220 jint getListItemCount(List* list) {
00221    return callIntMethod(list->list.list, list->list.mgetItemCount);
00222 }
00223 
00231 jint getListSelectedIndex(List* list) {
00232    return callIntMethod(list->list.list, list->list.mgetSelectedIndex);
00233 }
00234 
00246 ItemListener addListItemListener(List* list, void (*func)(Component, jboolean, const char*)) {
00247    return addItemListener(list->list.list, func);
00248 }
00249 
00259 void removeListItemListener(List* list, ItemListener il) {
00260    removeItemListener(list->list.list, il);
00261 }
00262 
00271 void selectListItem(List* list, jint item) {
00272    callVoidMethod(list->list.list, list->list.mselectItem, item);
00273 }
00274 
00283 void deselectListItem(List* list, jint item) {
00284    callVoidMethod(list->list.list, list->list.mdeselectItem, item);
00285 }
00286 
00295 jboolean isListSelected(List* list, jint item) {
00296    return callBooleanMethod(list->list.list, list->list.misSelected, item);
00297 }
00298 
00307 void setListMultipleMode(List* list, jboolean multiple) {
00308    callVoidMethod(list->list.list, list->list.msetMultipleMode, multiple);
00309 }
00310 
00320 jboolean isListMultipleMode(List* list) {
00321    return callBooleanMethod(list->list.list, list->list.misMultipleMode);
00322 }
00323 
00329 void initList_(List_* list) {
00330    list->getObject = &getListObject;
00331    list->setSize = &setListSize;
00332    list->getWidth = &getListWidth;
00333    list->getHeight = &getListHeight;
00334    list->setLocation = &setListLocation;
00335    list->getX = &getListX;
00336    list->getY = &getListY;
00337    list->getRows = &getListRows;
00338    list->getItem = &getListItem;
00339    list->addItem = &addListItem;
00340    list->removeItem = &removeListItem;
00341    list->removeItemAtPos = &removeListItemAtPos;
00342    list->removeAll = &removeListAll;
00343    list->replaceItem = &replaceListItem;
00344    list->getItemCount = &getListItemCount;
00345    list->getSelectedIndex = &getListSelectedIndex;
00346    list->addItemListener = &addListItemListener;
00347    list->removeItemListener = &removeListItemListener;
00348    list->isSelected = &isListSelected;
00349    list->selectItem = &selectListItem;
00350    list->deselectItem = &deselectListItem;
00351    list->setMultipleMode = &setListMultipleMode;
00352    list->isMultipleMode = &isListMultipleMode;
00353 }
00354 
00362 void createList_(List* list, jint rows) {
00363    list->list.clslist = findClass(CLS_LIST);
00364    list->list.mgetRows = findMethod(list->list.clslist, "getRows", "()I");
00365    list->list.mgetItem = findMethod(list->list.clslist, "getItem", "(I)Ljava/lang/String;");
00366    list->list.maddItem = findMethod(list->list.clslist, "add", "(Ljava/lang/String;I)V");
00367    list->list.mremoveItem = findMethod(list->list.clslist, "remove", "(Ljava/lang/String;)V");
00368    list->list.mremoveItemAtPos = findMethod(list->list.clslist, "remove", "(I)V");
00369    list->list.mremoveAll = findMethod(list->list.clslist, "removeAll", "()V");
00370    list->list.mreplaceItem = findMethod(list->list.clslist, "replaceItem", "(Ljava/lang/String;I)V");
00371    list->list.mgetItemCount = findMethod(list->list.clslist, "getItemCount", "()I");
00372    list->list.mgetSelectedIndex = findMethod(list->list.clslist, "getSelectedIndex", "()I");
00373    list->list.mselectItem = findMethod(list->list.clslist, "select", "(I)V");
00374    list->list.mdeselectItem = findMethod(list->list.clslist, "deselect", "(I)V");
00375    list->list.misSelected = findMethod(list->list.clslist, "isSelected", "(I)Z");
00376    list->list.msetMultipleMode = findMethod(list->list.clslist, "setMultipleMode", "(Z)V");
00377    list->list.misMultipleMode = findMethod(list->list.clslist, "isMultipleMode", "()Z");
00378 
00379    list->list.list = newObjectBySignature(list->list.clslist, "(I)V", rows);
00380 }
00381 
00389 void createListCPP(ListCPP_* list, jint rows) {
00390    list->functions = (List_*)malloc(sizeof(List_));
00391    initList_(list->functions);
00392    createList_((List*)list, rows);
00393 }
00394 
00402 void createListC(List_* list, jint rows) {
00403    initList_(list);
00404    createList_((List*)list, rows);
00405 }
00406 
00412 void deleteList_(List* list) {
00413    deleteGlobalReference(list->list.list);
00414    deleteGlobalReference(list->list.clslist);
00415 }
00416 
00422 void deleteListCPP(ListCPP_* list) {
00423    deleteList_((List*)list);
00424    free(list->functions);
00425 }
00426 
00432 void deleteListC(List_* list) {
00433    deleteList_((List*)list);
00434 }
00435 
00436 #ifdef __cplusplus
00437 } /* extern "C" */
00438 #endif
00439 
00440 /* end of file list.c */

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