package jripples.ui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.*; import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.gui.DockableWindowManager; import java.nio.file.Paths; /** * Esta clase contiene la funcionalidad de seleccionar una carpeta. * @author rcc * */ public class JRipplesProjectSelector extends JPanel { private View view; private boolean floating; // components JTextField textFolder; JTextField textDir; JTextField textName; // // Constructor // public JRipplesProjectSelector(View view, String position) { super(new BorderLayout()); this.view = view; this.floating = position.equals(DockableWindowManager.FLOATING); InitView(); } private void InitView() { setLayout(null); JLabel nuevoProyectoLabel = new JLabel("New Project (Optional)"); nuevoProyectoLabel.setBounds(0, 0, 300, 20); add(nuevoProyectoLabel); JLabel nombreLabel = new JLabel("Name:"); nombreLabel.setBounds(15, 20, 55, 20); add(nombreLabel); textName = new JTextField(); textName.setBounds(70,20,300,20); add(textName); JLabel sourceLabel = new JLabel("Source:"); sourceLabel.setBounds(15, 45, 55, 20); add(sourceLabel); //JTextField folder path textFolder = new JTextField(); textFolder.setEditable(false); textFolder.setBounds(70,45,300,20); add(textFolder); // button select folder JButton btnSelect = new JButton(); btnSelect.setText("Add sources"); btnSelect.setBounds(375,45,150,20); btnSelect.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { setSources(); } }); add(btnSelect); JButton btnStartAnalysis = new JButton(); btnStartAnalysis.setText("Start Analysis"); btnStartAnalysis.setBounds(180, 70, 150, 20); btnStartAnalysis.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { String jRipplesDir = (String) jEdit.getProperty("JRIPPLES_DIR"); if (jRipplesDir == null) { setJRipplesDir(); } else { if (!(new File(jRipplesDir, "jswingripples.jar").exists())) { JOptionPane.showMessageDialog(null, "We couldn't find jswingripples.jar file in " + jRipplesDir + ". Please check that the directory and name of the jar are correct"); } else { try { String newProjectName = textName.getText(); String newProjectSources = textFolder.getText(); if (newProjectName == null && newProjectSources != null) { DateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss"); Date date = new Date(); newProjectName = "jEdit" + dateFormat.format(date); } if (newProjectName != null && newProjectSources == null) { Runtime.getRuntime().exec("java -jar " + jRipplesDir + File.separator + "jswingripples.jar" + " " + newProjectName.replace(" ", "")); } else if (newProjectName != null && newProjectSources != null) { Runtime.getRuntime().exec("java -jar " + jRipplesDir + File.separator + "jswingripples.jar" + " " + newProjectName.replace(" ", "") + " " + newProjectSources); } else { Runtime.getRuntime().exec("java -jar " + jRipplesDir + File.separator + "jswingripples.jar"); } } catch (Exception e) { JOptionPane.showMessageDialog(null, "There was an error trying to run jswingripples.jar. Check your permissions"); } } } } }); add(btnStartAnalysis); JButton btnChangeDir = new JButton(); btnChangeDir.setText("Change"); btnChangeDir.setBounds(200, 140, 100, 20); btnChangeDir.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { setJRipplesDir(); } }); add(btnChangeDir); textDir = new JTextField(); textDir.setEditable(false); textDir.setBounds(100,110,300,20); if (jEdit.getProperty("JRIPPLES_DIR") != null) { textDir.setText(jEdit.getProperty("JRIPPLES_DIR")); } else { textDir.setText("Not Set"); } add(textDir); JLabel dirLabel = new JLabel("JSwingRipples Dir:"); dirLabel.setBounds(200, 90, 300, 20); add(dirLabel); setSize(400, 200); } /* Events */ private void setSources() { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new java.io.File(".")); chooser.setDialogTitle("Select folder"); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false); if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { String sources = chooser.getSelectedFile().getAbsolutePath(); textFolder.setText(sources); } } private void setJRipplesDir() { JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new java.io.File(".")); chooser.setDialogTitle("Select folder"); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false); if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { String selectedFolder = chooser.getSelectedFile().getAbsolutePath(); jEdit.setProperty("JRIPPLES_DIR", selectedFolder); textDir.setText(selectedFolder); } } }