⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editmodel.java

📁 访windows记事本
💻 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 + -