/** displays the dialog if TRUE */
  public void setVisible(boolean b) {
    if (b) m_ReturnValue = JOptionPane.CANCEL_OPTION;

    super.setVisible(b);

    // free up memory
    if (b) m_Viewer.clear();
  }
  /** builds the dialog and all its components */
  protected void createDialog() {
    JPanel panel;
    JPanel panel2;
    final SqlViewerDialog dialog;

    dialog = this;
    setLayout(new BorderLayout());

    // sql panel
    m_Viewer = new SqlViewer(m_Parent);
    add(m_Viewer, BorderLayout.CENTER);

    panel2 = new JPanel(new BorderLayout());
    add(panel2, BorderLayout.SOUTH);

    // Buttons
    panel = new JPanel();
    panel.setLayout(new FlowLayout());
    panel2.add(panel, BorderLayout.EAST);
    m_ButtonOK.setMnemonic('O');
    panel.add(m_ButtonOK);
    m_ButtonOK.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            m_ReturnValue = JOptionPane.OK_OPTION;
            // remove listener, otherwise does the disposal of resultspanel
            // change the query again!
            m_Viewer.removeResultChangedListener(dialog);
            m_Viewer.saveSize();
            dialog.dispose();
          }
        });
    m_ButtonCancel.setMnemonic('C');
    panel.add(m_ButtonCancel);
    m_ButtonCancel.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            m_ReturnValue = JOptionPane.CANCEL_OPTION;
            // remove listener, otherwise does the disposal of resultspanel
            // change the query again!
            m_Viewer.removeResultChangedListener(dialog);
            m_Viewer.saveSize();
            dialog.dispose();
          }
        });

    addWindowListener(
        new WindowAdapter() {
          /** Invoked when a window is in the process of being closed. */
          public void windowClosing(WindowEvent e) {
            m_Viewer.saveSize();
          }
        });

    // current Query
    panel = new JPanel(new FlowLayout());
    panel2.add(panel, BorderLayout.CENTER);
    panel.add(m_LabelQuery);

    pack();
    getRootPane().setDefaultButton(m_ButtonOK);
    setResizable(true);

    // listener
    m_Viewer.addResultChangedListener(this);
  }