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. |