package net.sf.latexdraw.installer; import net.sf.latexdraw.util.InstallerLog; import net.sf.latexdraw.util.LSystem; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.logging.Level; public class ChooseDirSlide extends Slide { private static final long serialVersionUID = 1L; /** The field that defines the path where we have to install LaTeXDraw. */ protected JTextField pathInstall; /** The file chooser used to locate files. */ protected JFileChooser fileChooser; protected ChooseDirSlide(final Slide prev, final Slide next, final Installer installer) { super(prev, next, installer); } @Override protected void init() { super.init(); final JPanel p1 = new JPanel(); final JPanel p2 = new JPanel(); fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.setMultiSelectionEnabled(false); setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); p1.setLayout(new BoxLayout(p1, BoxLayout.LINE_AXIS)); pathInstall = new JTextField(); pathInstall.setEditable(false); pathInstall.setPreferredSize(new Dimension(250, 35)); pathInstall.setMinimumSize(new Dimension(250, 35)); pathInstall.setMaximumSize(new Dimension(250, 35)); final JButton chooseB = new JButton("Choose folder"); chooseB.addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { if(fileChooser.showDialog(installer, "Select") == JFileChooser.APPROVE_OPTION) { pathInstall.setText(fileChooser.getSelectedFile().getPath()); InstallerLog.getLogger().log(Level.INFO, "Install path selected: " + fileChooser.getSelectedFile().getPath()); } } }); p2.add(new JLabel("Choose the path where the directory LaTeXDraw will be installed:")); p2.add(pathInstall); p2.add(chooseB); p2.setMaximumSize(new Dimension(450, 150)); p2.setMinimumSize(new Dimension(450, 150)); p2.setPreferredSize(new Dimension(450, 150)); p1.setMaximumSize(new Dimension(450, 300)); p1.setMinimumSize(new Dimension(450, 300)); p1.setPreferredSize(new Dimension(450, 300)); p1.add(p2); add(p1); setPanelDimension(); if(LSystem.INSTANCE.isLinux() || LSystem.INSTANCE.IsMac()) pathInstall.setText("/opt");//$NON-NLS-1$ else { if(LSystem.INSTANCE.isWindows()) { File dir = new File("C:\\Program Files\\");//$NON-NLS-1$ int cpt = 0; final int max = 10; while(!dir.exists() && cpt < max) dir = new File((char) ('C' + cpt++) + ":\\Program Files\\");//$NON-NLS-1$ pathInstall.setText(dir.exists() ? dir.getPath() : "C:\\");//$NON-NLS-1$ } } InstallerLog.getLogger().log(Level.INFO, "Predefined install path: " + pathInstall.getText() + " exists? " + (new File(pathInstall.getText())).exists()); } }