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 2010/01/17 11:53:57 UTC

svn commit: r900093 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor: AbstractCallbackMethodsTab.java StringTransferHandler.java

Author: aadamchik
Date: Sun Jan 17 10:53:57 2010
New Revision: 900093

URL: http://svn.apache.org/viewvc?rev=900093&view=rev
Log:
replacing a file that seems to be originally lifted from Sun swing tutorial

Removed:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/StringTransferHandler.java
Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java?rev=900093&r1=900092&r2=900093&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/AbstractCallbackMethodsTab.java Sun Jan 17 10:53:57 2010
@@ -21,6 +21,9 @@
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.util.ArrayList;
@@ -33,6 +36,7 @@
 import javax.swing.JPopupMenu;
 import javax.swing.JTable;
 import javax.swing.JToolBar;
+import javax.swing.TransferHandler;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.DefaultTableCellRenderer;
@@ -54,6 +58,8 @@
 import org.apache.cayenne.modeler.util.CayenneTable;
 import org.apache.cayenne.modeler.util.CayenneWidgetFactory;
 import org.apache.cayenne.modeler.util.PanelFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import com.jgoodies.forms.builder.DefaultFormBuilder;
 import com.jgoodies.forms.layout.FormLayout;
@@ -65,6 +71,8 @@
  */
 public abstract class AbstractCallbackMethodsTab extends JPanel {
 
+    private static Log logger = LogFactory.getLog(AbstractCallbackMethodsTab.class);
+
     /**
      * mediator instance
      */
@@ -79,12 +87,12 @@
      * table for displaying callback method names
      */
     protected CayenneTable table;
-    
+
     /**
      * preferences for the callback methods table
      */
     protected TableColumnPreferences tablePreferences;
-    
+
     /**
      * Dropdown for callback type selection. Contains fixed list of 7 callback types.
      */
@@ -167,51 +175,75 @@
 
         table = new CayenneTable();
         table.setDefaultRenderer(String.class, new StringRenderer());
-        
+
         // drag-and-drop initialization
         table.setDragEnabled(true);
-        
-        table.setTransferHandler(new StringTransferHandler() {
+
+        table.setTransferHandler(new TransferHandler() {
 
             @Override
-            protected String exportString(JComponent c) {
-                JTable table = (JTable) c;
+            protected Transferable createTransferable(JComponent c) {
                 int rowIndex = table.getSelectedRow();
 
                 String result = null;
                 if (rowIndex >= 0 && rowIndex < table.getModel().getRowCount()) {
-                    result = String.valueOf(table.getModel().getValueAt(rowIndex, CallbackDescriptorTableModel.METHOD_NAME));
+                    result = String.valueOf(table.getModel().getValueAt(
+                            rowIndex,
+                            CallbackDescriptorTableModel.METHOD_NAME));
                 }
-                
-                return result;
+
+                return new StringSelection(result);
             }
 
             @Override
-            protected void importString(JComponent c, String callbackMethod) {
-                JTable table = (JTable) c;
-                int rowIndex = table.getSelectedRow();
+            public int getSourceActions(JComponent c) {
+                return COPY_OR_MOVE;
+            }
+
+            @Override
+            public boolean importData(JComponent comp, Transferable t) {
+                if (canImport(comp, t.getTransferDataFlavors())) {
+                    String callbackMethod;
+                    try {
+                        callbackMethod = (String) t
+                                .getTransferData(DataFlavor.stringFlavor);
+                    }
+                    catch (Exception e) {
+                        logger.warn("Error transferring", e);
+                        return false;
+                    }
+
+                    int rowIndex = table.getSelectedRow();
 
-                // move callback method inside of model
-                CallbackDescriptor callbackDescriptor = getCallbackMap()
-                        .getCallbackDescriptor(
-                                ((CallbackType) callbackTypeCombo.getSelectedItem())
-                                        .getType());
-                mediator
-                        .setDirty(callbackDescriptor.moveMethod(callbackMethod, rowIndex));
-                rebuildTable();
+                    // move callback method inside of model
+                    CallbackDescriptor callbackDescriptor = getCallbackMap()
+                            .getCallbackDescriptor(
+                                    ((CallbackType) callbackTypeCombo.getSelectedItem())
+                                            .getType());
+                    mediator.setDirty(callbackDescriptor.moveMethod(
+                            callbackMethod,
+                            rowIndex));
+                    rebuildTable();
+                    return true;
+                }
+
+                return false;
             }
 
             @Override
-            protected void cleanup(JComponent c, boolean remove) {
+            public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
+                for (DataFlavor flavor : transferFlavors) {
+                    if (DataFlavor.stringFlavor.equals(flavor)) {
+                        return true;
+                    }
+                }
+                return false;
             }
         });
-        
 
         initTablePreferences();
-        
-        /**
-         * Create and install a popup
-         */
+
+        // Create and install a popup
         JPopupMenu popup = new JPopupMenu();
         popup.add(getRemoveCallbackMethodAction().buildMenu());
 
@@ -243,8 +275,10 @@
                 if (isVisible()) {
                     updateCallbackTypeCounters();
                     rebuildTable();
-                    
-                    if (table.editCellAt(table.getRowCount() - 1, CallbackDescriptorTableModel.METHOD_NAME)
+
+                    if (table.editCellAt(
+                            table.getRowCount() - 1,
+                            CallbackDescriptorTableModel.METHOD_NAME)
                             && table.getEditorComponent() != null) {
                         table.getEditorComponent().requestFocus();
                     }
@@ -276,20 +310,25 @@
             public void valueChanged(ListSelectionEvent e) {
                 if (!e.getValueIsAdjusting()) {
                     String[] methods = new String[0];
-                    
+
                     if (table.getSelectedRow() != -1) {
                         int[] sel = table.getSelectedRows();
                         methods = new String[sel.length];
-                        
+
                         for (int i = 0; i < sel.length; i++) {
-                            methods[i] = (String) table.getValueAt(sel[i], table.convertColumnIndexToView(CallbackDescriptorTableModel.METHOD_NAME));
+                            methods[i] = (String) table
+                                    .getValueAt(
+                                            sel[i],
+                                            table
+                                                    .convertColumnIndexToView(CallbackDescriptorTableModel.METHOD_NAME));
                         }
                     }
-                        
+
                     mediator.setCurrentCallbackMethods(methods);
                     getRemoveCallbackMethodAction().setEnabled(methods.length > 0);
-                    getRemoveCallbackMethodAction().setName(getRemoveCallbackMethodAction().
-                            getActionName(methods.length > 1));
+                    getRemoveCallbackMethodAction().setName(
+                            getRemoveCallbackMethodAction().getActionName(
+                                    methods.length > 1));
                 }
             }
         });
@@ -338,9 +377,9 @@
         table.setModel(model);
         table.setRowHeight(25);
         table.setRowMargin(3);
-        
+
         mediator.setCurrentCallbackMethods(new String[0]);
-        
+
         tablePreferences.bind(table, null, null, null);
     }