You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2009/12/23 16:54:35 UTC
svn commit: r893555 - in
/cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler:
action/ undo/
Author: oltka
Date: Wed Dec 23 15:54:34 2009
New Revision: 893555
URL: http://svn.apache.org/viewvc?rev=893555&view=rev
Log:
CAY-1346
(cherry picked from commit c08ae46a1a00ae8add6e5411b413d48bc3b70395)
Added:
cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java
Modified:
cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapEntityListenerAction.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityListenerAction.java
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapEntityListenerAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapEntityListenerAction.java?rev=893555&r1=893554&r2=893555&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapEntityListenerAction.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapEntityListenerAction.java Wed Dec 23 15:54:34 2009
@@ -18,16 +18,24 @@
****************************************************************/
package org.apache.cayenne.modeler.action;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JOptionPane;
+
+import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.EntityListener;
+import org.apache.cayenne.map.event.MapEvent;
import org.apache.cayenne.modeler.Application;
-
+import org.apache.cayenne.modeler.event.EntityListenerEvent;
+import org.apache.cayenne.modeler.undo.CreateDataMapEntityListenerUndoableEdit;
/**
* Action class for creating entity listeners on a DataMap
- *
+ *
* @version 1.0 Oct 30, 2007
*/
public class CreateDataMapEntityListenerAction extends CreateObjEntityListenerAction {
+
/**
* unique action name
*/
@@ -35,7 +43,7 @@
/**
* Constructor.
- *
+ *
* @param application Application instance
*/
public CreateDataMapEntityListenerAction(Application application) {
@@ -51,20 +59,63 @@
/**
* checks whether the new name of listener class already exists
- *
+ *
* @param className entered class name
* @return true or false
*/
protected boolean isListenerClassAlreadyExists(String className) {
- return getProjectController().getCurrentDataMap().getDefaultEntityListener(className) != null;
+ return getProjectController().getCurrentDataMap().getDefaultEntityListener(
+ className) != null;
}
/**
* adds new entity listener
+ *
* @param listener new EntityListener instance
*/
protected void addEntityListener(EntityListener listener) {
getProjectController().getCurrentDataMap().addDefaultEntityListener(listener);
}
-}
+ /**
+ * base entity listenre creation logic
+ *
+ * @param e event
+ */
+ @Override
+ public void performAction(ActionEvent e) {
+ String listenerClass = JOptionPane
+ .showInputDialog("Please enter listener class:");
+ if (listenerClass != null && listenerClass.trim().length() > 0) {
+ if (isListenerClassAlreadyExists(listenerClass)) {
+ JOptionPane.showMessageDialog(
+ null,
+ "Listener class already exists.",
+ "Error creating entity listener",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ else {
+ DataMap dataMap = getProjectController().getCurrentDataMap();
+ if (dataMap != null) {
+ EntityListener listener = new EntityListener(listenerClass);
+ createMapListener(dataMap, listener);
+
+ application
+ .getUndoManager()
+ .addEdit(
+ new CreateDataMapEntityListenerUndoableEdit(
+ dataMap,
+ listener));
+ }
+ }
+ }
+ }
+
+ public void createMapListener(DataMap dataMap, EntityListener listener) {
+ dataMap.addDefaultEntityListener(listener);
+
+ getProjectController().fireEntityListenerEvent(
+ new EntityListenerEvent(CreateDataMapEntityListenerAction.this, listener
+ .getClassName(), listener.getClassName(), MapEvent.ADD));
+ }
+}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityListenerAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityListenerAction.java?rev=893555&r1=893554&r2=893555&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityListenerAction.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityListenerAction.java Wed Dec 23 15:54:34 2009
@@ -37,8 +37,6 @@
*/
public class CreateObjEntityListenerAction extends CayenneAction {
-
-
/**
* unique action name
*/
Added: cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java?rev=893555&view=auto
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java (added)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/undo/CreateDataMapEntityListenerUndoableEdit.java Wed Dec 23 15:54:34 2009
@@ -0,0 +1,59 @@
+/*****************************************************************
+ * 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.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.EntityListener;
+import org.apache.cayenne.modeler.action.CreateDataMapEntityListenerAction;
+import org.apache.cayenne.modeler.action.RemoveEntityListenerForDataMapAction;
+
+
+public class CreateDataMapEntityListenerUndoableEdit extends CayenneUndoableEdit {
+
+ private DataMap dataMap;
+ private EntityListener listener;
+
+ public CreateDataMapEntityListenerUndoableEdit(DataMap dataMap, EntityListener listener) {
+ this.dataMap = dataMap;
+ this.listener = listener;
+ }
+
+ @Override
+ public String getPresentationName() {
+ return "Create Entity Listener";
+ }
+
+ @Override
+ public void redo() throws CannotRedoException {
+ CreateDataMapEntityListenerAction action = (CreateDataMapEntityListenerAction) actionManager
+ .getAction(CreateDataMapEntityListenerAction.getActionName());
+ action.createMapListener(dataMap, listener);
+ }
+
+ @Override
+ public void undo() throws CannotUndoException {
+ RemoveEntityListenerForDataMapAction action = (RemoveEntityListenerForDataMapAction) actionManager
+ .getAction(RemoveEntityListenerForDataMapAction.getActionName());
+
+ action.removeEntityListener(dataMap, listener.getClassName());
+ }
+}