harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maenkova, Evgeniya G" <evgeniya.g.maenk...@intel.com>
Subject RE: [classlib][swing] javax.swing.JComponent is not supposed to be imported by awt
Date Fri, 26 Oct 2007 09:37:23 GMT
I told you what it suggested to be 'by design'.

1) reuse some swing logic regarding text component;
This approach has both advantages and disadvantages. The decision was do
it this way.
2) don't use JComponent, as it automatically loads all swing, UIs, etc.
3) for (2) there was TextUtils and TextKit, in particular.

The idea is: don't use all swing (==JComponent) while you need only awt.
If you are working in this area now, you are welcome to make any
improvements.


>And (shame on me!) I cannot understand the 'heavy' and 'light' terms -
if
>this is a performance issue why we look here and doesn't look at event
>queue
>that unoptimised at all.

Sure, we will look everywhere.

Thanks,
Evgeniya

-----Original Message-----
From: Dmitry Irlyanov [mailto:irlyanov@gmail.com] 
Sent: Friday, October 26, 2007 1:15 PM
To: dev@harmony.apache.org
Subject: Re: [classlib][swing] javax.swing.JComponent is not supposed to
be imported by awt

awt is independent from swing module (at least in theory) If the method
used
in swing only - what it does in awt module?

The main question for me is: why the awt.text.TextUtils performs so
important role?

As far as I remember this class makes more than it needed in awt. A lot
of
work that should be implemeted in swing for me. Why I should think about
TextKit (close friend of TextUtils) when I implement, say, html
processing
in JComponents? Furthermore, why I should implement it because the
TextKit
and TextUtils are implementation-specific classes and all the previous
(In
JEditorPane, say) implementations are hidden. What the reason of
harmony-specific way here?

And (shame on me!) I cannot understand the 'heavy' and 'light' terms -
if
this is a performance issue why we look here and doesn't look at event
queue
that unoptimised at all.

2007/10/26, Maenkova, Evgeniya G <evgeniya.g.maenkova@intel.com>:
>
> The point is: there is pretty big difference between references to
some
> classes with logic (like Document, Caret, etc) and references to
> JComponent.
>
> If you use JComponent in awt it increases startup time (as a pretty
big
> part of swing is loaded actually) and makes awt text component
heavier.
>
> 'Model' classes are pretty light. They don't load all swing.
>
> The idea was reuse in awt some swing logic, common for all text
> component, w/o loading swing per se.
>
> Thanks,
> Evgeniya
>
>
>
> -----Original Message-----
> From: Alexey Petrenko [mailto:alexey.a.petrenko@gmail.com]
> Sent: Friday, October 26, 2007 11:28 AM
> To: dev@harmony.apache.org
> Subject: Re: [classlib][swing] javax.swing.JComponent is not supposed
to
> be imported by awt
>
> 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
> >
> --------------------------------------------------------------------
> Closed Joint Stock Company Intel A/O
> Registered legal address: 125252, Moscow, Russian Federation,
> Chapayevsky Per, 14.
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>



-- 
_______________
With Best Regards,
Irlyanov Dmitry
--------------------------------------------------------------------
Closed Joint Stock Company Intel A/O
Registered legal address: 125252, Moscow, Russian Federation, 
Chapayevsky Per, 14.

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

Mime
View raw message