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);
}