📄 zundomanager.java
字号:
/*
* Copyright 2002 EZCell , Inc. All rights reserved.
* Version 1.0.
* Author W.John
*/
package ezcell;
import java.util.Vector;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;
import javax.swing.undo.UndoableEdit;
/**
* DOCUMENT ME!
*
* @version 1.00
* @author W.John
*/
public class ZUndoManager extends UndoManager {
private Vector listeners = new Vector();
ZCommand currentCmd;
/**
*
* @return
*/
public ZCommand getCurrentCommand() {
return currentCmd;
}
/**
*
* @param cmd
*/
public void addCommand(Object cmd) {
if (addEdit((UndoableEdit) cmd)) {
currentCmd = (ZCommand) cmd;
fireCommandJoined();
}
}
/**
*
* @param lst
*/
public void addListener(ZUndoManagerListener lst) {
listeners.add(lst);
}
/**
*/
public synchronized void discardAllEdits() {
if (edits.isEmpty()) {
return;
}
super.discardAllEdits();
fireCommandListChanged();
}
/**
*
* @throws CannotUndoException
*/
public synchronized void redo() throws CannotUndoException {
currentCmd = (ZCommand) editToBeRedone();
super.redo();
fireRedoHappen();
}
/**
*
* @param sheet
*/
public void remove(ZSheet sheet) {
boolean occur = false;
for (int i = edits.size() - 1; i >= 0; i--) {
ZCmdFormat cmd = (ZCmdFormat) edits.get(i);
if (cmd.getSheet() == sheet) {
trimEdits(i, i);
occur = true;
}
}
if (occur) {
fireCommandListChanged();
}
}
/**
*
* @param lst
*/
public void removeListener(ZUndoManagerListener lst) {
listeners.remove(lst);
}
/**
*
* @throws CannotUndoException
*/
public synchronized void undo() throws CannotUndoException {
currentCmd = (ZCommand) editToBeUndone();
super.undo();
fireUndoHappen();
}
/**
*/
private void fireCommandJoined() {
for (int i = 0; i < listeners.size(); i++) {
ZUndoManagerListener lst = (ZUndoManagerListener) listeners.get(i);
lst.commandJoined(this);
}
}
/**
*/
private void fireCommandListChanged() {
for (int i = 0; i < listeners.size(); i++) {
ZUndoManagerListener lst = (ZUndoManagerListener) listeners.get(i);
lst.commandListChanged(this);
}
}
/**
*/
private void fireRedoHappen() {
for (int i = 0; i < listeners.size(); i++) {
ZUndoManagerListener lst = (ZUndoManagerListener) listeners.get(i);
lst.redoHappen(this);
}
}
/**
*/
private void fireUndoHappen() {
for (int i = 0; i < listeners.size(); i++) {
ZUndoManagerListener lst = (ZUndoManagerListener) listeners.get(i);
lst.undoHappen(this);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -