Hi Pavel,
I
uploaded http://cr.openjdk.java.net/~zhouyx/OJDK-61/webrev.05/
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/webrev.05/> .
And reported
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7194184 .
Some details about update:
1. A testcase is added in this webrev, but it checks
keyboard accessibility only. I tried to check right-to-left
orientation with the testcase attached, but it doesn't work
well on windows.
2. " g.setXORMode(Color.WHITE);
g.setColor(Color.BLACK); " is not used because the mark is
not obvious for light blue-pink area and dark green area, as
this
image: http://cr.openjdk.java.net/~zhouyx/OJDK-61/screenshot_4.png
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/screenshot_4.png>
.
Please take a look.
On Wed, Aug 22, 2012 at 9:16 PM, Pavel Porvatov
<[email protected]
<mailto:[email protected]>> wrote:
Hi Sean,
Hi Pavel,
I updated the patch according to your comments
except No.1 and No.4, it is now at:
http://cr.openjdk.java.net/~zhouyx/OJDK-61/webrev.03/
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/webrev.03/>
.
About comment No.1 ( When right-to-left
orientation the Recent swatches inverts right and left
button ), I tried to set the locale to ar_AE, but
didn't get a visual result about what I should do,
please look
at http://cr.openjdk.java.net/~zhouyx/OJDK-61/screenshot_3.png
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/screenshot_3.png>
. Can anyone give a little help on how to produce a
right-to-left orientation in demo SwingSet2 or others?
I attached the test. It will be useful to add some tests
to your change (e.g. show JColorChooser with
right-to-left orientation, pressing some keys by awt
Robot and checking the result)
About comment No.4(Why new listeners are
Serializable ), the original MouseListeners in this
class are Serializable and I see javadoc for Component
class says "Developers will need, as always, to
consider the implications of making an object
serializable" .
You are absolutely right about serialization. But if you
take a look at components serialization/deserialization
you will see that BEFORE serialization
javax.swing.plaf.ComponentUI#uninstallUI is invoked and
AFTER deserialization
javax.swing.plaf.ComponentUI#installUI is invoked. So
serialization is not broken when new listeners added and
removed correctly with instalUI/uninstallUI methods.
Please take a look again, thanks.
Some additional comments below:
1. You should assign null to mainSwatchKeyListener and
recentSwatchKeyListener in the uninstallChooserPanel method
2. Do we have bug in bugs database for your fix? If no,
could you please file a bug with correspondent
description. Use that bug number as a folder name for
the webrev, please
3. The code can be a little bit optimized. There is no
need to call repaint every time in code like this:
+ if (selRow > 0) {
+ selRow--;
+ }
+ repaint();
I'd prefer
+ if (selRow > 0) {
+ selRow--;
+ repaint();
+ }
In case KeyEvent.VK_HOME and KeyEvent.VK_END such
optimization doesn't look reasonable for me...
4. Could you please follow our code guide lines (spaces
etc).
http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141388.html
5. I have some concerns about selection mark in
paintComponent:
a. On light swatches (e.g. on white) the mark looks like
it shifted on 1 pixel
b. The color selection looks tricky. Does the following
code from DiagramComponent#paintComponent works
g.setXORMode(Color.WHITE);
g.setColor(Color.BLACK);
?
Regards, Pavel
On Thu, Aug 16, 2012 at 10:00 PM, Pavel Porvatov
<[email protected]
<mailto:[email protected]>> wrote:
Hi Sean,
Updated the repository used in webrev from jdk8-tl
to http://hg.openjdk.java.net/jdk8/awt/jdk .
new
webrev: http://cr.openjdk.java.net/~zhouyx/OJDK-61/webrev.01/
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/webrev.01/>
I have the following comments about the fix:
1. When right-to-left orientation the Recent
swatches inverts right and left button.
2. Could you please don't use package visibility
when fileds/methods/inner classes can be private
(e.g. field mainSwatchKeyListener)
3. I think you should uninstall the introduced
listeners in the
DefaultSwatchChooserPanel#uninstallChooserPanel method
4. Why new listeners are Serializable?
5. I recommend to use if condition instead of
switch/case blocks with one branch
6. Could you please rename selrow (and similar
variables) into selRow
7. Can we use Component#isFocusOwner instead of
supporting new variable showcursor?
8. Could you please follow our code guide lines
(spaces etc)
Regards, Pavel
---------- Forwarded message ----------
From: *Sean Chou* <[email protected]
<mailto:[email protected]>>
Date: Thu, Aug 9, 2012 at 3:29 PM
Subject: <Swing Dev> Add keyboard accessibility to
JColorChooser swatch
To: [email protected]
<mailto:[email protected]>
Hi all,
This is a patch to add keyboard accessibility
to JColorChooser swatch, so when using TAB, the
focus can move to SwatchPanel, choose color with
arrow keys and select color with space bar.
In current implementation, it is not able to move
the focus to SwatchPanel with TAB, this can be
seen in SwingSet2 demo.
Steps:
1. run SwingSet2 demo
2. click on JColorChooser demo
3. click Background button and Swatches panel appears.
4. Press Tab key => focus moves to OK button
as shown in this
image
http://cr.openjdk.java.net/~zhouyx/OJDK-61/screenshot_1.png
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/screenshot_1.png>
With this patch, in step4, focus moves
to SwatchPanel, as shown
here http://cr.openjdk.java.net/~zhouyx/OJDK-61/screenshot_2.png
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/screenshot_2.png>
Then, arrow keys can be used to choose color and
select color by space bar.
The webrev
is http://cr.openjdk.java.net/~zhouyx/OJDK-61/webrev.00/
<http://cr.openjdk.java.net/%7Ezhouyx/OJDK-61/webrev.00/>
.
Please take a look.
--
Best Regards,
Sean Chou
--
Best Regards,
Sean Chou
--
Best Regards,
Sean Chou
import javax.swing.*;
import java.awt.*;
public class JColorChooserTest {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
JColorChooser chooser = new JColorChooser();
chooser.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
frame.add(chooser);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setVisible(true);
}
});
}
}
--
Best Regards,
Sean Chou