KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > businesslogic > ireport > gui > JRTextExpressionArea


1 /*
2  * Copyright (C) 2005 - 2006 JasperSoft Corporation. All rights reserved.
3  * http://www.jaspersoft.com.
4  *
5  * Unless you have purchased a commercial license agreement from JasperSoft,
6  * the following license terms apply:
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as published by
10  * the Free Software Foundation.
11  *
12  * This program is distributed WITHOUT ANY WARRANTY; and without the
13  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
18  * or write to:
19  *
20  * Free Software Foundation, Inc.,
21  * 59 Temple Place - Suite 330,
22  * Boston, MA USA 02111-1307
23  *
24  *
25  *
26  *
27  * JRTextExpressionArea.java
28  *
29  * Created on 28 aprile 2003, 22.55
30  *
31  */

32
33 package it.businesslogic.ireport.gui;
34 import it.businesslogic.ireport.CrosstabReportElement;
35 import java.awt.event.ActionEvent JavaDoc;
36 import javax.swing.ToolTipManager JavaDoc;
37 import org.syntax.jedit.*;
38 import org.syntax.jedit.tokenmarker.*;
39
40 import javax.swing.event.UndoableEditEvent JavaDoc;
41 import javax.swing.event.UndoableEditListener JavaDoc;
42
43 import java.awt.event.MouseWheelEvent JavaDoc;
44 import java.awt.event.MouseWheelListener JavaDoc;
45
46 import it.businesslogic.ireport.util.I18n;
47 import java.util.Vector JavaDoc;
48 /**
49  *
50  * @author Administrator
51  */

52 public class JRTextExpressionArea extends JEditTextArea {
53     
54     private int spessore = 0;
55     protected boolean viewScrollbars = true;
56     
57     private javax.swing.JPopupMenu JavaDoc jPopupMenuTextField;
58     private javax.swing.JMenuItem JavaDoc jMenuItemTextEditor;
59     private javax.swing.JSeparator JavaDoc jSeparator8;
60     private javax.swing.JMenuItem JavaDoc jMenuItemCut;
61     private javax.swing.JMenuItem JavaDoc jMenuItemCopy;
62     private javax.swing.JMenuItem JavaDoc jMenuItemPaste;
63     private javax.swing.JMenuItem JavaDoc jMenuItemSelectAll;
64     private javax.swing.JSeparator JavaDoc jSeparator9;
65     private javax.swing.JMenu JavaDoc jMenuFields;
66     private javax.swing.JMenu JavaDoc jMenuVariables;
67     private javax.swing.JMenu JavaDoc jMenuParameters;
68     
69     private it.businesslogic.ireport.SubDataset subDataset = null;
70     private Vector JavaDoc crosstabElements = new Vector JavaDoc();
71     
72     
73     /** Creates a new instance of JRTextExpressionArea */
74     public JRTextExpressionArea() {
75         super();
76         
77         setEditButtonVisible(true);
78
79         painter.setEOLMarkersPainted(false);
80         painter.setInvalidLinesPainted(false);
81         painter.setLineHighlightEnabled(false);
82         
83         spessore = vertical.getWidth();
84         super.painter.setLineHighlightColor(java.awt.Color.WHITE);
85         this.setDocument(new SyntaxDocument());
86
87         setTokenMarker(new JavaTokenMarker());
88         
89         getDocument().addUndoableEditListener(new SimpleUndoableEditListener());
90         addMouseWheelListener(new SimpleMouseWheelListener());
91         initPopupMenu();
92         
93         setToolTipText("TIP: open the text editor to edit your expression:\npress right mouse button and choose <b>Expression editor</b>");
94         
95 /*
96         this.getInputHandler().addKeyBinding("C+Z", new java.awt.event.ActionListener() {
97
98              public void actionPerformed(java.awt.event.ActionEvent evt)
99              {
100                   undo();
101                   ;
102                   System.out.println(getName() + " " + getDocument().getUM());
103              }
104         } );
105   */

106         
107         
108     }
109     
110     
111     public void initPopupMenu()
112     {
113         
114         jPopupMenuTextField = new javax.swing.JPopupMenu JavaDoc();
115         jMenuItemTextEditor = new javax.swing.JMenuItem JavaDoc();
116         jSeparator8 = new javax.swing.JSeparator JavaDoc();
117         jMenuItemCut = new javax.swing.JMenuItem JavaDoc();
118         jMenuItemCopy = new javax.swing.JMenuItem JavaDoc();
119         jMenuItemPaste = new javax.swing.JMenuItem JavaDoc();
120         jMenuItemSelectAll = new javax.swing.JMenuItem JavaDoc();
121         jSeparator9 = new javax.swing.JSeparator JavaDoc();
122         jMenuFields = new javax.swing.JMenu JavaDoc();
123         jMenuVariables = new javax.swing.JMenu JavaDoc();
124         jMenuParameters = new javax.swing.JMenu JavaDoc();
125         
126         jMenuItemTextEditor.setText("Use texteditor");
127         jMenuItemTextEditor.addActionListener(new java.awt.event.ActionListener JavaDoc() {
128             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
129                 jMenuItemTextEditorActionPerformed(evt);
130             }
131         });
132
133         jPopupMenuTextField.add(jMenuItemTextEditor);
134
135         jPopupMenuTextField.add(jSeparator8);
136
137         jMenuItemCut.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/cut.png")));
138         jMenuItemCut.setText( I18n.getString("cut","Cut") );
139         //jMenuItemCut.setEnabled(false);
140
jPopupMenuTextField.add(jMenuItemCut);
141
142         jMenuItemCut.addActionListener(new java.awt.event.ActionListener JavaDoc() {
143             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
144                 jMenuItemCutActionPerformed(evt);
145             }
146         });
147         
148         jMenuItemCopy.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/copy.png")));
149         jMenuItemCopy.setText(I18n.getString("copy","Copy"));
150         //jMenuItemCopy.setEnabled(false);
151
jPopupMenuTextField.add(jMenuItemCopy);
152
153         jMenuItemCopy.addActionListener(new java.awt.event.ActionListener JavaDoc() {
154             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
155                 jMenuItemCopyActionPerformed(evt);
156             }
157         });
158         
159         jMenuItemPaste.setIcon(new javax.swing.ImageIcon JavaDoc(getClass().getResource("/it/businesslogic/ireport/icons/menu/paste.png")));
160         jMenuItemPaste.setText(I18n.getString("paste","Paste"));
161         //jMenuItemPaste.setEnabled(false);
162
jPopupMenuTextField.add(jMenuItemPaste);
163
164         jMenuItemPaste.addActionListener(new java.awt.event.ActionListener JavaDoc() {
165             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
166                 jMenuItemPasteActionPerformed(evt);
167             }
168         });
169         
170         jMenuItemSelectAll.setText("Select all");
171         //jMenuItemPaste.setEnabled(false);
172
jPopupMenuTextField.add(jMenuItemSelectAll);
173
174         jMenuItemSelectAll.addActionListener(new java.awt.event.ActionListener JavaDoc() {
175             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
176                 jMenuItemSelectAllActionPerformed(evt);
177             }
178         });
179         
180         
181         
182         /*
183         jPopupMenuTextField.add(jSeparator9);
184
185         jMenuFields.setText("Fields");
186         jPopupMenuTextField.add(jMenuFields);
187
188         jMenuVariables.setText("Variables");
189         jPopupMenuTextField.add(jMenuVariables);
190
191         jMenuParameters.setText("Parameters");
192         jPopupMenuTextField.add(jMenuParameters);
193         */

194         
195         this.setRightClickPopup(jPopupMenuTextField);
196     }
197     
198     private void jMenuItemTextEditorActionPerformed(java.awt.event.ActionEvent JavaDoc evt)
199     {
200         if (MainFrame.getMainInstance().getActiveReportFrame() == null) return;
201         ExpressionEditor ed = new ExpressionEditor();
202         
203         //System.out.println("Sundataset: " + this.getSubDataset());
204
//System.out.println("Crosstabs: " + getCrosstabElements().size());
205

206         if (this.getSubDataset() == null && getCrosstabElements().size() == 0)
207         {
208             if (MainFrame.getMainInstance().getActiveReportFrame().getSelectedCrosstabEditorPanel() == null )
209             {
210                 this.setSubDataset( MainFrame.getMainInstance().getActiveReportFrame().getReport() );
211             }
212             else
213             {
214                 addCrosstab(MainFrame.getMainInstance().getActiveReportFrame().getSelectedCrosstabEditorPanel().getCrosstabElement() );
215             }
216         }
217         
218         if (getSubDataset() != null) ed.setSubDataset(this.getSubDataset());
219         
220         ed.setCrosstabElements(getCrosstabElements());
221         ed.setExpression( getText() );
222         ed.updateTreeEntries();
223         //System.out.println(getText());
224
ed.setVisible(true);
225         if (ed.getDialogResult() == javax.swing.JOptionPane.OK_OPTION)
226         {
227             this.setText( ed.getExpression());
228         }
229         
230     }
231     
232     private void jMenuItemCutActionPerformed(java.awt.event.ActionEvent JavaDoc evt)
233     {
234         this.cut();
235     }
236     
237     private void jMenuItemCopyActionPerformed(java.awt.event.ActionEvent JavaDoc evt)
238     {
239         this.copy();
240     }
241     
242     private void jMenuItemPasteActionPerformed(java.awt.event.ActionEvent JavaDoc evt)
243     {
244         this.paste();
245     }
246     
247     private void jMenuItemSelectAllActionPerformed(java.awt.event.ActionEvent JavaDoc evt)
248     {
249         this.setSelectionStart(0);
250         this.setSelectionEnd( getText().length());
251     }
252     
253     /** Getter for property viewScrollbars.
254      * @return Value of property viewScrollbars.
255      *
256      */

257     public boolean isViewScrollbars() {
258         return viewScrollbars;
259     }
260     
261     /** Setter for property viewScrollbars.
262      * @param viewScrollbars New value of property viewScrollbars.
263      *
264      */

265     public void setViewScrollbars(boolean viewScrollbars) {
266         
267          //System.out.println("Ops"+viewScrollbars);
268
//if (this.viewScrollbars == viewScrollbars) return;
269
if (!viewScrollbars)
270         {
271             //super.vertical.setVisible(false);
272
//super.horizontal.setVisible(false);
273

274             //super.vertical.setSize(0,0);
275
}
276         else
277         {
278             //super.vertical.setVisible(true);
279
//super.horizontal.setVisible(true);
280
//super.vertical.setSize(spessore, super.vertical.getHeight());
281
//super.horizontal.setSize(spessore, super.horizontal.getWidth());
282
}
283         this.viewScrollbars = viewScrollbars;
284     }
285     
286
287     public void setEnabled(boolean enabled)
288     {
289         if (super.isEnabled() == enabled) return;
290         super.setEnabled(enabled);
291         if (!super.isEnabled())
292         {
293             for (int i=0; i<this.getComponentCount(); ++i)
294                 this.getComponent(i).setBackground(java.awt.Color.GRAY);
295             this.setCaretVisible(false);
296            this.getPainter().setLineHighlightEnabled(false);
297            
298             
299         }
300         else
301         {
302             for (int i=0; i<this.getComponentCount(); ++i)
303                 this.getComponent(i).setBackground(java.awt.Color.WHITE);
304             this.setCaretVisible(true);
305             this.getPainter().setLineHighlightEnabled(true);
306         }
307     
308     }
309     
310     
311     class SimpleUndoableEditListener implements UndoableEditListener JavaDoc
312     {
313         public void undoableEditHappened(UndoableEditEvent JavaDoc e)
314         {
315             addEdit(e);
316             //System.out.println("Add to undo.." + getDocument().getUM().canUndo());
317

318         }
319
320         protected SimpleUndoableEditListener()
321         {
322         }
323     }
324     
325     class SimpleMouseWheelListener implements MouseWheelListener JavaDoc
326     {
327
328         public void mouseWheelMoved(MouseWheelEvent JavaDoc e)
329         {
330             if(e.getScrollType() == 0 && ((getFirstLine() + getVisibleLines()) - 1) + e.getWheelRotation() < getLineCount() && getFirstLine() + e.getWheelRotation() >= 0)
331                 setFirstLine(getFirstLine() + e.getWheelRotation());
332         }
333
334         protected SimpleMouseWheelListener()
335         {
336         }
337     }
338
339      public void addEdit(UndoableEditEvent JavaDoc e)
340      {
341           getDocument().getUM().addEdit( e.getEdit() );
342           //System.out.println( "Add edit to doc: " + getDocument().getUM() );
343
}
344
345     public it.businesslogic.ireport.SubDataset getSubDataset() {
346         return subDataset;
347     }
348
349     public void setSubDataset(it.businesslogic.ireport.SubDataset subDataset) {
350         this.subDataset = subDataset;
351     }
352
353     public Vector JavaDoc getCrosstabElements() {
354         return crosstabElements;
355     }
356
357     public void setCrosstabElements(Vector JavaDoc crosstabElements) {
358         this.crosstabElements = crosstabElements;
359     }
360     
361     public void addCrosstab(CrosstabReportElement cr)
362     {
363         this.getCrosstabElements().add(cr);
364         
365     }
366     
367     public void editButtonActionPerformed(ActionEvent JavaDoc e)
368      {
369             jMenuItemTextEditorActionPerformed(e);
370     }
371         
372     public void applyI18n(){
373                 // Start autogenerated code ----------------------
374
jMenuItemTextEditor.setText(I18n.getString("jRTextExpressionArea.menuItemTextEditor","Use texteditor"));
375                 jMenuItemSelectAll.setText(I18n.getString("jRTextExpressionArea.menuItemSelectAll","Select all"));
376                 jMenuFields.setText(I18n.getString("jRTextExpressionArea.menuFields","Fields"));
377                 jMenuVariables.setText(I18n.getString("jRTextExpressionArea.menuVariables","Variables"));
378                 jMenuParameters.setText(I18n.getString("jRTextExpressionArea.menuParameters","Parameters"));
379                 // End autogenerated code ----------------------
380
}
381 }
382
Popular Tags