Newer
Older
piccolo2d.java / anchorgarden / src / main / java / jaist / css / covis / cls / ClassStampMenu.java
@Motoki Miura Motoki Miura on 14 Apr 2022 4 KB edu.umd.cs.piccolo -> org.piccolo2d
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);
			}
		}

	}

}