Converted all CRLF to LF.
[indepmod/mmn.git] / IndependentModeler / src / cz / cvut / promod / actions / LoadDialogAction.java
blobd6d9696ca2ef381195950f6f1ad8d8eca74526c1
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;
15 import javax.swing.*;
16 import javax.swing.tree.TreePath;
17 import java.io.File;
18 import java.awt.event.ActionEvent;
19 import java.util.List;
21 import org.apache.log4j.Logger;
23 /**
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,
35 final Icon icon,
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);
60 return;
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()){
74 case SUCCESS:
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));
87 } else {
88 LOG.error("Expand action and/or project node is/are not available.");
91 break;
92 case NAME_DUPLICITY:
93 alertNameDuplicity();
94 break;
95 case INVALID_NAME:
96 alertIllegalName();
97 break;
98 default:
99 alertGeneralError();
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);