From 858c5c5ffbdcc85a4b41e021d48dd3c3249c41df Mon Sep 17 00:00:00 2001
From: Fabien Tessier <fabien.tessier@telecom-paristech.fr>
Date: Thu, 21 Dec 2017 10:31:29 +0100
Subject: [PATCH] Separate open project and open xml

---
 src/main/java/ui/ActionPerformer.java         |  4 +-
 src/main/java/ui/JMenuBarTurtle.java          |  2 +
 src/main/java/ui/JToolBarMainTurtle.java      |  2 +
 src/main/java/ui/MainGUI.java                 | 99 ++++++++++++++++++-
 src/main/java/ui/ModeManager.java             |  1 +
 src/main/java/ui/TGUIAction.java              |  4 +-
 .../project_config.xml                        |  0
 7 files changed, 108 insertions(+), 4 deletions(-)
 rename ttool/{launch_configurations => }/project_config.xml (100%)

diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java
index b3d139eb66..a5d29192ae 100755
--- a/src/main/java/ui/ActionPerformer.java
+++ b/src/main/java/ui/ActionPerformer.java
@@ -72,7 +72,9 @@ public class ActionPerformer {
         } else if (command.equals(mgui.actions[TGUIAction.ACT_OPEN_FROM_NETWORK].getActionCommand())) {
             mgui.openNetworkProject();
         } else if (command.equals(mgui.actions[TGUIAction.ACT_OPEN].getActionCommand())) {
-            mgui.openProject();
+            mgui.openProject(false);
+        } else if (command.equals(mgui.actions[TGUIAction.ACT_OPEN_PROJECT].getActionCommand())) {
+            mgui.openProject(true);
         } else if (command.equals(mgui.actions[TGUIAction.ACT_MERGE].getActionCommand())) {
             mgui.mergeProject();
         } else if (command.equals(mgui.actions[TGUIAction.ACT_OPEN_LAST].getActionCommand())) {
diff --git a/src/main/java/ui/JMenuBarTurtle.java b/src/main/java/ui/JMenuBarTurtle.java
index 31b411d19c..448c131c8a 100755
--- a/src/main/java/ui/JMenuBarTurtle.java
+++ b/src/main/java/ui/JMenuBarTurtle.java
@@ -101,6 +101,8 @@ public  class JMenuBarTurtle extends JMenuBar   {
         menuItem.addMouseListener(mgui.mouseHandler);
         menuItem = file.add(mgui.actions[TGUIAction.ACT_OPEN]);
         menuItem.addMouseListener(mgui.mouseHandler);
+        menuItem = file.add(mgui.actions[TGUIAction.ACT_OPEN_PROJECT]);
+        menuItem.addMouseListener(mgui.mouseHandler);
 	menuItem = file.add(mgui.actions[TGUIAction.ACT_OPEN_FROM_NETWORK]);
         menuItem.addMouseListener(mgui.mouseHandler);
         menuItem = file.add(mgui.actions[TGUIAction.ACT_SAVE]);
diff --git a/src/main/java/ui/JToolBarMainTurtle.java b/src/main/java/ui/JToolBarMainTurtle.java
index 28663d536e..676e230093 100755
--- a/src/main/java/ui/JToolBarMainTurtle.java
+++ b/src/main/java/ui/JToolBarMainTurtle.java
@@ -88,6 +88,8 @@ public  class JToolBarMainTurtle extends JToolBar implements ActionListener
         button.addMouseListener(mgui.mouseHandler);
         button = add(mgui.actions[TGUIAction.ACT_OPEN]);
         button.addMouseListener(mgui.mouseHandler);
+        button = add(mgui.actions[TGUIAction.ACT_OPEN_PROJECT]);
+        button.addMouseListener(mgui.mouseHandler);
         button = add(mgui.actions[TGUIAction.ACT_SAVE]);
         button.addMouseListener(mgui.mouseHandler);
         //button = add(mgui.actions[TGUIAction.ACT_SAVE_AS]);
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index 875f49a37a..795218399a 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -100,6 +100,8 @@ import javax.imageio.ImageIO;
 import javax.swing.*;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
+import javax.swing.filechooser.FileNameExtensionFilter;
+
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.image.BufferedImage;
@@ -450,7 +452,7 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
 
         TFileFilter filter = new TFileFilter();
         jfc.setFileFilter(filter);
-        jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+        jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
 
         TTIFFilter filtertif = new TTIFFilter();
         jfctif.setFileFilter(filtertif);
@@ -2376,7 +2378,7 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
     }
 
 
-    public void openProject() {
+    public void openProject(boolean isProject) {
     	if (config != null && activetdp != null)
 			saveConfig();
         // check if a current modeling is opened
@@ -2393,6 +2395,99 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
         }
 
         //jfc.setApproveButtonText("Open");
+        if (isProject) {
+        	jfc.resetChoosableFileFilters();
+        	jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+        	jfc.setAcceptAllFileFilterUsed(false);
+        	FileNameExtensionFilter filter = new FileNameExtensionFilter("TTool project", "ttool");
+        	jfc.setFileFilter(filter);
+        	/*jfc.addMouseListener(new MouseListener() {
+
+        	    @Override
+        	    public void mouseClicked(MouseEvent arg0) {
+
+        	        if(arg0.getClickCount() == 2) {
+        	            File file = jfc.getSelectedFile();
+        	            if(!FileUtils.getExtension(file).equals("ttool")) {
+        	                jfc.setCurrentDirectory(file);
+        	                jfc.rescanCurrentDirectory();
+        	            }
+        	            else {
+        	                jfc.approveSelection();
+        	            }
+        	        }
+        	    }
+
+				@Override
+				public void mouseEntered(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}
+
+				@Override
+				public void mouseExited(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}
+
+				@Override
+				public void mousePressed(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}
+
+				@Override
+				public void mouseReleased(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}		
+        	});*/
+        }
+        else {
+        	jfc.resetChoosableFileFilters();
+        	jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
+        	jfc.setAcceptAllFileFilterUsed(false);
+        	FileNameExtensionFilter filter = new FileNameExtensionFilter("XML files", "xml");
+        	jfc.setFileFilter(filter);
+        	/*jfc.addMouseListener(new MouseListener() {
+
+        	    @Override
+        	    public void mouseClicked(MouseEvent arg0) {
+
+        	        if(arg0.getClickCount() == 2) {
+        	            File file = jfc.getSelectedFile();
+        	            if(!FileUtils.getExtension(file).equals("ttool")) {
+        	                jfc.setCurrentDirectory(file);
+        	                jfc.rescanCurrentDirectory();
+        	            }
+        	        }
+        	    }
+
+				@Override
+				public void mouseEntered(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}
+
+				@Override
+				public void mouseExited(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}
+
+				@Override
+				public void mousePressed(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}
+
+				@Override
+				public void mouseReleased(MouseEvent e) {
+					// TODO Auto-generated method stub
+					return;
+				}		
+        	});*/
+        }
         int returnVal = jfc.showOpenDialog(frame);
 
         if (returnVal == JFileChooser.CANCEL_OPTION) {
diff --git a/src/main/java/ui/ModeManager.java b/src/main/java/ui/ModeManager.java
index 2a9b2c0221..4a9b4fcafe 100755
--- a/src/main/java/ui/ModeManager.java
+++ b/src/main/java/ui/ModeManager.java
@@ -63,6 +63,7 @@ public class ModeManager {
             actions[TGUIAction.ACT_NEW].setEnabled(true);
             actions[TGUIAction.ACT_NEW_PROJECT].setEnabled(true);
             actions[TGUIAction.ACT_OPEN].setEnabled(true);
+            actions[TGUIAction.ACT_OPEN_PROJECT].setEnabled(true);
             actions[TGUIAction.ACT_OPEN_FROM_NETWORK].setEnabled(true);
             actions[TGUIAction.ACT_OPEN_TIF].setEnabled(true);
             actions[TGUIAction.ACT_OPEN_SD].setEnabled(true);
diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java
index 1d0fbefde1..512b14c493 100755
--- a/src/main/java/ui/TGUIAction.java
+++ b/src/main/java/ui/TGUIAction.java
@@ -71,6 +71,7 @@ public class TGUIAction extends AbstractAction {
     public static final int ACT_NEW_DESIGN = 100;
     public static final int ACT_NEW_ANALYSIS = 101;
     public static final int ACT_OPEN = 1;
+    public static final int ACT_OPEN_PROJECT = 466;
     public static final int ACT_OPEN_FROM_NETWORK = 455;
     public static final int ACT_OPEN_LAST = 154;
     public static final int ACT_MERGE = 228;
@@ -620,7 +621,7 @@ public class TGUIAction extends AbstractAction {
     public static final int MOVE_ENABLED = 463;
     public static final int FIRST_DIAGRAM = 464;
     
-    public static final int NB_ACTION = 466;
+    public static final int NB_ACTION = 467;
 
     private static final TAction [] actions = new TAction[NB_ACTION];
 
@@ -678,6 +679,7 @@ public class TGUIAction extends AbstractAction {
         actions[ACT_NEW_DESIGN] = new TAction("new-command-design", "New design", IconManager.imgic14, IconManager.imgic14, "New design", "New TURTLE design", 0);
         actions[ACT_NEW_ANALYSIS] = new TAction("new-command-analysis", "New analysis", IconManager.imgic17, IconManager.imgic17, "New analysis", "New TURTLE analysis", 0);
         actions[ACT_OPEN] = new TAction("open-command","Open", IconManager.imgic22, IconManager.imgic23, "Open", "Open an existing TTool model",'O', true);
+        actions[ACT_OPEN_PROJECT] = new TAction("open-project-command","Open project", IconManager.imgic22, IconManager.imgic23, "Open project", "Open an existing TTool project",'O', true);
         actions[ACT_OPEN_FROM_NETWORK] = new TAction("open-command-from-network","Open from TTool repository", IconManager.imgic22, IconManager.imgic23, "Open from TTool repository", "Open an existing TTool model from the TTool repository (TTool website)",'0', true);
         actions[ACT_OPEN_LAST] = new TAction("openlast-command","Open file: " + ConfigurationTTool.LastOpenFile, IconManager.imgic22, IconManager.imgic23, "Open: " + ConfigurationTTool.LastOpenFile, "Open the lastly saved TTool model", 0);
         actions[ACT_MERGE] = new TAction("merge-command","Merge", IconManager.imgic22, IconManager.imgic23, "Merge", "Merge the current TTool modeling with another one saved in a file ", 0);
diff --git a/ttool/launch_configurations/project_config.xml b/ttool/project_config.xml
similarity index 100%
rename from ttool/launch_configurations/project_config.xml
rename to ttool/project_config.xml
-- 
GitLab