You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by an...@apache.org on 2009/12/09 15:41:28 UTC

svn commit: r888812 [2/2] - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne: modeler/ modeler/action/ modeler/dialog/ modeler/editor/ modeler/editor/datanode/ modeler/undo/ modeler/util/ swing/ swing/components/textpane/

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/JTextFieldUndoListener.java Wed Dec  9 14:41:26 2009
@@ -18,253 +18,88 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.undo;
 
+import java.awt.event.FocusAdapter;
 import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
 
-import javax.swing.SwingUtilities;
 import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
 import javax.swing.event.UndoableEditEvent;
 import javax.swing.event.UndoableEditListener;
 import javax.swing.text.AbstractDocument;
 import javax.swing.text.JTextComponent;
-import javax.swing.tree.TreePath;
-import javax.swing.undo.CannotRedoException;
-import javax.swing.undo.CannotUndoException;
 import javax.swing.undo.CompoundEdit;
-import javax.swing.undo.UndoManager;
 import javax.swing.undo.UndoableEdit;
 
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.CayenneModelerFrame;
-import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.modeler.event.DataMapDisplayEvent;
-import org.apache.cayenne.modeler.event.EntityDisplayEvent;
+import org.apache.cayenne.modeler.util.TextAdapter;
 
 public class JTextFieldUndoListener implements UndoableEditListener {
 
-	private UndoManager undoManager;
-	private CompoundEdit compoundEdit;
-	private JTextComponent textComponent;
-	private UndoDocumentListener undoDocumentListener;
+    public CompoundEdit compoundEdit;
+    
+    private TextAdapter adapter;
+
+    private int lastOffset;
+    private int lastLength;
+
+    public JTextFieldUndoListener(TextAdapter adapter) {
+        this.adapter = adapter;
+
+        this.adapter.getComponent().addFocusListener(new FocusAdapter() {
+
+            @Override
+            public void focusLost(FocusEvent e) {
+                if (compoundEdit != null) {
+                    compoundEdit.end();
+                    compoundEdit = null;
+                }
+            }
+        });
+    }
+
+    public void undoableEditHappened(UndoableEditEvent e) {
+        
+        JTextComponent editor = adapter.getComponent();
+        
+        if (compoundEdit == null || !compoundEdit.canUndo()) {
+            compoundEdit = startCompoundEdit(e.getEdit());
+            lastLength = editor.getDocument().getLength();
+            return;
+        }
+
+        AbstractDocument.DefaultDocumentEvent event = (AbstractDocument.DefaultDocumentEvent) e
+                .getEdit();
+
+        if (event.getType().equals(DocumentEvent.EventType.CHANGE)) {
+            compoundEdit.addEdit(e.getEdit());
+            return;
+        }
+
+        int offsetChange = editor.getCaretPosition() - lastOffset;
+        int lengthChange = editor.getDocument().getLength() - lastLength;
+
+        if (Math.abs(offsetChange) == 1 && Math.abs(lengthChange) == 1) {
+            compoundEdit.addEdit(e.getEdit());
+            lastOffset = editor.getCaretPosition();
+            lastLength = editor.getDocument().getLength();
+            return;
+        }
+
+        compoundEdit.end();
+        compoundEdit = startCompoundEdit(e.getEdit());
+    }
+
+    private CompoundEdit startCompoundEdit(UndoableEdit anEdit) {
+        
+        JTextComponent editor = adapter.getComponent();
+        
+        lastOffset = editor.getCaretPosition();
+        lastLength = editor.getDocument().getLength();
 
-	private Object currentObj;
-	private TreePath[] paths;
+        compoundEdit = new TextCompoundEdit(adapter);
+        compoundEdit.addEdit(anEdit);
 
-	private int lastOffset;
-	private int lastLength;
+        Application.getInstance().getUndoManager().addEdit(compoundEdit);
 
-	private JTextFieldUndoListener self = this;
-
-	private boolean inProgress = false;
-
-	private class UndoDocumentListener implements DocumentListener {
-
-		public void changedUpdate(DocumentEvent e) {
-		}
-
-		public void insertUpdate(final DocumentEvent e) {
-			SwingUtilities.invokeLater(new Runnable() {
-
-				public void run() {
-					int offset = e.getOffset() + e.getLength();
-					offset = Math.min(offset, textComponent.getDocument()
-							.getLength());
-					textComponent.setCaretPosition(offset);
-				}
-			});
-		}
-
-		public void removeUpdate(DocumentEvent e) {
-			textComponent.setCaretPosition(e.getOffset());
-		}
-
-	}
-
-	public JTextFieldUndoListener(JTextComponent textComponent) {
-		this.textComponent = textComponent;
-		this.undoManager = Application.getInstance().getUndoManager();
-		this.undoDocumentListener = new UndoDocumentListener();
-
-		this.textComponent.addFocusListener(new FocusListener() {
-
-			public void focusGained(FocusEvent e) {
-				if (self.currentObj == null) {
-					self.currentObj = getProjectController().getCurrentObject();
-					self.paths = ((CayenneModelerFrame) Application
-							.getInstance().getFrameController().getView())
-							.getView().getProjectTreeView().getSelectionPaths();
-				}
-			}
-
-			public void focusLost(FocusEvent e) {
-				self.currentObj = null;
-
-				if (compoundEdit != null) {
-					compoundEdit.end();
-					compoundEdit = null;
-				}
-			}
-
-		});
-
-		this.textComponent.addKeyListener(new KeyListener() {
-
-			public void keyPressed(KeyEvent e) {
-				inProgress = true;
-			}
-
-			public void keyReleased(KeyEvent e) {
-			}
-
-			public void keyTyped(KeyEvent e) {
-			}
-
-		});
-
-	}
-
-	public void undoableEditHappened(UndoableEditEvent e) {
-		if (inProgress) {
-			if (compoundEdit == null) {
-				compoundEdit = startCompoundEdit(e.getEdit());
-			} else {
-				AbstractDocument.DefaultDocumentEvent event = (AbstractDocument.DefaultDocumentEvent) e
-						.getEdit();
-
-				if (event.getType().equals(DocumentEvent.EventType.CHANGE)) {
-					compoundEdit.addEdit(e.getEdit());
-					return;
-				}
-
-				int offsetChange = textComponent.getCaretPosition()
-						- lastOffset;
-				int lengthChange = textComponent.getDocument().getLength()
-						- lastLength;
-
-				if (offsetChange == lengthChange && Math.abs(offsetChange) == 1) {
-					compoundEdit.addEdit(e.getEdit());
-					lastOffset = textComponent.getCaretPosition();
-					lastLength = textComponent.getDocument().getLength();
-					return;
-				} else {
-					compoundEdit.end();
-					compoundEdit = startCompoundEdit(e.getEdit());
-				}
-			}
-
-			inProgress = !inProgress;
-		}
-	}
-
-	private CompoundEdit startCompoundEdit(UndoableEdit e) {
-		lastOffset = textComponent.getCaretPosition();
-		lastLength = textComponent.getDocument().getLength();
-
-		CompoundEdit compoundEdit = new TextCompoundEdit();
-		compoundEdit.addEdit(e);
-
-		undoManager.addEdit(compoundEdit);
-
-		return compoundEdit;
-	}
-
-	private class TextCompoundEdit extends CompoundEdit {
-		
-
-		public boolean isInProgress() {
-			return false;
-		}
-
-		@Override
-		public String getRedoPresentationName() {
-			return "Redo Text Change";
-		}
-
-		@Override
-		public String getUndoPresentationName() {
-			return "Undo Text Change";
-		}
-
-		@Override
-		public boolean canRedo() {
-			return true;
-		}
-
-		public void undo() throws CannotUndoException {
-			textComponent.getDocument().addDocumentListener(
-					undoDocumentListener);
-
-			if (compoundEdit != null) {
-				compoundEdit.end();
-			}
-
-			restoreSelections();
-
-			super.undo();
-
-			compoundEdit = null;
-
-			textComponent.getDocument().removeDocumentListener(
-					undoDocumentListener);
-
-			textComponent.requestFocusInWindow();
-			textComponent.selectAll();
-		}
-
-		public void redo() throws CannotRedoException {
-			textComponent.getDocument().addDocumentListener(
-					undoDocumentListener);
-
-			super.redo();
-
-			textComponent.getDocument().removeDocumentListener(
-					undoDocumentListener);
-			textComponent.requestFocusInWindow();
-		}
-
-		private void restoreSelections() {
-			((CayenneModelerFrame) Application.getInstance()
-					.getFrameController().getView()).getView()
-					.getProjectTreeView().setSelectionPaths(self.paths);
-
-			if (self.currentObj instanceof DataMap) {
-
-				getProjectController().fireDataMapDisplayEvent(
-						new DataMapDisplayEvent(this,
-								(DataMap) self.currentObj,
-								getProjectController().getCurrentDataDomain(),
-								getProjectController().getCurrentDataNode()));
-
-			} else if (self.currentObj instanceof ObjEntity) {
-
-				getProjectController().fireObjEntityDisplayEvent(
-						new EntityDisplayEvent(this,
-								(ObjEntity) self.currentObj,
-								getProjectController().getCurrentDataMap(),
-								getProjectController().getCurrentDataNode(),
-								getProjectController().getCurrentDataDomain()));
-
-			} else if (self.currentObj instanceof DbEntity) {
-
-				getProjectController().fireDbEntityDisplayEvent(
-						new EntityDisplayEvent(this, (DbEntity) self.currentObj,
-								getProjectController().getCurrentDataMap(),
-								getProjectController().getCurrentDataNode(),
-								getProjectController().getCurrentDataDomain()));
-				
-
-			}
-		}
-	}
-
-	private ProjectController getProjectController() {
-		return Application.getInstance().getFrameController()
-				.getProjectController();
-	}
+        return compoundEdit;
+    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RelationshipUndoableEdit.java Wed Dec  9 14:41:26 2009
@@ -21,15 +21,18 @@
 import javax.swing.undo.AbstractUndoableEdit;
 import javax.swing.undo.CannotRedoException;
 import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.CompoundEdit;
 
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.modeler.dialog.ResolveDbRelationshipDialog;
 import org.apache.cayenne.modeler.util.ProjectUtil;
 
-public class RelationshipUndoableEdit extends CayenneCompoundEdit {
+public class RelationshipUndoableEdit extends CompoundEdit {
 
-	@Override
+    private DbRelationship relationship;
+	
+    @Override
 	public void redo() throws CannotRedoException {
 		super.redo();
 		
@@ -59,15 +62,6 @@
 		return "Undo Edit relationship";
 	}
 
-	
-
-	private DbRelationship relationship;
-
-	@Override
-	public boolean canUndo() {
-		return hasEdits();
-	}
-
 	public RelationshipUndoableEdit(DbRelationship relationship) {
 		this.relationship = relationship;
 	}

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveAttributeUndoableEdit.java Wed Dec  9 14:41:26 2009
@@ -36,8 +36,6 @@
 
 public class RemoveAttributeUndoableEdit extends CayenneUndoableEdit {
 
-    
-
     private DataDomain domain;
     private DataMap dataMap;
 
@@ -75,8 +73,6 @@
 
     @Override
     public void redo() throws CannotRedoException {
-        restoreSelections();
-
         RemoveAttributeAction action = (RemoveAttributeAction) actionManager
                 .getAction(RemoveAttributeAction.getActionName());
 
@@ -110,7 +106,6 @@
 
     @Override
     public void undo() throws CannotUndoException {
-        restoreSelections();
 
         CreateAttributeAction action = (CreateAttributeAction) actionManager
                 .getAction(CreateAttributeAction.getActionName());

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCompoundUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCompoundUndoableEdit.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCompoundUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveCompoundUndoableEdit.java Wed Dec  9 14:41:26 2009
@@ -18,10 +18,10 @@
  ****************************************************************/
 package org.apache.cayenne.modeler.undo;
 
+import javax.swing.undo.CompoundEdit;
 
-public class RemoveCompoundUndoableEdit extends CayenneCompoundEdit {
 
-    
+public class RemoveCompoundUndoableEdit extends CompoundEdit {
 
     @Override
     public String getPresentationName() {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/RemoveRelationshipUndoableEdit.java Wed Dec  9 14:41:26 2009
@@ -30,8 +30,6 @@
 
 public class RemoveRelationshipUndoableEdit extends CayenneUndoableEdit {
 
-	
-
 	private ObjEntity objEntity;
 	private ObjRelationship[] rels;
 
@@ -63,8 +61,6 @@
 
 	@Override
 	public void redo() throws CannotRedoException {
-		restoreSelections();
-		
 		RemoveRelationshipAction action = (RemoveRelationshipAction) actionManager
 				.getAction(RemoveRelationshipAction.getActionName());
 		if (objEntity != null) {
@@ -76,8 +72,6 @@
 
 	@Override
 	public void undo() throws CannotUndoException {
-		restoreSelections();
-		
 		CreateRelationshipAction action = (CreateRelationshipAction) actionManager
 				.getAction(CreateRelationshipAction.getActionName());
 		if (objEntity != null) {

Added: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java?rev=888812&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java (added)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/TextCompoundEdit.java Wed Dec  9 14:41:26 2009
@@ -0,0 +1,193 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.modeler.undo;
+
+import javax.swing.JTabbedPane;
+import javax.swing.SwingUtilities;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreePath;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.CompoundEdit;
+
+import org.apache.cayenne.access.DataDomain;
+import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.Embeddable;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.CayenneModelerFrame;
+import org.apache.cayenne.modeler.editor.EditorView;
+import org.apache.cayenne.modeler.util.TextAdapter;
+import org.apache.cayenne.query.EJBQLQuery;
+import org.apache.cayenne.query.SQLTemplate;
+
+public class TextCompoundEdit extends CompoundEdit implements DocumentListener {
+
+    private TextAdapter adapter;
+
+    private TreePath treePath;
+    private int selectedTabIndex;
+    private JTabbedPane tabbedPane;
+    
+    private Object targetObject;
+
+    public Object getTargetObject() {
+        return targetObject;
+    }
+
+    public TextCompoundEdit(TextAdapter adapter) {
+        this.adapter = adapter;
+
+        EditorView editorView = ((CayenneModelerFrame) Application
+                .getInstance()
+                .getFrameController()
+                .getView()).getView();
+
+        treePath = editorView.getProjectTreeView().getSelectionPath();
+
+        DefaultMutableTreeNode newPath = (DefaultMutableTreeNode) treePath
+                .getLastPathComponent();
+
+        targetObject = newPath.getUserObject();
+
+        if (targetObject instanceof ObjEntity) {
+            tabbedPane = editorView.getObjDetailView();
+        }
+
+        if (targetObject instanceof DbEntity) {
+            tabbedPane = editorView.getDbDetailView();
+        }
+
+        if (targetObject instanceof Embeddable) {
+            tabbedPane = editorView.getEmbeddableView();
+        }
+
+        if (targetObject instanceof SQLTemplate) {
+            tabbedPane = editorView.getSqlTemplateView();
+        }
+
+        if (targetObject instanceof EJBQLQuery) {
+            tabbedPane = editorView.getEjbqlQueryView();
+        }
+
+        if (targetObject instanceof DataNode) {
+            tabbedPane = editorView.getDataNodeView();
+        }
+
+        if (targetObject instanceof DataMap) {
+            tabbedPane = editorView.getDataMapView();
+        }
+
+        if (targetObject instanceof DataDomain) {
+            tabbedPane = editorView.getDataDomainView();
+        }
+
+        if (tabbedPane != null) {
+            selectedTabIndex = tabbedPane.getSelectedIndex();
+        }
+    }
+
+    private void restoreSelections() {
+
+        EditorView editorView = ((CayenneModelerFrame) Application
+                .getInstance()
+                .getFrameController()
+                .getView()).getView();
+
+        editorView.getProjectTreeView().getSelectionModel().setSelectionPath(treePath);
+
+        if (tabbedPane != null) {
+            tabbedPane.setSelectedIndex(selectedTabIndex);
+        }
+    }
+
+    public void insertUpdate(final DocumentEvent e) {
+        SwingUtilities.invokeLater(new Runnable() {
+
+            public void run() {
+                int offset = e.getOffset() + e.getLength();
+                offset = Math.min(offset, adapter
+                        .getComponent()
+                        .getDocument()
+                        .getLength());
+                adapter.getComponent().setCaretPosition(offset);
+            }
+        });
+    }
+
+    public void removeUpdate(DocumentEvent e) {
+        adapter.getComponent().setCaretPosition(e.getOffset());
+    }
+
+    public void changedUpdate(DocumentEvent e) {
+    }
+
+    public boolean isInProgress() {
+        return false;
+    }
+
+    @Override
+    public void redo() throws CannotRedoException {
+        restoreSelections();
+
+        super.redo();
+
+        adapter.getComponent().requestFocusInWindow();
+    }
+
+    public void undo() throws CannotUndoException {
+        restoreSelections();
+
+        end();
+
+        super.undo();
+
+        adapter.updateModel();
+
+        adapter.getComponent().requestFocusInWindow();
+        adapter.getComponent().selectAll();
+    }
+
+    @Override
+    public synchronized String getRedoPresentationName() {
+        return "Redo Text Change";
+    }
+
+    @Override
+    public synchronized String getUndoPresentationName() {
+        return "Undo Text Change";
+    }
+
+    public JTextComponent getEditor() {
+        return adapter.getComponent();
+    }
+
+    public void watchCaretPosition() {
+        adapter.getComponent().getDocument().addDocumentListener(this);
+    }
+
+    public void stopWatchingCaretPosition() {
+        adapter.getComponent().getDocument().removeDocumentListener(this);
+    }
+}
\ No newline at end of file

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneWidgetFactory.java Wed Dec  9 14:41:26 2009
@@ -35,6 +35,7 @@
 import javax.swing.JTextField;
 import javax.swing.SwingConstants;
 import javax.swing.table.TableCellEditor;
+import javax.swing.text.JTextComponent;
 
 import org.apache.cayenne.modeler.ModelerPreferences;
 import org.apache.cayenne.modeler.undo.JComboBoxUndoListener;
@@ -106,22 +107,6 @@
         comboBox.setMaximumRowCount(ModelerPreferences.COMBOBOX_MAX_VISIBLE_SIZE);
         return comboBox;
     }
-    
-    /**
-     * Creates undoable JTextField.
-     * 
-     */
-    public static JTextField createUndoableTextField() {
-        return new JTextFieldUndoable();
-    }
-    
-    /**
-     * Creates undoable JTextField.
-     * 
-     */
-    public static JTextField createUndoableTextField(int size) {
-        return new JTextFieldUndoable(size);
-    }
 
     /**
      * Creates cell editor for text field

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/TextAdapter.java Wed Dec  9 14:41:26 2009
@@ -25,7 +25,6 @@
 
 import javax.swing.InputVerifier;
 import javax.swing.JComponent;
-import javax.swing.JTextArea;
 import javax.swing.JTextField;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -33,8 +32,10 @@
 import javax.swing.text.JTextComponent;
 
 import org.apache.cayenne.modeler.dialog.validator.ValidatorDialog;
+import org.apache.cayenne.modeler.undo.JEditTextAreaUndoableAdapter;
 import org.apache.cayenne.modeler.undo.JTextFieldUndoListener;
 import org.apache.cayenne.validation.ValidationException;
+import org.syntax.jedit.JEditTextArea;
 
 /**
  * A validating adapter for JTextComponent. Implement {@link #updateModel(String)}to
@@ -45,11 +46,17 @@
 
     protected Color defaultBGColor;
     protected Color errorColor;
-    protected JTextComponent textComponent;
+
     protected String defaultToolTip;
     protected boolean modelUpdateDisabled;
     protected UndoableEditListener undoableListener;
 
+    protected JTextComponent textComponent;
+
+    public TextAdapter(JEditTextArea textArea) {
+        this(new JEditTextAreaUndoableAdapter(textArea), true, false, true);
+    }
+
     public TextAdapter(JTextField textField) {
         this(textField, true, false, true);
     }
@@ -70,7 +77,7 @@
         }
     }
 
-    public TextAdapter(JTextArea textField) {
+    public TextAdapter(JTextComponent textField) {
         this(textField, false, true);
     }
 
@@ -81,8 +88,8 @@
         this.defaultBGColor = textComponent.getBackground();
         this.defaultToolTip = textComponent.getToolTipText();
         this.textComponent = textComponent;
-        
-        this.undoableListener = new JTextFieldUndoListener(this.textComponent);
+
+        this.undoableListener = new JTextFieldUndoListener(this);
         this.textComponent.getDocument().addUndoableEditListener(this.undoableListener);
 
         if (checkOnFocusLost) {
@@ -154,7 +161,7 @@
 
     }
 
-    protected void updateModel() {
+    public void updateModel() {
         try {
             updateModel(textComponent.getText());
             clear();

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java?rev=888812&r1=888811&r2=888812&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java Wed Dec  9 14:41:26 2009
@@ -24,6 +24,7 @@
 import java.util.Map;
 
 import javax.swing.*;
+import javax.swing.text.JTextComponent;
 
 /**
  * A builder for component bindings that delegates the creation of the binding to the

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=888812&r1=888811&r2=888812&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 Wed Dec  9 14:41:26 2009
@@ -1,7 +1,6 @@
 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;
@@ -20,6 +19,7 @@
 import javax.swing.text.BadLocationException;
 import javax.swing.text.Document;
 import javax.swing.text.Highlighter;
+import javax.swing.text.JTextComponent;
 
 import org.apache.cayenne.modeler.Main;
 import org.apache.cayenne.modeler.util.ModelerUtil;
@@ -63,7 +63,7 @@
         return pane.getText();
     }
 
-    public Component getPane() {
+    public JTextComponent getPane() {
         return pane;
     }