summaryrefslogtreecommitdiffstats
path: root/reportbuilder
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-11-27 15:13:33 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-11-27 21:09:13 +0100
commit92c34111dd8095b97a3761ab10c3ac4a3c191310 (patch)
treeda09753a6072ac4318bfd420a2bd0bf40f6f0cba /reportbuilder
parentRelated: tdf#94446 don't assert on unsetting focus handlers (diff)
downloadcore-92c34111dd8095b97a3761ab10c3ac4a3c191310.tar.gz
core-92c34111dd8095b97a3761ab10c3ac4a3c191310.zip
Related: tdf#94446 set parent for dialog
Change-Id: I174ec605f40e7cafbcb44e492941dfc36a4df3f2 Reviewed-on: https://gerrit.libreoffice.org/64120 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'reportbuilder')
-rw-r--r--reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java30
1 files changed, 29 insertions, 1 deletions
diff --git a/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java b/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
index 26eb4950e248..463addc63e71 100644
--- a/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
+++ b/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
@@ -17,17 +17,24 @@
*/
package org.libreoffice.report;
+import com.sun.star.awt.XWindow;
+import com.sun.star.beans.NamedValue;
import com.sun.star.beans.PropertyVetoException;
import com.sun.star.beans.UnknownPropertyException;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.NoSuchElementException;
+import com.sun.star.container.XChild;
import com.sun.star.container.XIndexAccess;
import com.sun.star.container.XNameAccess;
+import com.sun.star.frame.XController;
+import com.sun.star.frame.XFrame;
+import com.sun.star.frame.XModel;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.IndexOutOfBoundsException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.sdb.CommandType;
import com.sun.star.sdb.XCompletedExecution;
+import com.sun.star.sdb.XDocumentDataSource;
import com.sun.star.sdb.XParametersSupplier;
import com.sun.star.sdb.XQueriesSupplier;
import com.sun.star.sdb.XSingleSelectQueryComposer;
@@ -159,6 +166,26 @@ public class SDBCReportDataFactory implements DataSourceFactory
m_cmpCtx = cmpCtx;
}
+ public XWindow getParentWindow()
+ {
+ final XChild child = UnoRuntime.queryInterface(XChild.class, connection);
+ if (child == null)
+ return null;
+ final XDocumentDataSource docSource = UnoRuntime.queryInterface(XDocumentDataSource.class, child.getParent());
+ if (docSource == null)
+ return null;
+ final XModel model = UnoRuntime.queryInterface(XModel.class, docSource.getDatabaseDocument());
+ if (model == null)
+ return null;
+ final XController controller = model.getCurrentController();
+ if (controller == null)
+ return null;
+ final XFrame frame = controller.getFrame();
+ if (frame == null)
+ return null;
+ return frame.getContainerWindow();
+ }
+
public DataSource queryData(final String command, final Map<String,Object> parameters) throws DataSourceException
{
try
@@ -201,7 +228,8 @@ public class SDBCReportDataFactory implements DataSourceFactory
final XCompletedExecution execute = UnoRuntime.queryInterface(XCompletedExecution.class, rowSet);
if (rowSetCreated && execute != null && paramDef.parameterCount > 0)
{
- final XInteractionHandler handler = UnoRuntime.queryInterface(XInteractionHandler.class, m_cmpCtx.getServiceManager().createInstanceWithContext("com.sun.star.sdb.InteractionHandler", m_cmpCtx));
+ final XWindow window = getParentWindow();
+ final XInteractionHandler handler = UnoRuntime.queryInterface(XInteractionHandler.class, m_cmpCtx.getServiceManager().createInstanceWithArgumentsAndContext("com.sun.star.sdb.InteractionHandler", new Object[] { new NamedValue("Parent", window) }, m_cmpCtx));
execute.executeWithCompletion(handler);
}
else