package jaist.css.covis.cls;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import jaist.css.covis.CoVisBuffer;
import jaist.css.covis.Selectable;
import jaist.css.covis.util.FramePopup;
public class ClassStampMenu extends JPopupMenu implements FramePopup, ActionListener{
ClassStamp cstamp;
JFrame frame;
private static final long serialVersionUID = -3662668322301800275L;
CoVisBuffer buffer;
public ClassStampMenu(ClassStamp _f, CoVisBuffer buf) {
this.cstamp = _f;
buffer = buf;
if (buffer==null) JOptionPane.showMessageDialog(null, "buffer is null");
JMenuItem menuItem;
setLightWeightPopupEnabled(false);
menuItem = new JMenuItem("cancel");
add(menuItem);
addSeparator();
if (!cstamp.isSelected()){
menuItem = new JMenuItem("select");
add(menuItem);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ArrayList<Selectable> sel = new ArrayList<Selectable>();
if (ClassStamp.selectedType != null){
ClassStamp.selectedType.setSelected(false, sel);
}
cstamp.toggleSelected(sel);
}
});
addSeparator();
}
menuItem = new JMenuItem("inspect");
add(menuItem);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Class<?> clazz = cstamp.cv_type.getClass();
ClassInspector ci = new ClassInspector(clazz);
ci.inspect_print();
}
});
addSeparator();
if (cstamp.cv_type instanceof Covis_primitive){
menuItem = new JMenuItem("create variable (automatic)");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create variable (manual)");
add(menuItem);
menuItem.addActionListener(this);
} else if (cstamp.cv_type instanceof Covis_Array){
menuItem = new JMenuItem("create variable (automatic)");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create variable (manual)");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create array (automatic): new "+cstamp.cv_type.getClsName().substring(0,cstamp.cv_type.getClsName().length()-2)+"[ 4 ]");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create array (manual): new "+cstamp.cv_type.getClsName().substring(0,cstamp.cv_type.getClsName().length()-2)+"[ N ]");
add(menuItem);
menuItem.addActionListener(this);
} else if (cstamp.cv_type instanceof Covis_Object){
menuItem = new JMenuItem("create variable (automatic)");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create variable (manual)");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create object (automatic): new "+cstamp.cv_type.getClsName()+"()");
add(menuItem);
menuItem.addActionListener(this);
menuItem = new JMenuItem("create object (manual): new "+cstamp.cv_type.getClsName()+"("+cstamp.cv_type.getConstructorArgs()+")");
add(menuItem);
menuItem.addActionListener(this);
}
// addSeparator();
//
// menuItem = new JMenuItem("レイアウト");
// add(menuItem);
// menuItem.addActionListener(new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// f.layout(500);
// }
// });
}
public void showWithFrame(Component c, int x, int y, JFrame _f) {
frame = _f;
show(c, x, y);
}
/**
* 右メニューから生成
*/
@Override
public void actionPerformed(ActionEvent arg0) {
if (buffer==null) JOptionPane.showMessageDialog(null, "buffer is null");
if (arg0.getActionCommand().indexOf("variable")>-1){
if (arg0.getActionCommand().indexOf("manual")>-1){
buffer.varField.addVariable(cstamp,false);
} else {
buffer.varField.addVariable(cstamp,true);
}
}
if (arg0.getActionCommand().indexOf("new")>-1){
if (arg0.getActionCommand().indexOf("manual")>-1){
buffer.objField.addObject(cstamp,false);
} else {
buffer.objField.addObject(cstamp,true);
}
}
}
}