Enable export via driver/xinit/xend
[scilab.git] / scilab / modules / gui / src / jni / SwingView.cpp
1 #include "SwingView.hxx"
2 /* Generated by GIWS (version 2.0.0) with command:
3 giws -e -r -f SwingView.giws.xml 
4 */
5 /*
6
7 Copyright 2007-2008 INRIA
8 Copyright 2008-2011 DIGITEO
9 Copyright 2011-2012 Scilab Enterprises
10
11 Author : Sylvestre Ledru & others
12
13 This is generated code.
14
15 This software is a computer program whose purpose is to hide the complexity
16 of accessing Java objects/methods from C++ code.
17
18 This software is governed by the CeCILL-B license under French law and
19 abiding by the rules of distribution of free software.  You can  use, 
20 modify and/ or redistribute the software under the terms of the CeCILL-B
21 license as circulated by CEA, CNRS and INRIA at the following URL
22 "http://www.cecill.info". 
23
24 As a counterpart to the access to the source code and  rights to copy,
25 modify and redistribute granted by the license, users are provided only
26 with a limited warranty  and the software's author,  the holder of the
27 economic rights,  and the successive licensors  have only  limited
28 liability. 
29
30 In this respect, the user's attention is drawn to the risks associated
31 with loading,  using,  modifying and/or developing or reproducing the
32 software by the user in light of its specific status of free software,
33 that may mean  that it is complicated to manipulate,  and  that  also
34 therefore means  that it is reserved for developers  and  experienced
35 professionals having in-depth computer knowledge. Users are therefore
36 encouraged to load and test the software's suitability as regards their
37 requirements in conditions enabling the security of their systems and/or 
38 data to be ensured and,  more generally, to use and operate it in the 
39 same conditions as regards security. 
40
41 The fact that you are presently reading this means that you have had
42 knowledge of the CeCILL-B license and that you accept its terms.
43 */
44
45 namespace org_scilab_modules_gui {
46
47                 // Static declarations (if any)
48                 
49 // Returns the current env
50
51 JNIEnv * SwingView::getCurrentEnv() {
52 JNIEnv * curEnv = NULL;
53 jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
54 if (res != JNI_OK) {
55 throw GiwsException::JniException(getCurrentEnv());
56 }
57 return curEnv;
58 }
59 // Destructor
60
61 SwingView::~SwingView() {
62 JNIEnv * curEnv = NULL;
63 this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
64
65 curEnv->DeleteGlobalRef(this->instance);
66 curEnv->DeleteGlobalRef(this->instanceClass);
67 }
68 // Constructors
69 SwingView::SwingView(JavaVM * jvm_) {
70 jmethodID constructObject = NULL ;
71 jobject localInstance ;
72 jclass localClass ;
73
74 const std::string construct="<init>";
75 const std::string param="()V";
76 jvm=jvm_;
77
78 JNIEnv * curEnv = getCurrentEnv();
79
80 localClass = curEnv->FindClass( this->className().c_str() ) ;
81 if (localClass == NULL) {
82   throw GiwsException::JniClassNotFoundException(curEnv, this->className());
83 }
84
85 this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
86
87 /* localClass is not needed anymore */
88 curEnv->DeleteLocalRef(localClass);
89
90 if (this->instanceClass == NULL) {
91 throw GiwsException::JniObjectCreationException(curEnv, this->className());
92 }
93
94
95 constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
96 if(constructObject == NULL){
97 throw GiwsException::JniObjectCreationException(curEnv, this->className());
98 }
99
100 localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
101 if(localInstance == NULL){
102 throw GiwsException::JniObjectCreationException(curEnv, this->className());
103 }
104  
105 this->instance = curEnv->NewGlobalRef(localInstance) ;
106 if(this->instance == NULL){
107 throw GiwsException::JniObjectCreationException(curEnv, this->className());
108 }
109 /* localInstance not needed anymore */
110 curEnv->DeleteLocalRef(localInstance);
111
112                 /* Methods ID set to NULL */
113 voidsetHeadlessjbooleanbooleanID=NULL;
114
115
116 }
117
118 SwingView::SwingView(JavaVM * jvm_, jobject JObj) {
119         jvm=jvm_;
120
121         JNIEnv * curEnv = getCurrentEnv();
122
123 jclass localClass = curEnv->GetObjectClass(JObj);
124         this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
125         curEnv->DeleteLocalRef(localClass);
126
127         if (this->instanceClass == NULL) {
128 throw GiwsException::JniObjectCreationException(curEnv, this->className());
129         }
130
131         this->instance = curEnv->NewGlobalRef(JObj) ;
132         if(this->instance == NULL){
133 throw GiwsException::JniObjectCreationException(curEnv, this->className());
134         }
135         /* Methods ID set to NULL */
136         voidsetHeadlessjbooleanbooleanID=NULL;
137
138
139 }
140
141 // Generic methods
142
143 void SwingView::synchronize() {
144 if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
145 throw GiwsException::JniMonitorException(getCurrentEnv(), "SwingView");
146 }
147 }
148
149 void SwingView::endSynchronize() {
150 if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
151 throw GiwsException::JniMonitorException(getCurrentEnv(), "SwingView");
152 }
153 }
154 // Method(s)
155
156 void SwingView::setHeadless (JavaVM * jvm_, bool headless){
157
158 JNIEnv * curEnv = NULL;
159 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
160 jclass cls = curEnv->FindClass( className().c_str() );
161
162 jmethodID voidsetHeadlessjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "setHeadless", "(Z)V" ) ;
163 if (voidsetHeadlessjbooleanbooleanID == NULL) {
164 throw GiwsException::JniMethodNotFoundException(curEnv, "setHeadless");
165 }
166
167 jboolean headless_ = (static_cast<bool>(headless) ? JNI_TRUE : JNI_FALSE);
168
169                          curEnv->CallStaticVoidMethod(cls, voidsetHeadlessjbooleanbooleanID ,headless_);
170                         curEnv->DeleteLocalRef(cls);
171 if (curEnv->ExceptionCheck()) {
172 throw GiwsException::JniCallMethodException(curEnv);
173 }
174 }
175
176 }