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

📄 cplusmpiui.java

📁 基于JAVA的并行程序编辑器研究与设计 并行编程在高性能计算领域的应用越来越广泛。国家863计划项目“网格服务环境结点建设及其支撑技术研究”的子课题 “用户开发环境研究”
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * 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 + -