package captor.windowsystem.project.newproject; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import captor.lib.intl.MyIntl; import captor.modelsystem.Model; import captor.modelsystem.Project; import captor.windowsystem.CaptorFrame; import captor.windowsystem.main.locationPane.FormNavigatorListener; public class Footer extends JPanel implements ActionListener { public static final long serialVersionUID = 121; private Model model; private Body body; private Project project; private CaptorFrame frame; JButton back, next, finish, cancel; public Footer(Model model, Project project, CaptorFrame frame) { super(); this.model = model; this.project = project; this.frame = frame; create(); } //------------------------------------------------------------------------- public void create() { this.setPreferredSize(new Dimension(500,40)); this.setBorder(BorderFactory.createLineBorder(Color.black)); this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); back = new JButton(MyIntl.NEW_PROJECT_WINDOW_BACK); next = new JButton(MyIntl.NEW_PROJECT_WINDOW_NEXT); finish = new JButton(MyIntl.NEW_PROJECT_WINDOW_FINISH); cancel = new JButton(MyIntl.NEW_PROJECT_WINDOW_CANCEL); back.addActionListener(this); next.addActionListener(this); finish.addActionListener(this); cancel.addActionListener(this); back.setPreferredSize(new Dimension(85, 400)); next.setPreferredSize(new Dimension(85, 400)); finish.setPreferredSize(new Dimension(85, 400)); cancel.setPreferredSize(new Dimension(85, 400)); finish.setEnabled(false); back.setEnabled(false); Dimension minSize = new Dimension(5, 450); Dimension prefSize = new Dimension(150, 450); Dimension maxSize = new Dimension(500, 450); add(new Box.Filler(minSize, prefSize, maxSize)); add(cancel); add(new JLabel(" ")); add(back); add(new JLabel(" ")); add(next); add(new JLabel(" ")); add(finish); add(new JLabel(" ")); } //------------------------------------------------------------------------- /** * @return Returns the body. */ public Body getBody() { return body; } /** * @param body The body to set. */ public void setBody(Body body) { this.body = body; } //------------------------------------------------------------------------- public void actionPerformed (ActionEvent e) { if ( e.getActionCommand().equals(MyIntl.NEW_PROJECT_WINDOW_CANCEL) ) { frame.dispose(); } else if ( e.getActionCommand().equals(MyIntl.NEW_PROJECT_WINDOW_NEXT) ) { body.next(); } else if ( e.getActionCommand().equals(MyIntl.NEW_PROJECT_WINDOW_BACK) ) { body.back(); } else if ( e.getActionCommand().equals(MyIntl.NEW_PROJECT_WINDOW_FINISH) ) { project.setStatus(Project.SAVED); model.setProject(project); model.getGui().loadGuiDomain(); createProject(); frame.dispose(); } updateButtons(); } //------------------------------------------------------------------------- public void updateButtons() { if ( !body.hasBack() ) back.setEnabled(false); else back.setEnabled(true); if ( !body.hasNext() ) { next.setEnabled(false); finish.setEnabled(true); finish.requestFocusInWindow(); } else { next.setEnabled(true); finish.setEnabled(false); } } //------------------------------------------------------------------------- private void createProject() { //verificar se o path existe File file = new File(model.getProject().getPath()); //se path nao existir, criar como diretorio if ( !file.exists() ) { if ( !file.mkdirs() ) { String errorMsg = "<font color=\"#FF0000\"><b>Create project error.</b></font><br>Cannot create project because the directory \"" + model.getProject().getPath() + "\" cannot be created.<br>"; model.getGui().getGuiView().setErrorView(errorMsg); } } else if ( !file.isDirectory() ) { String errorMsg = "<font color=\"#FF0000\"><b>Create project error.</b></font><br>The path \"" + model.getProject().getPath() + "\" must be a directory.<br>"; model.getGui().getGuiView().setErrorView(errorMsg); } //criar o output folder e o input folder se for necessario file = new File(model.getProject().getOutputFolder()); if ( !file.exists() ) { if ( !file.mkdirs() ) { String errorMsg = "<font color=\"#FF0000\"><b>Create project error.</b></font><br>Cannot create project because the directory \"" + model.getProject().getOutputFolder() + "\" cannot be created.<br>"; model.getGui().getGuiView().setErrorView(errorMsg); } } else if ( !file.isDirectory() ) { String errorMsg = "<font color=\"#FF0000\"><b>Create project error.</b></font><br>Cannot create project because the path \"" + model.getProject().getOutputFolder() + "\" is not a directory.<br>"; model.getGui().getGuiView().setErrorView(errorMsg); } file = new File(model.getProject().getInputFolder()); if ( !file.exists() ) { if ( !file.mkdirs() ) { String errorMsg = "<font color=\"#FF0000\"><b>Create project error.</b></font><br>Cannot create project because the directory \"" + model.getProject().getInputFolder() + "\" cannot be created.<br>"; model.getGui().getGuiView().setErrorView(errorMsg); } } else if ( !file.isDirectory() ) { String errorMsg = "<font color=\"#FF0000\"><b>Create project error.</b></font><br><br>Cannot create project because the path \"" + model.getProject().getInputFolder() + "\" is not a directory.<br>"; model.getGui().getGuiView().setErrorView(errorMsg); } //criar o projeto em formato properties no path\projectname.prj model.getProject().save(); //colocar na lista dos ultimos projetos abertos String ppath = model.getProject().getPath().concat(System.getProperty("file.separator")).concat(model.getProject().getName().concat(".cap")); model.getConfig().getGuiHiddenConfig().addLastOpenProject(ppath); //abrir a primeira intera��o! FormNavigatorListener fnl = new FormNavigatorListener(model); fnl.newInteraction(); } //------------------------------------------------------------------------- }