TextDocumentBridge.h

00001 /*
00002  * @(#)TextDocumentBridge.h  0.2.0 / 2007-12-11
00003  *
00004  * Copyright (c) 2007, ETF and contributors. All rights reserved.
00005  *
00006  * This software is licensed under the LGPL, version 2.1, license.
00007  * A copy of the license is included in the file LICENSE-LGPL.txt.
00008  */
00009 #ifndef TEXTDOCUMENTBRIDGE_H
00010 #define TEXTDOCUMENTBRIDGE_H
00011 
00012 #include "JavaQxQSwing.h"
00013 
00014 #include "QObjectBridge.h"
00015 #include "QTextDocumentAdapter.h"
00016 
00017 /*^**************************************************************************^*/
00018 /*- TextDocumentBridge Class.                                                -*/
00019 /*^**************************************************************************^*/
00020 
00027 class JAVAQX_EXPORT TextDocumentBridge : public QObjectBridge
00028 {
00029   Q_OBJECT
00030 protected:
00031   TextDocumentBridge(JNIEnv *env, jobject obj, QTextDocumentAdapter *document);
00032 public slots: // native calls
00033   void clearText(JNIEnv *env);
00034   jstring getText(JNIEnv *env);
00035   void setText(JNIEnv *env, jstring text);
00036   void appendText(JNIEnv *env, jstring text);
00037   jboolean isUndoAvailable(JNIEnv *env);
00038   jboolean isRedoAvailable(JNIEnv *env);
00039   void undo(JNIEnv *env);
00040   void redo(JNIEnv *env);
00041   void setUndoRedoEnabled(JNIEnv *env, jboolean enabled);
00042   void setUndoRedoListening(JNIEnv *env, jboolean listening);
00043   jboolean isModified(JNIEnv *env);
00044   void setModified(JNIEnv *env, jboolean modified);
00045   void print(JNIEnv *env, jobject printer);
00046   void setUseHighlighter(JNIEnv *env, jboolean useHighlighter);
00047   void setFormat(JNIEnv *env, jint start, jint length, jobject format);
00048 public: // native calls
00049   static void initialize(JNIEnv *env, jclass cls);
00050 public: // native callbacks
00051   void undoAvailable(jboolean available);
00052   void redoAvailable(jboolean available);
00053   void highlightBlock(jint blockStart, jstring blockText);
00054 public:
00055   inline QTextDocumentAdapter *qTextDocument() const;
00056 public:
00057   static QTextDocumentAdapter *toQDocument(JNIEnv *env, jobject document);
00058 public:
00059   virtual void destroy(JNIEnv *env);
00060 protected:
00061   virtual jfieldID bridgePointerFID() const;
00062 public slots:
00063   void undoAvailableSlot(bool available);
00064   void redoAvailableSlot(bool available);
00065 protected:
00066   inline static jmethodID createMID();
00067 private:
00068   static jfieldID sm_bridgeFID;
00069   static jmethodID sm_createMID;
00070   static jmethodID sm_undoAvailableMID;
00071   static jmethodID sm_redoAvailableMID;
00072   static jmethodID sm_highlightBlockMID;
00073 };
00074 
00075 /*^**************************************************************************^*/
00076 /*- TextDocumentBridge :: Inline Member Function.                            -*/
00077 /*^**************************************************************************^*/
00078 
00084 inline QTextDocumentAdapter *TextDocumentBridge::qTextDocument() const
00085 {
00086   return static_cast<QTextDocumentAdapter *>(qObject());
00087 }
00088 
00089 /*^**************************************************************************^*/
00090 /*- TextDocumentBridge :: Protected Static Inline Member Function.           -*/
00091 /*^**************************************************************************^*/
00092 
00098 inline jmethodID TextDocumentBridge::createMID()
00099 {
00100   return sm_createMID;
00101 }
00102 
00103 /*^**************************************************************************^*/
00104 /*- Macro Definitions.                                                       -*/
00105 /*^**************************************************************************^*/
00106 
00107 #define textDocumentCast(bridge) \
00108     (reinterpret_cast<TextDocumentBridge *>(bridge))
00109 #define textDocumentBridge textDocumentCast(bridge)
00110 
00111 #endif //TEXTDOCUMENTBRIDGE_H
00112 
00113 /*^*****************************************************************************
00114   File History:
00115 
00116  - 2007-12-11 21:49:59 Slobodan
00117    Initial version
00118 
00119 *****************************************************************************^*/

Copyright © 2007 ETF and contributors. All Rights Reserved.