1 package cz
.cvut
.promod
.actions
;
3 import cz
.cvut
.promod
.services
.ModelerSession
;
4 import cz
.cvut
.promod
.services
.actionService
.actionUtils
.ProModAction
;
5 import cz
.cvut
.promod
.services
.projectService
.treeProjectNode
.ProjectRoot
;
6 import cz
.cvut
.promod
.services
.projectService
.results
.AddProjectItemResult
;
7 import cz
.cvut
.promod
.services
.projectService
.results
.LoadProjectResult
;
8 import cz
.cvut
.promod
.services
.projectService
.results
.ConfigurationDifference
;
9 import cz
.cvut
.promod
.gui
.support
.utils
.LoadProjectDialogFileFilter
;
10 import cz
.cvut
.promod
.gui
.projectNavigation
.ProjectNavigation
;
11 import cz
.cvut
.promod
.gui
.projectNavigation
.events
.ProjectTreeExpandEvent
;
12 import cz
.cvut
.promod
.gui
.ModelerModel
;
13 import cz
.cvut
.promod
.gui
.dialogs
.configurationChangeDialog
.ConfigurationDiffDialog
;
16 import javax
.swing
.tree
.TreePath
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.util
.List
;
21 import org
.apache
.log4j
.Logger
;
24 * ProMod, master thesis project
25 * User: Petr Zverina, petr.zverina@gmail.com
26 * Date: 22:47:03, 11.11.2009
28 * Project load actions.
30 public class LoadDialogAction
extends ProModAction
{
32 private static final Logger LOG
= Logger
.getLogger(LoadDialogAction
.class);
34 public LoadDialogAction(final String displayName
,
36 final KeyStroke keyStroke
) {
38 super(displayName
, icon
, keyStroke
);
41 public void actionPerformed(ActionEvent event
) {
43 final JFileChooser fileChooser
= new JFileChooser();
44 fileChooser
.setFileFilter(new LoadProjectDialogFileFilter());
46 final int returnVal
= fileChooser
.showOpenDialog(ModelerSession
.getFrame());
48 if (returnVal
== JFileChooser
.APPROVE_OPTION
) {
49 final File selectedFile
= fileChooser
.getSelectedFile();
51 final LoadProjectResult loadResult
= ModelerSession
.getProjectControlService().loadProject(selectedFile
);
53 if(loadResult
.getProjectRoot() == null){
54 JOptionPane
.showMessageDialog(
55 ModelerSession
.getFrame(),
56 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile"),
57 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile.title"),
58 JOptionPane
.ERROR_MESSAGE
);
63 // show the configuration differences dialog
64 final List
<ConfigurationDifference
> differences
= loadResult
.getMessages();
65 if(differences
!= null && !differences
.isEmpty()){
66 new ConfigurationDiffDialog(differences
);
69 final AddProjectItemResult result
= ModelerSession
.getProjectControlService().addProject(
70 new ProjectRoot(loadResult
.getProjectRoot().getDisplayName(), loadResult
.getProjectRoot().getProjectLocation()), true
73 switch (result
.getStatus()){
75 //sync project structure with file system = load project data
76 ModelerSession
.getProjectControlService().synchronize(
77 loadResult
.getProjectRoot().getProjectFile(), null, true, false, false, true);
79 final ProModAction action
= ModelerSession
.getActionService().getAction(
80 ModelerModel
.MODELER_IDENTIFIER
, ProjectNavigation
.ACTION_EXPAND
);
82 final TreePath projectTreePath
= result
.getTreePath();
83 ModelerSession
.getProjectControlService().setSelectedItem(projectTreePath
);
85 if(action
!= null && projectTreePath
!= null){
86 action
.actionPerformed(new ProjectTreeExpandEvent(this, projectTreePath
, 1, true));
88 LOG
.error("Expand action and/or project node is/are not available.");
105 private void alertGeneralError() {
106 JOptionPane
.showMessageDialog(
107 ModelerSession
.getFrame(),
108 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile"),
109 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile.title"),
110 JOptionPane
.ERROR_MESSAGE
);
113 private void alertIllegalName() {
114 JOptionPane
.showMessageDialog(
115 ModelerSession
.getFrame(),
116 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile"),
117 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile.title"),
118 JOptionPane
.ERROR_MESSAGE
);
121 private void alertNameDuplicity() {
122 JOptionPane
.showMessageDialog(
123 ModelerSession
.getFrame(),
124 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile"),
125 ModelerSession
.getCommonResourceBundle().getString("modeler.action.project.load.error.loadfile.title"),
126 JOptionPane
.ERROR_MESSAGE
);