commit-classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: JFrame DefaultCloseOperation CLOSE_ON_EXIT fixlet


From: Mark Wielaard
Subject: Re: JFrame DefaultCloseOperation CLOSE_ON_EXIT fixlet
Date: Thu, 15 Apr 2004 13:32:17 +0200

Hi,

On Thu, 2004-04-15 at 11:30, Mark Wielaard wrote:
> Noticed that JFrame get/setDefaultCloseOperation weren't public and
> didn't do the right default thing. So I fixed them and added the correct
> argument checking to setDefaultCloseOperation.

Here is a similar patch for JDialog. But I also had to make the
constructors public to even use this class. There is clearly still much
to do. I stopped playing with it as soon as I saw my first JDialog pop
up. Both JFrame and JDialog should get their constants through the
WindowConstants interface which they now both implement.

2004-04-15  Mark Wielaard  <address@hidden>
                                                                                
        * javax/awt/JFrame.java: Implement WindowConstants. Remove final
        static fields defined in interface.
        * javax/awt/JDialog.java: Likewise.
        (JDialog): Make constructors public.
        (getDefaultCloseOperation): Make public.
        (processWindowEvent): Call System.exit(0) when HIDE_ON_CLOSE set.
        (setDefaultCloseOperation): Make public. Check argument. Add API doc.

> Committed to classpath CVS.
> Could someone with a recent gcj-gui-branch checkout add it there?

Same again.

Thanks,

Mark
Index: javax/swing/JDialog.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/JDialog.java,v
retrieving revision 1.5
diff -u -r1.5 JDialog.java
--- javax/swing/JDialog.java    8 Jun 2003 11:20:07 -0000       1.5
+++ javax/swing/JDialog.java    15 Apr 2004 11:30:58 -0000
@@ -1,5 +1,5 @@
 /* JDialog.java --
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -57,12 +57,8 @@
  *
  * @author Ronald Veldema (address@hidden)
  */
-public class JDialog extends Dialog implements Accessible
+public class JDialog extends Dialog implements Accessible, WindowConstants
 {
-    public final static int HIDE_ON_CLOSE        = 0;
-    public final static int DISPOSE_ON_CLOSE     = 1;
-    public final static int DO_NOTHING_ON_CLOSE  = 2;
-
     protected  AccessibleContext accessibleContext;
 
     private int close_action = HIDE_ON_CLOSE;    
@@ -75,42 +71,42 @@
      *
      *************/
 
-    JDialog(Frame owner)
+    public JDialog(Frame owner)
     {
        this(owner, "dialog");
     }
     
-    JDialog(Frame owner,
+    public JDialog(Frame owner,
            String s)
     {
        this(owner, s, true);
     }
     
-  JDialog(Frame owner,
+  public JDialog(Frame owner,
          String s,
          boolean modeld)
     {
        super(owner, s, modeld);
     }
 
-  JDialog(Frame owner,
+  public JDialog(Frame owner,
          //  String s,
          boolean modeld)
     {
        super(owner, "JDialog", modeld);
     }
-  JDialog(Dialog owner)
+  public JDialog(Dialog owner)
   {
       this(owner, "dialog");
   }
     
-    JDialog(Dialog owner,
+    public JDialog(Dialog owner,
            String s)
     {
        this(owner, s, true);
     }
     
-  JDialog(Dialog owner,
+  public JDialog(Dialog owner,
          String s,
          boolean modeld)
     {
@@ -221,18 +217,20 @@
 
     protected  void processWindowEvent(WindowEvent e)
     {
-       //      System.out.println("PROCESS_WIN_EV-1: " + e);
        super.processWindowEvent(e); 
-       //      System.out.println("PROCESS_WIN_EV-2: " + e);
        switch (e.getID())
            {
            case WindowEvent.WINDOW_CLOSING:
                {
                    switch(close_action)
                        {
+                       case EXIT_ON_CLOSE:
+                         {
+                           System.exit(0);
+                           break;
+                         }
                        case DISPOSE_ON_CLOSE:
                            {
-                               System.out.println("user requested dispose on 
close");
                                dispose();
                                break;
                            }
@@ -258,8 +256,34 @@
     }   
  
 
-    void setDefaultCloseOperation(int operation)
-    {  close_action = operation;   }
+  /**
+   * Defines what happens when this frame is closed. Can be one off
+   * <code>EXIT_ON_CLOSE</code>,
+   * <code>DISPOSE_ON_CLOSE</code>,
+   * <code>HIDE_ON_CLOSE</code> or
+   * <code>DO_NOTHING_ON_CLOSE</code>.
+   * The default is <code>HIDE_ON_CLOSE</code>.
+   * When <code>EXIT_ON_CLOSE</code> is specified this method calls
+   * <code>SecurityManager.checkExit(0)</code> which might throw a
+   * <code>SecurityException</code>. When the specified operation is
+   * not one of the above a <code>IllegalArgumentException</code> is
+   * thrown.
+   */
+  public void setDefaultCloseOperation(int operation)
+  {
+    SecurityManager sm = System.getSecurityManager();
+    if (sm != null && operation == EXIT_ON_CLOSE)
+      sm.checkExit(0);
+    
+    if (operation != EXIT_ON_CLOSE && operation != DISPOSE_ON_CLOSE
+       && operation != HIDE_ON_CLOSE && operation != DO_NOTHING_ON_CLOSE)
+      throw new IllegalArgumentException("operation = " + operation);
+    
+    close_action = operation;
+  }
+  
+  public int getDefaultCloseOperation()
+  {    return close_action;   }
 
     protected  String paramString()
     {   return "JDialog";     }
Index: javax/swing/JFrame.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/JFrame.java,v
retrieving revision 1.9
diff -u -r1.9 JFrame.java
--- javax/swing/JFrame.java     15 Apr 2004 09:35:52 -0000      1.9
+++ javax/swing/JFrame.java     15 Apr 2004 11:30:58 -0000
@@ -1,5 +1,5 @@
 /* JFrame.java --
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -57,13 +57,8 @@
  *
  * @author Ronald Veldema (address@hidden)
  */
-public class JFrame extends Frame
+public class JFrame extends Frame implements WindowConstants
 {
-    public final static int HIDE_ON_CLOSE        = 0;
-    public final static int EXIT_ON_CLOSE        = 1;
-    public final static int DISPOSE_ON_CLOSE     = 2;
-    public final static int DO_NOTHING_ON_CLOSE  = 3;
-
     protected  AccessibleContext accessibleContext;
 
     private int close_action = HIDE_ON_CLOSE;    

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]