package hep.aida.ref.plotter.style.registry; import java.awt.Component; import java.awt.Frame; 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 javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder; import org.freehep.application.RecentItemTextField; import org.freehep.application.studio.Studio; public class WriteStyleStorePanel extends JPanel { private Component parent; private String title; private JPanel thisPanel; private RecentItemTextField outputFile = new RecentItemTextField("hep.aida.ref.plotter.style.registry.WriteStyleStorePanel.OutputFile", 15, false); private JFileChooser outputChooser = new JFileChooser(); private JButton browse; private JCheckBox writeSetParameters = new JCheckBox("Write Only Set Parameters"); public WriteStyleStorePanel() { this(null, "Write Style Store to XML File"); } public WriteStyleStorePanel(Component parent) { this(parent, "Add Style Store Entry"); } public WriteStyleStorePanel(String title) { this(null, title); } public WriteStyleStorePanel(Component parent, String title) { super(); this.parent = parent; this.title = title; thisPanel = this; initComponents(); } private void initComponents() { outputFile.setMinWidth(20); browse = new JButton("Browse..."); browse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { String fileName = outputFile.getText(); int returnVal = outputChooser.showOpenDialog(thisPanel); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = outputChooser.getSelectedFile(); fileName = file.getAbsolutePath(); outputFile.setText(fileName); } else { } } }); writeSetParameters.setSelected(true); //this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); this.setBorder(new TitledBorder(new EtchedBorder(), title)); java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints(); gbc.anchor = java.awt.GridBagConstraints.WEST; gbc.insets = new java.awt.Insets(2, 2, 2, 2); this.setLayout(new java.awt.GridBagLayout()); 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(browse, gbc); gbc.gridy=1; gbc.gridx=1; this.add(writeSetParameters, gbc); } public void writeStore(IStyleStore store) throws IOException, org.jdom.JDOMException { Component comp = parent; if (comp == null) comp = (Component) SwingUtilities.getAncestorOfClass(Frame.class, this); boolean wrongInput = true; while (wrongInput) { int reply = JOptionPane.showOptionDialog(comp, this, title, JOptionPane.YES_NO_OPTION, JOptionPane.DEFAULT_OPTION, null, new String[] {"Ok", "Cancel"}, "Cancel"); try { if (reply == JOptionPane.YES_OPTION) { String fileName = outputFile.getText(); boolean writeAll = !writeSetParameters.isSelected(); StyleStoreXMLWriter.writeToFile(fileName, store, writeAll); outputFile.saveState(); } wrongInput = false; } catch (Exception e) { String message = "Error: "+e.getMessage(); if (parent != null && parent instanceof Studio) ((Studio) parent).error(this, message, e); e.printStackTrace(); } } } }