00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef FSADIAGRAMCONTROLLER_H
00026 #define FSADIAGRAMCONTROLLER_H
00027
00028
00029 #include <QHash>
00030
00031 #include "guidiagramcontroller.h"
00032
00033
00034 class FsaDiagramController: public GuiDiagramController {
00035
00036 Q_OBJECT
00037
00038 friend void JNICALL Java_CiderInterface_native_symbolAdded( JNIEnv*, jclass, jint );
00039 friend void JNICALL Java_CiderInterface_native_symbolRemoved( JNIEnv*, jclass, jint );
00040 friend void JNICALL Java_FSACiderInterface_native_arrowPointsModified( JNIEnv*, jclass,
00041 jint,
00042 jdouble, jdouble,
00043 jdouble, jdouble,
00044 jdouble, jdouble );
00045 friend void JNICALL Java_FSACiderInterface_native_circleModified( JNIEnv*, jclass, jint,
00046 jdouble, jdouble, jdouble );
00047 friend void JNICALL Java_FSACiderInterface_native_textRectModified( JNIEnv*, jclass, jint,
00048 jdouble, jdouble,
00049 jdouble, jdouble );
00050
00051
00052 public:
00053 FsaDiagramController( JavaVM* jvm, QObject* parent = 0 );
00054 virtual ~FsaDiagramController();
00055
00056
00057 protected:
00058 virtual void elementAddEvent( CElementAddEvent* );
00059 virtual void elementRemoveEvent( CElementRemoveEvent* );
00060 virtual void elementAttributeAddEvent( CElementAttributeAddEvent* );
00061 virtual void elementAttributeRemoveEvent( CElementAttributeRemoveEvent* );
00062 virtual void elementAttributeChangeDataEvent( CElementAttributeChangeDataEvent* );
00063
00064
00065 void onSymbolAdded( jint symbolId );
00066 void onSymbolRemoved( jint symbolId );
00067 void setElementAttributeData( jint symbolId,
00068 int attributeType,
00069 const QVariant& newAttributeData );
00070
00071 bool tryCiderElementAdd( AbstractElement* element );
00072 bool tryCiderElementRemove( AbstractElement* element );
00073 bool tryCiderElementModify( AbstractElement* element,
00074 AbstractElementAttribute* attribute,
00075 const QVariant& newAttributeData );
00076
00077 jmethodID tryGetMethodID( jclass cls, const char* name, const char* sig );
00078
00079
00080 private:
00081 void cleanup();
00082
00083 JavaVM* m_jvm;
00084
00085
00086
00087
00088 JNIEnv* env;
00089 jclass fsaCiderInterface_cls;
00090 jobject fsaCiderInterface_gref;
00091 jmethodID fsaCiderInterfaceConstructor_mid;
00092 jmethodID add_mid;
00093 jmethodID remove_mid;
00094 jmethodID getIDNumber_mid;
00095 jmethodID printForest_mid;
00096 jmethodID createDrawableArrow_mid;
00097 jmethodID createDrawableCircle_mid;
00098 jmethodID createDrawableText_mid;
00099 jmethodID setArrowPoints_mid;
00100 jmethodID setCirclePos_mid;
00101 jmethodID setCircleRadius_mid;
00102 jmethodID setTextPos_mid;
00103 jmethodID setTextHalfDimensions_mid;
00104
00105
00106
00107 QHash<int, AbstractElement*> m_symbolIdToElementPtr;
00108 QHash<AbstractElement*, jobject> m_elementPtrToSymbol;
00109 };
00110
00111
00112 #endif // ! FSADIAGRAMCONTROLLER_H