From 36022c044157067c58da23f5de56e4fdce2cc118 Mon Sep 17 00:00:00 2001
From: Radek Oslejsek <oslejsek@fi.muni.cz>
Date: Mon, 19 Oct 2020 18:35:09 +0200
Subject: [PATCH] Simplified dependency on java.swing

---
 .../analyst/symmetry/SymmetryEstimator.java   | 46 ++++++++++++-------
 .../fidentis/analyst/gui/SymmetryPanel.java   |  5 +-
 2 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java
index 98bd7a3b..0507e945 100644
--- a/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java
+++ b/Comparison/src/main/java/cz/fidentis/analyst/symmetry/SymmetryEstimator.java
@@ -15,6 +15,11 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.ProgressMonitor;
 import javax.swing.UIManager;
+//import javax.swing.ImageIcon;
+//import javax.swing.JOptionPane;
+//import javax.swing.JPanel;
+//import javax.swing.ProgressMonitor;
+//import javax.swing.UIManager;
 import javax.vecmath.Vector3d;
 
 /**
@@ -35,7 +40,7 @@ public class SymmetryEstimator {
     
     private List<MeshTriangle> triangles; // Helping array of triangles computed from corner table 
     
-    private JPanel panel; // panel for configuration of symmetry counting 
+    //private JPanel panel; // panel for configuration of symmetry counting 
     
     private final Config config;
     
@@ -82,17 +87,17 @@ public class SymmetryEstimator {
      * 
      * @return panel for configuration of symmetry counting 
      */
-    public JPanel getPanel() {
-        return panel;
-    }
+    //public JPanel getPanel() {
+    //    return panel;
+    //}
 
     /**
      * 
      * @param panel new panel for configuration of symmetry counting 
      */
-    public void setPanel(JPanel panel) {
-        this.panel = panel;
-    }
+    //public void setPanel(JPanel panel) {
+    //    this.panel = panel;
+    //}
     
     /**
      * 
@@ -116,11 +121,12 @@ public class SymmetryEstimator {
     
     /**
      * Computes the approximate plane of symmetry.
+     * @param panel parrent window for the progress window (can be null)
      * @return approximate plane of symmtetry
      */
-    public Plane getApproxSymmetryPlane() {
+    public Plane getApproxSymmetryPlane(JPanel panel) {
         
-        UIManager.put("ProgressMonitor.progressText", "Counting symmetry...");
+        ///UIManager.put("ProgressMonitor.progressText", "Counting symmetry...");
  
         ArrayList<ApproxSymmetryPlane> planes = new ArrayList<>();
         //List<Vector3d> normals = calculateNormals();
@@ -162,9 +168,11 @@ public class SymmetryEstimator {
         Plane plane = new Plane(0, 0, 0, 0);
         int lastVotes = 0;
         
-        ProgressMonitor progressMonitor;
-        progressMonitor = new ProgressMonitor(panel, "Cunting...",
-                "Steps", 0, significantPoints.size());
+        ProgressMonitor progressMonitor = null;
+        if (panel != null) {
+            UIManager.put("ProgressMonitor.progressText", "Counting symmetry...");
+            progressMonitor = new ProgressMonitor(panel, "Counting...", "Steps", 0, significantPoints.size());
+        }
         
         double onePercent = significantCurvatures.size() / 100.0;
         double percentsPerStep = 1 / onePercent;
@@ -220,8 +228,10 @@ public class SymmetryEstimator {
                     }
                 }
             }
-            progressMonitor.setNote("Task step: " + (int) ((i + 1) * percentsPerStep));
-            progressMonitor.setProgress(i);
+            if (panel != null) {
+                progressMonitor.setNote("Task step: " + (int) ((i + 1) * percentsPerStep));
+                progressMonitor.setProgress(i);
+            }
         }
         
         Collections.sort(planes);
@@ -253,10 +263,12 @@ public class SymmetryEstimator {
         if (config.isAveraging()){
             plane = finalPlane;
         }
-        JOptionPane.showMessageDialog(panel, "Symmetry estimate done.", "Done", 0,
-                new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportedModel.png")));
+        if (panel != null) {
+            JOptionPane.showMessageDialog(panel, "Symmetry estimate done.", "Done", 0,
+                   new ImageIcon(getClass().getResource("/cz/fidentis/analyst/gui/resources/exportedModel.png")));
 
-        progressMonitor.close();
+            progressMonitor.close();
+        }
         return plane;
     }
     
diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java b/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java
index 4e85f9e3..cbb2d2bd 100644
--- a/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java
+++ b/GUI/src/main/java/cz/fidentis/analyst/gui/SymmetryPanel.java
@@ -11,6 +11,8 @@ import javax.swing.ImageIcon;
 import javax.swing.JOptionPane;
 import javax.swing.JSlider;
 import javax.swing.JTextField;
+import javax.swing.ProgressMonitor;
+import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
 
 /**
@@ -155,8 +157,7 @@ public final class SymmetryPanel extends javax.swing.JPanel {
         MeshModel model = new MeshModel();
         canvas.changeModel(canvas.getLoadedModel());
         symCounter = new SymmetryEstimator(canvas.getModel().getFacets().get(0), config);
-        symCounter.setPanel(this);
-        finalPlane = symCounter.getApproxSymmetryPlane();
+        finalPlane = symCounter.getApproxSymmetryPlane(this);
         SymmetryEstimator counted = symCounter.mergeWithPlane(finalPlane);
         model.addFacet(counted.getFacet());
         
-- 
GitLab