Hello, I'm currently looking through the swing and awt code to find out what should be done to make drag and drop work. Today I find out that the class org.apache.harmony.awt.text.TextUtils contains nearly the same functionality as javax.swing.TransferHandler [2]. Thanks to Evgeniya Maenkova! She explained me that AWT cannot reuse javax.swing.TransferHandler due to referenced javax.swing.JComponent which is heavy class. I have looked through the dev@ list and couldn't find that this core principle of our client API was referenced here before.
Finally I've prepared a patch to remove another existing reference to JComponent from org.apache.harmony.awt.text.TextUtils [1]. Could anyone review and commit the patch? Thanks! [1] https://issues.apache.org/jira/browse/HARMONY-5023 [2] org.apache.harmony.awt.text.TextUtils: public static final boolean importData(final TextKit textKit, final Transferable t) { if (t == null) { return false; } DataFlavor[] flavors = t.getTransferDataFlavors(); DataFlavor flavor = null; for (DataFlavor element : flavors) { flavor = element; if (String.class.isAssignableFrom(flavor.getRepresentationClass())) { break; } flavor = null; } if (flavor != null) { try { String text = (String) t.getTransferData(flavor); textKit.replaceSelectedText(text); return true; } catch (UnsupportedFlavorException e) { return false; } catch (IOException e) { return false; } } return false; } javax.swing.TransferHandler: public boolean importData(final JComponent c, final Transferable t) { PropertyDescriptor descriptor = getPropertyDescriptor(c); if (descriptor == null) { return false; } Class propertyType = descriptor.getPropertyType(); DataFlavor flavor = getPrefferedFlavor(t, propertyType); if (flavor == null) { return false; } try { Object value = t.getTransferData(flavor); Method writer = descriptor.getWriteMethod(); writer.invoke(c, new Object[]{value}); return true; } catch (UnsupportedFlavorException e) { } catch (IOException e) { } catch (InvocationTargetException e) { } catch (IllegalAccessException e) { } return false; } -- With best regards, Alexei, ESSD, Intel
