From 8957a87bcf01d72a7beaa28b3a433dcb2e2ed100 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 11 May 2017 21:38:13 +0200 Subject: [PATCH] added a screen resolution dependant JFileChooser --- .../java/de/neemann/digital/gui/Main.java | 4 +-- .../digital/gui/components/EditorFactory.java | 7 ++-- .../gui/components/data/DataSetDialog.java | 3 +- .../components/table/AllSolutionsDialog.java | 3 +- .../gui/components/table/TableDialog.java | 11 +++--- .../java/de/neemann/gui/MyFileChooser.java | 36 +++++++++++++++++++ 6 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 src/main/java/de/neemann/gui/MyFileChooser.java diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index a7732091a..89c4ba47d 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -906,7 +906,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS if (filename != null) folder = filename.getParentFile(); - JFileChooser fileChooser = new JFileChooser(folder); + JFileChooser fileChooser = new MyFileChooser(folder); fileChooser.setFileFilter(new FileNameExtensionFilter("Circuit", "dig")); return fileChooser; } @@ -1034,7 +1034,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); if (filename != null) fc.setSelectedFile(SaveAsHelper.checkSuffix(filename, suffix)); diff --git a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java index 6b7826b3c..00bab2b26 100644 --- a/src/main/java/de/neemann/digital/gui/components/EditorFactory.java +++ b/src/main/java/de/neemann/digital/gui/components/EditorFactory.java @@ -15,6 +15,7 @@ import de.neemann.digital.lang.Lang; import de.neemann.digital.testing.TestData; import de.neemann.gui.ErrorMessage; import de.neemann.gui.LineBreaker; +import de.neemann.gui.MyFileChooser; import de.neemann.gui.ToolTipAction; import de.neemann.gui.language.Bundle; import de.neemann.gui.language.Language; @@ -267,7 +268,7 @@ public final class EditorFactory { JButton button = new JButton(new AbstractAction("...") { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(FileEditor.this.getValue()); + JFileChooser fc = new MyFileChooser(FileEditor.this.getValue()); if (fc.showOpenDialog(panel) == JFileChooser.APPROVE_OPTION) textField.setText(fc.getSelectedFile().getPath()); } @@ -323,7 +324,7 @@ public final class EditorFactory { panel.add(new ToolTipAction(Lang.get("btn_load")) { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); fc.setSelectedFile(attr.getFile(ROM.LAST_DATA_FILE_KEY)); fc.setFileFilter(new FileNameExtensionFilter("hex", "hex")); if (fc.showOpenDialog(panel) == JFileChooser.APPROVE_OPTION) { @@ -353,7 +354,7 @@ public final class EditorFactory { panel.add(new ToolTipAction(Lang.get("btn_save")) { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); fc.setSelectedFile(attr.getFile(ROM.LAST_DATA_FILE_KEY)); fc.setFileFilter(new FileNameExtensionFilter("hex", "hex")); new SaveAsHelper(panel, fc, "hex").checkOverwrite( diff --git a/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java b/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java index 2dd88e49d..e3096b131 100644 --- a/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/data/DataSetDialog.java @@ -8,6 +8,7 @@ import de.neemann.digital.gui.SaveAsHelper; import de.neemann.digital.gui.components.OrderMerger; import de.neemann.digital.gui.sync.Sync; import de.neemann.digital.lang.Lang; +import de.neemann.gui.MyFileChooser; import de.neemann.gui.ToolTipAction; import javax.swing.*; @@ -83,7 +84,7 @@ public class DataSetDialog extends JDialog implements ModelStateObserver { file.add(new ToolTipAction(Lang.get("menu_saveData")) { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fileChooser = new JFileChooser(); + JFileChooser fileChooser = new MyFileChooser(); fileChooser.setFileFilter(new FileNameExtensionFilter("Comma Separated Values", "csv")); new SaveAsHelper(DataSetDialog.this, fileChooser, "csv") .checkOverwrite(file -> dataSet.saveCSV(file)); diff --git a/src/main/java/de/neemann/digital/gui/components/table/AllSolutionsDialog.java b/src/main/java/de/neemann/digital/gui/components/table/AllSolutionsDialog.java index d2b6e5e50..9ae8c40dc 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/AllSolutionsDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/AllSolutionsDialog.java @@ -1,6 +1,7 @@ package de.neemann.digital.gui.components.table; import de.neemann.digital.lang.Lang; +import de.neemann.gui.Screen; import javax.swing.*; import java.awt.*; @@ -28,7 +29,7 @@ public class AllSolutionsDialog extends JDialog { textPane.setFont(font); textPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); textPane.setEditable(false); - textPane.setPreferredSize(new Dimension(600, 400)); + textPane.setPreferredSize(Screen.getInstance().scale(new Dimension(600, 400))); getContentPane().add(new JScrollPane(textPane)); pack(); diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java index eb122f370..a93fa0c2a 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java @@ -38,6 +38,7 @@ import de.neemann.digital.gui.components.AttributeDialog; import de.neemann.digital.gui.components.ElementOrderer; import de.neemann.digital.lang.Lang; import de.neemann.gui.ErrorMessage; +import de.neemann.gui.MyFileChooser; import de.neemann.gui.Screen; import de.neemann.gui.ToolTipAction; @@ -249,7 +250,7 @@ public class TableDialog extends JDialog { fileMenu.add(new ToolTipAction(Lang.get("menu_open")) { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); if (TableDialog.this.filename != null) fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, "tru")); if (fc.showOpenDialog(TableDialog.this) == JFileChooser.APPROVE_OPTION) { @@ -268,7 +269,7 @@ public class TableDialog extends JDialog { fileMenu.add(new ToolTipAction(Lang.get("menu_save")) { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); if (TableDialog.this.filename != null) fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, "tru")); @@ -299,7 +300,7 @@ public class TableDialog extends JDialog { fileMenu.add(new ToolTipAction(Lang.get("menu_table_exportHex")) { @Override public void actionPerformed(ActionEvent e) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); if (TableDialog.this.filename != null) fc.setSelectedFile(SaveAsHelper.checkSuffix(TableDialog.this.filename, "hex")); new SaveAsHelper(TableDialog.this, fc, "hex") @@ -504,7 +505,7 @@ public class TableDialog extends JDialog { else filename = SaveAsHelper.checkSuffix(filename, suffix); - JFileChooser fileChooser = new JFileChooser(); + JFileChooser fileChooser = new MyFileChooser(); fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", suffix)); fileChooser.setSelectedFile(filename); if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { @@ -544,7 +545,7 @@ public class TableDialog extends JDialog { try { File cuplPath; if (filename == null) { - JFileChooser fc = new JFileChooser(); + JFileChooser fc = new MyFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fc.setDialogTitle(Lang.get("msg_selectAnEmptyFolder")); if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { diff --git a/src/main/java/de/neemann/gui/MyFileChooser.java b/src/main/java/de/neemann/gui/MyFileChooser.java new file mode 100644 index 000000000..bd847732d --- /dev/null +++ b/src/main/java/de/neemann/gui/MyFileChooser.java @@ -0,0 +1,36 @@ +package de.neemann.gui; + +import javax.swing.*; +import java.awt.*; +import java.io.File; + +/** + * File chooser that fixes the window size issues. + * Created by hneemann on 11.05.17. + */ +public class MyFileChooser extends JFileChooser { + + /** + * Create a new instance + */ + public MyFileChooser() { + super(); + matchScreenSize(); + } + + /** + * Create a new instance + * + * @param folder the folder to use + */ + public MyFileChooser(File folder) { + super(folder); + matchScreenSize(); + } + + private void matchScreenSize() { + if (Screen.getInstance().getScaling() != 1) + setPreferredSize(Screen.getInstance().scale(new Dimension(505, 326))); + } + +}