From dff4700bcdd2da1b5345721f46f77a12f8935816 Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 4 Aug 2020 12:32:26 +0200 Subject: [PATCH] The table dialog opens the AllSolutionsDialog in a more convenient way. --- .../gui/components/table/AllSolutionsDialog.java | 11 +++++++++-- .../digital/gui/components/table/TableDialog.java | 6 +++--- 2 files changed, 12 insertions(+), 5 deletions(-) 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 1063c1a1b..1bf14be6b 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 @@ -61,12 +61,19 @@ public class AllSolutionsDialog extends JDialog { /** * Is called from table dialog if this dialog is needed. * - * @param needed true if needed + * @param needed true if needed + * @param tableDialogBounds the table dialogs bounds */ - public void setNeeded(boolean needed) { + public void setNeeded(boolean needed, Rectangle tableDialogBounds) { this.needed = needed; if (!userHasClosed) { setVisible(needed); + int x = (int) (tableDialogBounds.x - (getWidth() - tableDialogBounds.getWidth()) / 2); + int y = tableDialogBounds.y + tableDialogBounds.height + 10; + if (getHeight() < tableDialogBounds.y - 10) { + y = tableDialogBounds.y - getHeight() - 10; + } + setLocation(x, y); if (needed && reopenAction != null) reopenAction.setEnabled(false); } 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 1a8fed654..c65fcb950 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 @@ -909,17 +909,17 @@ public class TableDialog extends JDialog { switch (expressions.size()) { case 0: statusBar.setVisible(false); - allSolutionsDialog.setNeeded(false); + allSolutionsDialog.setNeeded(false, TableDialog.this.getBounds()); break; case 1: statusBar.setVisible(true); statusBar.setExpression(expressions.get(0)); - allSolutionsDialog.setNeeded(false); + allSolutionsDialog.setNeeded(false, TableDialog.this.getBounds()); break; default: statusBar.setVisible(false); allSolutionsDialog.setExpressions(expressions); - allSolutionsDialog.setNeeded(true); + allSolutionsDialog.setNeeded(true, TableDialog.this.getBounds()); toFront(); } });