jrtextexpressionarea.java

来自「优秀的打印控件全源代码,类似水晶表的设计器!」· Java 代码 · 共 318 行

JAVA
318
字号
/* * JRTextExpressionArea.java * * iReport  --  Visual designer for generating JasperReports Documents *  Copyright (C) 2002-2003  Giulio Toffoli gt@businesslogic.it * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *  Giulio Toffoli *  Via T.Aspetti, 233 *  35100 Padova ITALY *  gt@businesslogic.it * * Created on 28 aprile 2003, 22.55 */package it.businesslogic.ireport.gui;import org.syntax.jedit.*;import org.syntax.jedit.tokenmarker.*;import javax.swing.event.UndoableEditEvent;import javax.swing.event.UndoableEditListener;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import it.businesslogic.ireport.util.I18n;/** * * @author  Administrator */public class JRTextExpressionArea extends JEditTextArea {        private int spessore = 0;    protected boolean viewScrollbars = true;        private javax.swing.JPopupMenu jPopupMenuTextField;    private javax.swing.JMenuItem jMenuItemTextEditor;    private javax.swing.JSeparator jSeparator8;    private javax.swing.JMenuItem jMenuItemCut;    private javax.swing.JMenuItem jMenuItemCopy;    private javax.swing.JMenuItem jMenuItemPaste;    private javax.swing.JMenuItem jMenuItemSelectAll;    private javax.swing.JSeparator jSeparator9;    private javax.swing.JMenu jMenuFields;    private javax.swing.JMenu jMenuVariables;    private javax.swing.JMenu jMenuParameters;            /** Creates a new instance of JRTextExpressionArea */    public JRTextExpressionArea() {        super();                        painter.setEOLMarkersPainted(false);        painter.setInvalidLinesPainted(false);        painter.setLineHighlightEnabled(false);                spessore = vertical.getWidth();        super.painter.setLineHighlightColor(java.awt.Color.WHITE);        this.setDocument(new SyntaxDocument());        setTokenMarker(new JavaTokenMarker());                getDocument().addUndoableEditListener(new SimpleUndoableEditListener());        addMouseWheelListener(new SimpleMouseWheelListener());        initPopupMenu();/*                this.getInputHandler().addKeyBinding("C+Z", new java.awt.event.ActionListener() {             public void actionPerformed(java.awt.event.ActionEvent evt)             {                                   undo();                  ;                  System.out.println(getName() + " " + getDocument().getUM());             }        } );  */                                     }            public void initPopupMenu()    {                jPopupMenuTextField = new javax.swing.JPopupMenu();        jMenuItemTextEditor = new javax.swing.JMenuItem();        jSeparator8 = new javax.swing.JSeparator();        jMenuItemCut = new javax.swing.JMenuItem();        jMenuItemCopy = new javax.swing.JMenuItem();        jMenuItemPaste = new javax.swing.JMenuItem();        jMenuItemSelectAll = new javax.swing.JMenuItem();        jSeparator9 = new javax.swing.JSeparator();        jMenuFields = new javax.swing.JMenu();        jMenuVariables = new javax.swing.JMenu();        jMenuParameters = new javax.swing.JMenu();                jMenuItemTextEditor.setText("Use texteditor");        jMenuItemTextEditor.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jMenuItemTextEditorActionPerformed(evt);            }        });        jPopupMenuTextField.add(jMenuItemTextEditor);        jPopupMenuTextField.add(jSeparator8);        jMenuItemCut.setFont(new java.awt.Font("Dialog", 0, 11));        jMenuItemCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/it/businesslogic/ireport/icons/menu/cut.gif")));        jMenuItemCut.setText( I18n.getString("cut","Cut") );        //jMenuItemCut.setEnabled(false);        jPopupMenuTextField.add(jMenuItemCut);        jMenuItemCut.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jMenuItemCutActionPerformed(evt);            }        });                jMenuItemCopy.setFont(new java.awt.Font("Dialog", 0, 11));        jMenuItemCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/it/businesslogic/ireport/icons/menu/copy.gif")));        jMenuItemCopy.setText(I18n.getString("copy","Copy"));        //jMenuItemCopy.setEnabled(false);        jPopupMenuTextField.add(jMenuItemCopy);        jMenuItemCopy.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jMenuItemCopyActionPerformed(evt);            }        });                jMenuItemPaste.setFont(new java.awt.Font("Dialog", 0, 11));        jMenuItemPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/it/businesslogic/ireport/icons/menu/paste.gif")));        jMenuItemPaste.setText(I18n.getString("paste","Paste"));        //jMenuItemPaste.setEnabled(false);        jPopupMenuTextField.add(jMenuItemPaste);        jMenuItemPaste.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jMenuItemPasteActionPerformed(evt);            }        });                jMenuItemSelectAll.setFont(new java.awt.Font("Dialog", 0, 11));        jMenuItemSelectAll.setText("Select all");        //jMenuItemPaste.setEnabled(false);        jPopupMenuTextField.add(jMenuItemSelectAll);        jMenuItemSelectAll.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                jMenuItemSelectAllActionPerformed(evt);            }        });                                /*        jPopupMenuTextField.add(jSeparator9);        jMenuFields.setText("Fields");        jPopupMenuTextField.add(jMenuFields);        jMenuVariables.setText("Variables");        jPopupMenuTextField.add(jMenuVariables);        jMenuParameters.setText("Parameters");        jPopupMenuTextField.add(jMenuParameters);        */                this.setRightClickPopup(jPopupMenuTextField);    }        private void jMenuItemTextEditorActionPerformed(java.awt.event.ActionEvent evt)    {        ExpressionEditor ed = new ExpressionEditor();        if (MainFrame.getMainInstance().getActiveReportFrame() != null)        {            ed.setJrf( MainFrame.getMainInstance().getActiveReportFrame() );            ed.setExpression( getText() );            System.out.println(getText());            ed.show();            if (ed.getDialogResult() == javax.swing.JOptionPane.OK_OPTION)            {                this.setText( ed.getExpression());            }                    }    }        private void jMenuItemCutActionPerformed(java.awt.event.ActionEvent evt)    {        this.cut();    }        private void jMenuItemCopyActionPerformed(java.awt.event.ActionEvent evt)    {        this.copy();    }        private void jMenuItemPasteActionPerformed(java.awt.event.ActionEvent evt)    {        this.paste();    }        private void jMenuItemSelectAllActionPerformed(java.awt.event.ActionEvent evt)    {        this.setSelectionStart(0);        this.setSelectionEnd( getText().length());    }        /** Getter for property viewScrollbars.     * @return Value of property viewScrollbars.     *     */    public boolean isViewScrollbars() {        return viewScrollbars;    }        /** Setter for property viewScrollbars.     * @param viewScrollbars New value of property viewScrollbars.     *     */    public void setViewScrollbars(boolean viewScrollbars) {                 //System.out.println("Ops"+viewScrollbars);        //if (this.viewScrollbars == viewScrollbars) return;        if (!viewScrollbars)        {            //super.vertical.setVisible(false);            //super.horizontal.setVisible(false);                        //super.vertical.setSize(0,0);        }        else        {            //super.vertical.setVisible(true);            //super.horizontal.setVisible(true);            //super.vertical.setSize(spessore,  super.vertical.getHeight());            //super.horizontal.setSize(spessore,  super.horizontal.getWidth());        }        this.viewScrollbars = viewScrollbars;    }        public void setEnabled(boolean enabled)    {        if (super.isEnabled() == enabled) return;        super.setEnabled(enabled);        if (!super.isEnabled())        {            for (int i=0; i<this.getComponentCount(); ++i)                this.getComponent(i).setBackground(java.awt.Color.LIGHT_GRAY);            this.setCaretVisible(false);           this.getPainter().setLineHighlightEnabled(false);                               }        else        {            for (int i=0; i<this.getComponentCount(); ++i)                this.getComponent(i).setBackground(java.awt.Color.WHITE);            this.setCaretVisible(true);            this.getPainter().setLineHighlightEnabled(true);        }      }            class SimpleUndoableEditListener implements UndoableEditListener    {        public void undoableEditHappened(UndoableEditEvent e)        {            addEdit(e);            //System.out.println("Add to undo.." + getDocument().getUM().canUndo());                    }        protected SimpleUndoableEditListener()        {        }    }        class SimpleMouseWheelListener implements MouseWheelListener    {        public void mouseWheelMoved(MouseWheelEvent e)        {            if(e.getScrollType() == 0 && ((getFirstLine() + getVisibleLines()) - 1) + e.getWheelRotation() < getLineCount() && getFirstLine() + e.getWheelRotation() >= 0)                setFirstLine(getFirstLine() + e.getWheelRotation());        }        protected SimpleMouseWheelListener()        {        }    }     public void addEdit(UndoableEditEvent e)     {          getDocument().getUM().addEdit( e.getEdit() );          //System.out.println( "Add edit to doc: " + getDocument().getUM() );     }}

⌨️ 快捷键说明

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