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 }
00438 #endif
00439
00440