better management of pwd on set of icon property
[scilab.git] / scilab / modules / commons / src / jni / FindIconHelper.cpp
1 #include "FindIconHelper.hxx"
2 /* Generated by GIWS (version 2.0.2) with command:
3 giws --disable-return-size-array --output-dir src/jni --throws-exception-on-error --description-file src\jni\FindIconHelper.xml
4 */
5 /*
6
7 This is generated code.
8
9 This software is a computer program whose purpose is to hide the complexity
10 of accessing Java objects/methods from C++ code.
11
12 This software is governed by the CeCILL-B license under French law and
13 abiding by the rules of distribution of free software.  You can  use,
14 modify and/ or redistribute the software under the terms of the CeCILL-B
15 license as circulated by CEA, CNRS and INRIA at the following URL
16 "http://www.cecill.info".
17
18 As a counterpart to the access to the source code and  rights to copy,
19 modify and redistribute granted by the license, users are provided only
20 with a limited warranty  and the software's author,  the holder of the
21 economic rights,  and the successive licensors  have only  limited
22 liability.
23
24 In this respect, the user's attention is drawn to the risks associated
25 with loading,  using,  modifying and/or developing or reproducing the
26 software by the user in light of its specific status of free software,
27 that may mean  that it is complicated to manipulate,  and  that  also
28 therefore means  that it is reserved for developers  and  experienced
29 professionals having in-depth computer knowledge. Users are therefore
30 encouraged to load and test the software's suitability as regards their
31 requirements in conditions enabling the security of their systems and/or
32 data to be ensured and,  more generally, to use and operate it in the
33 same conditions as regards security.
34
35 The fact that you are presently reading this means that you have had
36 knowledge of the CeCILL-B license and that you accept its terms.
37 */
38
39 namespace org_scilab_modules_commons_gui {
40
41                 // Static declarations (if any)
42                 
43 // Returns the current env
44
45 JNIEnv * FindIconHelper::getCurrentEnv() {
46 JNIEnv * curEnv = NULL;
47 jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
48 if (res != JNI_OK) {
49 throw GiwsException::JniException(getCurrentEnv());
50 }
51 return curEnv;
52 }
53 // Destructor
54
55 FindIconHelper::~FindIconHelper() {
56 JNIEnv * curEnv = NULL;
57 this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
58 curEnv->DeleteGlobalRef(this->instance);
59 curEnv->DeleteGlobalRef(this->instanceClass);
60 }
61 // Constructors
62 FindIconHelper::FindIconHelper(JavaVM * jvm_) {
63 jmethodID constructObject = NULL ;
64 jobject localInstance ;
65 jclass localClass ;
66
67 const std::string construct="<init>";
68 const std::string param="()V";
69 jvm=jvm_;
70
71 JNIEnv * curEnv = getCurrentEnv();
72
73 localClass = curEnv->FindClass( this->className().c_str() ) ;
74 if (localClass == NULL) {
75   throw GiwsException::JniClassNotFoundException(curEnv, this->className());
76 }
77
78 this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
79
80 /* localClass is not needed anymore */
81 curEnv->DeleteLocalRef(localClass);
82
83 if (this->instanceClass == NULL) {
84 throw GiwsException::JniObjectCreationException(curEnv, this->className());
85 }
86
87
88 constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
89 if(constructObject == NULL){
90 throw GiwsException::JniObjectCreationException(curEnv, this->className());
91 }
92
93 localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
94 if(localInstance == NULL){
95 throw GiwsException::JniObjectCreationException(curEnv, this->className());
96 }
97  
98 this->instance = curEnv->NewGlobalRef(localInstance) ;
99 if(this->instance == NULL){
100 throw GiwsException::JniObjectCreationException(curEnv, this->className());
101 }
102 /* localInstance not needed anymore */
103 curEnv->DeleteLocalRef(localInstance);
104
105                 /* Methods ID set to NULL */
106 voidaddThemePathjstringjava_lang_StringID=NULL;
107 jstringfindIconjstringjava_lang_StringjbooleanbooleanID=NULL;
108
109
110 }
111
112 FindIconHelper::FindIconHelper(JavaVM * jvm_, jobject JObj) {
113         jvm=jvm_;
114
115         JNIEnv * curEnv = getCurrentEnv();
116
117 jclass localClass = curEnv->GetObjectClass(JObj);
118         this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
119         curEnv->DeleteLocalRef(localClass);
120
121         if (this->instanceClass == NULL) {
122 throw GiwsException::JniObjectCreationException(curEnv, this->className());
123         }
124
125         this->instance = curEnv->NewGlobalRef(JObj) ;
126         if(this->instance == NULL){
127 throw GiwsException::JniObjectCreationException(curEnv, this->className());
128         }
129         /* Methods ID set to NULL */
130         voidaddThemePathjstringjava_lang_StringID=NULL;
131 jstringfindIconjstringjava_lang_StringjbooleanbooleanID=NULL;
132
133
134 }
135
136 // Generic methods
137
138 void FindIconHelper::synchronize() {
139 if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
140 throw GiwsException::JniMonitorException(getCurrentEnv(), "FindIconHelper");
141 }
142 }
143
144 void FindIconHelper::endSynchronize() {
145 if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
146 throw GiwsException::JniMonitorException(getCurrentEnv(), "FindIconHelper");
147 }
148 }
149 // Method(s)
150
151 void FindIconHelper::addThemePath (JavaVM * jvm_, char const* path){
152
153 JNIEnv * curEnv = NULL;
154 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
155 jclass cls = initClass(curEnv);
156 if ( cls == NULL) {
157 throw GiwsException::JniCallMethodException(curEnv);
158 }
159
160 static jmethodID voidaddThemePathjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "addThemePath", "(Ljava/lang/String;)V" ) ;
161 if (voidaddThemePathjstringjava_lang_StringID == NULL) {
162 throw GiwsException::JniMethodNotFoundException(curEnv, "addThemePath");
163 }
164
165 jstring path_ = curEnv->NewStringUTF( path );
166 if (path != NULL && path_ == NULL)
167 {
168 throw GiwsException::JniBadAllocException(curEnv);
169 }
170
171
172                          curEnv->CallStaticVoidMethod(cls, voidaddThemePathjstringjava_lang_StringID ,path_);
173                         curEnv->DeleteLocalRef(path_);
174 if (curEnv->ExceptionCheck()) {
175 throw GiwsException::JniCallMethodException(curEnv);
176 }
177 }
178
179 char* FindIconHelper::findIcon (JavaVM * jvm_, char const* path, bool defaultValue){
180
181 JNIEnv * curEnv = NULL;
182 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
183 jclass cls = initClass(curEnv);
184 if ( cls == NULL) {
185 throw GiwsException::JniCallMethodException(curEnv);
186 }
187
188 static jmethodID jstringfindIconjstringjava_lang_StringjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "findIcon", "(Ljava/lang/String;Z)Ljava/lang/String;" ) ;
189 if (jstringfindIconjstringjava_lang_StringjbooleanbooleanID == NULL) {
190 throw GiwsException::JniMethodNotFoundException(curEnv, "findIcon");
191 }
192
193 jstring path_ = curEnv->NewStringUTF( path );
194 if (path != NULL && path_ == NULL)
195 {
196 throw GiwsException::JniBadAllocException(curEnv);
197 }
198
199
200 jboolean defaultValue_ = (static_cast<bool>(defaultValue) ? JNI_TRUE : JNI_FALSE);
201
202                         jstring res =  static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringfindIconjstringjava_lang_StringjbooleanbooleanID ,path_, defaultValue_));
203                         if (curEnv->ExceptionCheck()) {
204 throw GiwsException::JniCallMethodException(curEnv);
205 }if (res != NULL) { 
206
207 const char *tempString = curEnv->GetStringUTFChars(res, 0);
208 char * myStringBuffer = new char[strlen(tempString) + 1];
209 strcpy(myStringBuffer, tempString);
210 curEnv->ReleaseStringUTFChars(res, tempString);
211 curEnv->DeleteLocalRef(res);
212 curEnv->DeleteLocalRef(path_);
213 if (curEnv->ExceptionCheck()) {
214 delete[] myStringBuffer;
215                                 throw GiwsException::JniCallMethodException(curEnv);
216 }
217 return myStringBuffer;
218  } else { 
219 curEnv->DeleteLocalRef(res);
220 return NULL;
221 }
222 }
223
224 }