📄 cplusmpiui.java
字号:
/*
* CplusMpiUI.java
*
* Created on 2007年5月30日, 上午6:48
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package lxz;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.undo.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.event.*;
import java.awt.datatransfer.*;
/**
*
* @author lxz
*/
public abstract class CplusMpiUI extends JFrame{
protected JMenu fileMenu,editMenu,helpMenu;
protected JMenuItem fileMenu_New,fileMenu_Open,fileMenu_Save,
fileMenu_SaveAs,fileMenu_PageSetup,fileMenu_Exit;
protected JMenuItem editMenu_Undo,editMenu_Redo,editMenu_Cut,
editMenu_Copy,editMenu_Paste,editMenu_Delete,
editMenu_Find,editMenu_FindNext,editMenu_Replace,editMenu_SelectAll;
protected JMenuBar menuBar;
protected JMenuItem helpMenu_HelpTopics,helpMenu_About;
protected JToolBar toolBar;
private JScrollPane scroller;
private ImageIcon newIcon,openIcon,saveIcon,saveAsIcon,closeIcon,
undoIcon,redoIcon,copyIcon,pasteIcon,deleteIcon,searchIcon,
cutIcon,helpIcon,redo1,undo1,copy1,paste1,delete1,cut1,newIconm,
openIconm,saveIconm,saveAsIconm,undoIconm,redoIconm,copyIconm,
pasteIconm,deleteIconm,searchIconm,cutIconm,helpIconm;
protected StyledDocument styledDoc;
protected JTextPane textPane;
protected JLabel statusLabel;
protected JPopupMenu popupMenu;
protected JMenuItem popupMenu_Undo,popupMenu_Redo,
popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,
popupMenu_Delete,popupMenu_SelectAll;
protected Toolkit toolKit = Toolkit.getDefaultToolkit();
protected Clipboard clipBoard = toolKit.getSystemClipboard();
protected UndoManager undo = new UndoManager();
protected UndoableEditListener undoHandler = new UndoHandler();
protected boolean isNewFile = true;
protected File currentFile;
protected String oldValue;
protected static int offset;
protected static boolean downSelect = true,done = false;
protected JButton newButton,openButton,saveButton,saveAsButton,undoButton,redoButton,
cutButton,copyButton,pasteButton,deleteButton,searchButton,helpButton;
protected StyleContext styleContext;
protected MutableAttributeSet keyAttr,mpiAttr,mpiFunctionAttr, normalAttr,commentAttr;
protected Font defaultFont = new Font("Gulim",Font.BOLD,14);
protected void checkMenuItemEnabled(){
String selectText = textPane.getSelectedText();
if(selectText == null){
editMenu_Cut.setEnabled(false);
popupMenu_Cut.setEnabled(false);
cutButton.setEnabled(false);
editMenu_Copy.setEnabled(false);
popupMenu_Copy.setEnabled(false);
copyButton.setEnabled(false);
editMenu_Delete.setEnabled(false);
popupMenu_Delete.setEnabled(false);
deleteButton.setEnabled(false);
}else{
editMenu_Cut.setEnabled(true);
popupMenu_Cut.setEnabled(true);
cutButton.setEnabled(true);
editMenu_Copy.setEnabled(true);
popupMenu_Copy.setEnabled(true);
copyButton.setEnabled(true);
editMenu_Delete.setEnabled(true);
popupMenu_Delete.setEnabled(true);
deleteButton.setEnabled(true);
}
//粘贴功能可用性判断
Transferable contents = clipBoard.getContents(this);
if(contents == null){
editMenu_Paste.setEnabled(false);
popupMenu_Paste.setEnabled(false);
pasteButton.setEnabled(false);
}else{
editMenu_Paste.setEnabled(true);
popupMenu_Paste.setEnabled(true);
pasteButton.setEnabled(true);
}
}
public CplusMpiUI(){
super("并行程序编辑器");
getInitResource();
setUpUIComponent();
setUpEventListener();
setUpFont();
this.setLocation(100,100);
this.setSize(640,480);
this.setVisible(true);
checkMenuItemEnabled();
textPane.requestFocus();
}
private void getInitResource(){
newIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/new.gif"));
newIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/newm.gif"));
openIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/open.gif"));
openIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/openm.gif"));
saveIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/save.gif"));
saveIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/savem.gif"));
saveAsIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/saveas.gif"));
saveAsIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/saveasm.gif"));
closeIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/close.gif"));
undoIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/undo.gif"));
undoIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/undom.gif"));
redoIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/redo.gif"));
redoIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/redom.gif"));
cutIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/cut.gif"));
cutIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/cutm.gif"));
copyIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/copy.gif"));
copyIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/copym.gif"));
pasteIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/paste.gif"));
pasteIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/pastem.gif"));
deleteIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/delete.gif"));
deleteIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/deletem.gif"));
searchIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/search.gif"));
searchIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/searchm.gif"));
helpIcon = new ImageIcon(CplusMpiUI.class.getResource
("Icons/help.gif"));
helpIconm = new ImageIcon(CplusMpiUI.class.getResource
("Icons/helpm.gif"));
undo1 = new ImageIcon(CplusMpiUI.class.getResource
("Icons/undo1.gif"));
redo1 = new ImageIcon(CplusMpiUI.class.getResource
("Icons/redo1.gif"));
cut1 = new ImageIcon(CplusMpiUI.class.getResource
("Icons/cut1.gif"));
copy1 = new ImageIcon(CplusMpiUI.class.getResource
("Icons/copy1.gif"));
paste1 = new ImageIcon(CplusMpiUI.class.getResource
("Icons/paste1.gif"));
delete1 = new ImageIcon(CplusMpiUI.class.getResource
("Icons/delete1.gif"));
};
//component
private void setUpUIComponent(){
Container container = getContentPane();
menuBar = new JMenuBar();
fileMenu = new JMenu("文件(F)", true);
fileMenu.setMnemonic('F');
fileMenu_New = new JMenuItem("新建(N)", newIconm);
fileMenu_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
fileMenu_Open = new JMenuItem("打开(O)...", openIconm);
fileMenu_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
fileMenu_Save = new JMenuItem("保存(S)", saveIconm);
fileMenu_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
fileMenu_SaveAs = new JMenuItem("另存为(A)...", saveAsIconm);
fileMenu_Exit = new JMenuItem("退出(X)",closeIcon);
fileMenu_Exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
editMenu = new JMenu("编辑(E)", true);
editMenu.setMnemonic('E');
editMenu_Undo = new JMenuItem("撤消(U)",undoIconm);
editMenu_Undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
InputEvent.CTRL_MASK));
editMenu_Undo.setEnabled(false);
editMenu_Redo = new JMenuItem("重做(R)",redoIconm);
editMenu_Redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,
InputEvent.CTRL_MASK));
editMenu_Redo.setEnabled(false);
editMenu_Cut = new JMenuItem("剪切(T)",cutIconm);
editMenu_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
editMenu_Copy = new JMenuItem("复制(C)",copyIconm);
editMenu_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
editMenu_Paste = new JMenuItem("粘贴(P)",pasteIconm);
editMenu_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
editMenu_Delete = new JMenuItem("删除(L)",deleteIconm);
editMenu_Delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
editMenu_Find = new JMenuItem("查找(F)...",searchIconm);
editMenu_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
InputEvent.CTRL_MASK));
editMenu_FindNext = new JMenuItem("查找下一个(N)",searchIconm);
editMenu_FindNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
editMenu_Replace = new JMenuItem("替换(R)...",'R');
editMenu_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,
InputEvent.CTRL_MASK));
editMenu_SelectAll = new JMenuItem("全选",'A');
editMenu_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
InputEvent.CTRL_MASK));
helpMenu = new JMenu("帮助(H)", true);
helpMenu.setMnemonic('H');
helpMenu_HelpTopics = new JMenuItem("帮助主题(H)",helpIconm);
helpMenu_HelpTopics.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));
helpMenu_About = new JMenuItem("关于并行程序编辑器(A)",'A');
menuBar.add(fileMenu);
fileMenu.add(fileMenu_New);
fileMenu.add(fileMenu_Open);
fileMenu.addSeparator();
fileMenu.add(fileMenu_Save);
fileMenu.add(fileMenu_SaveAs);
fileMenu.addSeparator();
fileMenu.add(fileMenu_Exit);
menuBar.add(editMenu);
editMenu.add(editMenu_Undo);
editMenu.add(editMenu_Redo);
editMenu.addSeparator();
editMenu.add(editMenu_Cut);
editMenu.add(editMenu_Copy);
editMenu.add(editMenu_Paste);
editMenu.add(editMenu_Delete);
editMenu.addSeparator();
editMenu.add(editMenu_Find);
editMenu.add(editMenu_FindNext);
editMenu.add(editMenu_Replace);
editMenu.addSeparator();
editMenu.add(editMenu_SelectAll);
menuBar.add(helpMenu);
helpMenu.add(helpMenu_HelpTopics);
helpMenu.addSeparator();
helpMenu.add(helpMenu_About);
this.setJMenuBar(menuBar);
styleContext = new StyleContext();
styledDoc = new DefaultStyledDocument(styleContext);
textPane = new JTextPane(styledDoc){
public void setSize(Dimension d){
if (d.width < getParent().getSize().width)
d.width = getParent().getSize().width;
super.setSize(d);
}
public boolean getScrollableTracksViewportWidth(){
return false;
}
};
scroller = new JScrollPane(textPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
container.add(scroller,BorderLayout.CENTER);
oldValue = textPane.getText();
textPane.requestFocus();
textPane.setCaretPosition(0);
popupMenu = new JPopupMenu();
popupMenu_Undo = new JMenuItem("撤消(U)",undoIconm);
popupMenu_Redo = new JMenuItem("重做(R)",redoIconm);
popupMenu_Cut = new JMenuItem("剪切(T)",cutIconm);
popupMenu_Copy = new JMenuItem("复制(C)",copyIconm);
popupMenu_Paste = new JMenuItem("粘贴(P)",pasteIconm);
popupMenu_Delete = new JMenuItem("删除(D)",deleteIconm);
popupMenu_SelectAll = new JMenuItem("全选(A)",'A');
popupMenu_Undo.setEnabled(false);
popupMenu_Redo.setEnabled(false);
popupMenu.add(popupMenu_Undo);
popupMenu.add(popupMenu_Redo);
popupMenu.addSeparator();
popupMenu.add(popupMenu_Cut);
popupMenu.add(popupMenu_Copy);
popupMenu.add(popupMenu_Paste);
popupMenu.add(popupMenu_Delete);
popupMenu.addSeparator();
popupMenu.add(popupMenu_SelectAll);
toolBar = new JToolBar("工具栏");
newButton = new JButton(newIcon);
openButton = new JButton(openIcon);
saveButton = new JButton(saveIcon);
saveAsButton = new JButton(saveAsIcon);
undoButton = new JButton(undoIcon);
undoButton.setEnabled(false);
redoButton = new JButton(redoIcon);
redoButton.setEnabled(false);
cutButton = new JButton(cutIcon);
cutButton.setEnabled(false);
copyButton = new JButton(copyIcon);
copyButton.setEnabled(false);
pasteButton = new JButton(pasteIcon);
pasteButton.setEnabled(false);
deleteButton = new JButton(deleteIcon);
deleteButton.setEnabled(false);
searchButton = new JButton(searchIcon);
helpButton = new JButton(helpIcon);
newButton.setToolTipText("新建");
openButton.setToolTipText("打开");
saveButton.setToolTipText("保存");
saveAsButton.setToolTipText("另存为");
undoButton.setToolTipText("撤消");
redoButton.setToolTipText("重做");
cutButton.setToolTipText("剪切");
copyButton.setToolTipText("复制");
pasteButton.setToolTipText("粘贴");
deleteButton.setToolTipText("删除所选");
searchButton.setToolTipText("查找与替换");
helpButton.setToolTipText("帮助");
undoButton.setDisabledIcon(undo1);
redoButton.setDisabledIcon(redo1);
cutButton.setDisabledIcon(cut1);
copyButton.setDisabledIcon(copy1);
pasteButton.setDisabledIcon(paste1);
deleteButton.setDisabledIcon(delete1);
toolBar.add(newButton);
toolBar.add(openButton);
toolBar.add(saveButton);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -