Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_Canvas_JNI / INC / ScenarioManager.h
diff --git a/WCudaMSE/API_Bilat_Canvas_JNI/INC/ScenarioManager.h b/WCudaMSE/API_Bilat_Canvas_JNI/INC/ScenarioManager.h
new file mode 100755 (executable)
index 0000000..39b49d7
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef SCENARIOMANAGER_H_
+#define SCENARIOMANAGER_H_
+#include "envCanvasJNI.h"
+#include "Scenario.h"
+
+#include <map>
+using std::map;
+
+#include <mutex>
+//#include <boost/thread/mutex.hpp>
+using std::mutex;
+
+/*----------------------------------------------------------------------*\
+ |*                    Declaration                                     *|
+ \*---------------------------------------------------------------------*/
+
+// Probleme:
+  //           La destruction de l'objet Scenario
+  //
+  // Solution:
+  //           Enregistrer cette instance dans le ScenarioManager
+  //
+  // Implementation:
+  //           ScenarioManager est une map de type <canvasNativeID,Scenario>
+  //
+  // Principe:
+  //
+  //           Lorsque cote java la methode finalize est appeler sur la canvasJava, l'id du CanvasNative associe est passer en natif.
+  //           Ce canvasNativeID est passer au ScenarioManager qui se charge de d�rtuire le secenario associ� � cet id
+  //
+  //            ScenarioManager::getInstance()->unregister(canvasNativeID) // efface le scenario, fait automatiquement, transparent pour l'utilisateur
+  //
+  // Conclusion:
+  //           Il est necessaire de registrer tout nouveau scenario!
+  //           Ceci se fait en appelant la methode d'instance register sur votre scenario apr�s son instanciation
+  //
+  //                   myScenarion->register()
+  //
+
+
+/*--------------------------------------*\
+ |*            Public                  *|
+ \*-------------------------------------*/
+
+class CBI_CANVAS_JNI ScenarioManager
+    {
+    public:
+       /*--------------------------------------*\
+        |*             Destructor              *|
+        \*-------------------------------------*/
+
+       virtual ~ScenarioManager();
+
+       static ScenarioManager* getInstance();
+
+       void registerScenario(Scenario* ptrScenario);
+
+       void unregister(int canvasNativeID);
+
+       Scenario* getScenario(int canvasNativeID);
+
+    private:
+       ScenarioManager();
+    private:
+       //Tools
+       map<int, Scenario*> mapPanelIDImageScenario;
+       mutex mutexMap;
+
+       // Singleton
+       static ScenarioManager* instance;
+    };
+
+#endif 
+
+/*----------------------------------------------------------------------*\
+ |*                    End                                             *|
+ \*---------------------------------------------------------------------*/