]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/wxCDMMainFrame.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / wxCDMMainFrame.cpp
index 28d9a5d0e7860f3fe791adb9669577a4394a17eb..d8ffea1e4f50b10728a563145b306e437f4bd434 100755 (executable)
@@ -238,7 +238,7 @@ void wxCDMMainFrame::OnMenuNewProject(wxCommandEvent& event)
         }
 
       //populate tree control
-      tree_Projects->BuildTree(this->model->GetProject());
+      tree_Projects->BuildTree(this->model->GetModelElements(),this->model->GetProject());
       tree_Projects->SelectItem(this->model->GetProject()->GetId());
 
       //change description panel
@@ -325,7 +325,7 @@ void wxCDMMainFrame::OnMenuOpenProject(wxCommandEvent& event)
 
 
       //populate tree control
-      tree_Projects->BuildTree(this->model->GetProject());
+      tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
       tree_Projects->SelectItem(this->model->GetProject()->GetId());
 
       //change description panel
@@ -383,7 +383,7 @@ void wxCDMMainFrame::OnMenuCloseProject(wxCommandEvent& event)
       std::cout << "error closing project: " << *result << std::endl;
       wxMessageBox( crea::std2wx(result->c_str()), wxT("Close Project - Error"), wxICON_ERROR);
     }
-  tree_Projects->BuildTree(this->model->GetProject());
+  tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
 
   if(this->panel_Properties != NULL)
     {
@@ -412,7 +412,38 @@ void wxCDMMainFrame::OnMenuCloseProject(wxCommandEvent& event)
 }
 void wxCDMMainFrame::OnMenuCloseAllProjects(wxCommandEvent& event)
 {
-  std::cerr << "Event OnMenuCloseAllProjects not implemented" << std::endl;
+  std::cerr << "Event OnMenuCloseAllProjects closing only one project" << std::endl;
+  std::string* result;
+  if(!this->model->CloseProject(result))
+    {
+      std::cout << "error closing project: " << *result << std::endl;
+      wxMessageBox( crea::std2wx(result->c_str()), wxT("Close Project - Error"), wxICON_ERROR);
+    }
+  tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
+
+  if(this->panel_Properties != NULL)
+    {
+      auiManager.DetachPane(this->panel_Properties);
+      this->panel_Properties->Destroy();
+    }
+  if(this->panel_ProjectActions != NULL)
+    {
+      auiManager.DetachPane(this->panel_ProjectActions);
+      this->panel_ProjectActions->Destroy();
+    }
+
+  this->panel_Properties = new wxCDMMainDescriptionPanel(
+      this,
+      ID_WINDOW_PROPERTIES,
+      wxT("Description Panel"),
+      wxDefaultPosition,
+      wxSize(300, 400),
+      0
+  );
+
+  auiManager.AddPane(panel_Properties, wxCENTER, wxT("Properties"));
+
+  auiManager.Update();
   event.Skip();
 }
 void wxCDMMainFrame::OnMenuExportHierarchy(wxCommandEvent& event)
@@ -423,6 +454,33 @@ void wxCDMMainFrame::OnMenuExportHierarchy(wxCommandEvent& event)
 void wxCDMMainFrame::OnMenuExit(wxCommandEvent& event)
 {
   std::cout << "Closing CreaDevManager..." << std::endl;
+  std::string* result;
+  if(!this->model->CloseProject(result))
+    {
+      std::cout << "error closing project: " << *result << std::endl;
+      wxMessageBox( crea::std2wx(result->c_str()), wxT("Close Project - Error"), wxICON_ERROR);
+    }
+  tree_Projects->BuildTree(this->model->GetModelElements(), this->model->GetProject());
+
+  if(this->panel_Properties != NULL)
+    {
+      auiManager.DetachPane(this->panel_Properties);
+      this->panel_Properties->Destroy();
+    }
+  if(this->panel_ProjectActions != NULL)
+    {
+      auiManager.DetachPane(this->panel_ProjectActions);
+      this->panel_ProjectActions->Destroy();
+    }
+
+  this->panel_Properties = new wxCDMMainDescriptionPanel(
+      this,
+      ID_WINDOW_PROPERTIES,
+      wxT("Description Panel"),
+      wxDefaultPosition,
+      wxSize(300, 400),
+      0
+  );
   Close();
   event.Skip();
 }
@@ -520,6 +578,18 @@ void wxCDMMainFrame::OnMenuAboutCreatis(wxCommandEvent& event)
 
 void wxCDMMainFrame::OnTreeSelectionChanged(wxTreeEvent& event)
 {
-  std::cerr << "Event OnTreeSelectionChange not implemented" << std::endl;
+  std::cout << "New Tree Selection" << std::endl;
+  //get selected element
+  wxTreeItemId elementId = event.GetItem();
+
+  //get element from model
+  modelCDMIProjectTreeNode* element = this->model->GetModelElements()[elementId];
+  std::cout << "Tree Selection: " << element->GetName() << std::endl;
+
+  //TODO get element type
+  //TODO create element description
+  //TODO delete old view
+  //TODO set new view
   event.Skip();
+
 }