📄 editmodel.java
字号:
//package sujl.ijedit;
import java.io.*;
import java.awt.Color;
import javax.swing.*;
import javax.swing.undo.*;
//import sujl.ijedit.dialog.*;
public class EditModel {
CTBEditFrame CTBEditFrame = null;
private boolean isDirty = false;
private static final int YES = 1;
private static final int NO =2;
private static final int CANCEL = 3;
private static final int ERROR = -1;
File file = null;
public EditModel(CTBEditFrame ctbEdit) {
this.CTBEditFrame = ctbEdit;
}
public void newFile() {
int answer = dirtyToHint();
if (answer == YES || answer == NO) {
CTBEditFrame.textArea.setText("");
CTBEditFrame.setTitle("无标题");
setFileIsDirty(false); //由于是新建了一个文件,所以dirty为false
}
}
public void openFile() {
int answer = dirtyToHint();
if (answer == YES || answer == NO) {
JFileChooser fileChooser = new JFileChooser();
int choice = fileChooser.showOpenDialog(CTBEditFrame);
if (choice == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String temp = null;
StringBuffer text = new StringBuffer();
while (!((temp = br.readLine()) == null)) {
text.append(temp);
text.append('\n');
}
CTBEditFrame.textArea.setText(text.toString());
CTBEditFrame.setTitle(file.getName());
br.close();
setFileIsDirty(false);
} catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(CTBEditFrame, "没有找到该文件", "错误",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ioe) {
JOptionPane.showMessageDialog(CTBEditFrame, "读取文件出错", "错误",
JOptionPane.ERROR_MESSAGE);
}
} // end if2
} // end if1
} // end method
public boolean saveFile() {
boolean result = false;
if (!(file == null)) {
try {
FileWriter fw = new FileWriter(file);
String text = CTBEditFrame.textArea.getText();
fw.write(text);
fw.flush();
fw.close();
result = true;
setFileIsDirty(false);
} catch (IOException ioe) {
JOptionPane.showMessageDialog(CTBEditFrame, "保存文件出错", "错误",
JOptionPane.ERROR_MESSAGE);
result = false;
}
} else {
saveAsFile();
}
return result;
}
public boolean saveAsFile() {
boolean result = false;
JFileChooser fileChooser = new JFileChooser();
int choice = fileChooser.showSaveDialog(CTBEditFrame);
if (choice == JFileChooser.APPROVE_OPTION) {
file = fileChooser.getSelectedFile();
result = saveFile();
}
return result;
}
public void exit() {
int answer;
answer = dirtyToHint();
if ((answer == YES) || (answer == NO)) {
System.exit(0);
} else if (answer == ERROR) {
System.err.println("发生错误");
}
}
public void cutText() {
CTBEditFrame.textArea.cut();
}
public void copyText() {
CTBEditFrame.textArea.copy();
}
public void pasteText() {
CTBEditFrame.textArea.paste();
}
/* 返回这篇文档是否被修改的布尔值,
true表示被修改过,false表示没有被修改 */
public boolean getFileIsDirty() {
return isDirty;
}
// 设置文档修改的标志位
public void setFileIsDirty(boolean dirty) {
this.isDirty = dirty;
}
/* 检测是否做过修改,如果有,就会出现提问信息框
1:YES
2:NO
3:CANCEL
-1:ERROR*/
public int dirtyToHint() {
int result = ERROR;
if (getFileIsDirty()) {
int choice = JOptionPane.showConfirmDialog(CTBEditFrame, "文档已经被修改,是否保存?", "IJEdit提示",
JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
switch (choice) {
case JOptionPane.YES_OPTION:
if (saveFile()) {
result = YES;
} else {
result =CANCEL;
}
break;
case JOptionPane.NO_OPTION:
result = NO;
break;
default:
result =CANCEL;
break;
} // end switch
} else {
result = NO;
}
return result;
} // end method
public void setTextFont() {
JFontChooser font = new JFontChooser(CTBEditFrame, null);
int answer = font.showDialog();
if (answer == JFontChooser.APPROVE_OPTION) {
CTBEditFrame.textArea.setFont(font.getFont());
}
}
public void setBackgroundColor() {
Color color = JColorChooser.showDialog(CTBEditFrame, "背景颜色", CTBEditFrame.textArea.getBackground());
if (color==null)
CTBEditFrame.textArea.setBackground(Color.white);
else
CTBEditFrame.textArea.setBackground(color);
}
public void find() {
JFindDialog findDlg = new JFindDialog(CTBEditFrame, CTBEditFrame.textArea);
findDlg.showFindDialog();
}
public void replace() {
JFindDialog findDlg = new JFindDialog(CTBEditFrame, CTBEditFrame.textArea);
findDlg.showReplaceDialog();
}
public void setLineEnter() {
if (CTBEditFrame.itemLine.getText().equals("自动换行")) {
CTBEditFrame.itemLine.setText("不换行");
CTBEditFrame.textArea.setLineWrap(true);
} else {
CTBEditFrame.itemLine.setText("自动换行");
CTBEditFrame.textArea.setLineWrap(false);
}
}
public void showAbout() {
JOptionPane.showMessageDialog(CTBEditFrame,"软件工程1班 20042121 陈拓彬 QQ46513963","关于",JOptionPane.INFORMATION_MESSAGE);
}
public void selectAll() {
CTBEditFrame.textArea.selectAll();
}
} // end class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -