From c097775c405a9df118a693a919da17e8b17a0f20 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 6 Sep 2019 15:02:18 +0200 Subject: [PATCH] OptionPane: error, information, question and warning icons added SVGO options convertShapeToPath and convertPathData disabled --- .../icons/FlatOptionPaneAbstractIcon.java | 59 ++++++++++++++ .../icons/FlatOptionPaneErrorIcon.java | 60 +++++++++++++++ .../icons/FlatOptionPaneInformationIcon.java | 60 +++++++++++++++ .../icons/FlatOptionPaneQuestionIcon.java | 72 ++++++++++++++++++ .../icons/FlatOptionPaneWarningIcon.java | 63 +++++++++++++++ .../formdev/flatlaf/FlatDarkLaf.properties | 9 +++ .../com/formdev/flatlaf/FlatLaf.properties | 8 ++ .../formdev/flatlaf/FlatLightLaf.properties | 9 +++ .../formdev/flatlaf/FlatTestLaf.properties | 9 +++ flatlaf-core/svg/FlatLaf Icons.sketch | Bin 3809 -> 7861 bytes flatlaf-core/svg/OptionPaneErrorIcon.svg | 7 ++ .../svg/OptionPaneInformationIcon.svg | 7 ++ flatlaf-core/svg/OptionPaneQuestionIcon.svg | 7 ++ flatlaf-core/svg/OptionPaneWarningIcon.svg | 7 ++ 14 files changed, 377 insertions(+) create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneAbstractIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneErrorIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneInformationIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneQuestionIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneWarningIcon.java create mode 100644 flatlaf-core/svg/OptionPaneErrorIcon.svg create mode 100644 flatlaf-core/svg/OptionPaneInformationIcon.svg create mode 100644 flatlaf-core/svg/OptionPaneQuestionIcon.svg create mode 100644 flatlaf-core/svg/OptionPaneWarningIcon.svg diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneAbstractIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneAbstractIcon.java new file mode 100644 index 00000000..0e748e80 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneAbstractIcon.java @@ -0,0 +1,59 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.icons; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.geom.Path2D; +import javax.swing.UIManager; + +/** + * Base class for icons for {@link javax.swing.JOptionPane}. + * + * @uiDefault OptionPane.icon.foreground Color + * + * @author Karl Tauber + */ +public abstract class FlatOptionPaneAbstractIcon + extends FlatAbstractIcon +{ + protected final Color foreground = UIManager.getColor( "OptionPane.icon.foreground" ); + + protected FlatOptionPaneAbstractIcon( String colorKey ) { + super( 32, 32, UIManager.getColor( colorKey ) ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + if( foreground != null ) { + g.fill( createOutside() ); + + g.setColor( foreground ); + g.fill( createInside() ); + } else { + Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + path.append( createOutside(), false ); + path.append( createInside(), false ); + g.fill( path ); + } + } + + protected abstract Shape createOutside(); + protected abstract Shape createInside(); +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneErrorIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneErrorIcon.java new file mode 100644 index 00000000..2efd8c0a --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneErrorIcon.java @@ -0,0 +1,60 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.icons; + +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; + +/** + * "Error" icon for {@link javax.swing.JOptionPane}. + * + * @uiDefault OptionPane.icon.errorColor Color + * + * @author Karl Tauber + */ +public class FlatOptionPaneErrorIcon + extends FlatOptionPaneAbstractIcon +{ + public FlatOptionPaneErrorIcon() { + super( "OptionPane.icon.errorColor" ); + } + + /* + + + + + + + + */ + + @Override + protected Shape createOutside() { + return new Ellipse2D.Float( 2, 2, 28, 28 ); + } + + @Override + protected Shape createInside() { + Path2D inside = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + inside.append( new Rectangle2D.Float( 14, 7, 4, 11 ), false ); + inside.append( new Rectangle2D.Float( 14, 21, 4, 4 ), false ); + return inside; + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneInformationIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneInformationIcon.java new file mode 100644 index 00000000..7d45dabf --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneInformationIcon.java @@ -0,0 +1,60 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.icons; + +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; + +/** + * "Information" icon for {@link javax.swing.JOptionPane}. + * + * @uiDefault OptionPane.icon.informationColor Color + * + * @author Karl Tauber + */ +public class FlatOptionPaneInformationIcon + extends FlatOptionPaneAbstractIcon +{ + public FlatOptionPaneInformationIcon() { + super( "OptionPane.icon.informationColor" ); + } + + /* + + + + + + + + */ + + @Override + protected Shape createOutside() { + return new Ellipse2D.Float( 2, 2, 28, 28 ); + } + + @Override + protected Shape createInside() { + Path2D inside = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + inside.append( new Rectangle2D.Float( 14, 14, 4, 11 ), false ); + inside.append( new Rectangle2D.Float( 14, 7, 4, 4 ), false ); + return inside; + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneQuestionIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneQuestionIcon.java new file mode 100644 index 00000000..9994ace8 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneQuestionIcon.java @@ -0,0 +1,72 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.icons; + +import java.awt.Shape; +import java.awt.geom.Ellipse2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; + +/** + * "Question" icon for {@link javax.swing.JOptionPane}. + * + * @uiDefault OptionPane.icon.questionColor Color + * + * @author Karl Tauber + */ +public class FlatOptionPaneQuestionIcon + extends FlatOptionPaneAbstractIcon +{ + public FlatOptionPaneQuestionIcon() { + super( "OptionPane.icon.questionColor" ); + } + + /* + + + + + + + + */ + + @Override + protected Shape createOutside() { + return new Ellipse2D.Float( 2, 2, 28, 28 ); + } + + @Override + protected Shape createInside() { + Path2D q = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + q.moveTo( 14, 20 ); + q.lineTo( 18, 20 ); + q.curveTo( 18, 16, 23, 16, 23, 12 ); + q.curveTo( 23, 8, 20, 6, 16, 6 ); + q.curveTo( 12, 6, 9, 8, 9, 12 ); + q.curveTo( 9, 12, 13, 12, 13, 12 ); + q.curveTo( 13, 10, 14, 9, 16, 9 ); + q.curveTo( 18, 9, 19, 10, 19, 12 ); + q.curveTo( 19, 15, 14, 15, 14, 20 ); + q.closePath(); + + Path2D inside = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + inside.append( new Rectangle2D.Float( 14, 22, 4, 4 ), false ); + inside.append( q, false ); + return inside; + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneWarningIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneWarningIcon.java new file mode 100644 index 00000000..2c4ec17a --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatOptionPaneWarningIcon.java @@ -0,0 +1,63 @@ +/* + * Copyright 2019 FormDev Software GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.formdev.flatlaf.icons; + +import java.awt.Shape; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; + +/** + * "Warning" icon for {@link javax.swing.JOptionPane}. + * + * @uiDefault OptionPane.icon.warningColor Color + * + * @author Karl Tauber + */ +public class FlatOptionPaneWarningIcon + extends FlatOptionPaneAbstractIcon +{ + public FlatOptionPaneWarningIcon() { + super( "OptionPane.icon.warningColor" ); + } + + /* + + + + + + + + */ + + @Override + protected Shape createOutside() { + Path2D outside = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + outside.moveTo( 16, 2 ); + outside.lineTo( 31, 28 ); + outside.lineTo( 1, 28 ); + return outside; + } + + @Override + protected Shape createInside() { + Path2D inside = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + inside.append( new Rectangle2D.Float( 14, 10, 4, 8 ), false ); + inside.append( new Rectangle2D.Float( 14, 21, 4, 4 ), false ); + return inside; + } +} diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties index 81a540e7..9fc537a8 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties @@ -131,6 +131,15 @@ MenuItemCheckBox.icon.checkmarkColor=A7A7A7 MenuItemCheckBox.icon.disabledCheckmarkColor=606060 +#---- OptionPane ---- + +OptionPane.icon.errorColor=C75450 +OptionPane.icon.informationColor=3592C4 +OptionPane.icon.questionColor=3592C4 +OptionPane.icon.warningColor=F0A732 +OptionPane.icon.foreground=null + + #---- PopupMenu ---- PopupMenu.borderColor=515151 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index 4ef71a53..caf768be 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -128,6 +128,14 @@ MenuItem.border=com.formdev.flatlaf.ui.FlatMarginBorder MenuItem.arrowIcon=com.formdev.flatlaf.icons.FlatMenuItemArrowIcon +#---- OptionPane ---- + +OptionPane.errorIcon=com.formdev.flatlaf.icons.FlatOptionPaneErrorIcon +OptionPane.informationIcon=com.formdev.flatlaf.icons.FlatOptionPaneInformationIcon +OptionPane.questionIcon=com.formdev.flatlaf.icons.FlatOptionPaneQuestionIcon +OptionPane.warningIcon=com.formdev.flatlaf.icons.FlatOptionPaneWarningIcon + + #---- PasswordField ---- PasswordField.border=com.formdev.flatlaf.ui.FlatBorder diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties index da6b23cd..a408469c 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties @@ -131,6 +131,15 @@ MenuItemCheckBox.icon.checkmarkColor=4D89C9 MenuItemCheckBox.icon.disabledCheckmarkColor=ABABAB +#---- OptionPane ---- + +OptionPane.icon.errorColor=DB5860 +OptionPane.icon.informationColor=389FD6 +OptionPane.icon.questionColor=389FD6 +OptionPane.icon.warningColor=EDA200 +OptionPane.icon.foreground=null + + #---- PopupMenu ---- PopupMenu.borderColor=cdcdcd diff --git a/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties b/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties index 8c785457..38587305 100644 --- a/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties +++ b/flatlaf-core/src/test/resources/com/formdev/flatlaf/FlatTestLaf.properties @@ -126,6 +126,15 @@ MenuItemCheckBox.icon.checkmarkColor=4D89C9 MenuItemCheckBox.icon.disabledCheckmarkColor=ABABAB +#---- OptionPane ---- + +OptionPane.icon.errorColor=ff0000 +OptionPane.icon.informationColor=00ff00 +OptionPane.icon.questionColor=0000ff +OptionPane.icon.warningColor=ffcc00 +OptionPane.icon.foreground=ffffff + + #---- PopupMenu ---- PopupMenu.borderColor=0000ff diff --git a/flatlaf-core/svg/FlatLaf Icons.sketch b/flatlaf-core/svg/FlatLaf Icons.sketch index 6193699ff0da649703fa48d1674dff55b7e9659f..4f5261a286739734b28a8d00d4ac48e2c348eadd 100644 GIT binary patch delta 7292 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 delta 3190 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 + + + + + + diff --git a/flatlaf-core/svg/OptionPaneInformationIcon.svg b/flatlaf-core/svg/OptionPaneInformationIcon.svg new file mode 100644 index 00000000..f418a778 --- /dev/null +++ b/flatlaf-core/svg/OptionPaneInformationIcon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-core/svg/OptionPaneQuestionIcon.svg b/flatlaf-core/svg/OptionPaneQuestionIcon.svg new file mode 100644 index 00000000..a4de4ac0 --- /dev/null +++ b/flatlaf-core/svg/OptionPaneQuestionIcon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/flatlaf-core/svg/OptionPaneWarningIcon.svg b/flatlaf-core/svg/OptionPaneWarningIcon.svg new file mode 100644 index 00000000..30a91c7a --- /dev/null +++ b/flatlaf-core/svg/OptionPaneWarningIcon.svg @@ -0,0 +1,7 @@ + + + + + + +