diff options
author | Noel Grandin <noel@peralex.com> | 2015-06-11 13:10:09 +0200 |
---|---|---|
committer | Noel Grandin <noel@peralex.com> | 2015-06-15 10:44:42 +0200 |
commit | 8b85838611ed448ef18a9e4982849bbd702981aa (patch) | |
tree | 4aa539ec21817884133f27deb0512769509a2304 /sfx2 | |
parent | 0b255720a60f15ffe8006b37e367378b229e245f (diff) |
java: remove unnecessary threading
there is no point in spawning a thread to load a document and then
waiting for the thread to finish
Change-Id: Icd5d5452471b0a50a8e3525ab2b5f32a500ebdf4
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/JunitTest_sfx2_complex.mk | 1 | ||||
-rw-r--r-- | sfx2/qa/complex/sfx2/GlobalEventBroadcaster.java | 4 | ||||
-rw-r--r-- | sfx2/qa/complex/sfx2/tools/DialogThread.java | 79 | ||||
-rw-r--r-- | sfx2/qa/complex/sfx2/tools/WriterHelper.java | 126 |
4 files changed, 90 insertions, 120 deletions
diff --git a/sfx2/JunitTest_sfx2_complex.mk b/sfx2/JunitTest_sfx2_complex.mk index 1f11298dc925..ee1029e70abb 100644 --- a/sfx2/JunitTest_sfx2_complex.mk +++ b/sfx2/JunitTest_sfx2_complex.mk @@ -39,7 +39,6 @@ $(eval $(call gb_JunitTest_add_sourcefiles,sfx2_complex,\ sfx2/qa/complex/sfx2/GlobalEventBroadcaster \ sfx2/qa/complex/sfx2/UndoManager \ sfx2/qa/complex/sfx2/DocumentEvents \ - sfx2/qa/complex/sfx2/tools/DialogThread \ sfx2/qa/complex/sfx2/tools/TestDocument \ sfx2/qa/complex/sfx2/tools/WriterHelper \ sfx2/qa/complex/sfx2/undo/CalcDocumentTest \ diff --git a/sfx2/qa/complex/sfx2/GlobalEventBroadcaster.java b/sfx2/qa/complex/sfx2/GlobalEventBroadcaster.java index c639ca168a2a..e4154db87220 100644 --- a/sfx2/qa/complex/sfx2/GlobalEventBroadcaster.java +++ b/sfx2/qa/complex/sfx2/GlobalEventBroadcaster.java @@ -95,7 +95,7 @@ public class GlobalEventBroadcaster { System.out.println("... done"); } - @Test public void checkWriter() { + @Test public void checkWriter() throws Exception { System.out.println("-- Checking Writer --"); WriterHelper wHelper = new WriterHelper(m_xMSF); @@ -156,7 +156,7 @@ public class GlobalEventBroadcaster { proveExpectation(expected)); System.out.println("... done"); - // TODO: It seems not possible to close the document without interactiv question + // TODO: It seems not possible to close the document without interactive question // there the follow test will not be execute if (false) { System.out.println("Opening document with label wizard"); diff --git a/sfx2/qa/complex/sfx2/tools/DialogThread.java b/sfx2/qa/complex/sfx2/tools/DialogThread.java deleted file mode 100644 index b4a8ddae3e1a..000000000000 --- a/sfx2/qa/complex/sfx2/tools/DialogThread.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -package complex.sfx2.tools; - -import com.sun.star.beans.PropertyValue; -import com.sun.star.frame.XController; -import com.sun.star.frame.XDispatch; -import com.sun.star.frame.XDispatchProvider; -import com.sun.star.frame.XModel; -import com.sun.star.lang.XComponent; -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.util.URL; -import com.sun.star.util.XURLTransformer; - -/** - * This class opens a given dialog in a separate Thread by dispatching an url - * - */ -public class DialogThread extends Thread { - private XComponent m_xDoc = null; - private XMultiServiceFactory m_xMSF = null; - private String m_url = ""; - - public DialogThread(XComponent xDoc, XMultiServiceFactory msf, String url) { - this.m_xDoc = xDoc; - this.m_xMSF = msf; - this.m_url = url; - } - - @Override - public void run() { - XModel aModel = UnoRuntime.queryInterface( XModel.class, m_xDoc ); - - XController xController = aModel.getCurrentController(); - - //Opening Dialog - try { - XDispatchProvider xDispProv = UnoRuntime.queryInterface( XDispatchProvider.class, xController.getFrame() ); - XURLTransformer xParser = UnoRuntime.queryInterface( XURLTransformer.class, - m_xMSF.createInstance( "com.sun.star.util.URLTransformer" ) ); - - // Because it's an in/out parameter - // we must use an array of URL objects. - URL[] aParseURL = new URL[1]; - aParseURL[0] = new URL(); - aParseURL[0].Complete = m_url; - xParser.parseStrict(aParseURL); - - URL aURL = aParseURL[0]; - XDispatch xDispatcher = xDispProv.queryDispatch(aURL, "", com.sun.star.frame.FrameSearchFlag.SELF | - com.sun.star.frame.FrameSearchFlag.CHILDREN); - PropertyValue[] dispatchArguments = new PropertyValue[0]; - - if (xDispatcher != null) { - xDispatcher.dispatch(aURL, dispatchArguments); - } else { - System.out.println("xDispatcher is null"); - } - } catch (com.sun.star.uno.Exception e) { - System.out.println("Couldn't open dialog"); - } - } -}
\ No newline at end of file diff --git a/sfx2/qa/complex/sfx2/tools/WriterHelper.java b/sfx2/qa/complex/sfx2/tools/WriterHelper.java index d0d47ce64485..382aebca5449 100644 --- a/sfx2/qa/complex/sfx2/tools/WriterHelper.java +++ b/sfx2/qa/complex/sfx2/tools/WriterHelper.java @@ -23,17 +23,23 @@ import com.sun.star.accessibility.XAccessibleAction; import com.sun.star.accessibility.XAccessibleContext; import com.sun.star.awt.XExtendedToolkit; import com.sun.star.awt.XWindow; +import com.sun.star.beans.PropertyValue; +import com.sun.star.frame.XController; import com.sun.star.frame.XDesktop; +import com.sun.star.frame.XDispatch; +import com.sun.star.frame.XDispatchProvider; +import com.sun.star.frame.XModel; import com.sun.star.lang.XComponent; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.text.XTextDocument; import com.sun.star.uno.UnoRuntime; +import com.sun.star.util.URL; import com.sun.star.util.XCloseable; +import com.sun.star.util.XURLTransformer; import util.AccessibilityTools; import util.WriterTools; - /** * Methods to open Writer docs * @@ -41,26 +47,36 @@ import util.WriterTools; public class WriterHelper { private XMultiServiceFactory m_xMSF = null; - /** Creates a new instance of WriterHelper - * @param xMSF The MultiServiceFactory gained from the office + /** + * Creates a new instance of WriterHelper + * + * @param xMSF + * The MultiServiceFactory gained from the office */ public WriterHelper(XMultiServiceFactory xMSF) { this.m_xMSF = xMSF; } - /** Opens an empty document + /** + * Opens an empty document + * * @return a reference to the opened document is returned */ public XTextDocument openEmptyDoc() { return WriterTools.createTextDoc(m_xMSF); } - /** Closes a given XTextDocument - * @param xTextDoc the text document to be closed - * @return if an error occurs the errormessage is returned and an empty String if not + /** + * Closes a given XTextDocument + * + * @param xTextDoc + * the text document to be closed + * @return if an error occurs the errormessage is returned and an empty + * String if not */ public String closeDoc(XTextDocument xTextDoc) { - XCloseable closer = UnoRuntime.queryInterface(XCloseable.class, xTextDoc); + XCloseable closer = UnoRuntime.queryInterface(XCloseable.class, + xTextDoc); String err = ""; try { @@ -74,20 +90,51 @@ public class WriterHelper { } private XTextDocument xLocalDoc = null; - /** a TextDocument is opened by pressing a button in a dialog given by uno-URL - * @param url the uno-URL of the dialog to be opened - * @param createButton the language dependent label of the button to be pressed - * @param destroyLocal if true the document that has been opened to dispatch the dialog is closed before the method returns, - * otherwise this document remains open + + /** + * a TextDocument is opened by pressing a button in a dialog given by + * uno-URL + * + * @param url + * the uno-URL of the dialog to be opened + * @param createButton + * the language dependent label of the button to be pressed + * @param destroyLocal + * if true the document that has been opened to dispatch the + * dialog is closed before the method returns, otherwise this + * document remains open * @return returns the created Textdocument */ public XTextDocument openFromDialog(String url, String createButton, - boolean destroyLocal) { + boolean destroyLocal) throws Exception { xLocalDoc = WriterTools.createTextDoc(m_xMSF); - XComponent comp = UnoRuntime.queryInterface(XComponent.class, xLocalDoc); - DialogThread diagThread = new DialogThread(comp, m_xMSF, url); - diagThread.start(); - util.utils.pause(4000); + XComponent comp = UnoRuntime + .queryInterface(XComponent.class, xLocalDoc); + + XModel aModel = UnoRuntime.queryInterface(XModel.class, comp); + + XController xController = aModel.getCurrentController(); + + // Opening Dialog + XDispatchProvider xDispProv = UnoRuntime.queryInterface( + XDispatchProvider.class, xController.getFrame()); + XURLTransformer xParser = UnoRuntime.queryInterface( + XURLTransformer.class, + m_xMSF.createInstance("com.sun.star.util.URLTransformer")); + + // Because it's an in/out parameter + // we must use an array of URL objects. + URL[] aParseURL = new URL[] { new URL() }; + aParseURL[0].Complete = url; + xParser.parseStrict(aParseURL); + + XDispatch xDispatcher = xDispProv.queryDispatch(aParseURL[0], "", + com.sun.star.frame.FrameSearchFlag.SELF + | com.sun.star.frame.FrameSearchFlag.CHILDREN); + if (xDispatcher != null) { + PropertyValue[] dispatchArguments = new PropertyValue[0]; + xDispatcher.dispatch(aParseURL[0], dispatchArguments); + } if (createButton.length() > 1) { XExtendedToolkit tk = getToolkit(); @@ -96,16 +143,16 @@ public class WriterHelper { XWindow xWindow = UnoRuntime.queryInterface(XWindow.class, atw); XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); - XAccessibleContext buttonContext = AccessibilityTools.getAccessibleObjectForRole( - xRoot, - AccessibleRole.PUSH_BUTTON, - createButton); + XAccessibleContext buttonContext = AccessibilityTools + .getAccessibleObjectForRole(xRoot, + AccessibleRole.PUSH_BUTTON, createButton); - XAccessibleAction buttonAction = UnoRuntime.queryInterface(XAccessibleAction.class, buttonContext); + XAccessibleAction buttonAction = UnoRuntime.queryInterface( + XAccessibleAction.class, buttonContext); try { - System.out.println("Name: " + - buttonContext.getAccessibleName()); + System.out + .println("Name: " + buttonContext.getAccessibleName()); buttonAction.doAccessibleAction(0); } catch (com.sun.star.lang.IndexOutOfBoundsException e) { System.out.println("Couldn't press button"); @@ -116,7 +163,8 @@ public class WriterHelper { XDesktop xDesktop = getDesktop(); - XTextDocument returnDoc = UnoRuntime.queryInterface(XTextDocument.class, xDesktop.getCurrentComponent()); + XTextDocument returnDoc = UnoRuntime.queryInterface( + XTextDocument.class, xDesktop.getCurrentComponent()); if (destroyLocal) { closeDoc(xLocalDoc); @@ -125,18 +173,16 @@ public class WriterHelper { return returnDoc; } - public void closeFromDialog() - { + + public void closeFromDialog() { closeDoc(xLocalDoc); xLocalDoc = null; } - - - - - /** creates an instance of com.sun.star.awt.Toolkit to query the XExtendedToolkit - * interface + /** + * creates an instance of com.sun.star.awt.Toolkit to query the + * XExtendedToolkit interface + * * @return returns the gained XExtendedToolkit Interface */ public XExtendedToolkit getToolkit() { @@ -146,15 +192,19 @@ public class WriterHelper { toolkit = m_xMSF.createInstance("com.sun.star.awt.Toolkit"); } catch (com.sun.star.uno.Exception e) { System.out.println("Couldn't get toolkit"); - e.printStackTrace( System.err ); + e.printStackTrace(System.err); } - XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class, toolkit); + XExtendedToolkit tk = UnoRuntime.queryInterface(XExtendedToolkit.class, + toolkit); return tk; } - /** creates an instance of com.sun.star.frame.Desktop to query the XDesktop interface + /** + * creates an instance of com.sun.star.frame.Desktop to query the XDesktop + * interface + * * @return returns the gained XDesktop interface */ private XDesktop getDesktop() { @@ -164,7 +214,7 @@ public class WriterHelper { desk = m_xMSF.createInstance("com.sun.star.frame.Desktop"); } catch (com.sun.star.uno.Exception e) { System.out.println("Couldn't get desktop"); - e.printStackTrace( System.err ); + e.printStackTrace(System.err); } XDesktop xDesktop = UnoRuntime.queryInterface(XDesktop.class, desk); |