🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.api
Article #3520

Modeless Dialog Box

#3520
From: asok
Date: Sat, 13 Dec 1997 00:00
109 lines
3326 bytes
This is a multi-part message in MIME format.

--------------7BA83D2B59B3
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

When I make a dialog box (one message label and one button) modeless,
the button never fires any event. I want to create a dialog box which
displays a changing message - say number of records read, etc. and has a
cancel button to abort the process. I am able to reset the message
periodically, but when I click on the button, nothing happens. If I make
the dialog box modal, the button works but the system get stuck until I
click the button.

I am attaching snippets of the code. Can any one please advise?

--------------7BA83D2B59B3
Content-Type: text/plain; charset=us-ascii; name="MyClass1.java"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="MyClass1.java"

// excerpts from the main routine
package os.prompt;
        .
        .
        .
        .
    Tools.messageBegin("title","message");
    for (int j = 0;j <10;j++)
    {
     for (int i=0;i<delay;i++);
     boolean x = Tools.messageChange("new message"+j);
     if (!x)
        break;
    }
    for (int i=0;i<delay;i++);
    Tools.messageEnd();
        .
        .
        .

// Tools class
package os.prompt;
import java.awt.*;

public class Tools {
  public static StatusBox statusBox;
  public static StatusMessage statusMessage;
  public static Frame msgFrame;

  public static void messageBegin(String t, String m){
    msgFrame = new Frame();
    statusBox = new StatusBox(msgFrame, t, m);
    statusMessage = new StatusMessage(m);
    statusMessage.addObserver(statusBox);
  }
  public static boolean messageChange(String m){
    boolean ret = statusBox.isVisible();
    if (ret)
       statusMessage.setMessage(m);
    return ret;
  }
  public static void messageEnd(){

    statusMessage.deleteObservers();
    statusBox.dispose();
  }
}

//StatusBox extends AlertDialog -- similar to JBCL ButtonDialog class

package os.prompt;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import borland.jbcl.control.*;

public class StatusBox extends AlertDialog implements Observer{

  public StatusBox(Frame frame, String title, String message) {
    super(frame, title, message, "Cancel", false);//false=modeless
    //show();
    setVisible(true);
  }
  public void update(Observable o, Object oo){
         StatusMessage sm = (StatusMessage)o;
         setMessage(sm.msg);
         setVisible(true);
         //show();
  }
}
// Status Message
package os.prompt;
import java.util.*;

public class StatusMessage extends Observable {
  public String msg="Default Message";
  public StatusMessage(String msg) {
    this.msg = msg;
  }
  public void setMessage(String msg) {
    this.msg = msg;
    setChanged();
    notifyObservers();
  }
}

--------------7BA83D2B59B3--
Technical Details
Message-ID: <349170BF.537D@opensesame.com.sg>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 1089d0,c6783c499e488680,start
X-Google-Attributes: gid1089d0,public
From: asok <asok@opensesame.com.sg>
Subject: Modeless Dialog Box
Date: 1997/12/13
Message-ID: <349170BF.537D@opensesame.com.sg>
X-Deja-AN: 297593947
Reply-To: asok@opensesame.com.sg
Organization: open sesame
Newsgroups: borland.public.jbuilder.java.api