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 2010/03/17 14:11:41 UTC

svn commit: r924267 [1/2] - in /cayenne/main/trunk/framework: cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ ca...

Author: oltka
Date: Wed Mar 17 13:11:38 2010
New Revision: 924267

URL: http://svn.apache.org/viewvc?rev=924267&view=rev
Log:
CAY-1339 Remove org.apache.cayenne.project package from runtime

* remove the ProjectPath from the modeler

Added:
    cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/ConfigurationNodeParentGetter.java
      - copied, changed from r923185, cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/MultipleObjectsDisplayListener.java
    cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/DefaultConfigurationNodeParentGetter.java
Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ActionManager.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAttributeAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyProcedureParameterAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyRelationshipAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAttributeAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutProcedureParameterAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutRelationshipAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ExitAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateCodeAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/InferRelationshipsAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAttributeAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveProcedureParameterAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveRelationshipAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/SaveAsAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ValidateAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/EditorView.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/DisplayEvent.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/MultipleObjectsDisplayEvent.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/event/MultipleObjectsDisplayListener.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/EntityDisplayAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/action/ShowGraphEntityAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneAction.java
    cayenne/main/trunk/framework/cayenne-project-unpublished/src/main/java/org/apache/cayenne/project2/CayenneProjectModule.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ActionManager.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ActionManager.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ActionManager.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ActionManager.java Wed Mar 17 13:11:38 2010
@@ -31,6 +31,7 @@ import javax.swing.ActionMap;
 import javax.swing.JComponent;
 import javax.swing.TransferHandler;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.modeler.action.AboutAction;
 import org.apache.cayenne.modeler.action.ConfigurePreferencesAction;
 import org.apache.cayenne.modeler.action.CopyAction;
@@ -92,7 +93,7 @@ import org.apache.cayenne.modeler.action
 import org.apache.cayenne.modeler.action.ValidateAction;
 import org.apache.cayenne.modeler.graph.action.ShowGraphEntityAction;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
+import org.apache.cayenne.project2.ConfigurationNodeParentGetter;
 
 /**
  * An object that manages CayenneModeler actions.
@@ -105,10 +106,8 @@ public class ActionManager {
 
     // search action added to project actions
     static final Collection<String> PROJECT_ACTIONS = Arrays.asList(RevertAction
-            .getActionName(), 
-            ProjectAction
-            .getActionName(), ValidateAction.getActionName(), SaveAsAction
-            .getActionName(), FindAction.getActionName());
+            .getActionName(), ProjectAction.getActionName(), ValidateAction
+            .getActionName(), SaveAsAction.getActionName(), FindAction.getActionName());
 
     static final Collection<String> DOMAIN_ACTIONS = new HashSet<String>(PROJECT_ACTIONS);
     static {
@@ -121,7 +120,7 @@ public class ActionManager {
                 ImportEOModelAction.getActionName(),
                 PasteAction.getActionName()));
     }
-    
+
     static final Collection<String> DATA_MAP_ACTIONS = new HashSet<String>(DOMAIN_ACTIONS);
     static {
         DATA_MAP_ACTIONS.addAll(Arrays.asList(
@@ -161,17 +160,16 @@ public class ActionManager {
     static final Collection<String> EMBEDDABLE_ACTIONS = new HashSet<String>(
             DATA_MAP_ACTIONS);
     static {
-        EMBEDDABLE_ACTIONS.addAll(Arrays.asList(
-                CreateAttributeAction.getActionName()));
+        EMBEDDABLE_ACTIONS.addAll(Arrays.asList(CreateAttributeAction.getActionName()));
     }
-    
+
     static final Collection<String> PROCEDURE_ACTIONS = new HashSet<String>(
             DATA_MAP_ACTIONS);
     static {
         PROCEDURE_ACTIONS.addAll(Arrays.asList(CreateProcedureParameterAction
                 .getActionName()));
     }
-    
+
     static final Collection<String> MULTIPLE_OBJECTS_ACTIONS = new HashSet<String>(
             PROJECT_ACTIONS);
     static {
@@ -237,9 +235,9 @@ public class ActionManager {
         registerAction(new NavigateForwardAction(application)).setAlwaysOn(true);
         // search action registered
         registerAction(new FindAction(application));
-        
+
         registerAction(new ShowLogConsoleAction(application)).setAlwaysOn(true);
-        
+
         registerAction(new CutAction(application));
         registerAction(new CutAttributeAction(application));
         registerAction(new CutRelationshipAction(application));
@@ -249,15 +247,15 @@ public class ActionManager {
         registerAction(new CopyRelationshipAction(application));
         registerAction(new CopyProcedureParameterAction(application));
         registerAction(new PasteAction(application));
-        
-        UndoAction undoAction = new UndoAction(application); 
+
+        UndoAction undoAction = new UndoAction(application);
         undoAction.setEnabled(false);
         registerAction(undoAction);
-        
+
         RedoAction redoAction = new RedoAction(application);
         redoAction.setEnabled(false);
         registerAction(redoAction);
-        
+
         registerAction(new CreateEmbeddableAction(application));
         registerAction(new ShowGraphEntityAction(application));
     }
@@ -332,41 +330,47 @@ public class ActionManager {
         processActionsState(DATA_MAP_ACTIONS);
         updateActions("Query");
     }
-    
+
     public void embeddableSelected() {
         processActionsState(EMBEDDABLE_ACTIONS);
         updateActions("Embeddable");
     }
-    
+
     /**
      * Invoked when several objects were selected in ProjectTree at time
      */
-    public void multipleObjectsSelected(ProjectPath[] paths) {
+    public void multipleObjectsSelected(
+            ConfigurationNode[] objects,
+            Application application) {
         processActionsState(MULTIPLE_OBJECTS_ACTIONS);
-        
+
         updateActions("Selected Objects");
-        
+
         CayenneAction cutAction = getAction(CutAction.getActionName());
-        boolean canCopy = true; // cut/copy can be performed if selected objects are on the same level
-        
-        if (!cutAction.enableForPath(paths[0])) {
+        boolean canCopy = true; // cut/copy can be performed if selected objects are on
+        // the same level
+
+        if (!cutAction.enableForPath((ConfigurationNode) objects[0])) {
             canCopy = false;
         }
         else {
-            Object parent = paths[0].getObjectParent();
-            
-            for (int i = 1; i < paths.length; i++) {
-                if (paths[i].getObjectParent() != parent || !cutAction.enableForPath(paths[i])) {
+            ConfigurationNodeParentGetter parentGetter = application.getInjector().getInstance(
+                    ConfigurationNodeParentGetter.class);
+            Object parent = parentGetter.getParent(objects[0]);
+
+            for (int i = 1; i < objects.length; i++) {
+                if (parentGetter.getParent(objects[i]) != parent
+                        || !cutAction.enableForPath((ConfigurationNode) objects[i])) {
                     canCopy = false;
                     break;
                 }
             }
         }
-        
+
         cutAction.setEnabled(canCopy);
         getAction(CopyAction.getActionName()).setEnabled(canCopy);
     }
-    
+
     /**
      * Updates Remove, Cut and Copy actions' names
      */
@@ -374,11 +378,11 @@ public class ActionManager {
         if (postfix.length() > 0) {
             postfix = " " + postfix;
         }
-        
+
         getAction(RemoveAction.getActionName()).setName("Remove" + postfix);
         getAction(CutAction.getActionName()).setName("Cut" + postfix);
         getAction(CopyAction.getActionName()).setName("Copy" + postfix);
-        
+
         ((PasteAction) getAction(PasteAction.getActionName())).updateState();
     }
 
@@ -396,19 +400,20 @@ public class ActionManager {
             }
         }
     }
-    
+
     /**
-     * Replaces standard Cut, Copy and Paste action maps, so that accelerators like 
-     * Ctrl+X, Ctrl+C, Ctrl+V would work 
+     * Replaces standard Cut, Copy and Paste action maps, so that accelerators like
+     * Ctrl+X, Ctrl+C, Ctrl+V would work
      */
     public void setupCCP(JComponent comp, String cutName, String copyName) {
         ActionMap map = comp.getActionMap();
-        
-        map.put(TransferHandler.getCutAction().getValue(Action.NAME), 
-                getAction(cutName));
-        map.put(TransferHandler.getCopyAction().getValue(Action.NAME),
+
+        map.put(TransferHandler.getCutAction().getValue(Action.NAME), getAction(cutName));
+        map.put(
+                TransferHandler.getCopyAction().getValue(Action.NAME),
                 getAction(copyName));
-        map.put(TransferHandler.getPasteAction().getValue(Action.NAME),
+        map.put(
+                TransferHandler.getPasteAction().getValue(Action.NAME),
                 getAction(PasteAction.getActionName()));
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerFrame.java Wed Mar 17 13:11:38 2010
@@ -473,8 +473,8 @@ public class CayenneModelerFrame extends
         actionManager.procedureSelected();
     }
 
-    public void currentObjectsChanged(MultipleObjectsDisplayEvent e) {
-        actionManager.multipleObjectsSelected(e.getPaths());
+    public void currentObjectsChanged(MultipleObjectsDisplayEvent e, Application application) {
+        actionManager.multipleObjectsSelected(e.getNodes(), application);
     }
 
     public void currentEmbeddableChanged(EmbeddableDisplayEvent e) {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectController.java Wed Mar 17 13:11:38 2010
@@ -46,6 +46,7 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.configuration.event.ProcedureParameterListener;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.configuration.event.QueryListener;
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
@@ -116,7 +117,7 @@ import org.apache.cayenne.modeler.pref.D
 import org.apache.cayenne.modeler.util.CayenneController;
 import org.apache.cayenne.modeler.util.CircularArray;
 import org.apache.cayenne.modeler.util.Comparators;
-import org.apache.cayenne.project.ProjectPath;
+import org.apache.cayenne.project2.ConfigurationNodeParentGetter;
 import org.apache.cayenne.project2.Project;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.util.IDUtil;
@@ -165,7 +166,7 @@ public class ProjectController extends C
         /**
          * Paths of multiple selection
          */
-        private ProjectPath[] paths;
+        private Object[] paths;
 
         /**
          * currently selecte entity listener class
@@ -373,7 +374,7 @@ public class ProjectController extends C
                 }
                 else {
                     projectControllerPreferences = projectControllerPreferences
-                    .node(projectControllerPreferences.absolutePath());
+                            .node(projectControllerPreferences.absolutePath());
                 }
             }
         }
@@ -627,7 +628,7 @@ public class ProjectController extends C
         return currentState.procedureParameters;
     }
 
-    public ProjectPath[] getCurrentPaths() {
+    public Object[] getCurrentPaths() {
         return currentState.paths;
     }
 
@@ -1609,13 +1610,13 @@ public class ProjectController extends C
 
     public void fireMultipleObjectsDisplayEvent(MultipleObjectsDisplayEvent e) {
         clearState();
-        currentState.paths = e.getPaths();
+        currentState.paths = e.getNodes();
 
         EventListener[] list = listenerList
                 .getListeners(MultipleObjectsDisplayListener.class);
         for (EventListener listener : list) {
             MultipleObjectsDisplayListener temp = (MultipleObjectsDisplayListener) listener;
-            temp.currentObjectsChanged(e);
+            temp.currentObjectsChanged(e, getApplication());
         }
     }
 
@@ -1837,14 +1838,15 @@ public class ProjectController extends C
             return getCurrentDataNode();
         }
         else if (getCurrentPaths() != null) { // multiple objects
-            ProjectPath[] paths = getCurrentPaths();
+            Object[] paths = getCurrentPaths();
             List<Object> result = new Vector<Object>();
 
-            Object parent = paths[0].getObjectParent();
+            ConfigurationNodeParentGetter parentGetter = getApplication().getInjector().getInstance(
+                    ConfigurationNodeParentGetter.class);
+            Object parent = parentGetter.getParent((ConfigurationNode) paths[0]);
 
-            for (ProjectPath path : paths) {
-                Object lastObject = path.getObject();
-                result.add(lastObject);
+            for (Object path : paths) {
+                result.add(path);
             }
 
             /**

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectTreeView.java Wed Mar 17 13:11:38 2010
@@ -46,6 +46,7 @@ import org.apache.cayenne.configuration.
 import org.apache.cayenne.configuration.event.ProcedureListener;
 import org.apache.cayenne.configuration.event.QueryEvent;
 import org.apache.cayenne.configuration.event.QueryListener;
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
@@ -90,7 +91,6 @@ import org.apache.cayenne.modeler.event.
 import org.apache.cayenne.modeler.event.QueryDisplayListener;
 import org.apache.cayenne.modeler.util.CellRenderers;
 import org.apache.cayenne.modeler.util.Comparators;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.project2.Project;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.reflect.PropertyUtils;
@@ -139,7 +139,7 @@ public class ProjectTreeView extends JTr
 
                 if (paths != null) {
                     if (paths.length > 1) {
-                        ProjectPath[] projectPaths = new ProjectPath[paths.length];
+                        ConfigurationNode[] projectPaths = new ConfigurationNode[paths.length];
                         for (int i = 0; i < paths.length; i++) {
                             projectPaths[i] = createProjectPath(paths[i]);
                         }
@@ -156,17 +156,14 @@ public class ProjectTreeView extends JTr
             }
 
             /**
-             * Converts TreePath to ProjectPath
+             * Converts TreePath to Object
              */
-            private ProjectPath createProjectPath(TreePath treePath) {
+            private ConfigurationNode createProjectPath(TreePath treePath) {
                 Object[] path = treePath.getPath();
-                Object[] projectPath = new Object[path.length];
+                ConfigurationNode projectPath = (ConfigurationNode) ((DefaultMutableTreeNode) path[path.length - 1])
+                        .getUserObject();
 
-                for (int i = 0; i < projectPath.length; i++) {
-                    projectPath[i] = ((DefaultMutableTreeNode) path[i]).getUserObject();
-                }
-
-                return new ProjectPath(projectPath);
+                return projectPath;
             }
         };
 
@@ -343,7 +340,9 @@ public class ProjectTreeView extends JTr
         });
     }
 
-    public void currentObjectsChanged(MultipleObjectsDisplayEvent e) {
+    public void currentObjectsChanged(
+            MultipleObjectsDisplayEvent e,
+            Application application) {
     }
 
     public void procedureAdded(ProcedureEvent e) {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAction.java Wed Mar 17 13:11:38 2010
@@ -25,6 +25,7 @@ import java.awt.event.KeyEvent;
 
 import javax.swing.KeyStroke;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -40,7 +41,6 @@ import org.apache.cayenne.modeler.Applic
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.CayenneTransferable;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.util.XMLEncoder;
 import org.apache.cayenne.util.XMLSerializable;
@@ -113,18 +113,17 @@ public class CopyAction extends CayenneA
      * Returns <code>true</code> if last object in the path contains a removable object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
         
-        Object last = path.getObject();
-        if (last instanceof DataMap || last instanceof Query
-                || last instanceof DbEntity || last instanceof ObjEntity
-                || last instanceof Embeddable || last instanceof EmbeddableAttribute
-                || last instanceof DbAttribute || last instanceof DbRelationship
-                || last instanceof ObjAttribute || last instanceof ObjRelationship
-                || last instanceof Procedure || last instanceof ProcedureParameter) {
+        if (object instanceof DataMap || object instanceof Query
+                || object instanceof DbEntity || object instanceof ObjEntity
+                || object instanceof Embeddable || object instanceof EmbeddableAttribute
+                || object instanceof DbAttribute || object instanceof DbRelationship
+                || object instanceof ObjAttribute || object instanceof ObjRelationship
+                || object instanceof Procedure || object instanceof ProcedureParameter) {
             return true;
         }
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAttributeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAttributeAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAttributeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyAttributeAction.java Wed Mar 17 13:11:38 2010
@@ -20,11 +20,11 @@ package org.apache.cayenne.modeler.actio
 
 import java.util.Arrays;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.Attribute;
 import org.apache.cayenne.map.EmbeddableAttribute;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for copying attribute(s)
@@ -55,13 +55,13 @@ public class CopyAttributeAction extends
      * attribute.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
-        boolean isEnable = path.getObject() instanceof Attribute;
+        boolean isEnable = object instanceof Attribute;
         if (!isEnable) {
-            isEnable = path.getObject() instanceof EmbeddableAttribute;
+            isEnable = object instanceof EmbeddableAttribute;
         }
 
         return isEnable;

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyProcedureParameterAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyProcedureParameterAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyProcedureParameterAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyProcedureParameterAction.java Wed Mar 17 13:11:38 2010
@@ -20,10 +20,10 @@ package org.apache.cayenne.modeler.actio
 
 import java.util.Arrays;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.ProcedureParameter;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for copying procedure parameter(s)
@@ -53,12 +53,12 @@ public class CopyProcedureParameterActio
      * attribute.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.getObject() instanceof ProcedureParameter;
+        return object instanceof ProcedureParameter;
     }
     
     @Override

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyRelationshipAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyRelationshipAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyRelationshipAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CopyRelationshipAction.java Wed Mar 17 13:11:38 2010
@@ -20,17 +20,18 @@ package org.apache.cayenne.modeler.actio
 
 import java.util.Arrays;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for copying relationship(s)
  */
 public class CopyRelationshipAction extends CopyAction implements MultipleObjectsAction {
+
     private final static String ACTION_NAME = "Copy Relationship";
-    
+
     /**
      * Name of action if multiple attrs are selected
      */
@@ -39,7 +40,7 @@ public class CopyRelationshipAction exte
     public static String getActionName() {
         return ACTION_NAME;
     }
-    
+
     public String getActionName(boolean multiple) {
         return multiple ? ACTION_NAME_MULTIPLE : ACTION_NAME;
     }
@@ -53,25 +54,25 @@ public class CopyRelationshipAction exte
      * attribute.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.getObject() instanceof Relationship;
+        return object instanceof Relationship;
     }
-    
+
     @Override
     public Object copy(ProjectController mediator) {
         Object[] rels = getProjectController().getCurrentObjRelationships();
         if (rels == null || rels.length == 0) {
             rels = getProjectController().getCurrentDbRelationships();
         }
-        
+
         if (rels != null && rels.length > 0) {
             return Arrays.asList(rels);
         }
-        
+
         return null;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateAttributeAction.java Wed Mar 17 13:11:38 2010
@@ -21,7 +21,9 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.map.Attribute;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -30,6 +32,7 @@ import org.apache.cayenne.map.Embeddable
 import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.map.event.AttributeEvent;
 import org.apache.cayenne.map.event.EmbeddableAttributeEvent;
 import org.apache.cayenne.map.event.MapEvent;
@@ -230,11 +233,15 @@ public class CreateAttributeAction exten
      * Returns <code>true</code> if path contains an Entity object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(Entity.class) != null;
+        if(object instanceof Attribute){
+            return ((Attribute)object).getParent() != null && ((Attribute)object).getParent() instanceof Entity;
+        }
+        
+        return false;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDataMapAction.java Wed Mar 17 13:11:38 2010
@@ -21,13 +21,14 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.undo.CreateDataMapUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.resource.Resource;
 import org.apache.cayenne.util.NamedObjectFactory;
 
@@ -87,11 +88,11 @@ public class CreateDataMapAction extends
     /**
      * Returns <code>true</code> if path contains a DataDomain object.
      */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
+        return ((DataNodeDescriptor) object).getDataChannelDescriptor() != null;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateDbEntityAction.java Wed Mar 17 13:11:38 2010
@@ -21,9 +21,11 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.event.EntityEvent;
 import org.apache.cayenne.map.event.MapEvent;
 import org.apache.cayenne.modeler.Application;
@@ -31,15 +33,12 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.event.EntityDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateDbEntityUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.NamedObjectFactory;
 
 /**
  */
 public class CreateDbEntityAction extends CayenneAction {
 
-    
-
     public static String getActionName() {
         return "Create DbEntity";
     }
@@ -77,8 +76,12 @@ public class CreateDbEntityAction extend
      */
     static void fireDbEntityEvent(Object src, ProjectController mediator, DbEntity entity) {
         mediator.fireDbEntityEvent(new EntityEvent(src, entity, MapEvent.ADD));
-        EntityDisplayEvent displayEvent = new EntityDisplayEvent(src, entity, mediator
-                .getCurrentDataMap(), mediator.getCurrentDataNode(),  (DataChannelDescriptor)mediator.getProject().getRootNode());
+        EntityDisplayEvent displayEvent = new EntityDisplayEvent(
+                src,
+                entity,
+                mediator.getCurrentDataMap(),
+                mediator.getCurrentDataNode(),
+                (DataChannelDescriptor) mediator.getProject().getRootNode());
         displayEvent.setMainTabFocus(true);
         mediator.fireDbEntityDisplayEvent(displayEvent);
     }
@@ -96,11 +99,11 @@ public class CreateDbEntityAction extend
     /**
      * Returns <code>true</code> if path contains a DataMap object.
      */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(DataMap.class) != null;
+        return ((Entity) object).getDataMap() != null;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateEmbeddableAction.java Wed Mar 17 13:11:38 2010
@@ -20,9 +20,11 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.Embeddable;
+import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.event.EmbeddableEvent;
 import org.apache.cayenne.map.event.MapEvent;
 import org.apache.cayenne.modeler.Application;
@@ -30,7 +32,6 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.event.EmbeddableDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateEmbeddableUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.NamedObjectFactory;
 
 public class CreateEmbeddableAction extends CayenneAction {
@@ -92,11 +93,15 @@ public class CreateEmbeddableAction exte
      * Returns <code>true</code> if path contains a DataMap object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(DataMap.class) != null;
+        if(object instanceof ObjEntity){
+            return ((ObjEntity)object).getParent() != null && ((ObjEntity)object).getParent() instanceof DataMap;
+        }
+        
+        return false;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateNodeAction.java Wed Mar 17 13:11:38 2010
@@ -22,6 +22,7 @@ package org.apache.cayenne.modeler.actio
 import java.awt.event.ActionEvent;
 
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.configuration.XMLPoolingDataSourceFactory;
@@ -33,15 +34,12 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.event.DataNodeDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateNodeUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.NamedObjectFactory;
 
 /**
  */
 public class CreateNodeAction extends CayenneAction {
 
-    
-
     public static String getActionName() {
         return "Create DataNode";
     }
@@ -66,11 +64,13 @@ public class CreateNodeAction extends Ca
         DataNodeDescriptor node = buildDataNode();
         createDataNode(node);
         application.getUndoManager().addEdit(
-                new CreateNodeUndoableEdit(application,node));
+                new CreateNodeUndoableEdit(application, node));
     }
 
     public void createDataNode(DataNodeDescriptor node) {
-        DataChannelDescriptor domain = (DataChannelDescriptor)getProjectController().getProject().getRootNode();
+        DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController()
+                .getProject()
+                .getRootNode();
         domain.getNodeDescriptors().add(node);
         getProjectController().fireDataNodeEvent(
                 new DataNodeEvent(this, node, MapEvent.ADD));
@@ -81,12 +81,12 @@ public class CreateNodeAction extends Ca
     /**
      * Returns <code>true</code> if path contains a DataDomain object.
      */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
+        return ((DataNodeDescriptor) object).getDataChannelDescriptor() != null;
     }
 
     /**
@@ -94,15 +94,17 @@ public class CreateNodeAction extends Ca
      */
     public DataNodeDescriptor buildDataNode() {
         ProjectController mediator = getProjectController();
-        DataChannelDescriptor domain =  (DataChannelDescriptor)mediator.getProject().getRootNode();
+        DataChannelDescriptor domain = (DataChannelDescriptor) mediator
+                .getProject()
+                .getRootNode();
 
         // use domain name as DataNode base, as node names must be unique across the
         // project...
-        DataNodeDescriptor node =  buildDataNode(domain);
+        DataNodeDescriptor node = buildDataNode(domain);
 
         DataSourceInfo src = new DataSourceInfo();
         node.setDataSourceDescriptor(src);
-        
+
         // by default create JDBC Node
         node.setDataSourceFactoryType(XMLPoolingDataSourceFactory.class.getName());
         node.setSchemaUpdateStrategyType(SkipSchemaUpdateStrategy.class.getName());
@@ -114,13 +116,14 @@ public class CreateNodeAction extends Ca
      * A factory method that makes a new DataNode.
      */
     DataNodeDescriptor buildDataNode(DataChannelDescriptor domain) {
-        String name = NamedObjectFactory.createName(DataNodeDescriptor.class, domain, domain
-                .getName()
-                + "Node");
+        String name = NamedObjectFactory.createName(
+                DataNodeDescriptor.class,
+                domain,
+                domain.getName() + "Node");
 
         DataNodeDescriptor node = new DataNodeDescriptor(name);
         node.setDataChannelDescriptor(domain);
-       
+
         return node;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateObjEntityAction.java Wed Mar 17 13:11:38 2010
@@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
@@ -32,7 +33,6 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.event.EntityDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateObjEntityUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.EntityMergeSupport;
 import org.apache.cayenne.util.NameConverter;
@@ -42,8 +42,6 @@ import org.apache.cayenne.util.NamedObje
  */
 public class CreateObjEntityAction extends CayenneAction {
 
-    
-
     public static String getActionName() {
         return "Create ObjEntity";
     }
@@ -144,7 +142,7 @@ public class CreateObjEntityAction exten
                 entity,
                 dataMap,
                 mediator.getCurrentDataNode(),
-                (DataChannelDescriptor)mediator.getProject().getRootNode());
+                (DataChannelDescriptor) mediator.getProject().getRootNode());
         displayEvent.setMainTabFocus(true);
         mediator.fireObjEntityDisplayEvent(displayEvent);
     }
@@ -153,11 +151,16 @@ public class CreateObjEntityAction exten
      * Returns <code>true</code> if path contains a DataMap object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(DataMap.class) != null;
+        if (object instanceof ObjEntity) {
+            return ((ObjEntity) object).getParent() != null
+                    && ((ObjEntity) object).getParent() instanceof DataMap;
+        }
+
+        return false;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureAction.java Wed Mar 17 13:11:38 2010
@@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.event.ProcedureEvent;
 import org.apache.cayenne.map.DataMap;
@@ -31,7 +32,6 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.event.ProcedureDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateProcedureUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.NamedObjectFactory;
 
 /**
@@ -40,8 +40,6 @@ import org.apache.cayenne.util.NamedObje
  */
 public class CreateProcedureAction extends CayenneAction {
 
-    
-
     public static String getActionName() {
         return "Create Stored Procedure";
     }
@@ -77,7 +75,7 @@ public class CreateProcedureAction exten
                 src,
                 procedure,
                 mediator.getCurrentDataMap(),
-                (DataChannelDescriptor)mediator.getProject().getRootNode()));
+                (DataChannelDescriptor) mediator.getProject().getRootNode()));
     }
 
     public void createProcedure(DataMap map, Procedure procedure) {
@@ -90,12 +88,12 @@ public class CreateProcedureAction exten
     /**
      * Returns <code>true</code> if path contains a DataMap object.
      */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(DataMap.class) != null;
+        return ((Procedure) object).getDataMap() != null;
     }
 
     public String getIconName() {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateProcedureParameterAction.java Wed Mar 17 13:11:38 2010
@@ -21,6 +21,7 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.event.ProcedureParameterEvent;
 import org.apache.cayenne.map.Procedure;
@@ -30,21 +31,19 @@ import org.apache.cayenne.modeler.Applic
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.event.ProcedureParameterDisplayEvent;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.NamedObjectFactory;
 
 /**
  */
 public class CreateProcedureParameterAction extends CayenneAction {
 
-    
-
     public static String getActionName() {
-    	return "Create Parameter";
+        return "Create Parameter";
     }
 
     /**
      * Constructor for CreateProcedureParameterAction.
+     * 
      * @param name
      */
     public CreateProcedureParameterAction(Application application) {
@@ -67,42 +66,44 @@ public class CreateProcedureParameterAct
     public void createProcedureParameter() {
         Procedure procedure = getProjectController().getCurrentProcedure();
 
-        ProcedureParameter parameter =
-            (ProcedureParameter) NamedObjectFactory.createObject(
-                ProcedureParameter.class,
-                procedure);
-                
+        ProcedureParameter parameter = (ProcedureParameter) NamedObjectFactory
+                .createObject(ProcedureParameter.class, procedure);
+
         procedure.addCallParameter(parameter);
 
         ProjectController mediator = getProjectController();
         fireProcedureParameterEvent(this, mediator, procedure, parameter);
     }
-    
+
     /**
      * Fires events when an proc parameter was added
      */
-    static void fireProcedureParameterEvent(Object src, ProjectController mediator, Procedure procedure, 
+    static void fireProcedureParameterEvent(
+            Object src,
+            ProjectController mediator,
+            Procedure procedure,
             ProcedureParameter parameter) {
-        mediator.fireProcedureParameterEvent(
-                new ProcedureParameterEvent(src, parameter, MapEvent.ADD));
-
-            mediator.fireProcedureParameterDisplayEvent(
-                new ProcedureParameterDisplayEvent(
-                    src,
-                    parameter,
-                    procedure,
-                    mediator.getCurrentDataMap(),
-                    (DataChannelDescriptor)mediator.getProject().getRootNode()));
+        mediator.fireProcedureParameterEvent(new ProcedureParameterEvent(
+                src,
+                parameter,
+                MapEvent.ADD));
+
+        mediator.fireProcedureParameterDisplayEvent(new ProcedureParameterDisplayEvent(
+                src,
+                parameter,
+                procedure,
+                mediator.getCurrentDataMap(),
+                (DataChannelDescriptor) mediator.getProject().getRootNode()));
     }
 
     /**
      * Returns <code>true</code> if path contains a Procedure object.
      */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(Procedure.class) != null;
+        return ((ProcedureParameter) object).getProcedure() != null;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CreateRelationshipAction.java Wed Mar 17 13:11:38 2010
@@ -21,12 +21,14 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.Entity;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.map.event.MapEvent;
 import org.apache.cayenne.map.event.RelationshipEvent;
 import org.apache.cayenne.modeler.Application;
@@ -34,7 +36,6 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.event.RelationshipDisplayEvent;
 import org.apache.cayenne.modeler.undo.CreateRelationshipUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.NamedObjectFactory;
 
@@ -42,8 +43,6 @@ import org.apache.cayenne.util.NamedObje
  */
 public class CreateRelationshipAction extends CayenneAction {
 
-    
-
     public static String getActionName() {
         return "Create Relationship";
     }
@@ -127,7 +126,7 @@ public class CreateRelationshipAction ex
                 rel,
                 objEntity,
                 mediator.getCurrentDataMap(),
-                (DataChannelDescriptor)mediator.getProject().getRootNode());
+                (DataChannelDescriptor) mediator.getProject().getRootNode());
 
         mediator.fireObjRelationshipDisplayEvent(rde);
     }
@@ -161,7 +160,7 @@ public class CreateRelationshipAction ex
                 rel,
                 dbEntity,
                 mediator.getCurrentDataMap(),
-                (DataChannelDescriptor)mediator.getProject().getRootNode());
+                (DataChannelDescriptor) mediator.getProject().getRootNode());
 
         mediator.fireDbRelationshipDisplayEvent(rde);
     }
@@ -170,11 +169,16 @@ public class CreateRelationshipAction ex
      * Returns <code>true</code> if path contains an Entity object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.firstInstanceOf(Entity.class) != null;
+        if (object instanceof Relationship) {
+            return ((Relationship) object).getParent() != null
+                    && ((Relationship) object).getParent() instanceof Entity;
+        }
+
+        return false;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAction.java Wed Mar 17 13:11:38 2010
@@ -24,14 +24,15 @@ import java.awt.event.KeyEvent;
 
 import javax.swing.KeyStroke;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for cutting entities, queries etc.
  */
 public class CutAction extends CayenneAction {
+
     public static String getActionName() {
         return "Cut";
     }
@@ -42,7 +43,7 @@ public class CutAction extends CayenneAc
     public CutAction(Application application) {
         this(getActionName(), application);
     }
-    
+
     /**
      * Constructor for descendants
      */
@@ -54,10 +55,12 @@ public class CutAction extends CayenneAc
     public String getIconName() {
         return "icon-cut.gif";
     }
-    
+
     @Override
     public KeyStroke getAcceleratorKey() {
-        return KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
+        return KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit
+                .getDefaultToolkit()
+                .getMenuShortcutKeyMask());
     }
 
     /**
@@ -66,14 +69,15 @@ public class CutAction extends CayenneAc
     @Override
     public void performAction(ActionEvent e) {
         application.getAction(CopyAction.getActionName()).performAction(e);
-        ((RemoveAction) application.getAction(RemoveAction.getActionName())).performAction(e, false);
+        ((RemoveAction) application.getAction(RemoveAction.getActionName()))
+                .performAction(e, false);
     }
-    
+
     /**
      * Returns <code>true</code> if last object in the path contains a removable object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        return application.getAction(CopyAction.getActionName()).enableForPath(path);
+    public boolean enableForPath(ConfigurationNode object) {
+        return application.getAction(CopyAction.getActionName()).enableForPath(object);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAttributeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAttributeAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAttributeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutAttributeAction.java Wed Mar 17 13:11:38 2010
@@ -20,10 +20,10 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.Attribute;
 import org.apache.cayenne.map.EmbeddableAttribute;
 import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for cutting attribute(s)
@@ -54,13 +54,13 @@ public class CutAttributeAction extends 
      * attribute.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
-        boolean isEnable = path.getObject() instanceof Attribute;
+        boolean isEnable = object instanceof Attribute;
         if (!isEnable) {
-            isEnable = path.getObject() instanceof EmbeddableAttribute;
+            isEnable = object instanceof EmbeddableAttribute;
         }
 
         return isEnable;

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutProcedureParameterAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutProcedureParameterAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutProcedureParameterAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutProcedureParameterAction.java Wed Mar 17 13:11:38 2010
@@ -20,16 +20,18 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.ProcedureParameter;
 import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for cutting procedure parameter(s)
  */
-public class CutProcedureParameterAction extends CutAction implements MultipleObjectsAction {
+public class CutProcedureParameterAction extends CutAction implements
+        MultipleObjectsAction {
+
     private final static String ACTION_NAME = "Cut Procedure Parameter";
-    
+
     /**
      * Name of action if multiple attrs are selected
      */
@@ -38,7 +40,7 @@ public class CutProcedureParameterAction
     public static String getActionName() {
         return ACTION_NAME;
     }
-    
+
     public String getActionName(boolean multiple) {
         return multiple ? ACTION_NAME_MULTIPLE : ACTION_NAME;
     }
@@ -52,21 +54,23 @@ public class CutProcedureParameterAction
      * attribute.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.getObject() instanceof ProcedureParameter;
+        return object instanceof ProcedureParameter;
     }
-    
+
     /**
      * Performs cutting of items
      */
     @Override
     public void performAction(ActionEvent e) {
-        application.getAction(CopyProcedureParameterAction.getActionName()).performAction(e);
-        ((RemoveAction) application.getAction(RemoveProcedureParameterAction.getActionName()))
-            .performAction(e, false);
+        application
+                .getAction(CopyProcedureParameterAction.getActionName())
+                .performAction(e);
+        ((RemoveAction) application.getAction(RemoveProcedureParameterAction
+                .getActionName())).performAction(e, false);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutRelationshipAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutRelationshipAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutRelationshipAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/CutRelationshipAction.java Wed Mar 17 13:11:38 2010
@@ -20,16 +20,17 @@ package org.apache.cayenne.modeler.actio
 
 import java.awt.event.ActionEvent;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.map.Relationship;
 import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action for cutting attribute(s)
  */
 public class CutRelationshipAction extends CutAction implements MultipleObjectsAction {
+
     private final static String ACTION_NAME = "Cut Relationship";
-    
+
     /**
      * Name of action if multiple attrs are selected
      */
@@ -38,7 +39,7 @@ public class CutRelationshipAction exten
     public static String getActionName() {
         return ACTION_NAME;
     }
-    
+
     public String getActionName(boolean multiple) {
         return multiple ? ACTION_NAME_MULTIPLE : ACTION_NAME;
     }
@@ -52,20 +53,21 @@ public class CutRelationshipAction exten
      * attribute.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
-        return path.getObject() instanceof Relationship;
+        return object instanceof Relationship;
     }
-    
+
     /**
      * Performs cutting of items
      */
     @Override
     public void performAction(ActionEvent e) {
         application.getAction(CopyRelationshipAction.getActionName()).performAction(e);
-        ((RemoveAction) application.getAction(RemoveRelationshipAction.getActionName())).performAction(e, false);
+        ((RemoveAction) application.getAction(RemoveRelationshipAction.getActionName()))
+                .performAction(e, false);
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java Wed Mar 17 13:11:38 2010
@@ -32,7 +32,6 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.dialog.objentity.EntitySyncController;
 import org.apache.cayenne.modeler.undo.DbEntitySyncUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.EntityMergeSupport;
 
 /**
@@ -111,15 +110,4 @@ public class DbEntitySyncAction extends 
             application.getUndoManager().addEdit(undoableEdit);
         }
     }
-
-    /**
-     * Returns <code>true</code> if path contains a ObjEntity object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DbEntity.class) != null;
-    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ExitAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ExitAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ExitAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ExitAction.java Wed Mar 17 13:11:38 2010
@@ -19,10 +19,10 @@
 
 package org.apache.cayenne.modeler.action;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.LogConsole;
 import org.apache.cayenne.pref.RenamedPreferences;
-import org.apache.cayenne.project.ProjectPath;
 
 import java.awt.event.ActionEvent;
 
@@ -62,7 +62,7 @@ public class ExitAction extends ProjectA
     /**
     * Always returns true.
     */
-    public boolean enableForPath(ProjectPath path) {
+    public boolean enableForPath(ConfigurationNode object) {
         return true;
     }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateCodeAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateCodeAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateCodeAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateCodeAction.java Wed Mar 17 13:11:38 2010
@@ -25,7 +25,6 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.codegen.CodeGeneratorController;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 
 public class GenerateCodeAction extends CayenneAction {
 
@@ -48,15 +47,4 @@ public class GenerateCodeAction extends 
                     .startup();
         }
     }
-
-    /**
-     * Returns <code>true</code> if path contains a DataMap object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DataMap.class) != null;
-    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java Wed Mar 17 13:11:38 2010
@@ -26,7 +26,6 @@ import org.apache.cayenne.modeler.Applic
 import org.apache.cayenne.modeler.dialog.db.DBGeneratorOptions;
 import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action that generates database tables from a DataMap.
@@ -71,15 +70,4 @@ public class GenerateDBAction extends DB
                 connectWizard.getConnectionInfo(),
                 map).startupAction();
     }
-
-    /**
-     * Returns <code>true</code> if path contains a DataMap object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DataMap.class) != null;
-    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportDBAction.java Wed Mar 17 13:11:38 2010
@@ -24,13 +24,11 @@ import java.sql.Connection;
 
 import javax.swing.SwingUtilities;
 
-import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.db.ConnectionWizard;
 import org.apache.cayenne.modeler.dialog.db.DbLoaderHelper;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action that imports database structure into a DataMap.
@@ -95,15 +93,4 @@ public class ImportDBAction extends DBWi
         
         th.start();
     }
-
-    /**
-     * Returns <code>true</code> if path contains a DataDomain object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
-    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ImportEOModelAction.java Wed Mar 17 13:11:38 2010
@@ -53,7 +53,6 @@ import org.apache.cayenne.modeler.pref.F
 import org.apache.cayenne.modeler.util.AdapterMapping;
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.FileFilters;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.util.NamedObjectFactory;
 import org.apache.cayenne.wocompat.EOModelProcessor;
@@ -199,17 +198,6 @@ public class ImportEOModelAction extends
     }
 
     /**
-     * Returns <code>true</code> if path contains a DataDomain object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DataChannelDescriptor.class) != null;
-    }
-
-    /**
      * Adds DataMap into the project.
      */
     protected void addDataMap(DataMap map, DataMap currentMap) {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/InferRelationshipsAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/InferRelationshipsAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/InferRelationshipsAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/InferRelationshipsAction.java Wed Mar 17 13:11:38 2010
@@ -24,7 +24,6 @@ import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.modeler.dialog.autorelationship.InferRelationshipsController;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 
 
 public class InferRelationshipsAction extends CayenneAction {
@@ -48,13 +47,4 @@ public class InferRelationshipsAction ex
                     .startup();
         }
     }
-    
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DataMap.class) != null;
-    }
-
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/MigrateAction.java Wed Mar 17 13:11:38 2010
@@ -26,7 +26,6 @@ import org.apache.cayenne.modeler.Applic
 import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
 import org.apache.cayenne.modeler.dialog.db.MergerOptions;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  * Action that alter database schema to match a DataMap.
@@ -71,15 +70,4 @@ public class MigrateAction extends DBWiz
                 connectWizard.getConnectionInfo(),
                 map).startupAction();
     }
-
-    /**
-     * Returns <code>true</code> if path contains a DataMap object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(DataMap.class) != null;
-    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ObjEntitySyncAction.java Wed Mar 17 13:11:38 2010
@@ -34,7 +34,6 @@ import org.apache.cayenne.modeler.Projec
 import org.apache.cayenne.modeler.dialog.objentity.EntitySyncController;
 import org.apache.cayenne.modeler.event.EntityDisplayEvent;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.util.EntityMergeSupport;
 
 /**
@@ -93,15 +92,4 @@ public class ObjEntitySyncAction extends
             }
         }
     }
-
-    /**
-     * Returns <code>true</code> if path contains a ObjEntity object.
-     */
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
-            return false;
-        }
-
-        return path.firstInstanceOf(ObjEntity.class) != null;
-    }
 }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java Wed Mar 17 13:11:38 2010
@@ -31,6 +31,7 @@ import java.util.Map;
 import javax.swing.JOptionPane;
 import javax.swing.KeyStroke;
 
+import org.apache.cayenne.configuration.ConfigurationNode;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.map.DataMap;
@@ -52,7 +53,6 @@ import org.apache.cayenne.modeler.undo.P
 import org.apache.cayenne.modeler.undo.PasteUndoableEdit;
 import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.CayenneTransferable;
-import org.apache.cayenne.project.ProjectPath;
 import org.apache.cayenne.query.AbstractQuery;
 import org.apache.cayenne.query.Query;
 
@@ -102,23 +102,33 @@ public class PasteAction extends Cayenne
             Object currentObject = getProjectController().getCurrentObject();
 
             if (content != null && currentObject != null) {
-                
+
                 PasteCompoundUndoableEdit undoableEdit = new PasteCompoundUndoableEdit();
-                
-                DataChannelDescriptor domain = (DataChannelDescriptor)getProjectController().getProject().getRootNode();
+
+                DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController()
+                        .getProject()
+                        .getRootNode();
                 DataMap map = getProjectController().getCurrentDataMap();
-                
+
                 if (content instanceof List) {
                     for (Object o : (List) content) {
                         paste(currentObject, o);
-                        undoableEdit.addEdit(new PasteUndoableEdit(domain, map, currentObject, o));
+                        undoableEdit.addEdit(new PasteUndoableEdit(
+                                domain,
+                                map,
+                                currentObject,
+                                o));
                     }
                 }
                 else {
                     paste(currentObject, content);
-                    undoableEdit.addEdit(new PasteUndoableEdit(domain, map, currentObject, content));
+                    undoableEdit.addEdit(new PasteUndoableEdit(
+                            domain,
+                            map,
+                            currentObject,
+                            content));
                 }
-                
+
                 application.getUndoManager().addEdit(undoableEdit);
             }
         }
@@ -129,17 +139,22 @@ public class PasteAction extends Cayenne
             ErrorDebugDialog.guiException(ex);
         }
     }
-    
+
     private void paste(Object where, Object content) {
-    	paste(where, content, (DataChannelDescriptor)getProjectController().getProject().getRootNode(), getProjectController().getCurrentDataMap()); 
+        paste(where, content, (DataChannelDescriptor) getProjectController()
+                .getProject()
+                .getRootNode(), getProjectController().getCurrentDataMap());
     }
 
     /**
      * Pastes single object
      */
-    public void paste(Object where, Object content, DataChannelDescriptor domain, DataMap map) {
+    public void paste(
+            Object where,
+            Object content,
+            DataChannelDescriptor domain,
+            DataMap map) {
         final ProjectController mediator = getProjectController();
-      
 
         /**
          * Add a little intelligence - if a tree leaf is selected, we can paste to a
@@ -346,8 +361,8 @@ public class PasteAction extends Cayenne
                 attr.setName(getFreeName(checker, attr.getName()));
 
                 dbEntity.addAttribute(attr);
-                CreateAttributeAction
-                        .fireDbAttributeEvent(this, mediator, mediator.getCurrentDataMap(), dbEntity, attr);
+                CreateAttributeAction.fireDbAttributeEvent(this, mediator, mediator
+                        .getCurrentDataMap(), dbEntity, attr);
             }
             else if (content instanceof DbRelationship) {
                 DbRelationship rel = (DbRelationship) content;
@@ -378,12 +393,8 @@ public class PasteAction extends Cayenne
                 attr.setName(getFreeName(checker, attr.getName()));
 
                 objEntity.addAttribute(attr);
-                CreateAttributeAction.fireObjAttributeEvent(
-                        this,
-                        mediator,
-                        mediator.getCurrentDataMap(),
-                        objEntity,
-                        attr);
+                CreateAttributeAction.fireObjAttributeEvent(this, mediator, mediator
+                        .getCurrentDataMap(), objEntity, attr);
             }
             else if (content instanceof ObjRelationship) {
                 ObjRelationship rel = (ObjRelationship) content;
@@ -473,8 +484,8 @@ public class PasteAction extends Cayenne
      * Returns <code>true</code> if last object in the path contains a removable object.
      */
     @Override
-    public boolean enableForPath(ProjectPath path) {
-        if (path == null) {
+    public boolean enableForPath(ConfigurationNode object) {
+        if (object == null) {
             return false;
         }
 
@@ -524,8 +535,8 @@ public class PasteAction extends Cayenne
                             || content instanceof ObjRelationship || isTreeLeaf(content)))
                     ||
 
-                    (currentObject instanceof Embeddable 
-                            && (content instanceof EmbeddableAttribute || isTreeLeaf(content))) ||
+                    (currentObject instanceof Embeddable && (content instanceof EmbeddableAttribute || isTreeLeaf(content)))
+                    ||
 
                     (currentObject instanceof Procedure
                             && (content instanceof ProcedureParameter || isTreeLeaf(content)) ||

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java?rev=924267&r1=924266&r2=924267&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ProjectAction.java Wed Mar 17 13:11:38 2010
@@ -26,7 +26,6 @@ import org.apache.cayenne.modeler.Cayenn
 import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.dialog.UnsavedChangesDialog;
 import org.apache.cayenne.modeler.util.CayenneAction;
-import org.apache.cayenne.project.ProjectPath;
 
 /**
  */
@@ -115,7 +114,7 @@ public class ProjectAction extends Cayen
     /**
      * Always returns true.
      */
-    public boolean enableForPath(ProjectPath path) {
+    public boolean enableForPath(Object object) {
         return true;
     }
 }