package captor.projectsystem.open;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import captor.lib.intl.MyIntl;
import captor.modelsystem.Model;
import captor.modelsystem.Project;
import captor.projectsystem.ProjectSystem;
import captor.windowsystem.main.locationPane.TreeBuilder;
import captor.windowsystem.project.OpenProjectFilter;
public class OpenProject {
JFileChooser fc;
private Model model;
public OpenProject(Model model) {
this.model = model;
File file = null;
//escolher um path padr�o
String path = model.getConfig().getGuiHiddenConfig().getLastOpenProjectDirectory();
if ( path != null ) {
path = path.substring(0, (path.lastIndexOf(File.separator) + 1));
file = new File(path);
}
if ( file == null ) {
file = new File(model.getConfig().getSystemConfig().getInstallPath());
}
if ( file == null ) {
file = new File(".");
}
fc = new JFileChooser(file);
fc.addChoosableFileFilter(new OpenProjectFilter());
}
//-------------------------------------------------------------------------
public void open() {
int returnVal = fc.showOpenDialog(model.getGui().getCaptorWindow());
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
open(file);
}
}
public void open(String path) {
File file = new File(path);
if ( !file.isFile()) {
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG30);
return;
}
open(file);
}
//-------------------------------------------------------------------------
public void open(File file) {
model.getGui().getGuiView().setClearAllViews(true);
if ( model.getProject() == null )
model.setProject(new Project(model));
//carregando o projeto
model.getProject().load(file.getAbsolutePath());
model.getConfig().getGuiHiddenConfig().addLastOpenProject(file.getAbsolutePath());
//carregando o meta-modelo
model.getGui().loadGuiDomain();
//carregando a �rvore de padr�es
ProjectSystem pm = new ProjectSystem(model);
if ( !loadTree() ) {
model.setProject(null);
return;
}
//mostrando a janela de propriedades do projeto
pm.showProperties();
//armazenando no hist�rico dos arquivos abertos
model.getConfig().getGuiHiddenConfig().setLastOpenProjectDirectory(file.getAbsolutePath());
model.getProject().setStatus(Project.SAVED);
}
//-------------------------------------------------------------------------
public boolean loadTree() {
//para cada arquivo de intera��o
File inputDir = new File(model.getProject().getInputFolder());
if ( !inputDir.exists() || !inputDir.isDirectory() ) {
String msg = "Cannot load project.<br>";
msg = msg + "The directory: " + inputDir.getAbsolutePath() + " either does not exist or is not a directory.<br><br>";
String details = new String(msg);
msg = msg + "See error view for details.";
details = details + "Possible source problems are:<br><br>";
details = details + " - Source: The file is corrupted.<br>";
details = details + " - Correction: Open the project file and fix the problem.<br><br>";
model.getGui().getGuiView().setErrorView(details);
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG32);
return false;
}
File []files = inputDir.listFiles();
TreeBuilder mr = new TreeBuilder(model);
for ( int i = 0; i < files.length; i++ ) {
mr.buildInteraction(files[i]);
}
//expand tree
TreeBuilder tb = new TreeBuilder(model);
tb.expandFirstInteraction();
tb.selectFirstFormFromFirstInteraction();
model.getGui().getGuiControl().setLoadedPattern(true);
return true;
}
//-------------------------------------------------------------------------
}