meta-for JWindow also as JFrame {

  static IProgressShower tempProgressBar_addToWindowIfPossible(JWindow window, S text, double total default 1) {
    if (!isVisibleWindow(window)) ret tempProgressBar(text, total);
    
    JProgressBar bar = jProgressBarWithText(iround(total), text);
    var closeable = tempAddToWindow(window,
      withMargin(jCenteredRaisedSection(text, bar)));
    
    ret new IProgressShower {
      public void setValue(double value) {
        setProgressBarValue(bar, iround(value));
      }
      
      public void setTotal(double total) {
        setProgressBarTotal(bar, iround(total));
      }
      
      public void setText(S text) {
        setProgressBarText(bar, print(text));
      }
      
      public void close {
        _close(closeable);
      }
    };
  }
  
}