You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2009/04/24 16:59:40 UTC

svn commit: r768325 - in /cayenne/main/trunk/framework: cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/validator/ cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ cayenne-modeler/src/main/java/org/apache/cayenne/mod...

Author: aadamchik
Date: Fri Apr 24 14:59:40 2009
New Revision: 768325

URL: http://svn.apache.org/viewvc?rev=768325&view=rev
Log:
CAY-1164 Implement EJBQL query support in the Modeler

a patch by Olga Tkachova from 2009-04-13 07:53 AM
still a few glitches here and there, but getting closer

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/validator/EJBQLQueryValidator.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowser.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/validator/EJBQLQueryValidator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/validator/EJBQLQueryValidator.java?rev=768325&r1=768324&r2=768325&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/validator/EJBQLQueryValidator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/project/validator/EJBQLQueryValidator.java Fri Apr 24 14:59:40 2009
@@ -48,8 +48,11 @@
         if (query.getEjbqlStatement() != null) {
             PositionException message = null;
 
+            EJBQLQuery queryTemp = new EJBQLQuery();
+            queryTemp.setEjbqlStatement(query.getEjbqlStatement());
+            
             try {
-                query.getExpression(dd.getEntityResolver());
+                queryTemp.getExpression(dd.getEntityResolver());
             }
             catch (CayenneRuntimeException e) {
                 message = new PositionException();

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowser.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowser.java?rev=768325&r1=768324&r2=768325&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowser.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowser.java Fri Apr 24 14:59:40 2009
@@ -21,10 +21,7 @@
 package org.apache.cayenne.modeler.dialog;
 
 import java.awt.Component;
-import java.util.Iterator;
-
 import javax.swing.WindowConstants;
-
 import org.apache.cayenne.modeler.util.CayenneController;
 import org.apache.cayenne.swing.BindingBuilder;
 import org.apache.cayenne.validation.ValidationFailure;

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java?rev=768325&r1=768324&r2=768325&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EjbqlQueryScriptsTab.java Fri Apr 24 14:59:40 2009
@@ -19,6 +19,9 @@
 package org.apache.cayenne.modeler.editor;
 
 import java.awt.BorderLayout;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
 import javax.swing.JPanel;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -76,7 +79,6 @@
                 catch (BadLocationException e1) {
                     e1.printStackTrace();
                 }
-
             }
 
             public void removeUpdate(DocumentEvent e) {
@@ -84,6 +86,42 @@
                 validateEJBQL();
             }
         });
+
+        scriptArea.getPane().addKeyListener(new KeyListener() {
+
+            boolean pasteOrCut;
+
+            public void keyPressed(KeyEvent e) {
+                if (e.getKeyCode() == KeyEvent.VK_END
+                        || e.getKeyCode() == KeyEvent.VK_HOME
+                        || e.getKeyCode() == KeyEvent.VK_LEFT
+                        || e.getKeyCode() == KeyEvent.VK_RIGHT
+                        || e.getKeyCode() == KeyEvent.VK_UP
+                        || e.getKeyCode() == KeyEvent.VK_UNDO) {
+                    getQuery().setEjbqlStatement(scriptArea.getText());
+                    validateEJBQL();
+                }
+                if ((e.getKeyCode() == KeyEvent.VK_V || e.getKeyCode() == KeyEvent.VK_X)
+                        && e.isControlDown()) {
+                    pasteOrCut = true;
+                }
+            }
+
+            public void keyReleased(KeyEvent e) {
+
+                if ((pasteOrCut && e.getKeyCode() == KeyEvent.VK_CONTROL)
+                        || e.getKeyCode() == KeyEvent.VK_DELETE) {
+                    scriptArea.removeHighlightText();
+                    getQuery().setEjbqlStatement(scriptArea.getText());
+                    validateEJBQL();
+                    pasteOrCut = false;
+                }
+            }
+
+            public void keyTyped(KeyEvent e) {
+            }
+        });
+
         setLayout(new BorderLayout());
         add(scriptArea, BorderLayout.WEST);
         add(scriptArea.getScrollPane(), BorderLayout.CENTER);
@@ -99,10 +137,8 @@
         }
         scriptArea.setEnabled(true);
         displayScript();
-
         validateEJBQL();
         setVisible(true);
-
     }
 
     EJBQLQuery getQuery() {
@@ -125,6 +161,7 @@
         if (query == null) {
             return;
         }
+
         String testTemp = null;
         if (text != null) {
             testTemp = text.trim();
@@ -161,12 +198,10 @@
         PositionException positionException = ejbqlQueryValidator.validateEJBQL(
                 getQuery(),
                 mediator.getCurrentDataDomain());
-
         if (positionException != null) {
             if (positionException.getBeginLine() != null
                     || positionException.getBeginColumn() != null
                     || positionException.getLength() != null) {
-
                 scriptArea.setHighlightText(
                         positionException.getBeginLine(),
                         positionException.getBeginColumn(),
@@ -177,6 +212,5 @@
                 scriptArea.removeHighlightText();
             }
         }
-
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java?rev=768325&r1=768324&r2=768325&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/textpane/JCayenneTextPane.java Fri Apr 24 14:59:40 2009
@@ -1,12 +1,15 @@
 package org.apache.cayenne.swing.components.textpane;
 
 import java.awt.Color;
+import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Image;
 import java.awt.Point;
 import java.awt.Rectangle;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
 import java.awt.event.MouseEvent;
 
 import javax.swing.BorderFactory;
@@ -27,6 +30,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import com.sun.corba.se.impl.oa.poa.ActiveObjectMap.Key;
+
 public class JCayenneTextPane extends JPanel {
 
     protected Highlighter.HighlightPainter painter;
@@ -62,6 +67,10 @@
         return pane.getText();
     }
 
+    public Component getPane() {
+        return pane;
+    }
+    
     public int getStartPositionInDocument() {
         return pane.viewToModel(scrollPane.getViewport().getViewPosition());
         // starting pos
@@ -125,6 +134,7 @@
         }
         return position + posInLine;
     }
+    
 
     public JCayenneTextPane(SyntaxConstant syntaxConstant) {
         super();
@@ -176,7 +186,8 @@
             public void changedUpdate(DocumentEvent evt) {
             }
 
-        });
+        });        
+       
     }
 
     public void setHighlightText(int lastIndex, int endIndex) throws BadLocationException {
@@ -242,32 +253,35 @@
             setToolTipText("");
         }
         else {
-            this.endYPositionToolTip = 0;
-            this.startYPositionToolTip = 0;
-            setTooltipTextError(string);
+            this.endYPositionToolTip = -1;
+            this.startYPositionToolTip = -1;
+            setTooltipTextError("");
+            setToolTipText("");
             imageError = false;
         }
     }
 
     public String getToolTipText(MouseEvent e) {
 
-        if (e.getPoint().y > endYPositionToolTip
-                && e.getPoint().y < startYPositionToolTip) {
-            setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-            String htmlText = getTooltipTextError()
-                    .replaceAll("\n", "<br>&nbsp;")
-                    .replaceAll("\t", "&nbsp;")
-                    .replaceAll("\r", "<br>&nbsp;");
-
-            return "<HTML>"
-                    + "<body bgcolor='#FFEBCD' text='black'>"
-                    + htmlText
-                    + "</body>";
-        }
-        else {
-            setCursor(Cursor.getDefaultCursor());
-            return null;
-        }
+        
+            if (e.getPoint().y > endYPositionToolTip
+                    && e.getPoint().y < startYPositionToolTip 
+                    && imageError) {
+                setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
+                String htmlText = getTooltipTextError()
+                        .replaceAll("\n", "<br>&nbsp;")
+                        .replaceAll("\t", "&nbsp;")
+                        .replaceAll("\r", "<br>&nbsp;");
+
+                return "<HTML>"
+                        + "<body bgcolor='#FFEBCD' text='black'>"
+                        + htmlText
+                        + "</body>";
+            }
+            else {
+                setCursor(Cursor.getDefaultCursor());
+                return null;
+            }
     }
 
     public void removeHighlightText() {