package captor.projectsystem; import javax.swing.JOptionPane; import captor.lib.intl.MyIntl; import captor.modelsystem.Model; import captor.modelsystem.Project; import captor.projectsystem.build.BuilderLauncherThread; import captor.projectsystem.clean.CleanProject; import captor.projectsystem.close.CloseProject; import captor.projectsystem.open.OpenProject; import captor.projectsystem.save.SaveProject; import captor.projectsystem.saveas.SaveProjectAs; import captor.projectsystem.util.LongTask; import captor.projectsystem.validate.ValidateProject; import captor.windowsystem.ProjectPropertiesWindow; import captor.windowsystem.projectmanager.build.ProgressLauncher; /** * * This class is the facade desing pattern for project management requirements. * * <p> * It has methods to build, save, clean, save as, open and close a * project. * </p> * * @author Kicho */ public class ProjectSystem { private Model model; public ProjectSystem(Model model) { this.model = model; } //------------------------------------------------------------------------- public void openProject() { if ( model.getProject() != null && model.getProject().getStatus() != Project.CLOSED ) { if ( ! closeProject() ) { return; } } OpenProject op = new OpenProject(model); op.open(); } public void openProject(String path) { if ( model.getProject() != null && model.getProject().getStatus() != Project.CLOSED ) { if ( ! closeProject() ) { return; } } OpenProject op = new OpenProject(model); op.open(path); } //------------------------------------------------------------------------- public void build() { if ( model.getGui().getGuiControl().getFormError() != null ) model.getGui().getGuiControl().getFormError().setBorder(null); //verificando o estado do model.getProject() if ( model.getProject() == null || model.getProject()== null || model.getProject().getStatus() == Project.CLOSED ) { JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG32); return; } //se o projeto n�o estiver salvo n�o ser� poss�vel continuar o processo de compila��o if ( model.getProject().getStatus() != Project.SAVED ) { int res = JOptionPane.showConfirmDialog(model.getGui().getCaptorWindow(), MyIntl.MSG33, MyIntl.MSG34, JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if ( res != JOptionPane.OK_OPTION ) { return; } SaveProject sp = new SaveProject(model); if ( !sp.save() ) return; } model.getGui().getGuiView().setClearAllViews(true); //isso lan�a a janela da barra de progresso LongTask task = new LongTask(); ProgressLauncher pl = new ProgressLauncher(model, task); pl.start(); //lan�a a thread que faz o build BuilderLauncherThread bt = new BuilderLauncherThread(model, task); bt.start(); return; } //------------------------------------------------------------------------- public boolean validate() { if ( model.getGui().getGuiControl().getFormError() != null ) model.getGui().getGuiControl().getFormError().setBorder(null); ValidateProject vp = new ValidateProject(model); if ( !vp.validate() ) { return false; } JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG35); return true; } //------------------------------------------------------------------------- public boolean save() { if ( model.getGui().getGuiControl().getFormError() != null ) model.getGui().getGuiControl().getFormError().setBorder(null); SaveProject sp = new SaveProject(model); return sp.save(); } //------------------------------------------------------------------------- public void saveAs(String name, String baseDir, String outputDir) { if ( model.getGui().getGuiControl().getFormError() != null ) model.getGui().getGuiControl().getFormError().setBorder(null); SaveProjectAs spa = new SaveProjectAs(model); spa.saveAs(name, baseDir, outputDir); } //------------------------------------------------------------------------- public void showProperties() { if ( model.getProject() == null || model.getProject().getStatus() == Project.CLOSED ) { JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG36); } else { ProjectPropertiesWindow pp = new ProjectPropertiesWindow(model); pp.setVisible(true); } } //------------------------------------------------------------------------- public void clean() { CleanProject cp = new CleanProject(model); cp.clean(); } //------------------------------------------------------------------------- public boolean closeProject() { CloseProject cp = new CloseProject(model); return cp.closeProject(); } //------------------------------------------------------------------------- }