JAL-4446 allow progress bar message to be changed whilst progress continues & todo...
authorJim Procter <jprocter@dundee.ac.uk>
Mon, 5 Aug 2024 17:01:47 +0000 (18:01 +0100)
committerJim Procter <jprocter@dundee.ac.uk>
Mon, 5 Aug 2024 17:01:47 +0000 (18:01 +0100)
src/jalview/gui/AlignFrame.java
src/jalview/gui/Desktop.java
src/jalview/gui/IProgressIndicator.java
src/jalview/gui/PCAPanel.java
src/jalview/gui/PaSiMapPanel.java
src/jalview/gui/ProgressBar.java
src/jalview/gui/StructureChooser.java
src/jalview/gui/WebserviceInfo.java

index c81a5de..f61c073 100644 (file)
@@ -1004,6 +1004,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     return null;
   }
 
+  public String getMessage(long id)
+  {
+    return progressBar.getMessage(id);
+  }
+
+  public void setProgressBarMessage(long id, String message)
+  {
+    progressBar.setProgressBarMessage(id, message);
+  }
+
   @Override
   public void registerHandler(final long id,
           final IProgressIndicatorHandler handler)
@@ -1022,6 +1032,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     return progressBar == null ? false : progressBar.operationInProgress();
   }
 
+  
+  
   /**
    * Sets the text of the status bar. Note that setting a null or empty value
    * will cause the status bar to be hidden, with possibly undesirable flicker
index 9c542a3..394ef65 100644 (file)
@@ -23,6 +23,7 @@ package jalview.gui;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.FontMetrics;
 import java.awt.Graphics;
@@ -2903,10 +2904,13 @@ public class Desktop extends jalview.jbgui.GDesktop
 
   /**
    * Progress bars managed by the IProgressIndicator method.
+   * TODO - delegate to jalview.gui.ProgressBar 
    */
   private Hashtable<Long, JPanel> progressBars;
 
   private Hashtable<Long, IProgressIndicatorHandler> progressBarHandlers;
+  
+  private Hashtable<Long, String> progressBarMessages;
 
   /*
    * (non-Javadoc)
@@ -2920,6 +2924,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     {
       progressBars = new Hashtable<>();
       progressBarHandlers = new Hashtable<>();
+      progressBarMessages = new Hashtable<>();
     }
 
     if (progressBars.get(Long.valueOf(id)) != null)
@@ -2934,6 +2939,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     else
     {
       progressBars.put(Long.valueOf(id), addProgressPanel(message));
+      progressBarMessages.put(id, message);
     }
   }
 
@@ -2994,6 +3000,36 @@ public class Desktop extends jalview.jbgui.GDesktop
     }
   }
 
+
+  @Override
+  public String getMessage(long id)
+  {
+    return progressBarMessages.get(id);
+  }
+  
+  /**
+   * change the text shown alongside a progress bar
+   * @param id
+   * @param message
+   */
+  @Override
+  public void setProgressBarMessage(long id,String message)
+  {
+    Container progBar = progressBars.get(id);
+    if (progBar == null || progBar.getComponentCount() == 0)
+    {
+      return;
+    }
+    for (Component component : progBar.getComponents())
+    {
+      if (component.getClass().equals(JLabel.class))
+      {
+        ((JLabel) component).setText(message);;
+        progBar.revalidate();
+      }
+    }
+  }
+  
   /**
    * 
    * @return true if any progress bars are still active
index 387236a..cb67b35 100644 (file)
@@ -65,4 +65,18 @@ public interface IProgressIndicator
    */
   public JProgressBar getProgressBar(long id);
 
+  /**
+   * get the initial message shown when the progress bar was created via setProgressBar
+   * @param id
+   * @return null or the message used
+   */
+  String getMessage(long id);
+
+  /**
+   * change the text shown alongside a progress bar
+   * @param id
+   * @param message
+   */
+  void setProgressBarMessage(long id, String message);
+
 }
index 091f79e..3f103e2 100644 (file)
@@ -785,4 +785,14 @@ public class PCAPanel extends GPCAPanel
   {
     return progressBar.getProgressBar(id);
   }
+
+  public String getMessage(long id)
+  {
+    return progressBar.getMessage(id);
+  }
+
+  public void setProgressBarMessage(long id, String message)
+  {
+    progressBar.setProgressBarMessage(id, message);
+  }
 }
index 7926efc..2a6d6a9 100644 (file)
@@ -622,58 +622,20 @@ public class PaSiMapPanel extends GPaSiMapPanel
     }
   }
 
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long)
-   */
-  @Override
+  
   public void setProgressBar(String message, long id)
   {
     progressBar.setProgressBar(message, id);
-    // if (progressBars == null)
-    // {
-    // progressBars = new Hashtable();
-    // progressBarHandlers = new Hashtable();
-    // }
-    //
-    // JPanel progressPanel;
-    // Long lId = Long.valueOf(id);
-    // GridLayout layout = (GridLayout) statusPanel.getLayout();
-    // if (progressBars.get(lId) != null)
-    // {
-    // progressPanel = (JPanel) progressBars.get(Long.valueOf(id));
-    // statusPanel.remove(progressPanel);
-    // progressBars.remove(lId);
-    // progressPanel = null;
-    // if (message != null)
-    // {
-    // statusBar.setText(message);
-    // }
-    // if (progressBarHandlers.contains(lId))
-    // {
-    // progressBarHandlers.remove(lId);
-    // }
-    // layout.setRows(layout.getRows() - 1);
-    // }
-    // else
-    // {
-    // progressPanel = new JPanel(new BorderLayout(10, 5));
-    //
-    // JProgressBar progressBar = new JProgressBar();
-    // progressBar.setIndeterminate(true);
-    //
-    // progressPanel.add(new JLabel(message), BorderLayout.WEST);
-    // progressPanel.add(progressBar, BorderLayout.CENTER);
-    //
-    // layout.setRows(layout.getRows() + 1);
-    // statusPanel.add(progressPanel);
-    //
-    // progressBars.put(lId, progressPanel);
-    // }
-    // // update GUI
-    // // setMenusForViewport();
-    // validate();
+  }
+
+  public String getMessage(long id)
+  {
+    return progressBar.getMessage(id);
+  }
+
+  public void setProgressBarMessage(long id, String message)
+  {
+    progressBar.setProgressBarMessage(id, message);
   }
 
   /*
index 9d2cb2c..e6ee641 100644 (file)
@@ -49,6 +49,8 @@ public class ProgressBar implements IProgressIndicator
    * Progress bars in progress, keyed by any arbitrary long value
    */
   Map<Long, JPanel> progressBars;
+  
+  Map<Long, String> progressBarMessages;
 
   /*
    * Optional handlers for the progress bars
@@ -92,6 +94,7 @@ public class ProgressBar implements IProgressIndicator
     this.statusBar = statusBar;
     this.progressBars = new Hashtable<>();
     this.progressBarHandlers = new Hashtable<>();
+    this.progressBarMessages = new Hashtable<>();
 
   }
 
@@ -153,13 +156,14 @@ public class ProgressBar implements IProgressIndicator
 
           JProgressBar progressBar = new JProgressBar();
           progressBar.setIndeterminate(true);
-
+          
           progressPanel.add(new JLabel(message), BorderLayout.WEST);
           progressPanel.add(progressBar, BorderLayout.CENTER);
 
           addRow(progressPanel);
 
           progressBars.put(id, progressPanel);
+          progressBarMessages.put(id, message);
         }
 
         refreshLayout();
@@ -271,6 +275,7 @@ public class ProgressBar implements IProgressIndicator
   /*
    *
    */
+  @Override
   public JProgressBar getProgressBar(long id)
   {
     Container progBar = progressBars.get(id);
@@ -287,5 +292,34 @@ public class ProgressBar implements IProgressIndicator
     }
     return null;
   }
+  
+  @Override
+  public String getMessage(long id)
+  {
+    return progressBarMessages.get(id);
+  }
+  
+  /**
+   * change the text shown alongside a progress bar
+   * @param id
+   * @param message
+   */
+  @Override
+  public void setProgressBarMessage(long id,String message)
+  {
+    Container progBar = progressBars.get(id);
+    if (progBar == null || progBar.getComponentCount() == 0)
+    {
+      return;
+    }
+    for (Component component : progBar.getComponents())
+    {
+      if (component.getClass().equals(JLabel.class))
+      {
+        ((JLabel) component).setText(message);;
+        refreshLayout();
+      }
+    }
+  }
 
 }
index ce043fe..8f13084 100644 (file)
@@ -1903,4 +1903,14 @@ public class StructureChooser extends GStructureChooser
   {
     return progressBar.getProgressBar(id);
   }
+
+  public String getMessage(long id)
+  {
+    return progressIndicator.getMessage(id);
+  }
+
+  public void setProgressBarMessage(long id, String message)
+  {
+    progressIndicator.setProgressBarMessage(id, message);
+  }
 }
index e464b2b..1a7b0a0 100644 (file)
@@ -952,4 +952,14 @@ public class WebserviceInfo extends GWebserviceInfo
   {
     return progressBar.getProgressBar(id);
   }
+
+  public String getMessage(long id)
+  {
+    return progressBar.getMessage(id);
+  }
+
+  public void setProgressBarMessage(long id, String message)
+  {
+    progressBar.setProgressBarMessage(id, message);
+  }
 }