You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by km...@apache.org on 2008/08/27 03:19:51 UTC
svn commit: r689322 - in /cayenne/main/trunk:
docs/doc/src/main/resources/RELEASE-NOTES.txt
framework/cayenne-modeler/pom.xml
framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
Author: kmenard
Date: Tue Aug 26 18:19:50 2008
New Revision: 689322
URL: http://svn.apache.org/viewvc?rev=689322&view=rev
Log:
Fixed CAY-892: CM Usability: JEdit Syntax to all TextAreas
Patch by Andrey Razumovsky (and apologies for not giving proper attribution in previous commit messages).
Modified:
cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
cayenne/main/trunk/framework/cayenne-modeler/pom.xml
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=689322&r1=689321&r2=689322&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Tue Aug 26 18:19:50 2008
@@ -19,6 +19,7 @@
CAY-436 In modeler, change default object relationship delete rule
CAY-794 Abstract object entities
CAY-888 CM Usability: Object Select Query Improvements
+CAY-892 CM Usability: JEdit Syntax to all TextAreas
CAY-894 CM Usability: Welcome screen
CAY-911 CM Usability: JComboBox Autocompletion
CAY-1056 Detection of the project file changes on disk.
Modified: cayenne/main/trunk/framework/cayenne-modeler/pom.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/pom.xml?rev=689322&r1=689321&r2=689322&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/pom.xml (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/pom.xml Tue Aug 26 18:19:50 2008
@@ -16,10 +16,7 @@
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+--><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
@@ -114,7 +111,13 @@
<groupId>mockrunner</groupId>
<artifactId>mockrunner</artifactId>
</dependency>
- </dependencies>
+
+ <dependency>
+ <groupId>net.sf.jedit-syntax</groupId>
+ <artifactId>jedit-syntax</artifactId>
+ <version>2.2.2</version>
+ </dependency>
+ </dependencies>
<build>
<plugins>
@@ -164,4 +167,4 @@
</plugins>
</build>
-</project>
+</project>
\ No newline at end of file
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java?rev=689322&r1=689321&r2=689322&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java Tue Aug 26 18:19:50 2008
@@ -33,9 +33,9 @@
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.text.BadLocationException;
@@ -44,10 +44,15 @@
import org.apache.cayenne.map.event.QueryEvent;
import org.apache.cayenne.modeler.ProjectController;
import org.apache.cayenne.modeler.util.DbAdapterInfo;
-import org.apache.cayenne.modeler.util.TextAdapter;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.util.Util;
+import org.syntax.jedit.JEditTextArea;
+import org.syntax.jedit.KeywordMap;
+import org.syntax.jedit.tokenmarker.PLSQLTokenMarker;
+import org.syntax.jedit.tokenmarker.SQLTokenMarker;
+import org.syntax.jedit.tokenmarker.Token;
+import org.syntax.jedit.tokenmarker.TokenMarker;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
@@ -58,14 +63,51 @@
*
* @author Andrus Adamchik
*/
-public class SQLTemplateScriptsTab extends JPanel {
+public class SQLTemplateScriptsTab extends JPanel implements DocumentListener {
private static final String DEFAULT_LABEL = "Default";
+
+ /**
+ * JEdit marker for SQL Template
+ */
+ private static final TokenMarker SQL_TEMPLATE_MARKER;
+ static {
+ KeywordMap map = PLSQLTokenMarker.getKeywordMap();
+
+ //adding more keywords
+ map.add("FIRST", Token.KEYWORD1);
+ map.add("LIMIT", Token.KEYWORD1);
+ map.add("OFFSET", Token.KEYWORD1);
+ map.add("TOP", Token.KEYWORD1);
+
+ //adding velocity template highlighing
+ map.add("#bind", Token.KEYWORD2);
+ map.add("#bindEqual", Token.KEYWORD2);
+ map.add("#bindNotEqual", Token.KEYWORD2);
+ map.add("#bindObjectEqual", Token.KEYWORD2);
+ map.add("#bindObjectNotEqual", Token.KEYWORD2);
+ map.add("#chain", Token.KEYWORD2);
+ map.add("#chunk", Token.KEYWORD2);
+ map.add("#end", Token.KEYWORD2);
+ map.add("#result", Token.KEYWORD2);
+
+ SQL_TEMPLATE_MARKER = new SQLTokenMarker(map);
+ }
protected ProjectController mediator;
protected JList scripts;
- protected TextAdapter script;
+
+ /**
+ * JEdit text component for highlighing SQL syntax (see CAY-892)
+ */
+ protected JEditTextArea scriptArea;
+
+ /**
+ * Indication that no update should be fired
+ */
+ private boolean updateDisabled;
+
protected ListSelectionListener scriptRefreshHandler;
public SQLTemplateScriptsTab(ProjectController mediator) {
@@ -96,14 +138,11 @@
Collections.sort(keys);
keys.add(0, DEFAULT_LABEL);
scripts.setModel(new DefaultComboBoxModel(keys.toArray()));
-
- script = new TextAdapter(new JTextArea(15, 30)) {
-
- protected void updateModel(String text) {
- setSQL(text);
- }
- };
-
+
+ scriptArea = new JEditTextArea();
+ scriptArea.setTokenMarker(SQL_TEMPLATE_MARKER);
+ scriptArea.getDocument().addDocumentListener(this);
+
// assemble
CellConstraints cc = new CellConstraints();
PanelBuilder builder = new PanelBuilder(new FormLayout(
@@ -115,7 +154,7 @@
scripts,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), cc.xy(1, 2));
- builder.add(new JScrollPane(script.getComponent()), cc.xy(3, 2));
+ builder.add(new JScrollPane(scriptArea), cc.xy(3, 2));
setLayout(new BorderLayout());
add(builder.getPanel(), BorderLayout.CENTER);
@@ -135,7 +174,7 @@
displayScript();
scripts.addListSelectionListener(scriptRefreshHandler);
- script.getComponent().setEnabled(true);
+ scriptArea.setEnabled(true);
setVisible(true);
}
@@ -183,20 +222,22 @@
String text = (key.equals(DEFAULT_LABEL)) ? query.getDefaultTemplate() : query
.getCustomTemplate(key);
- script.setText(text);
+ updateDisabled = true;
+ scriptArea.setText(text);
+ updateDisabled = false;
}
void disableEditor() {
- script.setText(null);
- script.getComponent().setEnabled(false);
- script.getComponent().setEditable(false);
- script.getComponent().setBackground(getBackground());
+ scriptArea.setText(null);
+ scriptArea.setEnabled(false);
+ scriptArea.setEditable(false);
+ scriptArea.setBackground(getBackground());
}
void enableEditor() {
- script.getComponent().setEnabled(true);
- script.getComponent().setEditable(true);
- script.getComponent().setBackground(Color.WHITE);
+ scriptArea.setEnabled(true);
+ scriptArea.setEditable(true);
+ scriptArea.setBackground(Color.WHITE);
}
void setSQL(DocumentEvent e) {
@@ -247,6 +288,20 @@
}
}
}
+
+ public void insertUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
+ public void removeUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
+ public void changedUpdate(DocumentEvent e) {
+ if (!updateDisabled) {
+ setSQL(e);
+ }
+ }
final class DbAdapterListRenderer extends DefaultListCellRenderer {
Re: svn commit: r689322 - in /cayenne/main/trunk: docs/doc/src/main/resources/RELEASE-NOTES.txt framework/cayenne-modeler/pom.xml framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
Posted by Kevin Menard <ni...@gmail.com>.
Sure. It'll be a couple days before I can get back into the code, but I've
made a note to do it.
--
Kevin
On Wed, Aug 27, 2008 at 5:12 AM, Andrus Adamchik <an...@objectstyle.org>wrote:
> Can we also add a small note about this dependency to the NOTICE.txt file
> under framework/cayenne-legal/unpublished.
>
> Thanks,
> Andrus
>
>
> On Aug 27, 2008, at 4:19 AM, kmenard@apache.org wrote:
>
> +
>> + <dependency>
>> + <groupId>net.sf.jedit-syntax</groupId>
>> + <artifactId>jedit-syntax</artifactId>
>> + <version>2.2.2</version>
>> + </dependency>
>>
>
>
Re: svn commit: r689322 - in /cayenne/main/trunk: docs/doc/src/main/resources/RELEASE-NOTES.txt framework/cayenne-modeler/pom.xml framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/SQLTemplateScriptsTab.java
Posted by Andrus Adamchik <an...@objectstyle.org>.
Can we also add a small note about this dependency to the NOTICE.txt
file under framework/cayenne-legal/unpublished.
Thanks,
Andrus
On Aug 27, 2008, at 4:19 AM, kmenard@apache.org wrote:
> +
> + <dependency>
> + <groupId>net.sf.jedit-syntax</groupId>
> + <artifactId>jedit-syntax</artifactId>
> + <version>2.2.2</version>
> + </dependency>