📄 editcontroller.java
字号:
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.undo.*;
public class EditController implements ActionListener, DocumentListener, WindowListener,
UndoableEditListener {
CTBEditFrame frame;
EditModel model;
UndoManager um = new UndoManager();
public EditController(CTBEditFrame ctbFrame) {
frame = ctbFrame;
model = new EditModel(frame);
}
//-------- 侦听器事件 ----------------//
public void actionPerformed(ActionEvent e) {
JMenuItem itemTemp = (JMenuItem)e.getSource();
if (itemTemp.equals(frame.itemNew)) {
model.newFile();
} else if (itemTemp.equals(frame.itemOpen)) {
model.openFile();
} else if (itemTemp.equals(frame.itemSave)) {
model.saveFile();
} else if (itemTemp.equals(frame.itemSaveAs)) {
model.saveAsFile();
} else if (itemTemp.equals(frame.itemExit)) {
model.exit();
} else if (itemTemp.equals(frame.itemCut)) {
model.cutText();
} else if (itemTemp.equals(frame.itemCopy)) {
model.copyText();
} else if (itemTemp.equals(frame.itemPaste)) {
model.pasteText();
} else if (itemTemp.equals(frame.itemUndo)) {
try {
if (um.canUndo()) {
um.undo();
}
} catch (CannotRedoException ex) {
System.out.println(ex.getMessage());
}
} else if (itemTemp.equals(frame.itemRedo)) {
try {
if (um.canRedo()) {
um.redo();
}
} catch (CannotRedoException ex) {
System.out.println(ex.getMessage());
}
} else if (itemTemp.equals(frame.itemFont)) {
model.setTextFont();
} else if (itemTemp.equals(frame.itemFind)) {
model.find();
} else if (itemTemp.equals(frame.itemReplace)) {
model.replace();
} else if (itemTemp.equals(frame.itemBackground)) {
model.setBackgroundColor();
} else if (itemTemp.equals(frame.itemLine)) {
model.setLineEnter();
} else if (itemTemp.equals(frame.itemAbout)) {
model.showAbout();
} else if (itemTemp.equals(frame.itemSelectAll)){
model.selectAll();
}
}
public void insertUpdate(DocumentEvent e) {
model.setFileIsDirty(true);
frame.itemUndo.setText(um.getUndoPresentationName());
frame.itemRedo.setText(um.getRedoPresentationName());
setUndoOrRedoMenu();
}
public void removeUpdate(DocumentEvent e) {
model.setFileIsDirty(true);
frame.itemUndo.setText(um.getUndoPresentationName());
frame.itemRedo.setText(um.getRedoPresentationName());
setUndoOrRedoMenu();
}
public void changedUpdate(DocumentEvent e) {
model.setFileIsDirty(true);
frame.itemUndo.setText(um.getUndoPresentationName());
frame.itemRedo.setText(um.getRedoPresentationName());
setUndoOrRedoMenu();
}
// 设置是否使Undo/Redo按钮有效
private void setUndoOrRedoMenu() {
if (um.canUndo()) {
frame.itemUndo.setEnabled(true);
} else {
frame.itemUndo.setEnabled(false);
}
if (um.canRedo()) {
frame.itemRedo.setEnabled(true);
} else {
frame.itemRedo.setEnabled(false);
}
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowClosing(WindowEvent e) { model.exit(); }
public void undoableEditHappened(UndoableEditEvent e) {
um.addEdit(e.getEdit());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -