# HG changeset patch # User akolarkunnu # Date 1563945676 25200 # Node ID 8538b1f28a715b74951f6e6afd8eda6992c4e96a # Parent c8ca09de211b843b82b44e235099b1dd720d70df 8228479: Correct the format of ColorChooserDemoTest Reviewed-by: serb, psadhukhan diff -r c8ca09de211b -r 8538b1f28a71 test/jdk/sanity/client/SwingSet/src/ColorChooserDemoTest.java --- a/test/jdk/sanity/client/SwingSet/src/ColorChooserDemoTest.java Tue Jul 16 17:00:00 2019 -0700 +++ b/test/jdk/sanity/client/SwingSet/src/ColorChooserDemoTest.java Tue Jul 23 22:21:16 2019 -0700 @@ -68,261 +68,262 @@ @Listeners(GuiTestListener.class) public class ColorChooserDemoTest { -private static final String OK_BUTTON_TITLE = "OK"; -private static final String CANCEL_BUTTON_TITLE = "Cancel"; -private static final String RESET_BUTTON_TITLE = "Reset"; -private static final String HSV = "HSV"; -private static final String RGB = "RGB"; -private static final String HSL = "HSL"; -private static final String CMYK = "CMYK"; -private static final int HSV_NUMBER_OF_SLIDERS_AND_SPINNERS = 4; -private static final int RGB_NUMBER_OF_SLIDERS_AND_SPINNERS = 4; -private static final int HSL_NUMBER_OF_SLIDERS_AND_SPINNERS = 4; -private static final int CMYK_NUMBER_OF_SLIDERS_AND_SPINNERS = 5; -private static final int HSV_HUE_INDEX = 0; -private static final int HSV_SATURATION_INDEX = 1; -private static final int HSV_VALUE_INDEX = 2; -private static final int HSV_TRANSPARENCY_INDEX = 3; -private static final int HSL_HUE_INDEX = 0; -private static final int HSL_SATURATION_INDEX = 1; -private static final int HSL_LIGHTNESS_INDEX = 2; -private static final int HSL_TRANSPARENCY_INDEX = 3; -private static final int RGB_RED_INDEX = 0; -private static final int RGB_GREEN_INDEX = 1; -private static final int RGB_BLUE_INDEX = 2; -private static final int RGB_ALPHA_INDEX = 3; -private static final int RGB_COLORCODE_TEXT_FIELD_INDEX = 4; -private static final int CMYK_CYAN_INDEX = 0; -private static final int CMYK_MAGENTA_INDEX = 1; -private static final int CMYK_YELLOW_INDEX = 2; -private static final int CMYK_BLACK_INDEX = 3; -private static final int CMYK_ALPHA_INDEX = 4; + private static final String OK_BUTTON_TITLE = "OK"; + private static final String CANCEL_BUTTON_TITLE = "Cancel"; + private static final String RESET_BUTTON_TITLE = "Reset"; + private static final String HSV = "HSV"; + private static final String RGB = "RGB"; + private static final String HSL = "HSL"; + private static final String CMYK = "CMYK"; + private static final int HSV_NUMBER_OF_SLIDERS_AND_SPINNERS = 4; + private static final int RGB_NUMBER_OF_SLIDERS_AND_SPINNERS = 4; + private static final int HSL_NUMBER_OF_SLIDERS_AND_SPINNERS = 4; + private static final int CMYK_NUMBER_OF_SLIDERS_AND_SPINNERS = 5; + private static final int HSV_HUE_INDEX = 0; + private static final int HSV_SATURATION_INDEX = 1; + private static final int HSV_VALUE_INDEX = 2; + private static final int HSV_TRANSPARENCY_INDEX = 3; + private static final int HSL_HUE_INDEX = 0; + private static final int HSL_SATURATION_INDEX = 1; + private static final int HSL_LIGHTNESS_INDEX = 2; + private static final int HSL_TRANSPARENCY_INDEX = 3; + private static final int RGB_RED_INDEX = 0; + private static final int RGB_GREEN_INDEX = 1; + private static final int RGB_BLUE_INDEX = 2; + private static final int RGB_ALPHA_INDEX = 3; + private static final int RGB_COLORCODE_TEXT_FIELD_INDEX = 4; + private static final int CMYK_CYAN_INDEX = 0; + private static final int CMYK_MAGENTA_INDEX = 1; + private static final int CMYK_YELLOW_INDEX = 2; + private static final int CMYK_BLACK_INDEX = 3; + private static final int CMYK_ALPHA_INDEX = 4; + + private final Color resetColor = new Color(125, 125, 125); -private final Color resetColor = new Color(125, 125, 125); + private JDialogOperator colorChooserDialog; + private JButtonOperator okButton; + private JButtonOperator cancelButton; + private JButtonOperator resetButton; + private JColorChooserOperator colorChooser; + private JButtonOperator backgroundButton; + private JButtonOperator gradient1Button; + private JButtonOperator gradient2Button; + private JButtonOperator perimeterButton; + private JTabbedPaneOperator tabOperator; + private JComponentOperator bezierAnimationPanel; + private JSliderOperator[] sliders = new JSliderOperator[5]; + private JSpinnerOperator[] spinners = new JSpinnerOperator[5]; + private JButtonOperator lastFocusedButton; + + @Test + public void test() throws Exception { + new ClassReference(ColorChooserDemo.class.getCanonicalName()).startApplication(); + JFrameOperator frame = new JFrameOperator(DEMO_TITLE); + bezierAnimationPanel = new JComponentOperator(frame, new ByClassChooser(BezierAnimationPanel.class)); + initializePanelButtons(frame); + checkBackgroundColorChooser(); + checkGradient1ColorChooser(); + checkGradient2ColorChooser(); + checkPerimeterColorChooser(); + } + + private void checkBackgroundColorChooser() throws Exception { + basicCheck(backgroundButton, BezierColor.BACKGROUND); + checkAllColorChoosers(backgroundButton); + } -private JDialogOperator colorChooserDialog; -private JButtonOperator okButton; -private JButtonOperator cancelButton; -private JButtonOperator resetButton; -private JColorChooserOperator colorChooser; -private JButtonOperator backgroundButton; -private JButtonOperator gradient1Button; -private JButtonOperator gradient2Button; -private JButtonOperator perimeterButton; -private JTabbedPaneOperator tabOperator; -private JComponentOperator bezierAnimationPanel; -private JSliderOperator[] sliders = new JSliderOperator[5]; -private JSpinnerOperator[] spinners = new JSpinnerOperator[5]; -private JButtonOperator lastFocusedButton; + private void checkGradient1ColorChooser() throws Exception { + basicCheck(gradient1Button, BezierColor.GRADIENT_A); + } + + private void checkGradient2ColorChooser() throws Exception { + basicCheck(gradient2Button, BezierColor.GRADIENT_B); + } + + private void checkPerimeterColorChooser() throws Exception { + basicCheck(perimeterButton, BezierColor.OUTER); + } + + private void pushButtonAndInitialize(JButtonOperator jbo) throws InterruptedException { + // Wait for focus to return to last focused button + lastFocusedButton.waitHasFocus(); + jbo.pushNoBlock(); + lastFocusedButton = jbo; + // Wait till the ColorChooserDemo Dialog Opens + new DialogWaiter().waitDialog(CHOOSER_TITLE, false, false); + initializeDialog(); + } + + private void initializePanelButtons(JFrameOperator frame) { + backgroundButton = new JButtonOperator(frame, BACKGROUND); + gradient1Button = new JButtonOperator(frame, GRADIENT_1); + gradient2Button = new JButtonOperator(frame, GRADIENT_2); + perimeterButton = new JButtonOperator(frame, PERIMETER); + lastFocusedButton = backgroundButton; + } -@Test -public void test() throws Exception { -new ClassReference(ColorChooserDemo.class.getCanonicalName()).startApplication(); -JFrameOperator frame = new JFrameOperator(DEMO_TITLE); -bezierAnimationPanel = new JComponentOperator(frame, new ByClassChooser(BezierAnimationPanel.class)); -initializePanelButtons(frame); -checkBackgroundColorChooser(); -checkGradient1ColorChooser(); -checkGradient2ColorChooser(); -checkPerimeterColorChooser(); -} + private void initializeDialog() { + colorChooserDialog = new JDialogOperator(CHOOSER_TITLE); + tabOperator = new JTabbedPaneOperator(colorChooserDialog); + colorChooser = new JColorChooserOperator(colorChooserDialog); + okButton = new JButtonOperator(colorChooserDialog, OK_BUTTON_TITLE); + cancelButton = new JButtonOperator(colorChooserDialog, CANCEL_BUTTON_TITLE); + resetButton = new JButtonOperator(colorChooserDialog, RESET_BUTTON_TITLE); + } + + private void basicCheck(JButtonOperator jbo, BezierColor bezierColor) throws Exception { + Color testColor = new Color(100, 26, 155); + Color testColor2 = new Color(10, 40, 50); + checkDefaultColorChooser(jbo, testColor, bezierColor); + checkCancelButton(jbo, testColor2); + checkResetButton(jbo, testColor2); + } -private void checkBackgroundColorChooser() throws Exception { -basicCheck(backgroundButton, BezierColor.BACKGROUND); -checkAllColorChoosers(backgroundButton); -} + private void checkDefaultColorChooser(JButtonOperator jbo, Color testColor, BezierColor bezierColor) + throws Exception { + BezierAnimationPanel bezierPanel; + pushButtonAndInitialize(jbo); + // Check ColorChooser color is being set and used accordingly + // in the animation panel + setAndWaitColor(testColor); + pushButtonAndWaitDialogClosed(okButton); + bezierPanel = (BezierAnimationPanel) bezierAnimationPanel.getSource(); + colorChooser.waitStateOnQueue(jColorChooser -> (bezierPanel.getBezierColor(bezierColor).equals(testColor))); + } + + private void checkCancelButton(JButtonOperator jbo, Color testColor) throws Exception { + pushButtonAndInitialize(jbo); + setAndWaitColor(testColor); + pushButtonAndWaitDialogClosed(cancelButton); + } -private void checkGradient1ColorChooser() throws Exception { -basicCheck(gradient1Button, BezierColor.GRADIENT_A); -} + private void checkResetButton(JButtonOperator jbo, Color testColor) throws Exception { + pushButtonAndInitialize(jbo); + Color initialColor = colorChooser.getColor(); + setAndWaitColor(testColor); + resetButton.push(); + waitJColorChooserColor(initialColor); + pushButtonAndWaitDialogClosed(okButton); + } -private void checkGradient2ColorChooser() throws Exception { -basicCheck(gradient2Button, BezierColor.GRADIENT_B); -} + private void checkAllColorChoosers(JButtonOperator jbo) throws Exception { + pushButtonAndInitialize(jbo); + checkHSV(); + checkHSL(); + checkRGB(); + checkCMYK(); + pushButtonAndWaitDialogClosed(okButton); + } -private void checkPerimeterColorChooser() throws Exception { -basicCheck(perimeterButton, BezierColor.OUTER); -} + private void waitJColorChooserColor(Color expectedColor) { + colorChooser.waitStateOnQueue(jColorChooser -> colorChooser.getColor().equals(expectedColor)); + } + + private void setAndWaitColor(Color color) { + colorChooser.setColor(color); + // Wait for the Color to be set + waitJColorChooserColor(color); + } -private void pushButtonAndInitialize(JButtonOperator jbo) throws InterruptedException { -// Wait for focus to return to last focused button -lastFocusedButton.waitHasFocus(); -jbo.pushNoBlock(); -lastFocusedButton = jbo; -// Wait till the ColorChooserDemo Dialog Opens -new DialogWaiter().waitDialog(CHOOSER_TITLE, false, false); -initializeDialog(); -} + private void resetColor() { + colorChooser.setColor(resetColor); + // Wait for the Color to be reset + waitJColorChooserColor(resetColor); + } -private void initializePanelButtons(JFrameOperator frame) { -backgroundButton = new JButtonOperator(frame, BACKGROUND); -gradient1Button = new JButtonOperator(frame, GRADIENT_1); -gradient2Button = new JButtonOperator(frame, GRADIENT_2); -perimeterButton = new JButtonOperator(frame, PERIMETER); -lastFocusedButton = backgroundButton; -} + private void checkHSV() { + tabOperator.selectPage(HSV); + initializeSliderAndSpinner(HSV_NUMBER_OF_SLIDERS_AND_SPINNERS); + resetColor(); + setAndCheckSlider(sliders[HSV_SATURATION_INDEX], 50, new Color(125, 62, 62)); + setAndCheckSlider(sliders[HSV_VALUE_INDEX], 80, new Color(204, 102, 102)); + setAndCheckSlider(sliders[HSV_HUE_INDEX], 50, new Color(204, 187, 102)); + setAndCheckSlider(sliders[HSV_TRANSPARENCY_INDEX], 50, new Color(204, 187, 102, 127)); + setAndCheckSpinner(spinners[HSV_SATURATION_INDEX], 25, new Color(204, 195, 153, 127)); + setAndCheckSpinner(spinners[HSV_VALUE_INDEX], 40, new Color(102, 97, 76, 127)); + setAndCheckSpinner(spinners[HSV_HUE_INDEX], 25, new Color(102, 87, 76, 127)); + setAndCheckSpinner(spinners[HSV_TRANSPARENCY_INDEX], 100, new Color(102, 87, 76, 0)); + } + + private void checkHSL() { + tabOperator.selectPage(HSL); + initializeSliderAndSpinner(HSL_NUMBER_OF_SLIDERS_AND_SPINNERS); + resetColor(); + setAndCheckSlider(sliders[HSL_SATURATION_INDEX], 50, new Color(187, 62, 62)); + setAndCheckSlider(sliders[HSL_LIGHTNESS_INDEX], 80, new Color(229, 178, 178)); + setAndCheckSlider(sliders[HSL_HUE_INDEX], 180, new Color(178, 229, 229)); + setAndCheckSlider(sliders[HSL_TRANSPARENCY_INDEX], 50, new Color(178, 229, 229, 127)); + setAndCheckSpinner(spinners[HSL_SATURATION_INDEX], 25, new Color(191, 216, 216, 127)); + setAndCheckSpinner(spinners[HSL_LIGHTNESS_INDEX], 40, new Color(76, 127, 127, 127)); + setAndCheckSpinner(spinners[HSL_HUE_INDEX], 25, new Color(127, 97, 76, 127)); + setAndCheckSpinner(spinners[HSL_TRANSPARENCY_INDEX], 50, new Color(127, 97, 76, 127)); + } -private void initializeDialog() { -colorChooserDialog = new JDialogOperator(CHOOSER_TITLE); -tabOperator = new JTabbedPaneOperator(colorChooserDialog); -colorChooser = new JColorChooserOperator(colorChooserDialog); -okButton = new JButtonOperator(colorChooserDialog, OK_BUTTON_TITLE); -cancelButton = new JButtonOperator(colorChooserDialog, CANCEL_BUTTON_TITLE); -resetButton = new JButtonOperator(colorChooserDialog, RESET_BUTTON_TITLE); -} + private void checkRGB() { + String sampleColor = "111111"; + tabOperator.selectPage(RGB); + initializeSliderAndSpinner(RGB_NUMBER_OF_SLIDERS_AND_SPINNERS); + JTextFieldOperator colorCode = new JTextFieldOperator(colorChooserDialog, RGB_COLORCODE_TEXT_FIELD_INDEX); + resetColor(); + setAndCheckSlider(sliders[RGB_GREEN_INDEX], 50, new Color(125, 50, 125, 255)); + setAndCheckSlider(sliders[RGB_BLUE_INDEX], 80, new Color(125, 50, 80, 255)); + setAndCheckSlider(sliders[RGB_RED_INDEX], 50, new Color(50, 50, 80, 255)); + setAndCheckSlider(sliders[RGB_ALPHA_INDEX], 125, new Color(50, 50, 80, 125)); + setAndCheckSpinner(spinners[RGB_GREEN_INDEX], 25, new Color(50, 25, 80, 125)); + setAndCheckSpinner(spinners[RGB_BLUE_INDEX], 40, new Color(50, 25, 40, 125)); + setAndCheckSpinner(spinners[RGB_RED_INDEX], 25, new Color(25, 25, 40, 125)); + setAndCheckSpinner(spinners[RGB_ALPHA_INDEX], 255, new Color(25, 25, 40, 255)); -private void basicCheck(JButtonOperator jbo, BezierColor bezierColor) throws Exception { -Color testColor = new Color(100, 26, 155); -Color testColor2 = new Color(10, 40, 50); -checkDefaultColorChooser(jbo, testColor, bezierColor); -checkCancelButton(jbo, testColor2); -checkResetButton(jbo, testColor2); -} + colorCode.setText(sampleColor); + // Wait for the sampleColor to be set in the color code text field. + colorCode.waitText(sampleColor); + colorCode.getFocus(); + colorCode.pressKey(KeyEvent.VK_TAB); + // Wait for the color to be set + waitJColorChooserColor(new Color(17, 17, 17, 255)); + } -private void checkDefaultColorChooser(JButtonOperator jbo, Color testColor, BezierColor bezierColor) -throws Exception { -BezierAnimationPanel bezierPanel; -pushButtonAndInitialize(jbo); -// Check ColorChooser color is being set and used accordingly -// in the animation panel -setAndWaitColor(testColor); -pushButtonAndWaitDialogClosed(okButton); -bezierPanel = (BezierAnimationPanel) bezierAnimationPanel.getSource(); -colorChooser.waitStateOnQueue(jColorChooser -> (bezierPanel.getBezierColor(bezierColor).equals(testColor))); -} + private void checkCMYK() { + tabOperator.selectPage(CMYK); + initializeSliderAndSpinner(CMYK_NUMBER_OF_SLIDERS_AND_SPINNERS); + resetColor(); + setAndCheckSlider(sliders[CMYK_MAGENTA_INDEX], 50, new Color(125, 100, 125, 255)); + setAndCheckSlider(sliders[CMYK_YELLOW_INDEX], 80, new Color(125, 100, 85, 255)); + setAndCheckSlider(sliders[CMYK_CYAN_INDEX], 50, new Color(100, 100, 85, 255)); + setAndCheckSlider(sliders[CMYK_BLACK_INDEX], 50, new Color(164, 164, 140, 255)); + setAndCheckSlider(sliders[CMYK_ALPHA_INDEX], 125, new Color(164, 164, 140, 125)); + setAndCheckSpinner(spinners[CMYK_MAGENTA_INDEX], 25, new Color(164, 184, 140, 125)); + setAndCheckSpinner(spinners[CMYK_YELLOW_INDEX], 40, new Color(164, 184, 172, 125)); + setAndCheckSpinner(spinners[CMYK_CYAN_INDEX], 25, new Color(184, 184, 172, 125)); + setAndCheckSpinner(spinners[CMYK_BLACK_INDEX], 100, new Color(139, 139, 130, 125)); + setAndCheckSpinner(spinners[CMYK_ALPHA_INDEX], 255, new Color(139, 139, 130, 255)); + } -private void checkCancelButton(JButtonOperator jbo, Color testColor) throws Exception { -pushButtonAndInitialize(jbo); -setAndWaitColor(testColor); -pushButtonAndWaitDialogClosed(cancelButton); + private void setAndCheckSlider(JSliderOperator slider, int sliderValue, Color expectedColor) { + slider.setValue(sliderValue); + // Wait for slider to attain the specified value + slider.waitStateOnQueue(jSlider -> slider.getValue() == sliderValue); + colorChooser.waitStateOnQueue(jColorChooser -> (colorChooser.getColor().equals(expectedColor))); + } + + private void setAndCheckSpinner(JSpinnerOperator spinner, int spinnerValue, Color expectedColor) { + spinner.setValue(spinnerValue); + // Wait for spinner to attain the specified value + spinner.waitStateOnQueue(jSpinner -> (int) spinner.getValue() == spinnerValue); + colorChooser.waitStateOnQueue(jColorChooser -> (colorChooser.getColor().equals(expectedColor))); + } + + private void initializeSliderAndSpinner(int numberOfSlidersAndSpinners) { + for (int i = 0; i < numberOfSlidersAndSpinners; i++) { + sliders[i] = new JSliderOperator(colorChooserDialog, i); + spinners[i] = new JSpinnerOperator(colorChooserDialog, i); + } + } + + private void pushButtonAndWaitDialogClosed(JButtonOperator button) { + button.push(); + // Wait for the color chooser dialog to close. + colorChooserDialog.waitClosed(); + } } -private void checkResetButton(JButtonOperator jbo, Color testColor) throws Exception { -pushButtonAndInitialize(jbo); -Color initialColor = colorChooser.getColor(); -setAndWaitColor(testColor); -resetButton.push(); -waitJColorChooserColor(initialColor); -pushButtonAndWaitDialogClosed(okButton); -} - -private void checkAllColorChoosers(JButtonOperator jbo) throws Exception { -pushButtonAndInitialize(jbo); -checkHSV(); -checkHSL(); -checkRGB(); -checkCMYK(); -pushButtonAndWaitDialogClosed(okButton); -} - -private void waitJColorChooserColor(Color expectedColor) { -colorChooser.waitStateOnQueue(jColorChooser -> colorChooser.getColor().equals(expectedColor)); -} - -private void setAndWaitColor(Color color) { -colorChooser.setColor(color); -// Wait for the Color to be set -waitJColorChooserColor(color); -} - -private void resetColor() { -colorChooser.setColor(resetColor); -// Wait for the Color to be reset -waitJColorChooserColor(resetColor); -} - -private void checkHSV() { -tabOperator.selectPage(HSV); -initializeSliderAndSpinner(HSV_NUMBER_OF_SLIDERS_AND_SPINNERS); -resetColor(); -setAndCheckSlider(sliders[HSV_SATURATION_INDEX], 50, new Color(125, 62, 62)); -setAndCheckSlider(sliders[HSV_VALUE_INDEX], 80, new Color(204, 102, 102)); -setAndCheckSlider(sliders[HSV_HUE_INDEX], 50, new Color(204, 187, 102)); -setAndCheckSlider(sliders[HSV_TRANSPARENCY_INDEX], 50, new Color(204, 187, 102, 127)); -setAndCheckSpinner(spinners[HSV_SATURATION_INDEX], 25, new Color(204, 195, 153, 127)); -setAndCheckSpinner(spinners[HSV_VALUE_INDEX], 40, new Color(102, 97, 76, 127)); -setAndCheckSpinner(spinners[HSV_HUE_INDEX], 25, new Color(102, 87, 76, 127)); -setAndCheckSpinner(spinners[HSV_TRANSPARENCY_INDEX], 100, new Color(102, 87, 76, 0)); -} - -private void checkHSL() { -tabOperator.selectPage(HSL); -initializeSliderAndSpinner(HSL_NUMBER_OF_SLIDERS_AND_SPINNERS); -resetColor(); -setAndCheckSlider(sliders[HSL_SATURATION_INDEX], 50, new Color(187, 62, 62)); -setAndCheckSlider(sliders[HSL_LIGHTNESS_INDEX], 80, new Color(229, 178, 178)); -setAndCheckSlider(sliders[HSL_HUE_INDEX], 180, new Color(178, 229, 229)); -setAndCheckSlider(sliders[HSL_TRANSPARENCY_INDEX], 50, new Color(178, 229, 229, 127)); -setAndCheckSpinner(spinners[HSL_SATURATION_INDEX], 25, new Color(191, 216, 216, 127)); -setAndCheckSpinner(spinners[HSL_LIGHTNESS_INDEX], 40, new Color(76, 127, 127, 127)); -setAndCheckSpinner(spinners[HSL_HUE_INDEX], 25, new Color(127, 97, 76, 127)); -setAndCheckSpinner(spinners[HSL_TRANSPARENCY_INDEX], 50, new Color(127, 97, 76, 127)); -} - -private void checkRGB() { -String sampleColor = "111111"; -tabOperator.selectPage(RGB); -initializeSliderAndSpinner(RGB_NUMBER_OF_SLIDERS_AND_SPINNERS); -JTextFieldOperator colorCode = new JTextFieldOperator(colorChooserDialog, RGB_COLORCODE_TEXT_FIELD_INDEX); -resetColor(); -setAndCheckSlider(sliders[RGB_GREEN_INDEX], 50, new Color(125, 50, 125, 255)); -setAndCheckSlider(sliders[RGB_BLUE_INDEX], 80, new Color(125, 50, 80, 255)); -setAndCheckSlider(sliders[RGB_RED_INDEX], 50, new Color(50, 50, 80, 255)); -setAndCheckSlider(sliders[RGB_ALPHA_INDEX], 125, new Color(50, 50, 80, 125)); -setAndCheckSpinner(spinners[RGB_GREEN_INDEX], 25, new Color(50, 25, 80, 125)); -setAndCheckSpinner(spinners[RGB_BLUE_INDEX], 40, new Color(50, 25, 40, 125)); -setAndCheckSpinner(spinners[RGB_RED_INDEX], 25, new Color(25, 25, 40, 125)); -setAndCheckSpinner(spinners[RGB_ALPHA_INDEX], 255, new Color(25, 25, 40, 255)); - -colorCode.setText(sampleColor); -// Wait for the sampleColor to be set in the color code text field. -colorCode.waitText(sampleColor); -colorCode.getFocus(); -colorCode.pressKey(KeyEvent.VK_TAB); -// Wait for the color to be set -waitJColorChooserColor(new Color(17, 17, 17, 255)); -} - -private void checkCMYK() { -tabOperator.selectPage(CMYK); -initializeSliderAndSpinner(CMYK_NUMBER_OF_SLIDERS_AND_SPINNERS); -resetColor(); -setAndCheckSlider(sliders[CMYK_MAGENTA_INDEX], 50, new Color(125, 100, 125, 255)); -setAndCheckSlider(sliders[CMYK_YELLOW_INDEX], 80, new Color(125, 100, 85, 255)); -setAndCheckSlider(sliders[CMYK_CYAN_INDEX], 50, new Color(100, 100, 85, 255)); -setAndCheckSlider(sliders[CMYK_BLACK_INDEX], 50, new Color(164, 164, 140, 255)); -setAndCheckSlider(sliders[CMYK_ALPHA_INDEX], 125, new Color(164, 164, 140, 125)); -setAndCheckSpinner(spinners[CMYK_MAGENTA_INDEX], 25, new Color(164, 184, 140, 125)); -setAndCheckSpinner(spinners[CMYK_YELLOW_INDEX], 40, new Color(164, 184, 172, 125)); -setAndCheckSpinner(spinners[CMYK_CYAN_INDEX], 25, new Color(184, 184, 172, 125)); -setAndCheckSpinner(spinners[CMYK_BLACK_INDEX], 100, new Color(139, 139, 130, 125)); -setAndCheckSpinner(spinners[CMYK_ALPHA_INDEX], 255, new Color(139, 139, 130, 255)); -} - -private void setAndCheckSlider(JSliderOperator slider, int sliderValue, Color expectedColor) { -slider.setValue(sliderValue); -// Wait for slider to attain the specified value -slider.waitStateOnQueue(jSlider -> slider.getValue() == sliderValue); -colorChooser.waitStateOnQueue(jColorChooser -> (colorChooser.getColor().equals(expectedColor))); -} - -private void setAndCheckSpinner(JSpinnerOperator spinner, int spinnerValue, Color expectedColor) { -spinner.setValue(spinnerValue); -// Wait for spinner to attain the specified value -spinner.waitStateOnQueue(jSpinner -> (int) spinner.getValue() == spinnerValue); -colorChooser.waitStateOnQueue(jColorChooser -> (colorChooser.getColor().equals(expectedColor))); -} - -private void initializeSliderAndSpinner(int numberOfSlidersAndSpinners) { -for (int i = 0; i < numberOfSlidersAndSpinners; i++) { -sliders[i] = new JSliderOperator(colorChooserDialog, i); -spinners[i] = new JSpinnerOperator(colorChooserDialog, i); -} -} - -private void pushButtonAndWaitDialogClosed(JButtonOperator button) { -button.push(); -// Wait for the color chooser dialog to close. -colorChooserDialog.waitClosed(); -} -} diff -r c8ca09de211b -r 8538b1f28a71 test/jdk/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/colorchooser/BezierAnimationPanel.java --- a/test/jdk/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/colorchooser/BezierAnimationPanel.java Tue Jul 16 17:00:00 2019 -0700 +++ b/test/jdk/sanity/client/lib/SwingSet3/src/com/sun/swingset3/demos/colorchooser/BezierAnimationPanel.java Tue Jul 23 22:21:16 2019 -0700 @@ -35,220 +35,221 @@ import static com.sun.swingset3.demos.colorchooser.BezierAnimationPanel.BezierColor.*; /** -* BezierAnimationPanel -* -* @author Jim Graham -* @author Jeff Dinkins (removed dynamic setting changes, made swing friendly) -* @version 1.16 11/17/05 -*/ + * BezierAnimationPanel + * + * @author Jim Graham + * @author Jeff Dinkins (removed dynamic setting changes, made swing friendly) + * @version 1.16 11/17/05 + */ public class BezierAnimationPanel extends JPanel implements Runnable { -public static enum BezierColor { -BACKGROUND, OUTER, GRADIENT_A, GRADIENT_B -} + public static enum BezierColor { + BACKGROUND, OUTER, GRADIENT_A, GRADIENT_B + } + + private final Map colors = new Hashtable(); + + private GradientPaint gradient = null; + + private static final int NUMPTS = 6; + + private final float[] animpts = new float[NUMPTS * 2]; + + private final float[] deltas = new float[NUMPTS * 2]; + + private BufferedImage img; -private final Map colors = new Hashtable(); + private Thread anim; + + private final Object lock = new Object(); -private GradientPaint gradient = null; - -private static final int NUMPTS = 6; + /** + * BezierAnimationPanel Constructor + */ + public BezierAnimationPanel() { + setOpaque(true); -private final float[] animpts = new float[NUMPTS * 2]; + colors.put(BACKGROUND, new Color(0, 0, 153)); + colors.put(OUTER, new Color(255, 255, 255)); + colors.put(GRADIENT_A, new Color(255, 0, 101)); + colors.put(GRADIENT_B, new Color(255, 255, 0)); -private final float[] deltas = new float[NUMPTS * 2]; - -private BufferedImage img; + addHierarchyListener(new HierarchyListener() { + public void hierarchyChanged(HierarchyEvent e) { + if (isShowing()) { + start(); + } else { + stop(); + } + } + }); + } -private Thread anim; - -private final Object lock = new Object(); + public Color getBezierColor(BezierColor bezierColor) { + return colors.get(bezierColor); + } -/** -* BezierAnimationPanel Constructor -*/ -public BezierAnimationPanel() { -setOpaque(true); + public void setBezierColor(BezierColor bezierColor, Color value) { + if (value != null) { + colors.put(bezierColor, value); + } + } -colors.put(BACKGROUND, new Color(0, 0, 153)); -colors.put(OUTER, new Color(255, 255, 255)); -colors.put(GRADIENT_A, new Color(255, 0, 101)); -colors.put(GRADIENT_B, new Color(255, 255, 0)); + public void start() { + Dimension size = getSize(); + for (int i = 0; i < animpts.length; i += 2) { + animpts[i] = (float) (Math.random() * size.width); + animpts[i + 1] = (float) (Math.random() * size.height); + deltas[i] = (float) (Math.random() * 4.0 + 2.0); + deltas[i + 1] = (float) (Math.random() * 4.0 + 2.0); + if (animpts[i] > size.width / 6.0f) { + deltas[i] = -deltas[i]; + } + if (animpts[i + 1] > size.height / 6.0f) { + deltas[i + 1] = -deltas[i + 1]; + } + } + anim = new Thread(this); + anim.setPriority(Thread.MIN_PRIORITY); + anim.start(); + } -addHierarchyListener(new HierarchyListener() { -public void hierarchyChanged(HierarchyEvent e) { -if (isShowing()) { -start(); -} else { -stop(); -} -} -}); -} + public synchronized void stop() { + anim = null; + notify(); + } + + private static void animate(float[] pts, float[] deltas, int index, int limit) { + float newpt = pts[index] + deltas[index]; + if (newpt <= 0) { + newpt = -newpt; + deltas[index] = (float) (Math.random() * 3.0 + 2.0); + } else if (newpt >= (float) limit) { + newpt = 2.0f * limit - newpt; + deltas[index] = -(float) (Math.random() * 3.0 + 2.0); + } + pts[index] = newpt; + } + + public void run() { + Thread me = Thread.currentThread(); + while (getSize().width <= 0) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + return; + } + } -public Color getBezierColor(BezierColor bezierColor) { -return colors.get(bezierColor); -} + Graphics2D g2d = null; + Graphics2D bufferG2D = null; + BasicStroke solid = new BasicStroke(9.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 9.0f); + GeneralPath gp = new GeneralPath(GeneralPath.WIND_NON_ZERO); + int rule = AlphaComposite.SRC_OVER; + AlphaComposite opaque = AlphaComposite.SrcOver; + AlphaComposite blend = AlphaComposite.getInstance(rule, 0.9f); + AlphaComposite set = AlphaComposite.Src; + Dimension oldSize = getSize(); + Shape clippath = null; + while (anim == me) { + Dimension size = getSize(); + if (size.width != oldSize.width || size.height != oldSize.height) { + img = null; + clippath = null; + if (bufferG2D != null) { + bufferG2D.dispose(); + bufferG2D = null; + } + } + oldSize = size; -public void setBezierColor(BezierColor bezierColor, Color value) { -if (value != null) { -colors.put(bezierColor, value); -} -} + if (img == null) { + img = (BufferedImage) createImage(size.width, size.height); + } + + if (bufferG2D == null) { + bufferG2D = img.createGraphics(); + bufferG2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT); + bufferG2D.setClip(clippath); + } + g2d = bufferG2D; -public void start() { -Dimension size = getSize(); -for (int i = 0; i < animpts.length; i += 2) { -animpts[i] = (float) (Math.random() * size.width); -animpts[i + 1] = (float) (Math.random() * size.height); -deltas[i] = (float) (Math.random() * 4.0 + 2.0); -deltas[i + 1] = (float) (Math.random() * 4.0 + 2.0); -if (animpts[i] > size.width / 6.0f) { -deltas[i] = -deltas[i]; -} -if (animpts[i + 1] > size.height / 6.0f) { -deltas[i + 1] = -deltas[i + 1]; -} -} -anim = new Thread(this); -anim.setPriority(Thread.MIN_PRIORITY); -anim.start(); -} + float[] ctrlpts; + for (int i = 0; i < animpts.length; i += 2) { + animate(animpts, deltas, i, size.width); + animate(animpts, deltas, i + 1, size.height); + } + ctrlpts = animpts; + int len = ctrlpts.length; + gp.reset(); + float prevx = ctrlpts[len - 2]; + float prevy = ctrlpts[len - 1]; + float curx = ctrlpts[0]; + float cury = ctrlpts[1]; + float midx = (curx + prevx) / 2.0f; + float midy = (cury + prevy) / 2.0f; + gp.moveTo(midx, midy); + for (int i = 2; i <= ctrlpts.length; i += 2) { + float x1 = (midx + curx) / 2.0f; + float y1 = (midy + cury) / 2.0f; + prevx = curx; + prevy = cury; + if (i < ctrlpts.length) { + curx = ctrlpts[i]; + cury = ctrlpts[i + 1]; + } else { + curx = ctrlpts[0]; + cury = ctrlpts[1]; + } + midx = (curx + prevx) / 2.0f; + midy = (cury + prevy) / 2.0f; + float x2 = (prevx + midx) / 2.0f; + float y2 = (prevy + midy) / 2.0f; + gp.curveTo(x1, y1, x2, y2, midx, midy); + } + gp.closePath(); -public synchronized void stop() { -anim = null; -notify(); -} + synchronized (lock) { + g2d.setComposite(set); + g2d.setBackground(getBezierColor(BACKGROUND)); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + + // g2d.clearRect(bounds.x-5, bounds.y-5, bounds.x + bounds.width + // + 5, bounds.y + bounds.height + 5); + g2d.clearRect(0, 0, getWidth(), getHeight()); + + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setColor(getBezierColor(OUTER)); + g2d.setComposite(opaque); + g2d.setStroke(solid); + g2d.draw(gp); + g2d.setPaint(gradient); + + Rectangle bounds = gp.getBounds(); + + gradient = new GradientPaint(bounds.x, bounds.y, getBezierColor(GRADIENT_A), bounds.x + bounds.width, + bounds.y + bounds.height, getBezierColor(GRADIENT_B), true); -private static void animate(float[] pts, float[] deltas, int index, int limit) { -float newpt = pts[index] + deltas[index]; -if (newpt <= 0) { -newpt = -newpt; -deltas[index] = (float) (Math.random() * 3.0 + 2.0); -} else if (newpt >= (float) limit) { -newpt = 2.0f * limit - newpt; -deltas[index] = -(float) (Math.random() * 3.0 + 2.0); -} -pts[index] = newpt; -} + g2d.setComposite(blend); + g2d.fill(gp); + } + + repaint(); -public void run() { -Thread me = Thread.currentThread(); -while (getSize().width <= 0) { -try { -Thread.sleep(500); -} catch (InterruptedException e) { -return; -} + Thread.yield(); + } + if (g2d != null) { + g2d.dispose(); + } + } + + public void paint(Graphics g) { + synchronized (lock) { + Graphics2D g2d = (Graphics2D) g; + if (img != null) { + g2d.setComposite(AlphaComposite.Src); + g2d.drawImage(img, null, 0, 0); + } + } + } } -Graphics2D g2d = null; -Graphics2D bufferG2D = null; -BasicStroke solid = new BasicStroke(9.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 9.0f); -GeneralPath gp = new GeneralPath(GeneralPath.WIND_NON_ZERO); -int rule = AlphaComposite.SRC_OVER; -AlphaComposite opaque = AlphaComposite.SrcOver; -AlphaComposite blend = AlphaComposite.getInstance(rule, 0.9f); -AlphaComposite set = AlphaComposite.Src; -Dimension oldSize = getSize(); -Shape clippath = null; -while (anim == me) { -Dimension size = getSize(); -if (size.width != oldSize.width || size.height != oldSize.height) { -img = null; -clippath = null; -if (bufferG2D != null) { -bufferG2D.dispose(); -bufferG2D = null; -} -} -oldSize = size; - -if (img == null) { -img = (BufferedImage) createImage(size.width, size.height); -} - -if (bufferG2D == null) { -bufferG2D = img.createGraphics(); -bufferG2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT); -bufferG2D.setClip(clippath); -} -g2d = bufferG2D; - -float[] ctrlpts; -for (int i = 0; i < animpts.length; i += 2) { -animate(animpts, deltas, i, size.width); -animate(animpts, deltas, i + 1, size.height); -} -ctrlpts = animpts; -int len = ctrlpts.length; -gp.reset(); -float prevx = ctrlpts[len - 2]; -float prevy = ctrlpts[len - 1]; -float curx = ctrlpts[0]; -float cury = ctrlpts[1]; -float midx = (curx + prevx) / 2.0f; -float midy = (cury + prevy) / 2.0f; -gp.moveTo(midx, midy); -for (int i = 2; i <= ctrlpts.length; i += 2) { -float x1 = (midx + curx) / 2.0f; -float y1 = (midy + cury) / 2.0f; -prevx = curx; -prevy = cury; -if (i < ctrlpts.length) { -curx = ctrlpts[i]; -cury = ctrlpts[i + 1]; -} else { -curx = ctrlpts[0]; -cury = ctrlpts[1]; -} -midx = (curx + prevx) / 2.0f; -midy = (cury + prevy) / 2.0f; -float x2 = (prevx + midx) / 2.0f; -float y2 = (prevy + midy) / 2.0f; -gp.curveTo(x1, y1, x2, y2, midx, midy); -} -gp.closePath(); - -synchronized (lock) { -g2d.setComposite(set); -g2d.setBackground(getBezierColor(BACKGROUND)); -g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - -// g2d.clearRect(bounds.x-5, bounds.y-5, bounds.x + bounds.width -// + 5, bounds.y + bounds.height + 5); -g2d.clearRect(0, 0, getWidth(), getHeight()); - -g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); -g2d.setColor(getBezierColor(OUTER)); -g2d.setComposite(opaque); -g2d.setStroke(solid); -g2d.draw(gp); -g2d.setPaint(gradient); - -Rectangle bounds = gp.getBounds(); - -gradient = new GradientPaint(bounds.x, bounds.y, getBezierColor(GRADIENT_A), bounds.x + bounds.width, -bounds.y + bounds.height, getBezierColor(GRADIENT_B), true); - -g2d.setComposite(blend); -g2d.fill(gp); -} - -repaint(); - -Thread.yield(); -} -if (g2d != null) { -g2d.dispose(); -} -} - -public void paint(Graphics g) { -synchronized (lock) { -Graphics2D g2d = (Graphics2D) g; -if (img != null) { -g2d.setComposite(AlphaComposite.Src); -g2d.drawImage(img, null, 0, 0); -} -} -} -} \ No newline at end of file