1 32 33 package it.businesslogic.ireport.gui; 34 import it.businesslogic.ireport.CrosstabReportElement; 35 import java.awt.event.ActionEvent ; 36 import javax.swing.ToolTipManager ; 37 import org.syntax.jedit.*; 38 import org.syntax.jedit.tokenmarker.*; 39 40 import javax.swing.event.UndoableEditEvent ; 41 import javax.swing.event.UndoableEditListener ; 42 43 import java.awt.event.MouseWheelEvent ; 44 import java.awt.event.MouseWheelListener ; 45 46 import it.businesslogic.ireport.util.I18n; 47 import java.util.Vector ; 48 52 public class JRTextExpressionArea extends JEditTextArea { 53 54 private int spessore = 0; 55 protected boolean viewScrollbars = true; 56 57 private javax.swing.JPopupMenu jPopupMenuTextField; 58 private javax.swing.JMenuItem jMenuItemTextEditor; 59 private javax.swing.JSeparator jSeparator8; 60 private javax.swing.JMenuItem jMenuItemCut; 61 private javax.swing.JMenuItem jMenuItemCopy; 62 private javax.swing.JMenuItem jMenuItemPaste; 63 private javax.swing.JMenuItem jMenuItemSelectAll; 64 private javax.swing.JSeparator jSeparator9; 65 private javax.swing.JMenu jMenuFields; 66 private javax.swing.JMenu jMenuVariables; 67 private javax.swing.JMenu jMenuParameters; 68 69 private it.businesslogic.ireport.SubDataset subDataset = null; 70 private Vector crosstabElements = new Vector (); 71 72 73 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 106 107 108 } 109 110 111 public void initPopupMenu() 112 { 113 114 jPopupMenuTextField = new javax.swing.JPopupMenu (); 115 jMenuItemTextEditor = new javax.swing.JMenuItem (); 116 jSeparator8 = new javax.swing.JSeparator (); 117 jMenuItemCut = new javax.swing.JMenuItem (); 118 jMenuItemCopy = new javax.swing.JMenuItem (); 119 jMenuItemPaste = new javax.swing.JMenuItem (); 120 jMenuItemSelectAll = new javax.swing.JMenuItem (); 121 jSeparator9 = new javax.swing.JSeparator (); 122 jMenuFields = new javax.swing.JMenu (); 123 jMenuVariables = new javax.swing.JMenu (); 124 jMenuParameters = new javax.swing.JMenu (); 125 126 jMenuItemTextEditor.setText("Use texteditor"); 127 jMenuItemTextEditor.addActionListener(new java.awt.event.ActionListener () { 128 public void actionPerformed(java.awt.event.ActionEvent evt) { 129 jMenuItemTextEditorActionPerformed(evt); 130 } 131 }); 132 133 jPopupMenuTextField.add(jMenuItemTextEditor); 134 135 jPopupMenuTextField.add(jSeparator8); 136 137 jMenuItemCut.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/cut.png"))); 138 jMenuItemCut.setText( I18n.getString("cut","Cut") ); 139 jPopupMenuTextField.add(jMenuItemCut); 141 142 jMenuItemCut.addActionListener(new java.awt.event.ActionListener () { 143 public void actionPerformed(java.awt.event.ActionEvent evt) { 144 jMenuItemCutActionPerformed(evt); 145 } 146 }); 147 148 jMenuItemCopy.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/copy.png"))); 149 jMenuItemCopy.setText(I18n.getString("copy","Copy")); 150 jPopupMenuTextField.add(jMenuItemCopy); 152 153 jMenuItemCopy.addActionListener(new java.awt.event.ActionListener () { 154 public void actionPerformed(java.awt.event.ActionEvent evt) { 155 jMenuItemCopyActionPerformed(evt); 156 } 157 }); 158 159 jMenuItemPaste.setIcon(new javax.swing.ImageIcon (getClass().getResource("/it/businesslogic/ireport/icons/menu/paste.png"))); 160 jMenuItemPaste.setText(I18n.getString("paste","Paste")); 161 jPopupMenuTextField.add(jMenuItemPaste); 163 164 jMenuItemPaste.addActionListener(new java.awt.event.ActionListener () { 165 public void actionPerformed(java.awt.event.ActionEvent evt) { 166 jMenuItemPasteActionPerformed(evt); 167 } 168 }); 169 170 jMenuItemSelectAll.setText("Select all"); 171 jPopupMenuTextField.add(jMenuItemSelectAll); 173 174 jMenuItemSelectAll.addActionListener(new java.awt.event.ActionListener () { 175 public void actionPerformed(java.awt.event.ActionEvent evt) { 176 jMenuItemSelectAllActionPerformed(evt); 177 } 178 }); 179 180 181 182 194 195 this.setRightClickPopup(jPopupMenuTextField); 196 } 197 198 private void jMenuItemTextEditorActionPerformed(java.awt.event.ActionEvent evt) 199 { 200 if (MainFrame.getMainInstance().getActiveReportFrame() == null) return; 201 ExpressionEditor ed = new ExpressionEditor(); 202 203 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 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 evt) 233 { 234 this.cut(); 235 } 236 237 private void jMenuItemCopyActionPerformed(java.awt.event.ActionEvent evt) 238 { 239 this.copy(); 240 } 241 242 private void jMenuItemPasteActionPerformed(java.awt.event.ActionEvent evt) 243 { 244 this.paste(); 245 } 246 247 private void jMenuItemSelectAllActionPerformed(java.awt.event.ActionEvent evt) 248 { 249 this.setSelectionStart(0); 250 this.setSelectionEnd( getText().length()); 251 } 252 253 257 public boolean isViewScrollbars() { 258 return viewScrollbars; 259 } 260 261 265 public void setViewScrollbars(boolean viewScrollbars) { 266 267 if (!viewScrollbars) 270 { 271 274 } 276 else 277 { 278 } 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 312 { 313 public void undoableEditHappened(UndoableEditEvent e) 314 { 315 addEdit(e); 316 318 } 319 320 protected SimpleUndoableEditListener() 321 { 322 } 323 } 324 325 class SimpleMouseWheelListener implements MouseWheelListener 326 { 327 328 public void mouseWheelMoved(MouseWheelEvent 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 e) 340 { 341 getDocument().getUM().addEdit( e.getEdit() ); 342 } 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 getCrosstabElements() { 354 return crosstabElements; 355 } 356 357 public void setCrosstabElements(Vector 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 e) 368 { 369 jMenuItemTextEditorActionPerformed(e); 370 } 371 372 public void applyI18n(){ 373 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 } 381 } 382 | Popular Tags |