package hep.aida.ref.plotter.style.editor;
/*
* AidaStyleEditor.java
*
* Created on June 13, 2005, 3:08 PM
*/
import hep.aida.IAnalysisFactory;
import hep.aida.IPlotterStyle;
import hep.aida.ref.xml.AidaStyleXMLReader;
import hep.aida.ref.xml.AidaStyleXMLWriter;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.URL;
import java.util.Hashtable;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import com.l2fprod.common.swing.LookAndFeelTweaks;
import com.l2fprod.common.swing.plaf.LookAndFeelAddons;
/**
*
* @author The FreeHEP team @ SLAC
*/
public class AidaStyleEditor extends JFrame {
JFrame frame;
private JTabbedPane tabbedPanel;
private Class previewType;
private ConfigurePreviewPanel configurePanel;
private JFileChooser inputChooser = new JFileChooser();
private JTextField outputFile = new JTextField(30);
private JCheckBox writeSetParameters = new JCheckBox("Write Only Set Parameters");
private JFileChooser outputChooser = new JFileChooser();
private JPanel outputPanel;
private JButton outputBrowse;
private int newStyleCounter = 0;
private Hashtable files = new Hashtable();
private Image homeImage;
private JPanel homePanel;
private Logger styleLogger;
private Level logLevel;
// Set Logger and Handler level and Formatter
public static void setLoggerLevel(Logger logger, Level l) {
final String lineSeparator = System.getProperty("line.separator", "\n");
logger.setLevel(l);
Handler[] handlers = Logger.getLogger( "" ).getHandlers();
for ( int index = 0; index < handlers.length; index++ ) {
handlers[index].setLevel(l);
handlers[index].setFormatter( new SimpleFormatter() {
public String format(LogRecord record) {
long millis = record.getMillis()%1000;
String tmp = super.format(record);
tmp = tmp.replaceFirst(lineSeparator, " ["+millis+"] :: \t");
return tmp;
}
} );
}
logger.fine("Set verbose level to: "+logger.getLevel());
}
/** Creates a new instance of AidaStyleEditor */
public AidaStyleEditor() {
this("AIDA Style Editor");
}
public AidaStyleEditor(String frameName) {
super(frameName);
styleLogger = Logger.getLogger("hep.aida.ref.plotter.style.editor");
logLevel = Level.INFO;
setLoggerLevel(styleLogger, logLevel);
frame = this;
init();
pack();
setSize(700, 600);
addHomePage();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setLocation( (d.width-getSize().width )/2, (d.height-getSize().height )/2 );
setVisible(true);
}
private void init() {
tabbedPanel = new JTabbedPane();
configurePanel = new ConfigurePreviewPanel();
createMenus();
getContentPane().setLayout(new BorderLayout());
getContentPane().add("Center", tabbedPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void createMenus() {
// FILE Menu
JMenu fileMenu = new JMenu("File");
JMenuItem item = new JMenuItem("New Style");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
newStyleAction();
}
});
fileMenu.add(item);
item = new JMenuItem("Open Style...");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
readStyleAction();
}
});
fileMenu.add(item);
item = new JMenuItem("Save Style As...");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
saveStyleAsAction();
}
});
fileMenu.add(item);
item = new JMenuItem("Close Style");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
removeSelectedTabAction();
}
});
fileMenu.add(item);
fileMenu.addSeparator();
item = new JMenuItem("Exit");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
exitAction();
}
});
fileMenu.add(item);
// VIEW Menu
JMenu viewMenu = new JMenu("View");
JMenu previewMenu = new JMenu("Set Preview Type");
viewMenu.add(previewMenu);
// Set preview type here
JRadioButtonMenuItem rbItem = null;
ButtonGroup rbGroup = new ButtonGroup();
Class[] possibleTypes = StylePreviewCreator.getPossiblePreviewTypes();
ActionListener typeListener = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
setPreviewTypeAction(evt.getActionCommand());
}
};
for (int i=0; i
Ads help maintain this website.