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> ")
- .replaceAll("\t", " ")
- .replaceAll("\r", "<br> ");
-
- 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> ")
+ .replaceAll("\t", " ")
+ .replaceAll("\r", "<br> ");
+
+ return "<HTML>"
+ + "<body bgcolor='#FFEBCD' text='black'>"
+ + htmlText
+ + "</body>";
+ }
+ else {
+ setCursor(Cursor.getDefaultCursor());
+ return null;
+ }
}
public void removeHighlightText() {