[Blindmath] Using Java Draw2D in an SWT GUI

Keith Creasy keith537 at iglou.com
Fri Feb 24 17:07:18 UTC 2012


Very sad that accessibility is being pushed so far back.

Keith


-----Original Message-----
From: blindmath-bounces at nfbnet.org [mailto:blindmath-bounces at nfbnet.org] On
Behalf Of Carolyn MacLeod
Sent: Friday, February 24, 2012 11:28 AM
To: Blind Math list for those interested in mathematics
Subject: Re: [Blindmath] Using Java Draw2D in an SWT GUI

We created SWT because, at the time, Swing was years away from being
production-quality, and we needed to ship product.
I tripped over this 2002 post recently. It summarizes the climate of the
time:  
http://www.mail-archive.com/jug-discussion@tucson-jug.org/msg00355.html
(I do not know who the "undisclosed source close to IBM" is, but much of
what he says seems accurate).
Please, I am not dredging up the past here to be inflammatory, merely to
help explain why there are things that I cannot fix.

On the plus side, the designer of SWT is now working at Oracle, so future
interop will improve.
However, the improvements won't be in AWT/Swing - they will be in JavaFX.
Oracle recommends that, moving forward, people use JavaFX to build Java
GUIs.
The good news is that JavaFX is new, current, designed for both desktop and
browser, has cool graphics, a whole bunch of groovy new controls, and all
controls can be css styled.
The bad news is that JavaFX is a whole new widget set, with its own event
model, layouts, and graphics system, and because it is new, some things are
not yet implemented, like Mac and Linux support (coming in FX 2.1 and 2.2),
and accessibility (promised in FX 3.0, which is currently due to ship
sometime around 2013Q4, if I am reading the roadmap correctly).
AWT/Swing have interop with JavaFX, but they are effectively deprecated, and
the problems inherent in the Swing threading model make interop complicated.
SWT and JavaFX both use the same threading model, and apparently SWT embeds
nicely in JavaFX and vice-versa.

So I think JavaFX might be the way you want to go, but it will be some time
before it is fully accessible (I believe) because JavaFX controls are custom
drawn, and all of the accessibility will need to be implemented from
scratch. I hope that they will fully integrate accessibility into JavaFX and
ship it with the JDK... they have surely taken some lessons from the Swing
accessibility problems regarding the difficulty of installing the JAB.

Here are some links:
1. The JavaFX main page: http://javafx.com/ 2. The JavaFX API Reference: 
http://docs.oracle.com/javafx/2.0/api/index.html
3. An overview of the FX Controls: 
http://docs.oracle.com/javafx/2.0/ui_controls/overview.htm
4. A "Visual Effects" tutorial: 
http://docs.oracle.com/javafx/2.0/visual_effects/jfxpub-visual_effects.htm
5. A Transformations tutorial: 
http://docs.oracle.com/javafx/2.0/transformations/jfxpub-transformations.htm
6. Oracle's recommendation regarding AWT/Swing: 
http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6
7. Accessibility is not yet in JavaFX: 
https://forums.oracle.com/forums/thread.jspa?messageID=10167036&#10167036
8. The roadmap for JavaFX, including a statement about accessibility
support: 
http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html
(I notice that they don't mention Linux accessibility on the roadmap. I hope
that was just an accidental omission.) 9. JavaFX and SWT interoperability: 
http://docs.oracle.com/javafx/2.0/swt_interoperability/jfxpub-swt_interopera
bility.htm
10. An example of folks trying to convert AWT images to FX images, FYI: 
https://forums.oracle.com/forums/thread.jspa?threadID=2236566

Hope this is helpful,
Carolyn



From:
Richard Baldwin <baldwin at dickbaldwin.com>
To:
Blind Math list for those interested in mathematics <blindmath at nfbnet.org>
Date:
23/02/2012 01:18 PM
Subject:
Re: [Blindmath] Using Java Draw2D in an SWT GUI Sent by:
blindmath-bounces at nfbnet.org



Michael has provided the answer to your question about the JAB.

I can create workarounds.

I can write complex code to make things work that don't fit together like
they should.

I can modify the code in textbooks to make it compatible with the SWT.

I can modify the code in existing libraries to make them compatible with the
SWT if the source code is available (which is what I am now being forced to
do to provide GUI accessibity).

However, the great promise of Java is the ability to use class libraries
written using standard Java libraries without a requirement to modify those
libraries. IBM and SWT have succeeded in breaking that promise. Therefore,
IBM should have named their new product IBMJava (or maybe Java#) to make it
clear that it is not Java. Once a naive programmer starts down the SWT
route, thinking that she is programming in Java, she has just excluded most
of the promise of Java from her programming product.

Being essentially incompatible with the JFrame class, the standard Image
class, and the standard Canvas class, to name just a few, IBM and SWT have
made it impossible to use most existing Java graphics libraries without
modification. The IBM versions of those classes aren't better, they are
simply different and incompatible with standard Java. And the SWT graphics
capability is, in my opinion, inferior to the Sun Graphic2D class.

That might be a good product strategy for IBM, but it is definitely not good
for the majority of Java programmers.

Dick Baldwin

On Thu, Feb 23, 2012 at 2:59 AM, Michael Whapples <mwhapples at aim.com>
wrote:

> Regarding your question on how good or bad is the JAB. Personally I 
> like the concept of the JAB from a development view, one full 
> accessibility
API
> across all platforms, rather than one which maps to the native ones 
> and
so
> has to cope with the differences of different platforms.
>
> However in practice as a user things seem to be simpler for SWT than
Java
> swing and JAB. I had some trouble getting the JAB working on a windows 
> 7 64-bit system, not sure precisely what the issue was but the JAB 
> only seemed to start working once I installed the 32-bit JVM, 
> previously I
only
> had the 64-bit JVM installed. If the JAB does require the 32-bit JVM 
> as well as the 64-bit JVM then all I can say is this fact is not 
> documented anywhere. Even once the JAB is working the quality of 
> accessibility can differ between platforms, Linux I probably would 
> give the best rating,
on
> windows you can even notice some issues with relatively simple
applications
> such as MathTrax and on the Mac there are definitely issues (eg. the
file
> dialog for things like opening and saving files has issues on the Mac).
>
> In comparison SWT applications and certainly more sizable ones such as 
> eclipse tend to just work straight out of the box. This is not to say
their
> always perfect but eclipse is mostly accessible and certainly most of
its
> functionality can be used by a blind user.
>
> Regarding your comment on reuse, may be accessibility is an example of 
> what you say. By reusing the native OS controls SWT picks up the 
> accessibility of those and the screen readers need not support another 
> accessibility API as they do for swing.
>
> I think though Richard's comments on reuse related more to do with
non-UI
> parts of eclipse RCP/SWT and how they just don't work with normal
standard
> JDK implementations. I think image objects were an example of this. 
> May
be
> there is advantages to the Eclipse project versions not found in the 
> standard JDK classes.
>
>
> Michael Whapples
>
> -----Original Message----- From: Carolyn MacLeod
> Sent: Thursday, February 23, 2012 5:04 AM
>
> To: Blind Math list for those interested in mathematics
> Subject: Re: [Blindmath] Using Java Draw2D in an SWT GUI
>
> Hi again.
>
> Sorry to take so long to reply.
>
> JFrame is not an embeddable component, so SWT (or any other embeddor) 
> can't embed JFrames.
> SWT_AWT.new_Frame() returns a subclass of EmbeddedFrame, which is a 
> sibling of JFrame but it does not have a root pane.
> JApplet is embeddable and it has a root pane. Can you make do with a 
> JApplet instead of a JFrame?
>
> I wrote another snippet for you (attached) that takes the root pane 
> out
of
> a JFrame and sets it into a JApplet in an SWT GUI.
> Hopefully you could do something similar with a JFrame from your 
> textbook's sample code.
> But this won't solve the whole problem, because the Swing controls 
> from the JFrame still won't be accessible unless you have the JAB 
> installed
and
> use an AT that works with it.
> (Question for you: Are Swing controls really that inaccessible? Is the
JAB
> hard to install? Don't AT usually work once the JAB is installed? I
don't
> know because I don't use Swing.)
>
> Regarding event integration, this article might be helpful:
> http://www.eclipse.org/**articles/Article-Swing-SWT-**
> Integration/index.html<
http://www.eclipse.org/articles/Article-Swing-SWT-Integration/index.html>
> The rule of thumb is to use SwingUtilities.invokeLater() and
> Display.asyncExec() to pass work from AWT/Swing to SWT and vice-versa.
> This article also discusses the tab traversal "glitch" that I tripped
over
> in the snippet I sent you earlier, and they show how to fix it in 
> their example code.
>
>  I really do believe in the OOP concept of "reuse, don't reinvent,"
>>
> So do we, which is why we reused the OS controls instead of drawing 
> our own.  :) We did talk about this with Sun in the beginning, but 
> unfortunately it didn't work out.
>
> Also, I happened to trip over these other two snippets that manipulate 
> BufferedImage and JAI TiledImage from within SWT.
> I am including them here in case they are helpful:
> https://bugs.eclipse.org/bugs/**show_bug.cgi?id=119363#c13<
https://bugs.eclipse.org/bugs/show_bug.cgi?id=119363#c13>
> https://bugs.eclipse.org/bugs/**show_bug.cgi?id=119363#c14<
https://bugs.eclipse.org/bugs/show_bug.cgi?id=119363#c14>
>
> Hope this helps,
> Carolyn
>
>
>
>
>
>
>
> From:
> Richard Baldwin <baldwin at dickbaldwin.com>
> To:
> Blind Math list for those interested in mathematics
<blindmath at nfbnet.org>
> Date:
> 01/31/2012 01:30 PM
> Subject:
> Re: [Blindmath] Using Java Draw2D in an SWT GUI Sent by:
> blindmath-bounces at nfbnet.org
>
>
>
> Thanks for responding to my concerns. I will definitely take a look at
> your
> workabound and see how much it helps. Hopefully, I will be pleased with
> the
> results.
>
> I suspect, however, that simply providing compatibility at the AWT 
Canvas
> level won't help much with my main concern. I already knew of one way to
> do
> that. I also already knew how to embed AWT Frame objects in an SWT 
object.
> Unfortunately, I don't know how to easily integrate events fired by 
those
> AWT components into the SWT event handling system and I don't know how 
to
> embed Swing JFrame objects and/or their events in SWT objects.
>
> I know how to write new code that will play reasonably well with SWT. 
That
> isn't my main concern. I really do believe in the OOP concept of "reuse,
> don't reinvent," and my main concern is the lack of compatibility of SWT
> with existing unmodified graphics libraries, which typically produce
> graphic outputs in Swing JFrame objects. Until we can successfully embed
> JFrame objects in SWT objects, and until we can easily integrate the 
event
> handling mechanisms of the two systems, the use of those libraries 
without
> modification of the libraries will probably be very difficult at best 
and
> off limits at worst.
>
> Hopefully someone will prove me wrong on this.
>
> Dick Baldwin
>
> On Tue, Jan 31, 2012 at 11:03 AM, Carolyn MacLeod <
> Carolyn_MacLeod at ca.ibm.com> wrote:
>
>  Thank-you, Michael!
>> Carolyn
>>
>>
>>
>> From:
>> "Michael Whapples" <mwhapples at aim.com>
>> To:
>> "Blind Math list for those interested in mathematics"
>> <blindmath at nfbnet.org>
>> Date:
>> 31/01/2012 11:30 AM
>> Subject:
>> Re: [Blindmath] Using Java Draw2D in an SWT GUI
>> Sent by:
>> blindmath-bounces at nfbnet.org
>>
>>
>>
>> Hello,
>> Thanks for taking the time to do this. I know you have asked questions
>>
> on
>
>> the orca-list about improving accessibility in SWT and eclipse and its
>> certainly appreciated. In my oppinion SWT is one of the few, if not the
>> best, GUI toolkits for making accessible applications which are also
>> cross-platform.
>>
>> Regards
>>
>> Michael whapples
>>
>> -----Original Message-----
>> From: Carolyn MacLeod
>> Sent: Tuesday, January 31, 2012 4:09 PM
>> To: blindmath at nfbnet.org
>> Subject: [Blindmath] Using Java Draw2D in an SWT GUI
>>
>> Hello, list.
>>
>> My name is Carolyn and I am on the Eclipse SWT Team.
>> I am the developer responsible for SWT Accessibility.
>>
>> Ken Perry of Blinksoft asked me if I could help with an issue brought 
up
>> by Richard Baldwin regarding SWT being accessible but largely
>>
> incompatible
>
>> with Swing/AWT.
>> I read several posts similar to this one:
>>
>>
>>  http://host.nfbnet.org/**pipermail/blindmath_nfbnet.**
> org/2012-January/004693.html<
http://host.nfbnet.org/pipermail/blindmath_nfbnet.org/2012-January/004693.ht
ml
>
>
>
>>
>> I wrote an SWT Snippet that I hope you will find useful:
>>
>>
>>  http://git.eclipse.org/c/**platform/eclipse.platform.swt.**
> git/tree/examples/org.eclipse.**swt.snippets/src/org/eclipse/**
> swt/snippets/Snippet361.java<
http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org
.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet361.java
>
>
>
>> It shows how to host an AWT Canvas inside an SWT GUI, and use the GUI 
to
>> initiate Java2D operations within the Canvas.
>> I randomly chose rotation and translation of the image, but you should
>>
> be
>
>> able to modify the snippet to do whatever Java2D operations you are
>> teaching.
>> The "Print Image" button uses SWT to take a screen snapshot of the
>>
> Canvas
>
>> and print it to a printer.
>> I had not heard of a printer that embosses images before, and I think
>>
> that
>
>> is really cool!
>>
>> I tried this snippet on Windows (XP) with JAWS (13) and on Mac OSX
>> (Leopard) with VoiceOver, and on Linux (Ubuntu 10.04) with Orca and it
>> worked on all 3 platforms.
>> It should work with other platform versions and screen readers as well.
>> The only glitch I encountered was on Windows, if the user tabs into the
>> Canvas, they can't tab back out.
>> They need to use the button mnemonics to traverse out of the Canvas:
>>
> alt+o
>
>> for Open, alt+x and alt+y for translating X and Y, alt+r for Rotate, 
and
>> alt+p for Print.
>> This was not an issue on Mac or Linux.
>>
>> I cannot solve the deeper issues, like making SWT and AWT graphics
>> interchangeable without performance penalties (there are technical
>> issues),
>> or improving SWT's graphics support to the level of Java2D or more (we
>>
> are
>
>> a very small and very busy team, and we simply do not have the
>>
> manpower).
>
>> Hopefully this snippet will give you a work-around that is both
>>
> accessible
>
>> and teaches the math you want to teach.
>>
>> Carolyn
>> ______________________________**_________________
>> Blindmath mailing list
>> Blindmath at nfbnet.org
>> http://nfbnet.org/mailman/**listinfo/blindmath_nfbnet.org<
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org>
>> To unsubscribe, change your list options or get your account info for
>> Blindmath:
>>
>>  http://nfbnet.org/mailman/**options/blindmath_nfbnet.org/**
> mwhapples%40aim.com<
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/mwhapples%40aim.com
>
>
>>
>>
>>
>> ______________________________**_________________
>> Blindmath mailing list
>> Blindmath at nfbnet.org
>> http://nfbnet.org/mailman/**listinfo/blindmath_nfbnet.org<
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org>
>> To unsubscribe, change your list options or get your account info for
>> Blindmath:
>>
>>
>>  http://nfbnet.org/mailman/**options/blindmath_nfbnet.org/**
> carolyn_macleod%40ca.ibm.com<
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/carolyn_macleod%40ca.
ibm.com
>
>
>
>>
>>
>>
>> ______________________________**_________________
>> Blindmath mailing list
>> Blindmath at nfbnet.org
>> http://nfbnet.org/mailman/**listinfo/blindmath_nfbnet.org<
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org>
>> To unsubscribe, change your list options or get your account info for
>> Blindmath:
>>
>>
>>  http://nfbnet.org/mailman/**options/blindmath_nfbnet.org/**
> baldwin%40dickbaldwin.com<
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/baldwin%40dickbaldwin
.com
>
>
>
>>
>
>
> --
> Richard G. Baldwin (Dick Baldwin)
> Home of Baldwin's on-line Java Tutorials
> http://www.DickBaldwin.com
>
> Professor of Computer Information Technology
> Austin Community College
> (512) 223-4758
> mailto:Baldwin at DickBaldwin.com
> http://www.austincc.edu/**baldwin/ <http://www.austincc.edu/baldwin/>
> ______________________________**_________________
> Blindmath mailing list
> Blindmath at nfbnet.org
> http://nfbnet.org/mailman/**listinfo/blindmath_nfbnet.org<
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org>
> To unsubscribe, change your list options or get your account info for
> Blindmath:
> http://nfbnet.org/mailman/**options/blindmath_nfbnet.org/**
> carolyn_macleod%40ca.ibm.com<
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/carolyn_macleod%40ca.
ibm.com
>
>
>
>
>
>
>
>
>
>
>
> ______________________________**_________________
> Blindmath mailing list
> Blindmath at nfbnet.org
> http://nfbnet.org/mailman/**listinfo/blindmath_nfbnet.org<
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org>
> To unsubscribe, change your list options or get your account info for
> Blindmath:
> http://nfbnet.org/mailman/**options/blindmath_nfbnet.org/**
> mwhapples%40aim.com<
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/mwhapples%40aim.com
>
>
> ______________________________**_________________
> Blindmath mailing list
> Blindmath at nfbnet.org
> http://nfbnet.org/mailman/**listinfo/blindmath_nfbnet.org<
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org>
> To unsubscribe, change your list options or get your account info for
> Blindmath:
> http://nfbnet.org/mailman/**options/blindmath_nfbnet.org/**
> baldwin%40dickbaldwin.com<
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/baldwin%40dickbaldwin
.com
>
>



-- 
Richard G. Baldwin (Dick Baldwin)
Home of Baldwin's on-line Java Tutorials
http://www.DickBaldwin.com

Professor of Computer Information Technology
Austin Community College
(512) 223-4758
mailto:Baldwin at DickBaldwin.com
http://www.austincc.edu/baldwin/
_______________________________________________
Blindmath mailing list
Blindmath at nfbnet.org
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org
To unsubscribe, change your list options or get your account info for 
Blindmath:
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/carolyn_macleod%40ca.
ibm.com




_______________________________________________
Blindmath mailing list
Blindmath at nfbnet.org
http://nfbnet.org/mailman/listinfo/blindmath_nfbnet.org
To unsubscribe, change your list options or get your account info for
Blindmath:
http://nfbnet.org/mailman/options/blindmath_nfbnet.org/keith537%40iglou.com





More information about the BlindMath mailing list