You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/06/27 14:53:06 UTC

svn commit: r551148 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler: CayenneModelerController.java action/OpenProjectAction.java

Author: aadamchik
Date: Wed Jun 27 05:53:05 2007
New Revision: 551148

URL: http://svn.apache.org/viewvc?view=rev&rev=551148
Log:
CAY-812 Add ability to drag cayenne.xml to the Modeler from the filesystem

Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java?view=diff&rev=551148&r1=551147&r2=551148
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java Wed Jun 27 05:53:05 2007
@@ -20,14 +20,22 @@
 package org.apache.cayenne.modeler;
 
 import java.awt.Component;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetAdapter;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.event.ActionEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.io.File;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Vector;
 
 import javax.swing.WindowConstants;
 
+import org.apache.cayenne.conf.Configuration;
 import org.apache.cayenne.modeler.action.ExitAction;
 import org.apache.cayenne.modeler.action.OpenProjectAction;
 import org.apache.cayenne.modeler.dialog.validator.ValidatorDialog;
@@ -92,10 +100,48 @@
             }
         });
 
+        new DropTarget(frame, new DropTargetAdapter() {
+
+            public void drop(DropTargetDropEvent dtde) {
+                dtde.acceptDrop(dtde.getDropAction());
+                Transferable transferable = dtde.getTransferable();
+                dtde.dropComplete(processDropAction(transferable));
+            }
+        });
+
         Domain prefDomain = application.getPreferenceDomain().getSubdomain(
                 frame.getClass());
         ComponentGeometry geometry = ComponentGeometry.getPreference(prefDomain);
         geometry.bind(frame, 650, 550, 30);
+    }
+
+    private boolean processDropAction(Transferable transferable) {
+        List fileList;
+        try {
+            fileList = (List) transferable.getTransferData(DataFlavor.javaFileListFlavor);
+        }
+        catch (Exception e) {
+            return false;
+        }
+
+        File transferFile = (File) fileList.get(0);
+
+        if (transferFile.isFile()) {
+
+            if (Configuration.DEFAULT_DOMAIN_FILE.equals(transferFile.getName())) {
+                ActionEvent e = new ActionEvent(
+                        transferFile,
+                        ActionEvent.ACTION_PERFORMED,
+                        "OpenProject");
+                Application
+                        .getInstance()
+                        .getAction(OpenProjectAction.getActionName())
+                        .actionPerformed(e);
+                return true;
+            }
+        }
+
+        return false;
     }
 
     public void startupAction() {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java?view=diff&rev=551148&r1=551147&r2=551148
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java Wed Jun 27 05:53:05 2007
@@ -80,6 +80,9 @@
             FileMenuItem menu = (FileMenuItem) e.getSource();
             f = menu.getFile();
         }
+        else if(e.getSource() instanceof File) {
+            f = (File) e.getSource();
+        }
 
         if (f == null) {
             try {