bug 12448: Double click on .sod file tried to open it with Scinotes instead of load it.
[scilab.git] / scilab / modules / ui_data / src / java / org / scilab / modules / ui_data / filebrowser / actions / ValidateAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.ui_data.filebrowser.actions;
14
15 import java.io.File;
16 import java.util.HashMap;
17 import java.util.Map;
18
19 import javax.swing.Action;
20 import javax.swing.ActionMap;
21
22 import org.scilab.modules.gui.events.callback.CommonCallBack;
23 import org.scilab.modules.ui_data.filebrowser.FileUtils;
24 import org.scilab.modules.ui_data.filebrowser.SwingScilabTreeTable;
25
26 /**
27  * Action to validate a file
28  * @author Calixte DENIZET
29  */
30 @SuppressWarnings(value = { "serial" })
31 public class ValidateAction extends CommonCallBack {
32
33     private SwingScilabTreeTable table;
34     private Map<String, Action> ext = new HashMap<String, Action>();
35
36     /**
37      * Default constructor
38      * @param table the table associated with this action
39      */
40     public ValidateAction(SwingScilabTreeTable table) {
41         super(null);
42         this.table = table;
43         ActionMap actions = table.getActionMap();
44         ext.put("", actions.get("open"));
45         ext.put("sce", actions.get("scinotes"));
46         ext.put("sci", actions.get("scinotes"));
47         ext.put("tst", actions.get("scinotes"));
48         ext.put("dem", actions.get("scinotes"));
49         ext.put("zcos", actions.get("xcos"));
50         ext.put("xcos", actions.get("xcos"));
51         ext.put("cos", actions.get("xcos"));
52         ext.put("cosf", actions.get("xcos"));
53         ext.put("bin", actions.get("load"));
54         ext.put("scg", actions.get("load"));
55         ext.put("sav", actions.get("load"));
56         ext.put("sod", actions.get("load"));
57         ext.put("graph", actions.get("graph"));
58     }
59
60     /**
61      * {@inheritDoc}
62      */
63     public void callBack() {
64         File[] files = table.getSelectedFiles();
65         if (files[0].isDirectory() && files[0].canRead()) {
66             table.getComboBox().setBaseDirAndValidate(files[0].getAbsolutePath());
67             return;
68         }
69
70         String extension = FileUtils.getFileExtension(files[0]).toLowerCase();
71         CommonCallBack c = (CommonCallBack) ext.get(extension);
72         if (c != null) {
73             c.callBack();
74         } else {
75             ((CommonCallBack) ext.get("")).callBack();
76         }
77     }
78 }