|
From: <ls...@us...> - 2008-07-27 20:19:08
|
Revision: 4361
http://jnode.svn.sourceforge.net/jnode/?rev=4361&view=rev
Author: lsantha
Date: 2008-07-27 20:19:04 +0000 (Sun, 27 Jul 2008)
Log Message:
-----------
Better swingpeer support for JDialog.
Modified Paths:
--------------
trunk/core/src/classpath/vm/java/lang/VMSystem.java
trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindow.java
trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindowPeer.java
trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingFramePeer.java
trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingToolkit.java
Modified: trunk/core/src/classpath/vm/java/lang/VMSystem.java
===================================================================
--- trunk/core/src/classpath/vm/java/lang/VMSystem.java 2008-07-26 13:04:17 UTC (rev 4360)
+++ trunk/core/src/classpath/vm/java/lang/VMSystem.java 2008-07-27 20:19:04 UTC (rev 4361)
@@ -41,8 +41,8 @@
import java.io.PrintStream;
import java.nio.ByteOrder;
import java.util.List;
+import java.util.ArrayList;
-import org.jnode.util.EmptyInputStream;
import org.jnode.util.SystemInputStream;
import org.jnode.vm.Vm;
import org.jnode.vm.VmSystem;
@@ -196,7 +196,7 @@
*/
public static long nanoTime(){
return VmSystem.nanoTime();
- };
+ }
/**
* Returns a list of 'name=value' pairs representing the current environment
@@ -205,8 +205,8 @@
* @return a list of 'name=value' pairs.
*/
static List environ(){
- //TODO implement it
- throw new UnsupportedOperationException();
+ //todo implement it
+ return new ArrayList();
}
/**
* Helper method which creates the standard input stream. VM implementors
Modified: trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindow.java
===================================================================
--- trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindow.java 2008-07-26 13:04:17 UTC (rev 4360)
+++ trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindow.java 2008-07-27 20:19:04 UTC (rev 4361)
@@ -22,15 +22,23 @@
package org.jnode.awt.swingpeers;
import java.awt.AWTEvent;
+import java.awt.Color;
+import java.awt.Component;
import java.awt.Container;
+import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Window;
+import java.beans.PropertyVetoException;
import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JRootPane;
+import javax.swing.RootPaneContainer;
import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
/**
* Base class for peer implementation that subclass {@link java.awt.Window}.
@@ -72,6 +80,29 @@
target.reshape(x, y, width, height);
}
+ @Override
+ public void paint(Graphics g) {
+ super.paint(g);
+ if (target instanceof RootPaneContainer && isVisible()) {
+ target.paint(g.create());
+ }
+ }
+
+ @Override
+ public void setMaximum(boolean b) throws PropertyVetoException {
+ super.setMaximum(b);
+ target.setBounds(this.getBounds());
+ }
+
+ @Override
+ protected void validateTree() {
+ super.validateTree();
+ if (target instanceof JFrame)
+ ((JFrame) target).getRootPane().validate();
+ else if (target instanceof JDialog)
+ ((JDialog) target).getRootPane().validate();
+ }
+
/**
* @see org.jnode.awt.swingpeers.ISwingPeer#getAWTComponent()
*/
@@ -85,8 +116,7 @@
* @see java.awt.Component#processEvent(java.awt.AWTEvent)
*/
protected final void processEvent(AWTEvent event) {
- target.dispatchEvent(SwingToolkit.convertEvent(event,
- target));
+ target.dispatchEvent(SwingToolkit.convertEvent(event, target));
}
/**
@@ -111,7 +141,7 @@
* @see javax.swing.JInternalFrame#createRootPane()
*/
protected JRootPane createRootPane() {
- return new RootPane();
+ return new NoContentRootPane();
}
/**
@@ -166,6 +196,61 @@
SwingUtilities.updateComponentTreeUI(target);
}
+ final class NullContentPane extends JComponent {
+ @Override
+ public void update(Graphics g) {
+ //org.jnode.vm.Unsafe.debug("NullContantPane.update()\n");
+ }
+
+ @Override
+ public void paint(Graphics g) {
+ if (target instanceof Frame && !(target instanceof JFrame)) {
+ SwingBaseWindow sf = SwingBaseWindow.this;
+ Frame f = (Frame) target;
+
+ Color bg = f.getBackground();
+ if (bg == null) bg = UIManager.getColor("window");
+ if (bg == null) bg = UIManager.getColor("control");
+ if (bg == null) bg = Color.GRAY;
+
+ g.setColor(bg);
+ g.fillRect(0, 0, getWidth(), getHeight());
+
+ Point f_loc = sf.getLocationOnScreen();
+ Point p_loc = this.getLocationOnScreen();
+
+ int dx = p_loc.x - f_loc.x;
+ int dy = p_loc.y - f_loc.y;
+
+
+ for (Component c : f.getComponents()) {
+ Graphics cg = g.create(c.getX() - dx, c.getY() - dy, c.getWidth(), c.getHeight());
+ c.paintAll(cg);
+ cg.dispose();
+ }
+ }
+ }
+
+ @Override
+ public void repaint() {
+
+ }
+
+ @Override
+ public void repaint(long tm, int x, int y, int width, int height) {
+
+ }
+ }
+
+ final class NoContentRootPane extends JRootPane {
+ /**
+ * @see javax.swing.JRootPane#createContentPane()
+ */
+ protected Container createContentPane() {
+ return new NullContentPane();
+ }
+ }
+
private final class ContentPane extends JComponent {
private awtT target;
Modified: trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindowPeer.java
===================================================================
--- trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindowPeer.java 2008-07-26 13:04:17 UTC (rev 4360)
+++ trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingBaseWindowPeer.java 2008-07-27 20:19:04 UTC (rev 4361)
@@ -28,12 +28,14 @@
import java.awt.Insets;
import java.awt.Point;
import java.awt.Window;
+import java.awt.Color;
import java.awt.event.WindowEvent;
import java.awt.peer.WindowPeer;
import java.beans.PropertyVetoException;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;
@@ -55,6 +57,13 @@
this.eventDispatcher = new WindowEventDispatcher();
jComponent.addInternalFrameListener(eventDispatcher);
jComponent.validatePeerOnly();
+ if (!window.isBackgroundSet()) {
+ Color bg = peerComponent.getBackground();
+ if (bg == null) bg = UIManager.getColor("window");
+ if (bg == null) bg = UIManager.getColor("control");
+ if (bg == null) bg = Color.GRAY;
+ window.setBackground(bg);
+ }
}
/**
Modified: trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingFramePeer.java
===================================================================
--- trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingFramePeer.java 2008-07-26 13:04:17 UTC (rev 4360)
+++ trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingFramePeer.java 2008-07-27 20:19:04 UTC (rev 4361)
@@ -21,23 +21,15 @@
package org.jnode.awt.swingpeers;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
import java.awt.Cursor;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MenuBar;
-import java.awt.Point;
import java.awt.Rectangle;
import java.awt.peer.FramePeer;
import java.beans.PropertyVetoException;
-import javax.swing.JComponent;
import javax.swing.JFrame;
-import javax.swing.JRootPane;
-import javax.swing.RootPaneContainer;
-import javax.swing.UIManager;
final class SwingFrame extends SwingBaseWindow<Frame, SwingFrame> {
@@ -56,12 +48,6 @@
}
@Override
- public void setMaximum(boolean b) throws PropertyVetoException {
- super.setMaximum(b);
- target.setBounds(this.getBounds());
- }
-
- @Override
public void setIcon(boolean b) throws PropertyVetoException {
super.setIcon(b);
target.setBounds(this.getBounds());
@@ -72,26 +58,12 @@
super.paintAll(g);
}
- @Override
- public void paint(Graphics g) {
- super.paint(g);
- if (target instanceof RootPaneContainer && isVisible()) {
- target.paint(g.create());
- }
- }
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
- /**
- * @see javax.swing.JInternalFrame#createRootPane()
- */
- protected JRootPane createRootPane() {
- return new NoContentRootPane();
- }
-
@Override
protected void validateTree() {
super.validateTree();
@@ -166,60 +138,7 @@
}
}
- final class NullContentPane extends JComponent {
- @Override
- public void update(Graphics g) {
- //org.jnode.vm.Unsafe.debug("NullContantPane.update()\n");
- }
- @Override
- public void paint(Graphics g) {
- if (target instanceof Frame && !(target instanceof JFrame)) {
- SwingFrame sf = SwingFrame.this;
- Frame f = target;
-
- Color bg = f.getBackground();
- if (bg == null) bg = UIManager.getColor("window");
- if (bg == null) bg = UIManager.getColor("control");
- if (bg == null) bg = Color.GRAY;
-
- g.setColor(bg);
- g.fillRect(0, 0, getWidth(), getHeight());
-
- Point f_loc = sf.getLocationOnScreen();
- Point p_loc = this.getLocationOnScreen();
-
- int dx = p_loc.x - f_loc.x;
- int dy = p_loc.y - f_loc.y;
-
-
- for (Component c : f.getComponents()) {
- Graphics cg = g.create(c.getX() - dx, c.getY() - dy, c.getWidth(), c.getHeight());
- c.paintAll(cg);
- cg.dispose();
- }
- }
- }
-
- @Override
- public void repaint() {
-
- }
-
- @Override
- public void repaint(long tm, int x, int y, int width, int height) {
-
- }
- }
-
- final class NoContentRootPane extends JRootPane {
- /**
- * @see javax.swing.JRootPane#createContentPane()
- */
- protected Container createContentPane() {
- return new NullContentPane();
- }
- }
}
/**
@@ -254,14 +173,6 @@
setMenuBar(mb);
}
- if (!target.isBackgroundSet()) {
- Color bg = peerComponent.getBackground();
- if (bg == null) bg = UIManager.getColor("window");
- if (bg == null) bg = UIManager.getColor("control");
- if (bg == null) bg = Color.GRAY;
- target.setBackground(bg);
- }
-
addToDesktop();
}
Modified: trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingToolkit.java
===================================================================
--- trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingToolkit.java 2008-07-26 13:04:17 UTC (rev 4360)
+++ trunk/gui/src/awt/org/jnode/awt/swingpeers/SwingToolkit.java 2008-07-27 20:19:04 UTC (rev 4361)
@@ -359,7 +359,7 @@
Point p = new Point(x, y);
SwingUtilities.convertPointFromScreen(p, jmb);
comp = SwingUtilities.getDeepestComponentAt(jmb, p.x, p.y);
- if (comp != null && (comp != jmb || comp == jmb && jmb.contains(p.x, p.y))) {
+ if (comp != null && (comp != jmb || jmb.contains(p.x, p.y))) {
return comp;
}
}
@@ -375,17 +375,16 @@
}
} else {
comp = super.getTopComponentAt(x, y);
- SwingFrame sfp = (SwingFrame) SwingUtilities.getAncestorOfClass(
- SwingFrame.class, comp);
- if (sfp != null) {
- Rectangle r = sfp.getBounds();
- Insets ins = sfp.getSwingPeer().getInsets();
+ SwingBaseWindow window = (SwingBaseWindow) SwingUtilities.getAncestorOfClass(SwingBaseWindow.class, comp);
+ if (window != null) {
+ Rectangle r = window.getBounds();
+ Insets ins = window.getSwingPeer().getInsets();
r.x = r.x + ins.left;
r.y = r.y + ins.top;
r.width = r.width - ins.left - ins.right;
r.height = r.height - ins.top - ins.bottom;
if (r.contains(x, y)) {
- Component c = sfp.getAWTComponent().findComponentAt(x - r.x + ins.left, y - r.y + ins.top);
+ Component c = window.getAWTComponent().findComponentAt(x - r.x + ins.left, y - r.y + ins.top);
if (c != null) {
comp = c;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|