package com.itgorillaz.lnk2pwn.view.action; import java.awt.Desktop; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.alee.extended.filechooser.WebDirectoryChooser; import com.alee.laf.optionpane.WebOptionPane; import com.alee.utils.swing.DialogOptions; import com.itgorillaz.lnk2pwn.controller.ShortcutController; import com.itgorillaz.lnk2pwn.model.Shortcut; import com.itgorillaz.lnk2pwn.view.core.WindowController; @Component public class GenerateShortcutAction implements ActionListener { private static final Logger LOGGER = LogManager.getLogger(GenerateShortcutAction.class); @Autowired private Shortcut shortcut; @Autowired private ShortcutController controller; @Autowired private WindowController windowController; private WebDirectoryChooser directoryChooser; @Override public void actionPerformed(ActionEvent event) { LOGGER.info("Generate button clicked"); if (directoryChooser == null) { directoryChooser = new WebDirectoryChooser(windowController.getRootFrame()); } LOGGER.info("Openning the directory chooser"); directoryChooser.setVisible(true); if (directoryChooser.getResult () == DialogOptions.CANCEL_OPTION){ LOGGER.info("No output path selected, canceling the action"); return; } File outputPath = directoryChooser.getSelectedDirectory(); shortcut.setOutputPath(outputPath.getAbsolutePath()); try { controller.generateShortcut(shortcut); int result = WebOptionPane.showConfirmDialog( windowController.getRootFrame(), "Shortcut successfully generated!\nWould you like to open the folder location?", "Shortcut", WebOptionPane.YES_NO_OPTION, WebOptionPane.INFORMATION_MESSAGE); if (WebOptionPane.YES_OPTION == result) { LOGGER.info("Openning the output path"); Desktop.getDesktop().open(outputPath); } } catch (Exception e) { LOGGER.error(e); } } }