package edu.colostate.vchill.numdump;
import edu.colostate.vchill.ScaleManager;
import edu.colostate.vchill.ViewControl;
import edu.colostate.vchill.gui.ViewWindowActions;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.Observable;
import java.util.Observer;
/**
* This class is used to create the popup context menu for numdump windows.
* To access the menu, call getPopup() on an instance of this class.
* Since the menu is fairly small, the actions are defined in the same class.
*
* @author Jochen Deyke
* @version 2007-09-26
*/
class NumDumpPopup extends ViewWindowActions {
private JPopupMenu popup;
private static final ViewControl vc = ViewControl.getInstance();
private JMenu typeMenu;
public NumDumpPopup(final NumDumpWindow win) {
super(win);
this.popup = new JPopupMenu();
{ //window type submenu
this.typeMenu = new JMenu("Data Type");
this.updateTypeMenu();
this.popup.add(typeMenu);
sm.addObserver(new Observer() {
public void update(final Observable o, final Object arg) {
updateTypeMenu();
}
});
}
{ //items not in a submenu
(this.popup.add(new AbstractAction("Redirect to file...") {
/**
*
*/
private static final long serialVersionUID = -5037694088704534477L;
File lastDir;
public void actionPerformed(final ActionEvent ae) {
JFileChooser chooser = new JFileChooser(lastDir);
int returnVal = chooser.showSaveDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
win.redirectTo(lastDir = chooser.getSelectedFile());
} else {
win.redirectTo(null); //draw to screen
}
}
})).setIcon(null);
}
}
public void updateTypeMenu() {
this.typeMenu.removeAll();
ButtonGroup group = new ButtonGroup();
for (final String m : ScaleManager.getInstance().getTypes()) {
JRadioButtonMenuItem item = new JRadioButtonMenuItem(new AbstractAction(m) {
/**
*
*/
private static final long serialVersionUID = -2045770180194940986L;
public void actionPerformed(final ActionEvent ae) {
win.setType(m);
}
});
item.setSelected(win.getType().equals(m));
group.add(item);
this.typeMenu.add(item).setIcon(null);
}
}
public JPopupMenu getPopup() {
return this.popup;
}
}