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

📄 jsconsole.java

📁 javascript语言的解释器源码
💻 JAVA
字号:
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Rhino JavaScript Debugger code, released * November 21, 2000. * * The Initial Developer of the Original Code is See Beyond Corporation. * Portions created by See Beyond are * Copyright (C) 2000 See Beyond Communications Corporation. All * Rights Reserved. * * Contributor(s): * Christopher Oliver * * Alternatively, the contents of this file may be used under the * terms of the GNU Public License (the "GPL"), in which case the * provisions of the GPL are applicable instead of those above. * If you wish to allow use of your version of this file only * under the terms of the GPL and not to allow others to use your * version of this file under the NPL, indicate your decision by * deleting the provisions above and replace them with the notice * and other provisions required by the GPL.  If you do not delete * the provisions above, a recipient may use your version of this * file under either the NPL or the GPL. */package org.mozilla.javascript.tools.shell;import java.io.*;import java.awt.event.*;import javax.swing.*;public class JSConsole extends JFrame implements ActionListener{    static final long serialVersionUID = 2551225560631876300L;    private File CWD;    private JFileChooser dlg;    private ConsoleTextArea consoleTextArea;    public String chooseFile() {        if(CWD == null) {            String dir = System.getProperty("user.dir");            if(dir != null) {                CWD = new File(dir);            }        }        if(CWD != null) {            dlg.setCurrentDirectory(CWD);        }        dlg.setDialogTitle("Select a file to load");        int returnVal = dlg.showOpenDialog(this);        if(returnVal == JFileChooser.APPROVE_OPTION) {            String result = dlg.getSelectedFile().getPath();            CWD = new File(dlg.getSelectedFile().getParent());            return result;        }        return null;    }    public static void main(String args[]) {        JSConsole console = new JSConsole(args);    }    public void createFileChooser() {        dlg = new JFileChooser();        javax.swing.filechooser.FileFilter filter =            new javax.swing.filechooser.FileFilter() {                    public boolean accept(File f) {                        if(f.isDirectory()) {                            return true;                        }                        String name = f.getName();                        int i = name.lastIndexOf('.');                        if(i > 0 && i < name.length() -1) {                            String ext = name.substring(i + 1).toLowerCase();                            if(ext.equals("js")) {                                return true;                            }                        }                        return false;                    }                    public String getDescription() {                        return "JavaScript Files (*.js)";                    }                };        dlg.addChoosableFileFilter(filter);    }    public JSConsole(String[] args) {        super("Rhino JavaScript Console");        JMenuBar menubar = new JMenuBar();        createFileChooser();        String[] fileItems  = {"Load...", "Exit"};        String[] fileCmds  = {"Load", "Exit"};        char[] fileShortCuts = {'L', 'X'};        String[] editItems = {"Cut", "Copy", "Paste"};        char[] editShortCuts = {'T', 'C', 'P'};        String[] plafItems = {"Metal", "Windows", "Motif"};        boolean [] plafState = {true, false, false};        JMenu fileMenu = new JMenu("File");        fileMenu.setMnemonic('F');        JMenu editMenu = new JMenu("Edit");        editMenu.setMnemonic('E');        JMenu plafMenu = new JMenu("Platform");        plafMenu.setMnemonic('P');        for(int i = 0; i < fileItems.length; ++i) {            JMenuItem item = new JMenuItem(fileItems[i],                                           fileShortCuts[i]);            item.setActionCommand(fileCmds[i]);            item.addActionListener(this);            fileMenu.add(item);        }        for(int i = 0; i < editItems.length; ++i) {            JMenuItem item = new JMenuItem(editItems[i],                                           editShortCuts[i]);            item.addActionListener(this);            editMenu.add(item);        }        ButtonGroup group = new ButtonGroup();        for(int i = 0; i < plafItems.length; ++i) {            JRadioButtonMenuItem item = new JRadioButtonMenuItem(plafItems[i],                                                                 plafState[i]);            group.add(item);            item.addActionListener(this);            plafMenu.add(item);        }        menubar.add(fileMenu);        menubar.add(editMenu);        menubar.add(plafMenu);        setJMenuBar(menubar);        consoleTextArea = new ConsoleTextArea(args);        JScrollPane scroller = new JScrollPane(consoleTextArea);        setContentPane(scroller);        consoleTextArea.setRows(24);        consoleTextArea.setColumns(80);        addWindowListener(new WindowAdapter() {                public void windowClosing(WindowEvent e) {                    System.exit(0);                }            });        pack();        setVisible(true);        // System.setIn(consoleTextArea.getIn());        // System.setOut(consoleTextArea.getOut());        // System.setErr(consoleTextArea.getErr());        Main.setIn(consoleTextArea.getIn());        Main.setOut(consoleTextArea.getOut());        Main.setErr(consoleTextArea.getErr());        Main.main(args);    }    public void actionPerformed(ActionEvent e) {        String cmd = e.getActionCommand();        String plaf_name = null;        if(cmd.equals("Load")) {            String f = chooseFile();            if(f != null) {                f = f.replace('\\', '/');                consoleTextArea.eval("load(\"" + f + "\");");            }        } else if(cmd.equals("Exit")) {            System.exit(0);        } else if(cmd.equals("Cut")) {            consoleTextArea.cut();        } else if(cmd.equals("Copy")) {            consoleTextArea.copy();        } else if(cmd.equals("Paste")) {            consoleTextArea.paste();        } else {            if(cmd.equals("Metal")) {                plaf_name = "javax.swing.plaf.metal.MetalLookAndFeel";            } else if(cmd.equals("Windows")) {                plaf_name = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";            } else if(cmd.equals("Motif")) {                plaf_name = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";            }            if(plaf_name != null) {                try {                    UIManager.setLookAndFeel(plaf_name);                    SwingUtilities.updateComponentTreeUI(this);                    consoleTextArea.postUpdateUI();                    // updateComponentTreeUI seems to mess up the file                    // chooser dialog, so just create a new one                    createFileChooser();                } catch(Exception exc) {                    JOptionPane.showMessageDialog(this,                                                  exc.getMessage(),                                                  "Platform",                                                  JOptionPane.ERROR_MESSAGE);                }            }        }    }};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -