harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Petrenko" <alexey.a.petre...@gmail.com>
Subject Re: [classlib][swing] javax.swing.JComponent is not supposed to be imported by awt
Date Fri, 26 Oct 2007 07:27:55 GMT
As far as I remember we have one implementation of text processing
routines for awt and swing. That's why awt code could reference swing
classes.

I'll take a look...

SY, Alexey

2007/10/26, Alexei Fedotov <alexei.fedotov@gmail.com>:
> 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
>

Mime
View raw message