package hep.aida.ref.plotter.style.editor; import hep.aida.IPlotterStyle; import hep.aida.ref.xml.AidaStyleXMLWriter; import java.awt.Component; import java.awt.Frame; import java.awt.GridBagConstraints; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingUtilities; import org.freehep.application.RecentItemTextField; public class SaveAidaStylePanel extends JPanel { private Component parent; private RecentItemTextField outputFile = new RecentItemTextField("hep.aida.ref.plotter.style.editor.SaveAidaStylePanel.OutputFile", 15, false); private JCheckBox writeSetParameters = new JCheckBox("Write Only Set Parameters"); private JFileChooser outputChooser = new JFileChooser(); private JButton outputBrowse = new JButton("Browse..."); private JPanel thisPanel; private IPlotterStyle style; public SaveAidaStylePanel() { this(null, null); } public SaveAidaStylePanel(Component parent) { this(parent, null); } public SaveAidaStylePanel(IPlotterStyle style) { this(null, style); } public SaveAidaStylePanel(Component parent, IPlotterStyle style) { super(); this.parent = parent; this.style = style; thisPanel = this; initComponents(); } private void initComponents() { outputFile.setMinWidth(20); outputBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int returnVal = outputChooser.showOpenDialog(thisPanel); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = outputChooser.getSelectedFile(); String fileName = file.getAbsolutePath(); outputFile.setText(fileName); } else { } } }); writeSetParameters.setSelected(true); this.setLayout(new java.awt.GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.WEST; gbc.insets = new Insets(2, 2, 2, 2); gbc.gridy=0; gbc.gridx=0; this.add(new JLabel("Output File: "), gbc); gbc.gridx=1; this.add(outputFile, gbc); gbc.gridx=2; this.add(outputBrowse, gbc); gbc.gridy=1; gbc.gridx=1; this.add(writeSetParameters, gbc); } public void setStyle(IPlotterStyle style) { this.style = style; } public IPlotterStyle getStyle() { return style; } public void saveStyle() throws IOException { String title = "Select Output File if You Want to Save Style"; Component comp = parent; if (comp == null) comp = (Component) SwingUtilities.getAncestorOfClass(Frame.class, this); int reply = JOptionPane.showOptionDialog(comp, this, title, JOptionPane.YES_NO_OPTION, JOptionPane.DEFAULT_OPTION, null, new String[] {"Ok", "Cancel"}, "Cancel"); if (reply == JOptionPane.YES_OPTION) { String fileName = outputFile.getText(); boolean writeAll = !writeSetParameters.isSelected(); AidaStyleXMLWriter.writeToFile(fileName, style, writeAll); outputFile.saveState(); } else { return; } } }