package de.gaalop.gui; import de.gaalop.OutputFile; import javax.swing.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.util.Set; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; /** * This form is used to display compilation results. */ public class ResultForm { private JTabbedPane tabbedPane; private JPanel contentPane; private Log log = LogFactory.getLog(ResultForm.class); public ResultForm(Set<OutputFile> files) { contentPane = new JPanel(); contentPane.setLayout(new BorderLayout(0, 0)); JToolBar toolBar = new JToolBar(); toolBar.setBorderPainted(true); toolBar.setFloatable(false); contentPane.add(toolBar, BorderLayout.NORTH); JButton saveButton = new JButton("Save file"); saveButton.setIcon(new ImageIcon(getClass().getResource("/de/gaalop/gui/document-save.png"))); saveButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Component component = tabbedPane.getSelectedComponent(); if (component instanceof OutputFilePane) { OutputFilePane outputFile = (OutputFilePane) component; JFileChooser fileChooser = new JFileChooser(); fileChooser.setSelectedFile(new File(outputFile.getFile().getName())); int result = fileChooser.showSaveDialog(contentPane); if (result == JFileChooser.APPROVE_OPTION) { saveToFile(fileChooser.getSelectedFile(), outputFile); } } } }); toolBar.add(saveButton); tabbedPane = new JTabbedPane(); contentPane.add(tabbedPane, BorderLayout.CENTER); for (OutputFile file : files) { JScrollPane filePane = new OutputFilePane(file); JTextPane textPane = new JTextPane(); textPane.setFont(Font.getFont(Font.SANS_SERIF)); textPane.setText(file.getContent()); filePane.setViewportView(textPane); tabbedPane.add(file.getName(), filePane); } } public JPanel getContentPane() { return contentPane; } private void saveToFile(File toFile, OutputFilePane outputFilePanel) { try { PrintWriter printWriter = new PrintWriter(toFile); try { printWriter.print(outputFilePanel.getFile().getContent()); } finally { printWriter.close(); } } catch (FileNotFoundException e) { log.warn(e); JOptionPane.showMessageDialog(contentPane, "Unable to save to " + toFile.getAbsolutePath() + "\n" + e, "Error", JOptionPane.ERROR_MESSAGE); return; } // outputFilePanel.setSaved(); } }