summaryrefslogtreecommitdiff
path: root/sfx2/qa/complex/CheckGlobalEventBroadcaster_writer1.java
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/qa/complex/CheckGlobalEventBroadcaster_writer1.java')
-rw-r--r--sfx2/qa/complex/CheckGlobalEventBroadcaster_writer1.java243
1 files changed, 243 insertions, 0 deletions
diff --git a/sfx2/qa/complex/CheckGlobalEventBroadcaster_writer1.java b/sfx2/qa/complex/CheckGlobalEventBroadcaster_writer1.java
new file mode 100644
index 000000000000..d5dc17e183eb
--- /dev/null
+++ b/sfx2/qa/complex/CheckGlobalEventBroadcaster_writer1.java
@@ -0,0 +1,243 @@
+/*************************************************************************
+ *
+ * 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.framework;
+
+import com.sun.star.awt.XWindow;
+import com.sun.star.document.XEventBroadcaster;
+import com.sun.star.document.XEventListener;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.sheet.XSpreadsheetDocument;
+import com.sun.star.text.XTextDocument;
+import com.sun.star.uno.UnoRuntime;
+import complex.framework.DocHelper.WriterHelper;
+import complexlib.ComplexTestCase;
+import java.util.ArrayList;
+import com.sun.star.task.XJobExecutor;
+import com.sun.star.util.URL;
+import util.UITools;
+
+/**
+ * This testcase checks the GlobalEventBroadcaster
+ * it will add an XEventListener and verify the Events
+ * raised when opening/changing and closing Office Documents
+ */
+public class CheckGlobalEventBroadcaster_writer1 extends ComplexTestCase {
+ XMultiServiceFactory m_xMSF = null;
+ XEventBroadcaster m_xEventBroadcaster = null;
+ ArrayList notifyEvents = new ArrayList();
+ XTextDocument xTextDoc;
+ XSpreadsheetDocument xSheetDoc;
+ XEventListener m_xEventListener = new EventListenerImpl();
+
+ public String[] getTestMethodNames() {
+ return new String[] {
+ "initialize", "checkWriter", "cleanup"
+ };
+ }
+
+ public void initialize() {
+ m_xMSF = (XMultiServiceFactory) param.getMSF();
+ log.println("check wether there is a valid MultiServiceFactory");
+
+ if (m_xMSF == null) {
+ assure("## Couldn't get MultiServiceFactory make sure your Office is started",
+ true);
+ }
+
+ log.println("... done");
+
+ log.println(
+ "Create an instance of com.sun.star.frame.GlobalEventBroadcaster");
+
+ Object GlobalEventBroadcaster = null;
+ Object dispatcher = null;
+
+ try {
+ GlobalEventBroadcaster = m_xMSF.createInstance(
+ "com.sun.star.frame.GlobalEventBroadcaster");
+ } catch (com.sun.star.uno.Exception e) {
+ assure("## Exception while creating instance", false);
+ }
+
+ log.println("... done");
+
+ log.println("check wether the created instance is valid");
+
+ if (GlobalEventBroadcaster == null) {
+ assure("couldn't create service", false);
+ }
+
+ log.println("... done");
+
+ log.println(
+ "try to query the XEventBroadcaster from the gained Object");
+ m_xEventBroadcaster = (XEventBroadcaster) UnoRuntime.queryInterface(
+ XEventBroadcaster.class,
+ GlobalEventBroadcaster);
+
+ if (util.utils.isVoid(m_xEventBroadcaster)) {
+ assure("couldn't get XEventBroadcaster", false);
+ }
+
+ log.println("... done");
+
+ log.println("adding Listener");
+ m_xEventBroadcaster.addEventListener(m_xEventListener);
+ log.println("... done");
+ }
+
+ public void checkWriter() {
+ log.println("-- Checking Writer --");
+
+ WriterHelper wHelper = new WriterHelper(m_xMSF);
+ String[] expected;
+ boolean locRes = true;
+ log.println("opening an empty writer doc");
+ notifyEvents.clear();
+ xTextDoc = wHelper.openEmptyDoc();
+ shortWait();
+ expected = new String[] { "OnUnfocus", "OnCreate", "OnViewCreated", "OnFocus" };
+
+ assure("Wrong events fired when opening empty doc",
+ proveExpectation(expected));
+ log.println("... done");
+
+ log.println("changing the writer doc");
+ notifyEvents.clear();
+ xTextDoc.getText().setString("GlobalEventBroadcaster");
+ shortWait();
+ expected = new String[] { "OnModifyChanged" };
+
+ assure("Wrong events fired when changing doc",
+ proveExpectation(expected));
+ log.println("... done");
+
+ log.println("closing the empty writer doc");
+ notifyEvents.clear();
+ wHelper.closeDoc(xTextDoc);
+ shortWait();
+ expected = new String[] { "OnUnfocus", "OnFocus", "OnViewClosed", "OnUnload" };
+
+ assure("Wrong events fired when closing empty doc",
+ proveExpectation(expected));
+ log.println("... done");
+
+ log.println("opening an writer doc via Window-New Window");
+ notifyEvents.clear();
+ xTextDoc = wHelper.openFromDialog(".uno:NewWindow", "", false);
+ shortWait();
+ expected = new String[] { "OnUnfocus", "OnCreate", "OnViewCreated", "OnFocus", "OnUnfocus", "OnViewCreated", "OnFocus", };
+
+ assure("Wrong events fired when opening an writer doc via Window-New Window",
+ proveExpectation(expected));
+ log.println("... done");
+
+ log.println("closing the created writer doc");
+ notifyEvents.clear();
+
+ wHelper.closeDoc(xTextDoc);
+ shortWait();
+ expected = new String[] { "OnViewClosed", "OnUnfocus", "OnFocus", "OnViewClosed", "OnUnload" };
+
+ assure("Wrong events fired when closing Window-New Window",
+ proveExpectation(expected));
+
+ log.println("... done");
+
+ log.println("Opening document with label wizard");
+ xTextDoc = wHelper.openFromDialog("private:factory/swriter?slot=21051", "", false);
+ shortWait();
+ XWindow xWindow = (XWindow) UnoRuntime.queryInterface(XWindow.class, wHelper.getToolkit ().getActiveTopWindow ());
+ UITools ut = new UITools(m_xMSF,xWindow);
+ notifyEvents.clear();
+ log.println("pressing button 'New Document'");
+ try{
+ ut.clickButton ("New Document");
+ } catch (Exception e) {
+ log.println("Couldn't press Button");
+ }
+ log.println("... done");
+ shortWait();
+ shortWait();
+ shortWait();
+ expected = new String[] { "OnViewClosed", "OnCreate", "OnFocus", "OnModifyChanged" };
+
+ assure("Wrong events fired when starting labels wizard",
+ proveExpectation(expected));
+
+ log.println("-- Done Writer --");
+ }
+
+ public void cleanup() {
+ log.println("removing Listener");
+ m_xEventBroadcaster.removeEventListener(m_xEventListener);
+ log.println("... done");
+ }
+
+ /**
+ * Sleeps for 0.5 sec. to allow StarOffice to react on <code>
+ * reset</code> call.
+ */
+ private void shortWait() {
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ log.println("While waiting :" + e);
+ }
+ }
+
+ private boolean proveExpectation(String[] expected) {
+ boolean locRes = true;
+ boolean failure = false;
+
+ log.println("Fired Events:");
+ for (int k=0;k<notifyEvents.size();k++) {
+ System.out.println("\t- "+notifyEvents.get(k));
+ }
+
+ for (int i = 0; i < expected.length; i++) {
+ locRes = notifyEvents.contains(expected[i]);
+
+ if (!locRes) {
+ log.println("The event " + expected[i] + " isn't fired");
+ failure = true;
+ }
+ }
+
+ return !failure;
+ }
+
+ public class EventListenerImpl implements XEventListener {
+ public void disposing(com.sun.star.lang.EventObject eventObject) {
+ log.println("disposing: " + eventObject.Source.toString());
+ }
+
+ public void notifyEvent(com.sun.star.document.EventObject eventObject) {
+ notifyEvents.add(eventObject.EventName);
+ }
+ }
+}