@Override
 public void setVisible(boolean visible) {
   if (!visible) {
     persistSettings(getShell());
   }
   super.setVisible(visible);
 }
  @Override
  public void setVisible(final boolean visible) {
    if (visible) {
      updateInput();

      if (fLayoutWorkaround) {
        fContentComposite.layout(true, true);
        fLayoutWorkaround = false;
      }
    }
    super.setVisible(visible);
  }
  @Override
  public void setVisible(final boolean visible) {
    if (visible) {
      updateInput();

      if (this.layoutWorkaround) {
        this.contentComposite.layout(true, true);
        this.layoutWorkaround = false;
      }

      if (Platform.WS_WIN32.equals(SWT.getPlatform())) {
        final Shell shell = getShell();
        if (shell != null) {
          shell.moveAbove(null);
        }
      }
    }
    super.setVisible(visible);
  }