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 12:07:45 GMT
Yeah, may be it isn't typical. Cannot promise for all applications :)

The main point is as you said before:
However, from architectural point of view I agree that reference swing
classes from awt is not good idea.


Thanks,
Evgeniya

-----Original Message-----
From: Alexey Petrenko [mailto:alexey.a.petrenko@gmail.com] 
Sent: Friday, October 26, 2007 3:50 PM
To: dev@harmony.apache.org
Subject: Re: [classlib][swing] javax.swing.JComponent is not supposed to
be imported by awt

2007/10/26, Alexey Petrenko <alexey.a.petrenko@gmail.com>:
> I said in most cases :)
And we do not need text components there... right? :)

> 2007/10/26, Maenkova, Evgeniya G <evgeniya.g.maenkova@intel.com>:
> > >I think it will not bring huge impact to startup time in most cases
> > >because it's hard to imagine modern application using awt but not
> > >swing
> >
> > Aleksey, look at jfreechart.
> >
> > Thanks,
> > Evgeniya
> >
> > -----Original Message-----
> > From: Alexey Petrenko [mailto:alexey.a.petrenko@gmail.com]
> > Sent: Friday, October 26, 2007 1:03 PM
> > To: dev@harmony.apache.org
> > Subject: Re: [classlib][swing] javax.swing.JComponent is not
supposed to
> > be imported by awt
> >
> > Speaking of startup time...
> > I think it will not bring huge impact to startup time in most cases
> > because it's hard to imagine modern application using awt but not
> > swing.
> >
> > However, from architectural point of view I agree that reference
swing
> > classes from awt is not good idea.
> >
> > SY, Alexey
> >
> > 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.
> > >
> > --------------------------------------------------------------------
> > 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.
> >
>
--------------------------------------------------------------------
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