Commits

Anonymous committed e414910 Merge

rebase to DEV300_m90

Comments (0)

Files changed (728)

 467bdca2a6aee659c46ad740255356e3af43a0d0 DEV300_m87
 c92fbd80a61652281ae3ca34483361486bd3278e DEV300_m88
 3a0071bb37fbf4a837243187e992511ce15e1ebc OOO330_m9
+d7e46c52a8d318cf92b31f88734b5175c3d98a01 DEV300_m89
+53468ceb6f7599556acab15f2ac8448f88f34656 OOO330_m10
+cdc7f7cfb35b1957c1daf4ccd6d10fc74d830417 OOO330_m11

bean/com/sun/star/comp/beans/LocalOfficeConnection.java

 		{}
 	}
 
-	/**
+        /**
+         * protected Constructor
+         * Initialise a LocalOfficeConnection with an already running office.
+         * This C'Tor is only used in complex tests at the moment.
+         * @param xContext
+         */
+        protected LocalOfficeConnection(com.sun.star.uno.XComponentContext xContext)
+        {
+            this.mContext = xContext;
+        }
+
+        /**
 	 * Sets a connection URL.
 	 * This implementation accepts a UNO URL with following format:<br /> 
 	 * <pre>

bean/com/sun/star/comp/beans/OOoBean.java

 					xURLTransformer	= (com.sun.star.util.XURLTransformer) UnoRuntime.queryInterface(
 						com.sun.star.util.XURLTransformer.class, 
 						xServiceFactory.createInstance( "com.sun.star.util.URLTransformer") );
-					xDispatcher = (com.sun.star.frame.XDispatchProvider)UnoRuntime.queryInterface(
-						com.sun.star.frame.XDispatchProvider.class, aFrame );
+
+                                        try
+                                        {
+                                            xDispatcher = UnoRuntime.queryInterface(com.sun.star.frame.XDispatchProvider.class, aFrame);
+                                        }
+                                        catch (Exception e)
+                                        {
+                                            /*ignore!*/
+                                        }
 
 					// get XComponentLoader from frame
 					com.sun.star.frame.XComponentLoader xLoader = (com.sun.star.frame.XComponentLoader)

bean/prj/build.lst

 ob	bean\native\win32				nmake	-	n	ob_beanwin32 NULL
 ob	bean\native\unix				nmake	-	u	ob_beanunix NULL
 ob  bean\util              			nmake   -   all	ob_util ob_beanjava ob_legacybeanjava ob_beanwin32.n ob_beanunix.u NULL
+
+# complex tests compileable but fail at runtime
+# ob      bean\qa\complex\bean                    nmake   -   all ob_qa_complex ob_util NULL
+

bean/qa/complex/OOoBeanTest.java

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package complex;
-
-
-import complexlib.ComplexTestCase;
-import java.io.*;
-import java.awt.Rectangle;
-import java.awt.Insets;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.image.BufferedImage;
-import java.awt.image.PixelGrabber;
-import java.awt.GridBagLayout;
-import java.awt.GridBagConstraints;
-import java.awt.event.*;
-import java.awt.Frame;
-import java.awt.Toolkit;
-import java.awt.Robot;
-import java.awt.event.KeyEvent;
-import java.awt.Button;
-import javax.imageio.ImageIO;
-import javax.imageio.stream.FileImageOutputStream;
-import com.sun.star.comp.beans.OOoBean;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.text.XTextDocument;
-
-import java.awt.*;
-
-public class OOoBeanTest extends ComplexTestCase
-{
-    
-    public String[] getTestMethodNames()
-    {
-        // TODO think about trigger of sub-tests from outside
-        return new String[]
-        {
-              "test1",
-              "test2",
-              "test3",
-              "test4",
-              "test5",
-              "test6",
-              "test6a",
-              "test7",
-              "test8"
-        };
-    }
-
-    /** For X-Windows we need to prolong the time between painting windows. Because
-        it takes longer than on Windows.
-    */
-    int getSleepTime(int time)
-    {
-        int ret = time;
-        if (isWindows() == false)
-            return time * 5;
-        return time;
-    }
-
-    /** If it cannot be determined if we run on Windows then we assume
-        that we do not.
-    */
-    boolean isWindows()
-    {
-        boolean ret = false;
-        String os = System.getProperty("os.name");
-        if (os != null) 
-        {
-            os = os.trim();
-            if (os.indexOf("Win") == 0)
-                ret = true;
-        }
-        return ret;
-    }
-
-    public String getText(OOoBean bean) throws Exception
-    {
-        com.sun.star.frame.XModel model = (com.sun.star.frame.XModel)bean.getDocument();
-        com.sun.star.text.XTextDocument myDoc =
-            (XTextDocument) UnoRuntime.queryInterface(com.sun.star.text.XTextDocument.class,
-                                                      model);
-        com.sun.star.text.XText xText = myDoc.getText();
-        return xText.getString();
-    }
-
-    /** 1.Create a Java frame
-     *  2.Add OOoBean (no document loaded yet)
-     *  3.Show frame
-     *  4.Load document
-     */
-    public void test1() throws Exception
-    {
-        WriterFrame f = null;
-        try
-        {
-            f = new WriterFrame(100 ,100, 500 ,400, false);
-            f.setText("OOoBean test.");
-            Thread.sleep(1000);
-        }
-        finally
-        {
-            if (f != null)
-                f.dispose();
-        }
-    }
-
-    /** Sizing, painting
-     */
-    public void test2() throws Exception 
-    {
-        WriterFrame f = null;
-        ScreenComparer capturer = null;
-        try
-        {
-            f = new WriterFrame(100, 100, 500,500, false);
-            if (f.checkUnoFramePosition() == false)
-                failed("Sizing error: Client are of Java frame does not match the UNO window.", true);
-            capturer = new ScreenComparer(100, 100, 500, 500);
-
-            //Minimize Window and back
-            f.goToStart();
-            f.pageDown();
-            Thread.sleep(1000);
-            for (int i = 0; i < 3; i++)
-            {
-                capturer.reset();
-                capturer.grabOne(f.getClientArea());
-                f.setExtendedState(Frame.ICONIFIED);
-                Thread.sleep(getSleepTime(200));
-                if (f.checkUnoFramePosition() == false)
-                    failed("Sizing error: Frame was iconified.", true);
-                f.setExtendedState(Frame.NORMAL);
-                Thread.sleep(getSleepTime(200));
-                if (f.checkUnoFramePosition() == false)
-                    failed("Sizing error: Frame size set back to normal after it was iconified.", true);
-                capturer.grabTwo(f.getClientArea());
-                if (capturer.compare() == false)
-                {
-                    failed("Painting error: Minimize (iconify) frame and back to normal size.", true);
-                    capturer.writeImages();
-                }
-            }
-
-            //Maximize Window and back to normal
-            for (int i = 0; i < 3; i++)
-            {
-                capturer.reset();
-                capturer.grabOne(f.getClientArea());
-                f.setExtendedState(Frame.MAXIMIZED_BOTH);
-                Thread.sleep(getSleepTime(200));
-                if (f.checkUnoFramePosition() == false)
-                    failed("Sizing error: Frame maximized.", true);
-                f.setExtendedState(Frame.NORMAL);
-                Thread.sleep(getSleepTime(200));
-                if (f.checkUnoFramePosition() == false)
-                    failed("Sizing error: Frame set from maximized to normal.", true);                
-                capturer.grabTwo(f.getClientArea());
-                if (capturer.compare() == false)
-                {
-                    failed("Painting error: Maximize frame and back to normal size", true);
-                    capturer.writeImages();
-                }
-            }
-
-            //move Window top left
-            capturer.reset();
-            capturer.grabOne(f.getClientArea());
-            Rectangle oldPosition = f.getBounds();
-            f.setBounds(0, 0, oldPosition.width, oldPosition.height);
-            Thread.sleep(getSleepTime(200));
-            if (f.checkUnoFramePosition() == false)
-                failed("Sizing error: Frame moved.", true);
-                            
-            capturer.grabTwo(f.getClientArea());
-            if (capturer.compare() == false)
-            {
-                failed("Painting error: Move frame to a different position.", true);
-                capturer.writeImages();
-            }
-            
-            //move Window down
-            Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
-            int maxY = dim.height - f.getBounds().height;
-
-            int curY = 0;
-            while (curY < maxY)
-            {
-                capturer.reset();
-                capturer.grabOne(f.getClientArea());
-                oldPosition = f.getBounds();
-                f.setBounds(0, curY, oldPosition.width, oldPosition.height);
-                capturer.grabTwo(f.getClientArea());
-                if (capturer.compare() == false)
-                {
-                    failed("Painting error: Move frame to a different position.", true);
-                    capturer.writeImages();
-                }
-                curY+= 50;
-                Thread.sleep(getSleepTime(200));
-            }
-
-            //obscure the window and make it visible again
-            
-            oldPosition = f.getBounds();
-
-            Rectangle pos = new Rectangle(oldPosition.x - 50, oldPosition.y - 50,
-                                          oldPosition.width, oldPosition.height);
-            Frame coverFrame = new Frame();
-            coverFrame.setBounds(pos);
-            capturer.reset();
-            capturer.grabOne(f.getClientArea());
-
-            for (int i = 0; i < 3; i++)
-            {
-                coverFrame.setVisible(true);
-                Thread.sleep(getSleepTime(200));
-                f.toFront();
-                Thread.sleep(getSleepTime(200));
-                if (f.checkUnoFramePosition() == false)
-                    failed("Sizing error: Frame moved from back to front.", true);
-
-                capturer.grabTwo(f.getClientArea());
-                if (capturer.compare() == false)
-                {
-                    failed("Painting error: Move frame to back and to front.", true);
-                    capturer.writeImages();
-                }
-            }
-
-            coverFrame.dispose();
-        }
-        finally
-        {
-            if (f != null)
-                f.dispose();
-        }
-    }
-
-    /**
-       1. Create a OOoBean
-       2. Load a document
-       3. Create Frame (do not show yet)
-       4. Add OOoBean to Frame
-       5. Show Frame
-    */
-    public void test3() throws Exception
-    {
-        WriterFrame f = null;
-        try
-        {
-            f = new WriterFrame(100, 100, 500, 300, true);
-            if (f.checkUnoFramePosition() == false)
-                failed("Sizing error.", true);
-            
-        }
-        finally
-        {
-            if (f != null)
-                f.dispose();
-        }
-    }
-
-    /** Test repeated OOoBean.aquireSystemWindow and OOoBean.releaseSystemWindow
-     * calls.
-     */
-    public void test4() throws Exception
-    {
-        WriterFrame f = null;
-        try
-        {
-            f = new WriterFrame(100, 100, 500, 300, false);
-            OOoBean b = f.getBean();
-            for (int i = 0; i < 100; i++)
-            {
-                b.releaseSystemWindow();
-                b.aquireSystemWindow();
-            }
-            if (f.checkUnoFramePosition() == false)
-                failed("Sizing error.", true);
-        }
-        finally
-        {
-            if (f != null)
-                f.dispose();
-            if (isWindows() == false)
-                Thread.sleep(10000);
-        }
-    }
-
-    /** Adding and removing the bean to a Java frame multiple times.
-     * Test painting and sizing.
-     */
-    public void test5() throws Exception
-    {
-        WriterFrame f = null;
-        try
-        {
-            f = new WriterFrame(100, 100, 500, 400, false);
-            f.goToStart();
-            f.pageDown();
-            Thread.sleep(1000);
-
-            ScreenComparer capturer = new ScreenComparer(100,100,500,400);
-            capturer.grabOne();
-            for (int i = 0; i < 100; i++)
-            {
-                f.removeOOoBean();
-                f.addOOoBean();
-            }
-            
-            f.goToStart();
-            f.pageDown();
-            Thread.sleep(getSleepTime(200));
-            capturer.grabTwo();
-
-            if (capturer.compare() == false)
-            {
-                failed("Painting error: adding and removing OOoBean " +
-                       "repeatedly to java.lang.Frame.", true);
-                capturer.writeImages();
-            }
-            
-            if (f.checkUnoFramePosition() == false)
-                failed("Sizing error.", true);
-
-        }
-        finally
-        {
-            if (f != null)
-                f.dispose();
-            if (isWindows() == false)
-                Thread.sleep(10000);
-        }
-    }
-
-
-    /** Test focus 	(i49454). After repeatedly adding and removing the bean to a window
-     * it should still be possible to enter text in the window. This does not
-     * work all the time on Windows. This is probably a timing problem. When using
-     * Thread.sleep (position #1) then it should work.
-     */
-    public void test6() throws Exception
-    {
-        for (int j = 0; j < 10; j++)
-        {
-            final OOoBean bean = new OOoBean();
-            java.awt.Frame frame = null;
-            bean.setOOoCallTimeOut(10000);
-            try {
-                frame = new java.awt.Frame("OpenOffice.org Demo");
-                frame.add(bean, BorderLayout.CENTER);
-                frame.pack();
-                frame.setSize(600,300);
-                frame.show();
-                bean.loadFromURL("private:factory/swriter", null);
-                // #1
-                Thread.sleep(1000);
-                
-                StringBuffer buf = new StringBuffer(1000);
-                for (int i = 0; i < 1; i++)
-                {
-//                    Thread.sleep(1000);
-                    bean.releaseSystemWindow();
-                    frame.remove(bean);
-//                    frame.validate();
-//                    Thread.sleep(1000);
-                    frame.add(bean, BorderLayout.CENTER);
-                    bean.aquireSystemWindow();
-//                    frame.validate();
-                }
-                
-                if (isWindows() == false)
-                    Thread.sleep(5000);
-
-                Robot roby = new Robot();
-                roby.keyPress(KeyEvent.VK_H);
-                roby.keyRelease(KeyEvent.VK_H);
-                buf.append("h");
-                
-                String s = getText(bean);
-                if ( ! s.equals(buf.toString()))
-                {
-                    failed("Focus error: After removing and adding the bean, the" +
-                           "office window does not receive keyboard input.\n" +
-                           "Try typing in the window, you've got 30s!!! This " +
-                           "test may not work with Linux/Solaris", true);
-                    Thread.sleep(30000);
-                    break;
-                }
-                else
-                {
-                    Thread.sleep(2000);
-                }
-            
-            } finally {
-                bean.stopOOoConnection();
-                frame.dispose();
-            }
-        }   
-    }
-
-    /** Tests focus problem just like test6, but the implementation is a little
-     * different. The bean is added and removed from withing the event dispatch
-     * thread. Using Thread.sleep at various points (#1, #2, #3) seems to workaround
-     * the problem.
-     */
-    public void test6a() throws Exception
-    {
-        for (int j = 0; j < 50; j++)
-        {
-            final OOoBean bean = new OOoBean();
-            final java.awt.Frame frame = new Frame("Openoffice.org");
-            bean.setOOoCallTimeOut(10000);
-
-            try {
-                frame.add(bean, BorderLayout.CENTER);
-                frame.pack();
-                frame.setSize(600,400);
-                frame.show();
-                bean.loadFromURL("private:factory/swriter", null);
-                frame.validate();
-                // #1
-                Thread.sleep(1000);
-                StringBuffer buf = new StringBuffer(1000);
-                int i = 0;
-                
-                for (; i < 1; i++)
-                {
-                EventQueue q = Toolkit.getDefaultToolkit().getSystemEventQueue();
-                q.invokeAndWait( new Runnable() {
-                        public void run() {
-                            try {
-
-                            bean.releaseSystemWindow(); 
-                            frame.remove(bean);
-                            frame.validate();
-
-                            } catch (Exception e) {
-                                e.printStackTrace();
-                            }
-                            
-                            }
-                        });
-                // #2
-                Thread.sleep(1000);
-                q.invokeAndWait( new Runnable() {
-                        public void run() {
-                            try {
-
-                            frame.add(bean, BorderLayout.CENTER);
-                            bean.aquireSystemWindow();
-                            frame.validate();
-                            } catch (Exception e) {
-                                e.printStackTrace();
-                            }
-                            }
-                        });
-                    
-                // #3
-                Thread.sleep(1000);
-                }
-                
-                if (isWindows() == false)
-                    Thread.sleep(5000);
-
-                Robot roby = new Robot();
-                roby.mouseMove(300, 200);
-                roby.waitForIdle();
-                roby.mousePress(InputEvent.BUTTON1_MASK);
-                roby.waitForIdle();
-                roby.mouseRelease(InputEvent.BUTTON1_MASK);
-                roby.waitForIdle();
-                roby.keyPress(KeyEvent.VK_H);
-                roby.waitForIdle();
-                roby.keyRelease(KeyEvent.VK_H);
-                roby.waitForIdle();
-
-                buf.append("h");
-                Thread.sleep(1000);                
-                String s = getText(bean);
-                System.out.println(" getText: " + s);
-                if ( ! s.equals(buf.toString()))
-                {
-                    roby.mousePress(InputEvent.BUTTON1_MASK);
-                    roby.waitForIdle();
-                    roby.mouseRelease(InputEvent.BUTTON1_MASK);
-                    roby.waitForIdle();
-                    roby.keyPress(KeyEvent.VK_H);
-                    roby.waitForIdle();
-                    roby.keyRelease(KeyEvent.VK_H);
-                    roby.waitForIdle();
-
-                    String sH = "h";
-                    Thread.sleep(1000);                
-                    String s2 = getText(bean);
-
-                    if ( ! sH.equals(s2))
-                    {
-                        failed("Focus error: After removing and adding the bean, the" +
-                               "office window does not receive keyboard input.\n" +
-                               "Try typing in the window, you've got 30s!!! This " +
-                               "test may not work with Linux/Solaris", true);
-                        System.out.println("j: " + j + "   i: " + i);
-                        Thread.sleep(30000);
-                        break;
-                    }
-                }
-                else
-                {
-                    //                   Thread.sleep(2000);
-                }
-            
-            } finally {
-                bean.stopOOoConnection();
-                frame.dispose();
-            }
-        }
-    }
-
-    /** Repeatedly loading a document in one and the same OOoBean instance.
-     */
-    public void test7() throws Exception
-    {
-        WriterFrame f = null;
-        try
-        {
-            f = new WriterFrame(100 ,100, 500 ,400, false);
-            String text = "OOoBean test.";
-
-            for (int i = 0; i < 10; i++)
-            {
-                f.getBean().clear();
-                f.getBean().loadFromURL("private:factory/swriter", null);
-                f.setText(text);
-                f.goToStart();
-                f.validate();
-
-                if (text.equals(f.getText()) == false)
-                    failed("Repeated loading of a document failed.");
-                Thread.sleep(1000);
-            }
-        }
-        finally
-        {
-            if (f != null)
-                f.dispose();
-        }
-    }
-
-    /** Using multiple instances of OOoBean at the same time
-     */
-    public void test8() throws Exception
-    {
-        OOoBean bean1 = new OOoBean();
-        BeanPanel bp1 = new BeanPanel(bean1);
-        OOoBean bean2 = new OOoBean();
-        BeanPanel bp2 = new BeanPanel(bean2);
-        OOoBean bean3 = new OOoBean();
-        BeanPanel bp3 = new BeanPanel(bean3);
-        OOoBean bean4 = new OOoBean();
-        BeanPanel bp4 = new BeanPanel(bean4);
-
-        try
-        {
-            Frame f = new Frame("OOoBean example with several instances");
-            f.setLayout(new GridBagLayout());
-            GridBagConstraints c = new GridBagConstraints();
-            c.fill = GridBagConstraints.HORIZONTAL;
-            c.weightx = 0.5;
-
-            c.insets = new Insets(0, 0, 0, 10);
-            c.gridx = 0;
-            c.gridy = 0;
-            f.add(bp1, c);
-            
-            c.gridx = 1;
-            c.insets = new Insets(0, 0, 0, 0);
-            f.add(bp2, c);
-
-            c.gridx = 0;
-            c.gridy = 1;
-            c.insets = new Insets(10, 0, 0, 10);
-            f.add(bp3, c);
-
-            c.gridx = 1;
-            c.gridy = 1;
-            c.insets = new Insets(10, 0, 0, 0);
-            f.add(bp4, c);
-
-            f.pack();
-            f.setBounds(0, 0, 1000, 600);
-            f.setVisible(true);
-            try {
-            bean1.loadFromURL("private:factory/swriter", null);
-            bean2.loadFromURL("private:factory/swriter", null);
-            bean3.loadFromURL("private:factory/swriter", null);
-            bean4.loadFromURL("private:factory/swriter", null);
-            } catch( Exception e)
-            {
-                e.printStackTrace();
-            }
-            f.validate();
-
-            Thread.sleep(10000);
-        }
-        finally
-        {
-            bean1.stopOOoConnection();
-            bean2.stopOOoConnection();
-            bean3.stopOOoConnection();
-            bean4.stopOOoConnection();
-        }
-    }
-
-    class BeanPanel extends Panel
-    {
-        public BeanPanel(OOoBean b)
-        {
-            setLayout(new BorderLayout());
-            add(b, BorderLayout.CENTER);
-        }
-        public Dimension getPreferredSize()
-        {
-            Container c = getParent();
-            return new Dimension(200, 200);
-        }
-    }
-
-}
-
-

bean/qa/complex/ScreenComparer.java

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package complex;
-
-
-import complexlib.ComplexTestCase;
-import java.io.File;
-import java.awt.Rectangle;
-import java.awt.BorderLayout;
-import java.awt.image.BufferedImage;
-import java.awt.image.PixelGrabber;
-import java.awt.event.*;
-import java.awt.Frame;
-import javax.imageio.ImageIO;
-import javax.imageio.stream.FileImageOutputStream;
-
-
-
-class ScreenComparer
-{
-    Rectangle m_rect;
-    BufferedImage m_img1;
-    BufferedImage m_img2;
-    BufferedImage m_imgDiff;
-
-    int m_diffColor;
-    public ScreenComparer(int x, int y, int width, int height)
-    {
-        this(new Rectangle(x, y, width, height));
-    }
-
-    public ScreenComparer(Rectangle location)
-    {
-        m_rect = location;
-        int red = 0xff;
-        int alpha = 0xff;
-        m_diffColor = (alpha << 24);
-        m_diffColor = m_diffColor | (red << 16);
-    }
-
-    public ScreenComparer()
-    {
-        this(new Rectangle(0, 0, 0, 0));
-    }
-
-    public void reset()
-    {
-        m_rect = null;
-        m_img1 = null;
-        m_img2 = null;
-        m_imgDiff = null;
-    }
-
-    public Rectangle getLocation()
-    {
-        return m_rect;
-    }
-    public void grabOne() throws Exception
-    {
-        grabOne(m_rect);
-    }
-    
-    public void grabOne(Rectangle r) throws Exception
-    {
-        java.awt.Robot robot = new java.awt.Robot();
-        m_img1 = robot.createScreenCapture(r);
-    }
-
-    public void grabTwo() throws Exception
-    {
-        grabTwo(m_rect);
-    }
-    
-    public void grabTwo(Rectangle r) throws Exception
-    {
-        java.awt.Robot robot = new java.awt.Robot();
-        m_img2 = robot.createScreenCapture(r);
-    }
-
-    public boolean compare() throws Exception
-    {
-        if (m_img1 == null || m_img2 == null)
-            throw new Exception("Only one image captured!");
-        boolean ret = true;
-        int w1 = m_img1.getWidth();
-        int h1 = m_img1.getHeight();
-        int w2 = m_img2.getWidth();
-        int h2 = m_img2.getHeight();
-
-        if (w1 != w2 || h1 != h2)
-        {
-            System.out.println("### 1\n");
-            //Different size. Create an image that holds both images.
-            int w = w1 > w2 ? w1 : w2;
-            int h = h1 > h2 ? h1 : h2;
-            m_imgDiff = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
-            for (int y = 0; y < h; y ++)
-            {
-                for (int x = 0; x < w; x++)
-                {
-                    boolean bOutOfRange = false;
-                    int pixel1 = 0;
-                    int pixel2 = 0;
-                    //get the pixel for m_img1
-                    if (x < w1 && y < h1)
-                        pixel1 = m_img1.getRGB(x, y);
-                    else
-                        bOutOfRange = true;
-                    
-                    if (x < w2 && y < h2)
-                        pixel2 = m_img2.getRGB(x, y);
-                    else
-                        bOutOfRange = true;
-
-                    if (bOutOfRange || pixel1 != pixel2)
-                        m_imgDiff.setRGB(x, y, m_diffColor);
-                    else
-                        m_imgDiff.setRGB(x, y, pixel1);
-                    
-                }
-            }
-            return false;
-        }
-
-        //Images have same dimension
-        int[] pixels1 = new int[w1 * h1];
-        PixelGrabber pg = new PixelGrabber(
-            m_img1.getSource(), 0, 0, w1, h1, pixels1, 0, w1);
-        pg.grabPixels();
-
-        int[] pixels2 = new int[w2 * h2];
-        PixelGrabber pg2 = new PixelGrabber(
-            m_img2.getSource(), 0, 0, w2, h2, pixels2, 0, w2);
-        pg2.grabPixels();
-
-        m_imgDiff = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_ARGB);
-
-        //First check if the the images differ.
-        int lenAr = pixels1.length;
-        int index = 0;
-        for (index = 0; index < lenAr; index++)
-        {
-            if (pixels1[index] != pixels2[index])
-                break;
-        }
-
-        //If the images are different, then create the diff image
-        if (index < lenAr)
-        {
-            for (int y = 0; y < h1; y++)
-            {
-                for (int x = 0; x < w1; x++)
-                {
-                    int offset = y * w1 + x;
-                    if (pixels1[offset] != pixels2[offset])
-                    {
-                        ret = ret && false;
-                        m_imgDiff.setRGB(x, y, m_diffColor); 
-                    }
-                    else
-                    {
-                        m_imgDiff.setRGB(x, y, pixels1[offset]);
-                    }
-                }
-            }
-        }
-        return ret;
-    }
-
-    /** Writes Images to a location. The
-     *  directory is determined by the java property OOoBean.Images
-     * 
-     */
-    public void writeImages() throws Exception
-    {
-        String imgLocation = System.getProperty("OOoBean.Images", "");
-        File file_tmp = File.createTempFile("OOoBean", "", new File(imgLocation));
-        File file1 = new File(file_tmp.getPath()+".png");
-        file_tmp.delete();
-        if (m_img1 != null)
-        {
-            ImageIO.write(m_img1, "png", file1);
-            System.out.println("\nCompared images:");
-            System.out.println("1. " + file1.getPath());
-        }
-        file1= null;
-        file_tmp= null;
-        file_tmp = File.createTempFile("OOoBean", "", new File(imgLocation));
-        file1 = new File(file_tmp.getPath()+".png");
-        file_tmp.delete();
-        if (m_img2 != null)
-        {
-            ImageIO.write(m_img2, "png", file1);
-            System.out.println("2. " + file1.getPath());
-        }
-        file1= null;
-        file_tmp= null;
-        file_tmp = File.createTempFile("OOoBean", "_diff", new File(imgLocation));
-        file1 = new File(file_tmp.getPath()+".png");
-        file_tmp.delete();
-        if (m_imgDiff != null)
-        {
-            ImageIO.write(m_imgDiff, "png", file1);
-            System.out.println("Diff image: " + file1.getPath() + "\n");
-        }
-    }
-    
-}
-

bean/qa/complex/WriterFrame.java

-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package complex;
-
-
-import complexlib.ComplexTestCase;
-import java.awt.Rectangle;
-import java.awt.Insets;
-import java.awt.BorderLayout;
-import java.awt.event.*;
-import java.awt.Frame;
-import java.awt.Dimension;
-import com.sun.star.comp.beans.OOoBean;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.text.XTextDocument;
-
-
-class WriterFrame extends java.awt.Frame
-{
-    com.sun.star.comp.beans.OOoBean m_bean;
-    String m_sDocURL = "private:factory/swriter";
-
-    /**
-      @param loadBeforeVisible
-          the OOoBean is added to the frame before it is displayable. Then the Java Frame does
-          not have a native window peer yet.
-     */
-    public WriterFrame(int x, int y, int width, int height, boolean loadBeforeVisible) throws Exception
-    {
-
-        if (loadBeforeVisible == false)
-        {
-            m_bean = new com.sun.star.comp.beans.OOoBean();
-            add(m_bean, BorderLayout.CENTER);
-            pack();
-            setBounds(x, y, width, height);
-            setVisible(true);
-            m_bean.loadFromURL(m_sDocURL, null);
-            validate();
-        }
-        else
-        {
-            m_bean = new com.sun.star.comp.beans.OOoBean();
-            m_bean.loadFromURL(m_sDocURL, null);
-            add(m_bean, BorderLayout.CENTER);
-            pack();
-            setBounds(x, y, width, height);
-            setVisible(true);
-            m_bean.aquireSystemWindow();
-        }
-    }
-    
-    public WriterFrame() throws Exception
-    {
-        this(0, 0, 800, 400, false);
-    }
-
-    public void setText(String s) throws Exception
-    {
-        com.sun.star.frame.XModel model = (com.sun.star.frame.XModel)m_bean.getDocument();
-        com.sun.star.text.XTextDocument myDoc =
-            (XTextDocument) UnoRuntime.queryInterface(com.sun.star.text.XTextDocument.class,
-                                                      model);
-        com.sun.star.text.XText xText = myDoc.getText();
-        com.sun.star.text.XTextCursor xTCursor = xText.createTextCursor();
-        //inserting some Text
-        xText.insertString( xTCursor, s, false );  
-    }
-
-    public String getText() throws Exception
-    {
-        com.sun.star.frame.XModel model = (com.sun.star.frame.XModel)m_bean.getDocument();
-        com.sun.star.text.XTextDocument myDoc =
-            (XTextDocument) UnoRuntime.queryInterface(com.sun.star.text.XTextDocument.class,
-                                                      model);
-        com.sun.star.text.XText xText = myDoc.getText();
-        return xText.getString();
-    }
-
-    public void dispose() {
-        m_bean.stopOOoConnection();
-        setVisible(false);
-        super.dispose();
-    }
-
-    OOoBean getBean()
-    {
-        return m_bean;
-    }
-
-    /** Makes sure the document is displayed at the beginning.
-     * This is important for comparing screenshots.
-     */
-    public void goToStart() throws Exception
-    {
-        com.sun.star.frame.XModel xModel = (com.sun.star.frame.XModel)m_bean.getDocument();
-        com.sun.star.frame.XController xController = xModel.getCurrentController();
-
-        com.sun.star.text.XTextViewCursorSupplier xVCSupplier =