This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Patch: javax.swing
- From: Michael Koch <konqueror at gmx dot de>
- To: java-patches at gcc dot gnu dot org
- Date: Wed, 21 Apr 2004 07:49:41 +0200
- Subject: Patch: javax.swing
Hi list,
I just commited the attached patch which fixes several issues in
javax.swing.
Michael
2004-04-21 Mark Wielaard <mark@klomp.org>
* 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 EXIT_ON_CLOSE set.
(setDefaultCloseOperation): Make public. Check argument. Add API doc.
* javax/swing/JViewport.java (JViewport): Make constructor public.
Index: javax/swing/JViewport.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/swing/JViewport.java,v
retrieving revision 1.5
diff -u -r1.5 JViewport.java
--- javax/swing/JViewport.java 19 Mar 2004 20:42:38 -0000 1.5
+++ javax/swing/JViewport.java 21 Apr 2004 05:34:28 -0000
@@ -121,7 +121,7 @@
Point lastPaintPosition;
- JViewport()
+ public JViewport()
{
setOpaque(true);
updateUI();
Index: javax/swing/JDialog.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/swing/JDialog.java,v
retrieving revision 1.2
diff -u -r1.2 JDialog.java
--- javax/swing/JDialog.java 11 Jun 2003 13:20:39 -0000 1.2
+++ javax/swing/JDialog.java 21 Apr 2004 05:34:28 -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 (rveldema@cs.vu.nl)
*/
-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: /cvs/gcc/gcc/libjava/javax/swing/JFrame.java,v
retrieving revision 1.4
diff -u -r1.4 JFrame.java
--- javax/swing/JFrame.java 12 Feb 2004 00:17:23 -0000 1.4
+++ javax/swing/JFrame.java 21 Apr 2004 05:34:28 -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,16 +57,11 @@
*
* @author Ronald Veldema (rveldema@cs.vu.nl)
*/
-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 = EXIT_ON_CLOSE;
+ private int close_action = HIDE_ON_CLOSE;
/***************************************************
@@ -192,7 +187,7 @@
return accessibleContext;
}
- int getDefaultCloseOperation()
+ public int getDefaultCloseOperation()
{ return close_action; }
@@ -212,7 +207,7 @@
{
case EXIT_ON_CLOSE:
{
- System.exit(1);
+ System.exit(0);
break;
}
case DISPOSE_ON_CLOSE:
@@ -241,8 +236,30 @@
}
}
-
- 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;
+ }
}