00001
00016 #include "component.h"
00017 #include "container.h"
00018 #include "frame.h"
00019
00020 #ifdef __cplusplus
00021 extern "C" {
00022 #endif
00023
00032 void showFrame(Frame* frame) {
00033 callVoidMethod(frame->frame.frame, frame->frame.mshow);
00034 }
00035
00044 void hideFrame(Frame* frame) {
00045 callVoidMethod(frame->frame.frame, frame->frame.mhide);
00046 }
00047
00058 void closeFrame(Frame* frame) {
00059 callVoidMethod(frame->frame.frame, frame->frame.mclose);
00060 }
00061
00070 void setFrameTitle(Frame* frame, const char* title) {
00071 jstring jtitle = createJString(title);
00072 callVoidMethod(frame->frame.frame, frame->frame.msetTitle, jtitle);
00073 deleteGlobalReference(jtitle);
00074 }
00075
00085 char* getFrameTitle(Frame* frame) {
00086 char* title;
00087 jstring jtitle;
00088 jtitle = (jstring) callObjectMethod(frame->frame.frame, frame->frame.mgetTitle);
00089 title = convertJString(jtitle);
00090 deleteLocalReference(jtitle);
00091 return title;
00092 }
00093
00104 void setFrameSize(Frame* frame, jint width, jint height) {
00105 setSize(frame->frame.frame, width, height);
00106 }
00107
00118 jint getFrameWidth(Frame* frame) {
00119 return getWidth(frame->frame.frame);
00120 }
00121
00132 jint getFrameHeight(Frame* frame) {
00133 return getHeight(frame->frame.frame);
00134 }
00135
00146 void setFrameLocation(Frame* frame, jint x, jint y) {
00147 setLocation(frame->frame.frame, x, y);
00148 }
00149
00160 jint getFrameX(Frame* frame) {
00161 return getX(frame->frame.frame);
00162 }
00163
00174 jint getFrameY(Frame* frame) {
00175 return getY(frame->frame.frame);
00176 }
00177
00186 void setFrameForegroundColor(Frame* frame, const Color c) {
00187 setForeground(frame->frame.frame, c);
00188 }
00189
00199 Color getFrameForegroundColor(Frame* frame) {
00200 return getForeground(frame->frame.frame);
00201 }
00202
00211 void setFrameBackgroundColor(Frame* frame, const Color c) {
00212 setBackground(frame->frame.frame, c);
00213 }
00214
00224 Color getFrameBackgroundColor(Frame* frame) {
00225 return getBackground(frame->frame.frame);
00226 }
00227
00236 void setFrameState(Frame* frame, jint state) {
00237 callVoidMethod(frame->frame.frame, frame->frame.msetState, state);
00238 }
00239
00249 jint getFrameState(Frame* frame) {
00250 return callIntMethod(frame->frame.frame, frame->frame.mgetState);
00251 }
00252
00261 void setFrameMenuBar(Frame* frame, MenuBar* menubar) {
00262 callVoidMethod(frame->frame.frame, frame->frame.msetMenuBar, menubar->menubar.menubar);
00263 }
00264
00273 jboolean isSameWindow(Frame* frame, Window window) {
00274 return callBooleanMethod(frame->frame.frame, frame->frame.misSameWindow, window);
00275 }
00276
00288 WindowListener addFrameWindowListener(Frame* frame, void (*func)(jint, Window)) {
00289 return addWindowListener(frame->frame.frame, func);
00290 }
00291
00301 void removeFrameWindowListener(Frame* frame, WindowListener wl) {
00302 removeWindowListener(frame->frame.frame, wl);
00303 }
00304
00316 MouseListener addFrameMouseListener(Frame* frame, void (*func)(jint, Component, jint, jint, jint, jint)) {
00317 return addMouseListener(frame->frame.frame, func);
00318 }
00319
00329 void removeFrameMouseListener(Frame* frame, MouseListener ml) {
00330 removeMouseListener(frame->frame.frame, ml);
00331 }
00332
00344 ComponentListener addFrameComponentListener(Frame* frame, void (*func)(jint, Component)) {
00345 return addComponentListener(frame->frame.frame, func);
00346 }
00347
00357 void removeFrameComponentListener(Frame* frame, ComponentListener cl) {
00358 removeComponentListener(frame->frame.frame, cl);
00359 }
00360
00371 void drawFrameLine(Frame* frame, jfloat x1, jfloat y1, jfloat x2, jfloat y2, const Color* c) {
00372 jobject jcolor = convertColor(c);
00373 callVoidMethod(frame->frame.frame, frame->frame.mdrawLine, x1, y1, x2, y2, jcolor);
00374 deleteGlobalReference(jcolor);
00375 }
00376
00388 void drawFrameRectangle(Frame* frame, jfloat x, jfloat y, jfloat width, jfloat height, jboolean filled, const Color* c) {
00389 jobject jcolor = convertColor(c);
00390 callVoidMethod(frame->frame.frame, frame->frame.mdrawRectangle, x, y, width, height, filled, jcolor);
00391 deleteGlobalReference(jcolor);
00392 }
00393
00405 void drawFrameEllipse(Frame* frame, jfloat x, jfloat y, jfloat width, jfloat height, jboolean filled, const Color* c) {
00406 jobject jcolor = convertColor(c);
00407 callVoidMethod(frame->frame.frame, frame->frame.mdrawEllipse, x, y, width, height, filled, jcolor);
00408 deleteGlobalReference(jcolor);
00409 }
00410
00420 void drawFrameString(Frame* frame, const char* text, jfloat x, jfloat y, const Color* c) {
00421 jobject jtext = createJString(text);
00422 jobject jcolor = convertColor(c);
00423 callVoidMethod(frame->frame.frame, frame->frame.mdrawString, jtext, x, y, jcolor);
00424 deleteGlobalReference(jtext);
00425 deleteGlobalReference(jcolor);
00426 }
00427
00433 void clearFrameScreen(Frame* frame) {
00434 callVoidMethod(frame->frame.frame, frame->frame.mclearScreen);
00435 }
00436
00443 void drawFrameShape(Frame* frame, const Shape* s) {
00444 callVoidMethod(frame->frame.frame, frame->frame.maddDrawable, s->shape.shape);
00445 }
00446
00453 void setFrameLayout(Frame* frame, jobject layoutmanager) {
00454 setLayout(frame->frame.frame, layoutmanager);
00455 }
00456
00465 void addFrameComponent(Frame* frame, jobject comp) {
00466 addComponent(frame->frame.frame, comp);
00467 }
00468
00478 void addFrameComponentWithConstraint(Frame* frame, jobject comp, jobject constraint) {
00479 addComponentWithConstraint(frame->frame.frame, comp, constraint);
00480 }
00481
00487 void initFrame_(Frame_* frame) {
00488 frame->show = &showFrame;
00489 frame->hide = &hideFrame;
00490 frame->close = &closeFrame;
00491
00492 frame->setTitle = &setFrameTitle;
00493 frame->getTitle = &getFrameTitle;
00494
00495 frame->setSize = &setFrameSize;
00496 frame->getWidth = &getFrameWidth;
00497 frame->getHeight = &getFrameHeight;
00498 frame->setLocation = &setFrameLocation;
00499 frame->getX = &getFrameX;
00500 frame->getY = &getFrameY;
00501 frame->setForegroundColor = &setFrameForegroundColor;
00502 frame->getForegroundColor = &getFrameForegroundColor;
00503 frame->setBackgroundColor = &setFrameBackgroundColor;
00504 frame->getBackgroundColor = &getFrameBackgroundColor;
00505 frame->setState = &setFrameState;
00506 frame->getState = &getFrameState;
00507 frame->setMenuBar = &setFrameMenuBar;
00508
00509 frame->isSameWindow = &isSameWindow;
00510
00511 frame->addWindowListener = &addFrameWindowListener;
00512 frame->removeWindowListener = &removeFrameWindowListener;
00513 frame->addMouseListener = &addFrameMouseListener;
00514 frame->removeMouseListener = &removeFrameMouseListener;
00515 frame->addComponentListener = &addFrameComponentListener;
00516 frame->removeComponentListener = &removeFrameComponentListener;
00517
00518 frame->drawLine = &drawFrameLine;
00519 frame->drawRectangle = &drawFrameRectangle;
00520 frame->drawEllipse = &drawFrameEllipse;
00521 frame->drawString = &drawFrameString;
00522 frame->clearScreen = &clearFrameScreen;
00523 frame->drawShape = &drawFrameShape;
00524
00525 frame->setLayout = &setFrameLayout;
00526 frame->addComponent = &addFrameComponent;
00527 frame->addComponentWithConstraint = &addFrameComponentWithConstraint;
00528 }
00529
00536 void createFrame_(Frame* frame) {
00537 frame->frame.clsframe = findClass(CLS_FRAME);
00538 frame->frame.mshow = findMethod(frame->frame.clsframe, "showFrame", "()V");
00539 frame->frame.mhide = findMethod(frame->frame.clsframe, "hideFrame", "()V");
00540 frame->frame.mclose = findMethod(frame->frame.clsframe, "close", "()V");
00541
00542 frame->frame.msetTitle = findMethod(frame->frame.clsframe, "setTitle", "(Ljava/lang/String;)V");
00543 frame->frame.mgetTitle = findMethod(frame->frame.clsframe, "getTitle", "()Ljava/lang/String;");
00544
00545 frame->frame.msetState = findMethod(frame->frame.clsframe, "setExtState", "(I)V");
00546 frame->frame.mgetState = findMethod(frame->frame.clsframe, "getExtState", "()I");
00547 frame->frame.msetMenuBar = findMethod(frame->frame.clsframe, "setMenuBar", "(Ljava/awt/MenuBar;)V");
00548
00549 frame->frame.mdrawLine = findMethod(frame->frame.clsframe, "drawLine", "(FFFFLjava/awt/Color;)V");
00550 frame->frame.mdrawRectangle = findMethod(frame->frame.clsframe, "drawRectangle", "(FFFFZLjava/awt/Color;)V");
00551 frame->frame.mdrawEllipse = findMethod(frame->frame.clsframe, "drawEllipse", "(FFFFZLjava/awt/Color;)V");
00552 frame->frame.mdrawString = findMethod(frame->frame.clsframe, "drawString", "(Ljava/lang/String;FFLjava/awt/Color;)V");
00553 frame->frame.mclearScreen = findMethod(frame->frame.clsframe, "clearScreen", "()V");
00554 frame->frame.maddDrawable = findMethod(frame->frame.clsframe, "addDrawable", "(Lat/fhv/sgr/graphiclib/draw/IDrawable;)V");
00555
00556 frame->frame.misSameWindow = findMethod(frame->frame.clsframe, "isSameWindow", "(Ljava/lang/Object;)Z");
00557
00558 frame->frame.frame = newObjectBySignature(frame->frame.clsframe, "()V");
00559 }
00560
00567 void createFrameCPP(FrameCPP_* frame) {
00568 frame->functions = (Frame_*)malloc(sizeof(Frame_));
00569 initFrame_(frame->functions);
00570 createFrame_((Frame*)frame);
00571 }
00572
00579 void createFrameC(Frame_* frame) {
00580 initFrame_(frame);
00581 createFrame_((Frame*)frame);
00582 }
00583
00589 void deleteFrame_(Frame* frame) {
00590 deleteGlobalReference(frame->frame.frame);
00591 deleteGlobalReference(frame->frame.clsframe);
00592 }
00593
00599 void deleteFrameCPP(FrameCPP_* frame) {
00600 deleteFrame_((Frame*)frame);
00601 free(frame->functions);
00602 }
00603
00609 void deleteFrameC(Frame_* frame) {
00610 deleteFrame_((Frame*)frame);
00611 }
00612
00613 #ifdef __cplusplus
00614 }
00615 #endif
00616
00617