package open.dolphin.impl.scheam;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JButton;
import javax.swing.JToggleButton;
/**
* Button Action 登録
* @author pns
*/
public class ButtonAction {
private final SchemaCanvas canvas;
private final StateMgr stateMgr;
public ButtonAction(SchemaEditorImpl context) {
this.canvas = context.getCanvas();
this.stateMgr = context.getStateMgr();
}
public void register(JToggleButton button, String name, Cursor cursor) {
button.addActionListener(new ButtonActionListener(name, cursor));
}
public void register(JButton button, String name, Cursor cursor) {
button.addActionListener(new ButtonActionListener(name, cursor));
}
private class ButtonActionListener implements ActionListener {
private final Cursor cursor;
private final String name;
public ButtonActionListener(String name, Cursor cursor) {
super();
this.cursor = cursor;
this.name = name;
}
@Override
public void actionPerformed(ActionEvent e) {
try {
if (cursor != null) canvas.setCursor(cursor);
Method method = stateMgr.getClass().getMethod(name, (Class[])null);
method.invoke(stateMgr, (Object[])null);
} catch (NoSuchMethodException | SecurityException ex) {
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { System.out.println(ex);
}
}
}
}