package org.seqcode.viz.paintable;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
import java.util.LinkedList;
import javax.swing.Action;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class PaintableFrame
extends JFrame {
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1L;
private PaintablePanel fPanel;
public PaintableFrame(String name, Paintable p) {
super(name);
fPanel = new PaintablePanel(p);
Container c = (Container)getContentPane();
c.setLayout(new BorderLayout());
c.add(fPanel, BorderLayout.CENTER);
fPanel.setPreferredSize(new Dimension(1000, 500));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(createDefaultJMenuBar());
setVisible(true);
pack();
setLocation(100, 100);
}
private JMenuBar createDefaultJMenuBar() {
JMenuBar jmb = new JMenuBar();
JMenu menu; JMenuItem item;
jmb.add((menu = new JMenu("File")));
menu.add((item = new JMenuItem("Exit")));
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
LinkedList<Action> actions = collectActions();
jmb.add((menu = new JMenu("Actions")));
//menu.add(new JMenuItem(fPanel.getPaintable().getSaveImageAction()));
for(Action a : actions) {
menu.add(new JMenuItem(a));
}
return jmb;
}
public PaintablePanel getPanel() { return fPanel; }
private LinkedList<Action> collectActions() {
LinkedList<Action> lst = new LinkedList<Action>();
Collection<Paintable> pCollect = fPanel.getPaintables();
for(Paintable p : pCollect) {
lst.addAll(p.getPaintableActions());
}
return lst;
}
}