From d51d79c2ad9bb34f185bfe85161b7733ff7c9874 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Mon, 9 Sep 2019 17:28:02 +0200 Subject: [PATCH] FileChooser: directoryIcon, fileIcon, computerIcon, hardDriveIcon and floppyDriveIcon added --- .../icons/FlatFileViewComputerIcon.java | 57 ++++++++++++++++++ .../icons/FlatFileViewDirectoryIcon.java | 48 +++++++++++++++ .../flatlaf/icons/FlatFileViewFileIcon.java | 52 ++++++++++++++++ .../icons/FlatFileViewFloppyDriveIcon.java | 57 ++++++++++++++++++ .../icons/FlatFileViewHardDriveIcon.java | 53 ++++++++++++++++ .../com/formdev/flatlaf/FlatLaf.properties | 15 +++++ flatlaf-core/svg/FileViewComputerIcon.svg | 6 ++ flatlaf-core/svg/FileViewDirectoryIcon.svg | 3 + flatlaf-core/svg/FileViewFileIcon.svg | 6 ++ flatlaf-core/svg/FileViewFloppyDriveIcon.svg | 6 ++ flatlaf-core/svg/FileViewHardDriveIcon.svg | 3 + flatlaf-core/svg/FlatLaf Icons.sketch | Bin 12810 -> 15567 bytes 12 files changed, 306 insertions(+) create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewComputerIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewDirectoryIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFileIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFloppyDriveIcon.java create mode 100644 flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewHardDriveIcon.java create mode 100644 flatlaf-core/svg/FileViewComputerIcon.svg create mode 100644 flatlaf-core/svg/FileViewDirectoryIcon.svg create mode 100644 flatlaf-core/svg/FileViewFileIcon.svg create mode 100644 flatlaf-core/svg/FileViewFloppyDriveIcon.svg create mode 100644 flatlaf-core/svg/FileViewHardDriveIcon.svg diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewComputerIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewComputerIcon.java new file mode 100644 index 00000000..48ae2fb2 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewComputerIcon.java @@ -0,0 +1,57 @@ +/* + * 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.Component; +import java.awt.Graphics2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; +import javax.swing.UIManager; + +/** + * "computer" icon for {@link javax.swing.JFileChooser}. + * + * @uiDefault FileView.icon.computerColor Color + * + * @author Karl Tauber + */ +public class FlatFileViewComputerIcon + extends FlatAbstractIcon +{ + public FlatFileViewComputerIcon() { + super( 16, 16, UIManager.getColor( "FileView.icon.computerColor" ) ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + + + + */ + + Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + path.append( new Rectangle2D.Float( 2, 3, 12, 8 ), false ); + path.append( new Rectangle2D.Float( 4, 5, 8, 4 ), false ); + g.fill( path ); + + g.fillRect( 2, 12, 12, 2 ); + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewDirectoryIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewDirectoryIcon.java new file mode 100644 index 00000000..6eea068d --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewDirectoryIcon.java @@ -0,0 +1,48 @@ +/* + * 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.Component; +import java.awt.Graphics2D; +import javax.swing.UIManager; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "directory" icon for {@link javax.swing.JFileChooser}. + * + * @uiDefault FileView.icon.directoryColor Color + * + * @author Karl Tauber + */ +public class FlatFileViewDirectoryIcon + extends FlatAbstractIcon +{ + public FlatFileViewDirectoryIcon() { + super( 16, 16, UIManager.getColor( "FileView.icon.directoryColor" ) ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + */ + + g.fill( FlatUIUtils.createPath( 1,2, 6,2, 8,4, 15,4, 15,13, 1,13 ) ); + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFileIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFileIcon.java new file mode 100644 index 00000000..fa9c1425 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFileIcon.java @@ -0,0 +1,52 @@ +/* + * 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.Component; +import java.awt.Graphics2D; +import javax.swing.UIManager; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "file" icon for {@link javax.swing.JFileChooser}. + * + * @uiDefault FileView.icon.fileColor Color + * + * @author Karl Tauber + */ +public class FlatFileViewFileIcon + extends FlatAbstractIcon +{ + public FlatFileViewFileIcon() { + super( 16, 16, UIManager.getColor( "FileView.icon.fileColor" ) ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + + + + */ + + g.fill( FlatUIUtils.createPath( 8,6, 8,1, 13,1, 13,15, 3,15, 3,6 ) ); + g.fill( FlatUIUtils.createPath( 3,5, 7,5, 7,1 ) ); + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFloppyDriveIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFloppyDriveIcon.java new file mode 100644 index 00000000..02cbcf9d --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewFloppyDriveIcon.java @@ -0,0 +1,57 @@ +/* + * 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.Component; +import java.awt.Graphics2D; +import java.awt.geom.Path2D; +import javax.swing.UIManager; +import com.formdev.flatlaf.ui.FlatUIUtils; + +/** + * "floppy drive" icon for {@link javax.swing.JFileChooser}. + * + * @uiDefault FileView.icon.floppyDriveColor Color + * + * @author Karl Tauber + */ +public class FlatFileViewFloppyDriveIcon + extends FlatAbstractIcon +{ + public FlatFileViewFloppyDriveIcon() { + super( 16, 16, UIManager.getColor( "FileView.icon.floppyDriveColor" ) ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + + + + */ + + Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + path.append( FlatUIUtils.createPath( 11,14, 11,11, 5,11, 5,14, 2,14, 2,2, 14,2, 14,14, 11,14 ), false ); + path.append( FlatUIUtils.createPath( 4,4, 4,8, 12,8, 12,4, 4,4 ), false ); + g.fill( path ); + + g.fillRect( 6, 12, 4, 2 ); + } +} diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewHardDriveIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewHardDriveIcon.java new file mode 100644 index 00000000..bc03c181 --- /dev/null +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatFileViewHardDriveIcon.java @@ -0,0 +1,53 @@ +/* + * 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.Component; +import java.awt.Graphics2D; +import java.awt.geom.Path2D; +import java.awt.geom.Rectangle2D; +import javax.swing.UIManager; + +/** + * "hard drive" icon for {@link javax.swing.JFileChooser}. + * + * @uiDefault FileView.icon.hardDriveColor Color + * + * @author Karl Tauber + */ +public class FlatFileViewHardDriveIcon + extends FlatAbstractIcon +{ + public FlatFileViewHardDriveIcon() { + super( 16, 16, UIManager.getColor( "FileView.icon.hardDriveColor" ) ); + } + + @Override + protected void paintIcon( Component c, Graphics2D g ) { + /* + + + + */ + + Path2D path = new Path2D.Float( Path2D.WIND_EVEN_ODD ); + path.append( new Rectangle2D.Float( 2, 6, 12, 4 ), false ); + path.append( new Rectangle2D.Float( 12, 8, 1, 1 ), false ); + path.append( new Rectangle2D.Float( 10, 8, 1, 1 ), false ); + g.fill( path ); + } +} 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 f9a11c90..5b20e059 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -119,6 +119,21 @@ FileChooser.icon.detailsViewColor=@icon FileChooser.icon.listViewColor=@icon +#---- FileView ---- + +FileView.directoryIcon=com.formdev.flatlaf.icons.FlatFileViewDirectoryIcon +FileView.fileIcon=com.formdev.flatlaf.icons.FlatFileViewFileIcon +FileView.computerIcon=com.formdev.flatlaf.icons.FlatFileViewComputerIcon +FileView.hardDriveIcon=com.formdev.flatlaf.icons.FlatFileViewHardDriveIcon +FileView.floppyDriveIcon=com.formdev.flatlaf.icons.FlatFileViewFloppyDriveIcon + +FileView.icon.directoryColor=@icon +FileView.icon.fileColor=@icon +FileView.icon.computerColor=@icon +FileView.icon.hardDriveColor=@icon +FileView.icon.floppyDriveColor=@icon + + #---- FormattedTextField ---- FormattedTextField.border=com.formdev.flatlaf.ui.FlatBorder diff --git a/flatlaf-core/svg/FileViewComputerIcon.svg b/flatlaf-core/svg/FileViewComputerIcon.svg new file mode 100644 index 00000000..910f29f3 --- /dev/null +++ b/flatlaf-core/svg/FileViewComputerIcon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-core/svg/FileViewDirectoryIcon.svg b/flatlaf-core/svg/FileViewDirectoryIcon.svg new file mode 100644 index 00000000..d01b4331 --- /dev/null +++ b/flatlaf-core/svg/FileViewDirectoryIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/flatlaf-core/svg/FileViewFileIcon.svg b/flatlaf-core/svg/FileViewFileIcon.svg new file mode 100644 index 00000000..81f06450 --- /dev/null +++ b/flatlaf-core/svg/FileViewFileIcon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-core/svg/FileViewFloppyDriveIcon.svg b/flatlaf-core/svg/FileViewFloppyDriveIcon.svg new file mode 100644 index 00000000..e07ed776 --- /dev/null +++ b/flatlaf-core/svg/FileViewFloppyDriveIcon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/flatlaf-core/svg/FileViewHardDriveIcon.svg b/flatlaf-core/svg/FileViewHardDriveIcon.svg new file mode 100644 index 00000000..7dce2914 --- /dev/null +++ b/flatlaf-core/svg/FileViewHardDriveIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/flatlaf-core/svg/FlatLaf Icons.sketch b/flatlaf-core/svg/FlatLaf Icons.sketch index 0f1539f7fa39eee9173d9a49ff486da80105b746..29901de5540067c54f2530581dcae28b0222c243 100644 GIT binary patch delta 14657 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