Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / API_Bilat_Canvas_JNI / INC / ScenarioManager.h
1 #ifndef SCENARIOMANAGER_H_
2 #define SCENARIOMANAGER_H_
3 #include "envCanvasJNI.h"
4 #include "Scenario.h"
5
6 #include <map>
7 using std::map;
8
9 #include <mutex>
10 //#include <boost/thread/mutex.hpp>
11 using std::mutex;
12
13 /*----------------------------------------------------------------------*\
14 |* Declaration *|
15 \*---------------------------------------------------------------------*/
16
17 // Probleme:
18 // La destruction de l'objet Scenario
19 //
20 // Solution:
21 // Enregistrer cette instance dans le ScenarioManager
22 //
23 // Implementation:
24 // ScenarioManager est une map de type <canvasNativeID,Scenario>
25 //
26 // Principe:
27 //
28 // Lorsque cote java la methode finalize est appeler sur la canvasJava, l'id du CanvasNative associe est passer en natif.
29 // Ce canvasNativeID est passer au ScenarioManager qui se charge de d�rtuire le secenario associ� � cet id
30 //
31 // ScenarioManager::getInstance()->unregister(canvasNativeID) // efface le scenario, fait automatiquement, transparent pour l'utilisateur
32 //
33 // Conclusion:
34 // Il est necessaire de registrer tout nouveau scenario!
35 // Ceci se fait en appelant la methode d'instance register sur votre scenario apr�s son instanciation
36 //
37 // myScenarion->register()
38 //
39
40
41 /*--------------------------------------*\
42 |* Public *|
43 \*-------------------------------------*/
44
45 class CBI_CANVAS_JNI ScenarioManager
46 {
47 public:
48 /*--------------------------------------*\
49 |* Destructor *|
50 \*-------------------------------------*/
51
52 virtual ~ScenarioManager();
53
54 static ScenarioManager* getInstance();
55
56 void registerScenario(Scenario* ptrScenario);
57
58 void unregister(int canvasNativeID);
59
60 Scenario* getScenario(int canvasNativeID);
61
62 private:
63 ScenarioManager();
64 private:
65 //Tools
66 map<int, Scenario*> mapPanelIDImageScenario;
67 mutex mutexMap;
68
69 // Singleton
70 static ScenarioManager* instance;
71 };
72
73 #endif
74
75 /*----------------------------------------------------------------------*\
76 |* End *|
77 \*---------------------------------------------------------------------*/