We disabled undo and redo function from edit menu.
public class UndoMenuListener implements MenuListener {
private View view;
private JMenuItem undoMenuItem;
private JMenuItem redoMenuItem;
public UndoMenuListener(View view, JMenuItem undoMenuItem, JMenuItem redoMenuItem) {
this.view = view;
this.undoMenuItem = undoMenuItem;
this.redoMenuItem = redoMenuItem;
}
@Override
public void menuSelected(MenuEvent e) {
undoMenuItem.setEnabled(view.canUndo());
redoMenuItem.setEnabled(view.canRedo());
}
But I don't get it why it work? In class UndoAction is only:
public class UndoAction extends AbstractAction {
private View view;
@Override
public void actionPerformed(ActionEvent e) {
}
public UndoAction(View view) {
this.view = view;
}
}
In MenuHelper we initialize new Undo and RedoAction classes:
public static void initEditMenu(View view, JMenuBar menuBar) {
JMenu editMenu = new JMenu("Edit");
menuBar.add(editMenu);
JMenuItem undoItem = addMenuItem(editMenu, "Undo", new UndoAction(view));
JMenuItem redoItem = addMenuItem(editMenu, "Redo", new RedoAction(view));
addMenuItem(editMenu, "Cut", new DefaultEditorKit.CutAction());
addMenuItem(editMenu, "Copy", new DefaultEditorKit.CopyAction());
addMenuItem(editMenu, "Paste", new DefaultEditorKit.PasteAction());
editMenu.addMenuListener(new UndoMenuListener(view, undoItem, redoItem));
}
I don't see connection between UndoMenuListener and UndoAction, RedoAction classes. Why it working when it can't :D
How it possible, where is connection which causes this succesful action?