separate JVM start and SwingView register at scilab start in mn mode
[scilab.git] / scilab / modules / gui / src / jni / CallScilabBridge.hxx
1 /* Generated by GIWS (version 2.0.2) with command:
2 giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/CallScilabBridge.giws.xml
3 */
4 /*
5
6 This is generated code.
7
8 This software is a computer program whose purpose is to hide the complexity
9 of accessing Java objects/methods from C++ code.
10
11 This software is governed by the CeCILL-B license under French law and
12 abiding by the rules of distribution of free software.  You can  use,
13 modify and/ or redistribute the software under the terms of the CeCILL-B
14 license as circulated by CEA, CNRS and INRIA at the following URL
15 "http://www.cecill.info".
16
17 As a counterpart to the access to the source code and  rights to copy,
18 modify and redistribute granted by the license, users are provided only
19 with a limited warranty  and the software's author,  the holder of the
20 economic rights,  and the successive licensors  have only  limited
21 liability.
22
23 In this respect, the user's attention is drawn to the risks associated
24 with loading,  using,  modifying and/or developing or reproducing the
25 software by the user in light of its specific status of free software,
26 that may mean  that it is complicated to manipulate,  and  that  also
27 therefore means  that it is reserved for developers  and  experienced
28 professionals having in-depth computer knowledge. Users are therefore
29 encouraged to load and test the software's suitability as regards their
30 requirements in conditions enabling the security of their systems and/or
31 data to be ensured and,  more generally, to use and operate it in the
32 same conditions as regards security.
33
34 The fact that you are presently reading this means that you have had
35 knowledge of the CeCILL-B license and that you accept its terms.
36 */
37
38
39 #ifndef __ORG_SCILAB_MODULES_GUI_BRIDGE_CALLSCILABBRIDGE__
40 #define __ORG_SCILAB_MODULES_GUI_BRIDGE_CALLSCILABBRIDGE__
41 #include <iostream>
42 #include <string>
43 #include <string.h>
44 #include <stdlib.h>
45 #include <jni.h>
46
47 #include "GiwsException.hxx"
48
49         #if defined(_MSC_VER) /* Defined anyway with Visual */
50             #include <Windows.h>
51         #else
52             typedef signed char byte;
53         #endif
54
55
56 #ifndef GIWSEXPORT
57 # if defined(_MSC_VER) || defined(__WIN32__) || defined(__CYGWIN__)
58 #   if defined(STATIC_LINKED)
59 #     define GIWSEXPORT
60 #   else
61 #     define GIWSEXPORT __declspec(dllexport)
62 #   endif
63 # else
64 #   if __GNUC__ >= 4
65 #     define GIWSEXPORT __attribute__ ((visibility ("default")))
66 #   else
67 #     define GIWSEXPORT
68 #   endif
69 # endif
70 #endif
71
72 namespace org_scilab_modules_gui_bridge {
73 class GIWSEXPORT CallScilabBridge {
74
75 private:
76 JavaVM * jvm;
77
78 protected:
79 jmethodID voidsetMenuEnabledjintintjstringjava_lang_StringjbooleanbooleanID; // cache method id
80 jmethodID voidsetSubMenuEnabledjintintjstringjava_lang_StringjintintjbooleanbooleanID; // cache method id
81 jmethodID voidremoveMenujintintjstringjava_lang_StringID; // cache method id
82 jmethodID jstringdisplayAndWaitContextMenujintintID; // cache method id
83 jmethodID jintnewMessageBoxID; // cache method id
84 jmethodID voidsetMessageBoxTitlejintintjstringjava_lang_StringID; // cache method id
85 jmethodID voidsetMessageBoxMessagejintintjstringjava_lang_StringID; // cache method id
86 jmethodID voidsetMessageBoxMessagejintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
87 jclass stringArrayClass;
88 jmethodID voidmessageBoxDisplayAndWaitjintintID; // cache method id
89 jmethodID jintgetMessageBoxSelectedButtonjintintID; // cache method id
90 jmethodID voidsetMessageBoxDefaultSelectedButtonsjintintjintArray_intintID; // cache method id
91 jmethodID jintArray_getMessageBoxUserSelectedButtonsjintintID; // cache method id
92 jmethodID voidsetMessageBoxButtonsLabelsjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
93 jmethodID voidsetMessageBoxInitialValuejintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
94 jmethodID jobjectArray_getMessageBoxValuejintintID; // cache method id
95 jmethodID jintgetMessageBoxValueSizejintintID; // cache method id
96 jmethodID voidsetMessageBoxListBoxItemsjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
97 jmethodID jintgetMessageBoxSelectedItemjintintID; // cache method id
98 jmethodID voidsetMessageBoxLineLabelsjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
99 jmethodID voidsetMessageBoxColumnLabelsjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
100 jmethodID voidsetMessageBoxDefaultInputjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
101 jmethodID voidsetMessageBoxModaljintintjbooleanbooleanID; // cache method id
102 jmethodID voidsetMessageBoxIconjintintjstringjava_lang_StringID; // cache method id
103 jmethodID voidlaunchHelpBrowserjobjectArray_java_lang_Stringjava_lang_Stringjstringjava_lang_StringID; // cache method id
104 jmethodID voidsearchKeywordjobjectArray_java_lang_Stringjava_lang_Stringjstringjava_lang_Stringjstringjava_lang_StringjbooleanbooleanID; // cache method id
105 jmethodID jintnewExportFileChooserjintintID; // cache method id
106 jmethodID jintnewFontChooserID; // cache method id
107 jmethodID voidfontChooserDisplayAndWaitjintintID; // cache method id
108 jmethodID voidsetFontChooserFontNamejintintjstringjava_lang_StringID; // cache method id
109 jmethodID voidsetFontChooserFontSizejintintjintintID; // cache method id
110 jmethodID voidsetFontChooserBoldjintintjbooleanbooleanID; // cache method id
111 jmethodID voidsetFontChooserItalicjintintjbooleanbooleanID; // cache method id
112 jmethodID jstringgetFontChooserFontNamejintintID; // cache method id
113 jmethodID jintgetFontChooserFontSizejintintID; // cache method id
114 jmethodID jbooleangetFontChooserBoldjintintID; // cache method id
115 jmethodID jbooleangetFontChooserItalicjintintID; // cache method id
116 jmethodID jintnewColorChooserID; // cache method id
117 jmethodID voidcolorChooserDisplayAndWaitjintintID; // cache method id
118 jmethodID voidsetColorChooserDefaultColorjintintjintArray_intintID; // cache method id
119 jmethodID jintArray_getColorChooserSelectedColorjintintID; // cache method id
120 jmethodID voidsetColorChooserTitlejintintjstringjava_lang_StringID; // cache method id
121 jmethodID jstringgetClipboardContentsID; // cache method id
122 jmethodID voidpasteClipboardIntoConsoleID; // cache method id
123 jmethodID voidcopyConsoleSelectionID; // cache method id
124 jmethodID voidemptyClipboardID; // cache method id
125 jmethodID voidsetClipboardContentsjstringjava_lang_StringID; // cache method id
126 jmethodID voidcopyFigureToClipBoardjintintID; // cache method id
127 jmethodID jintgetScreenResolutionID; // cache method id
128 jmethodID jdoublegetScreenWidthID; // cache method id
129 jmethodID jdoublegetScreenHeightID; // cache method id
130 jmethodID jintgetScreenDepthID; // cache method id
131 jmethodID jbooleanprintFigurejintintjbooleanbooleanjbooleanbooleanID; // cache method id
132 jmethodID jbooleanprintFilejstringjava_lang_StringID; // cache method id
133 jmethodID jbooleanprintStringjstringjava_lang_Stringjstringjava_lang_StringID; // cache method id
134 jmethodID jbooleanpageSetupID; // cache method id
135 jmethodID voidrequestFocusjintintID; // cache method id
136 jmethodID voidraiseWindowjintintID; // cache method id
137 jmethodID voiduseCanvasForDisplayjbooleanbooleanID; // cache method id
138 jmethodID jbooleanuseCanvasForDisplayID; // cache method id
139 jmethodID voidscilabAboutBoxID; // cache method id
140 jmethodID voidfireClosingFinishedjintintID; // cache method id
141 jmethodID voidregisterSwingViewID; // cache method id
142
143
144
145 jobject instance;
146 jclass instanceClass; // cache class
147
148
149 // Caching (if any)
150
151
152 /**
153 * Get the environment matching to the current thread.
154 */
155 virtual JNIEnv * getCurrentEnv();
156
157 public:
158 // Constructor
159 /**
160 * Create a wrapping of the object from a JNIEnv.
161 * It will call the default constructor
162 * @param JEnv_ the Java Env
163 */
164 CallScilabBridge(JavaVM * jvm_);
165
166 /**
167 * Create a wrapping of an already existing object from a JNIEnv.
168 * The object must have already been instantiated
169 * @param JEnv_ the Java Env
170 * @param JObj the object
171 */
172 CallScilabBridge(JavaVM * jvm_, jobject JObj);
173
174
175 /**
176 * This is a fake constructor to avoid the constructor
177 * chaining when dealing with extended giws classes
178 */
179 #ifdef FAKEGIWSDATATYPE
180 CallScilabBridge(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
181 #endif
182
183 // Destructor
184 ~CallScilabBridge();
185
186 // Generic method
187 // Synchronization methods
188 /**
189 * Enter monitor associated with the object.
190 * Equivalent of creating a "synchronized(obj)" scope in Java.
191 */
192 void synchronize();
193
194 /**
195 * Exit monitor associated with the object.
196 * Equivalent of ending a "synchronized(obj)" scope.
197 */
198 void endSynchronize();
199
200 // Methods
201 static void setMenuEnabled(JavaVM * jvm_, int parentUID, char const* menuName, bool status);
202
203 static void setSubMenuEnabled(JavaVM * jvm_, int parentUID, char const* menuName, int position, bool status);
204
205 static void removeMenu(JavaVM * jvm_, int parentUID, char const* menuName);
206
207 static char* displayAndWaitContextMenu(JavaVM * jvm_, int UID);
208
209 static int newMessageBox(JavaVM * jvm_);
210
211 static void setMessageBoxTitle(JavaVM * jvm_, int id, char const* title);
212
213 static void setMessageBoxMessage(JavaVM * jvm_, int id, char const* message);
214
215 static void setMessageBoxMessage(JavaVM * jvm_, int id, char const* const* message, int messageSize);
216
217 static void messageBoxDisplayAndWait(JavaVM * jvm_, int id);
218
219 static int getMessageBoxSelectedButton(JavaVM * jvm_, int id);
220
221 static void setMessageBoxDefaultSelectedButtons(JavaVM * jvm_, int id, int const* index, int indexSize);
222
223 static int* getMessageBoxUserSelectedButtons(JavaVM * jvm_, int id);
224
225 static void setMessageBoxButtonsLabels(JavaVM * jvm_, int id, char const* const* labels, int labelsSize);
226
227 static void setMessageBoxInitialValue(JavaVM * jvm_, int id, char const* const* value, int valueSize);
228
229 static char** getMessageBoxValue(JavaVM * jvm_, int id);
230
231 static int getMessageBoxValueSize(JavaVM * jvm_, int id);
232
233 static void setMessageBoxListBoxItems(JavaVM * jvm_, int id, char const* const* items, int itemsSize);
234
235 static int getMessageBoxSelectedItem(JavaVM * jvm_, int id);
236
237 static void setMessageBoxLineLabels(JavaVM * jvm_, int id, char const* const* labels, int labelsSize);
238
239 static void setMessageBoxColumnLabels(JavaVM * jvm_, int id, char const* const* labels, int labelsSize);
240
241 static void setMessageBoxDefaultInput(JavaVM * jvm_, int id, char const* const* values, int valuesSize);
242
243 static void setMessageBoxModal(JavaVM * jvm_, int id, bool status);
244
245 static void setMessageBoxIcon(JavaVM * jvm_, int id, char const* name);
246
247 static void launchHelpBrowser(JavaVM * jvm_, char const* const* helps, int helpsSize, char const* language);
248
249 static void searchKeyword(JavaVM * jvm_, char const* const* helps, int helpsSize, char const* keyword, char const* language, bool fullText);
250
251 static int newExportFileChooser(JavaVM * jvm_, int figureUID);
252
253 static int newFontChooser(JavaVM * jvm_);
254
255 static void fontChooserDisplayAndWait(JavaVM * jvm_, int objID);
256
257 static void setFontChooserFontName(JavaVM * jvm_, int objID, char const* fontName);
258
259 static void setFontChooserFontSize(JavaVM * jvm_, int objID, int fontSize);
260
261 static void setFontChooserBold(JavaVM * jvm_, int objID, bool bold);
262
263 static void setFontChooserItalic(JavaVM * jvm_, int objID, bool italic);
264
265 static char* getFontChooserFontName(JavaVM * jvm_, int objID);
266
267 static int getFontChooserFontSize(JavaVM * jvm_, int objID);
268
269 static bool getFontChooserBold(JavaVM * jvm_, int objID);
270
271 static bool getFontChooserItalic(JavaVM * jvm_, int objID);
272
273 static int newColorChooser(JavaVM * jvm_);
274
275 static void colorChooserDisplayAndWait(JavaVM * jvm_, int objID);
276
277 static void setColorChooserDefaultColor(JavaVM * jvm_, int objID, int const* rgb, int rgbSize);
278
279 static int* getColorChooserSelectedColor(JavaVM * jvm_, int objID);
280
281 static void setColorChooserTitle(JavaVM * jvm_, int objID, char const* title);
282
283 static char* getClipboardContents(JavaVM * jvm_);
284
285 static void pasteClipboardIntoConsole(JavaVM * jvm_);
286
287 static void copyConsoleSelection(JavaVM * jvm_);
288
289 static void emptyClipboard(JavaVM * jvm_);
290
291 static void setClipboardContents(JavaVM * jvm_, char const* text);
292
293 static void copyFigureToClipBoard(JavaVM * jvm_, int figID);
294
295 static int getScreenResolution(JavaVM * jvm_);
296
297 static double getScreenWidth(JavaVM * jvm_);
298
299 static double getScreenHeight(JavaVM * jvm_);
300
301 static int getScreenDepth(JavaVM * jvm_);
302
303 static bool printFigure(JavaVM * jvm_, int figID, bool postScript, bool displayDialog);
304
305 static bool printFile(JavaVM * jvm_, char const* fileName);
306
307 static bool printString(JavaVM * jvm_, char const* theString, char const* pageHeader);
308
309 static bool pageSetup(JavaVM * jvm_);
310
311 static void requestFocus(JavaVM * jvm_, int objUID);
312
313 static void raiseWindow(JavaVM * jvm_, int objID);
314
315 static void useCanvasForDisplay(JavaVM * jvm_, bool onOrOff);
316
317 static bool useCanvasForDisplay(JavaVM * jvm_);
318
319 static void scilabAboutBox(JavaVM * jvm_);
320
321 static void fireClosingFinished(JavaVM * jvm_, int figUID);
322
323 static void registerSwingView(JavaVM * jvm_);
324
325
326                         /**
327                         * Get class name to use for static methods
328                         * @return class name to use for static methods
329                         */
330                         
331                 static const std::string className()
332                 {
333                 return "org/scilab/modules/gui/bridge/CallScilabBridge";
334                 }
335                 
336
337                         /**
338                         * Get class to use for static methods
339                         * @return class to use for static methods
340                         */
341                         
342                 static jclass initClass(JNIEnv * curEnv)
343                 {
344                     static jclass cls = 0;
345
346                     if (cls == 0)
347                     {
348                         jclass _cls = curEnv->FindClass(className().c_str());
349                         if (_cls)
350                         {
351                             cls = static_cast<jclass>(curEnv->NewGlobalRef(_cls));
352                         }
353                     }
354
355                     return cls;
356                  }
357                 
358 };
359
360
361 }
362 #endif