summaryrefslogtreecommitdiffstats
path: root/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java')
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java283
1 files changed, 283 insertions, 0 deletions
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java
new file mode 100644
index 000000000..66bef678e
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java
@@ -0,0 +1,283 @@
+/*
+ * 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 com.sun.star.wiki;
+
+import com.sun.star.awt.XControl;
+import com.sun.star.awt.XControlContainer;
+import com.sun.star.awt.XControlModel;
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XDialogEventHandler;
+import com.sun.star.awt.XDialogProvider2;
+import com.sun.star.awt.XAnimation;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.awt.XTopWindow;
+import com.sun.star.awt.XTopWindowListener;
+import com.sun.star.awt.XWindow;
+import com.sun.star.container.XNameContainer;
+import com.sun.star.lang.EventObject;
+import com.sun.star.lang.XMultiServiceFactory;
+
+public class WikiDialog implements XDialogEventHandler, XTopWindowListener
+{
+ protected XComponentContext m_xContext;
+ private XControlContainer m_xControlContainer;
+ protected XDialog m_xDialog;
+ private String[] m_aMethods;
+ protected boolean m_bAction = false;
+ protected Settings m_aSettings;
+ protected Thread m_aThread;
+ protected boolean m_bThreadFinished = false;
+
+
+ /** Creates a new instance of WikiDialog */
+ public WikiDialog(XComponentContext c, String DialogURL)
+ {
+ this.m_xContext = c;
+ XMultiComponentFactory xMCF = m_xContext.getServiceManager();
+ m_aSettings = Settings.getSettings(m_xContext);
+ try
+ {
+ Object obj;
+ obj = xMCF.createInstanceWithContext("com.sun.star.awt.DialogProvider2", m_xContext );
+ XDialogProvider2 xDialogProvider = UnoRuntime.queryInterface( XDialogProvider2.class, obj );
+
+ m_xDialog = xDialogProvider.createDialogWithHandler( DialogURL, this );
+ m_xControlContainer = UnoRuntime.queryInterface( XControlContainer.class, m_xDialog );
+ XTopWindow xTopWindow = UnoRuntime.queryInterface( XTopWindow.class, m_xDialog );
+ if ( xTopWindow != null )
+ xTopWindow.addTopWindowListener( this );
+ }
+ catch (com.sun.star.uno.Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public synchronized void ThreadStop( boolean bSelf )
+ {
+ if ( bSelf || m_aThread != null && !m_bThreadFinished )
+ {
+ try
+ {
+ Helper.AllowConnection( bSelf );
+ }
+ catch( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ m_aThread = null;
+ m_bThreadFinished = true;
+ }
+
+ protected void setMethods (String [] Methods)
+ {
+ this.m_aMethods = Methods;
+ }
+
+
+ public boolean show( )
+ {
+ m_bThreadFinished = false;
+
+ if( m_xDialog != null ) m_xDialog.execute();
+ return m_bAction;
+ }
+
+
+ public String[] getSupportedMethodNames()
+ {
+ return m_aMethods;
+ }
+
+
+ public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName )
+ {
+ return true;
+ }
+
+ public void SetTitle( String sTitle )
+ throws Exception
+ {
+ SetTitle( m_xDialog, sTitle );
+ }
+
+ private static void SetTitle( XDialog xDialog, String sTitle )
+ throws Exception
+ {
+ if ( xDialog == null || sTitle == null ) {
+ return;
+ }
+ XControl xDialogControl = UnoRuntime.queryInterface( XControl.class, xDialog );
+ if ( xDialogControl != null )
+ {
+ XPropertySet xPropSet = UnoRuntime.queryInterface( XPropertySet.class, xDialogControl.getModel() );
+ if ( xPropSet != null )
+ xPropSet.setPropertyValue( "Title", sTitle );
+ }
+ }
+
+ protected XPropertySet GetPropSet(String sControl)
+ {
+ return GetPropSet( m_xControlContainer, sControl );
+ }
+
+ private static XPropertySet GetPropSet( XControlContainer xControlContainer, String sControl )
+ {
+ XPropertySet xPS = null;
+
+ if ( xControlContainer != null && sControl != null )
+ {
+ XControl xControl = xControlContainer.getControl(sControl);
+ xPS = UnoRuntime.queryInterface(XPropertySet.class, xControl.getModel() );
+ }
+
+ if ( xPS == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return xPS;
+ }
+
+
+
+ protected void InsertThrobber( int X, int Y, int Width, int Height )
+ {
+ try
+ {
+ XControl xDialogControl = UnoRuntime.queryInterface( XControl.class, m_xDialog );
+ XControlModel xDialogModel = null;
+ if ( xDialogControl != null )
+ xDialogModel = xDialogControl.getModel();
+
+ XMultiServiceFactory xDialogFactory = UnoRuntime.queryInterface( XMultiServiceFactory.class, xDialogModel );
+ if ( xDialogFactory != null )
+ {
+ XControlModel xThrobberModel = UnoRuntime.queryInterface( XControlModel.class, xDialogFactory.createInstance( "com.sun.star.awt.SpinningProgressControlModel" ) );
+ XPropertySet xThrobberProps = UnoRuntime.queryInterface( XPropertySet.class, xThrobberModel );
+ if ( xThrobberProps != null )
+ {
+ xThrobberProps.setPropertyValue( "Name", "WikiThrobber" );
+ xThrobberProps.setPropertyValue( "PositionX", Integer.valueOf( X ) );
+ xThrobberProps.setPropertyValue( "PositionY", Integer.valueOf( Y ) );
+ xThrobberProps.setPropertyValue( "Width", Integer.valueOf( Width ) );
+ xThrobberProps.setPropertyValue( "Height", Integer.valueOf( Height ) );
+
+ XNameContainer xDialogContainer = UnoRuntime.queryInterface( XNameContainer.class, xDialogModel );
+ xDialogContainer.insertByName( "WikiThrobber", xThrobberModel );
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ SetThrobberVisible( false );
+ }
+
+ public void SetThrobberActive( boolean bActive )
+ {
+ if ( m_xControlContainer != null )
+ {
+ try
+ {
+ XAnimation xThrobber = UnoRuntime.queryInterface( XAnimation.class, m_xControlContainer.getControl( "WikiThrobber" ) );
+ if ( xThrobber != null )
+ {
+ if ( bActive )
+ xThrobber.startAnimation();
+ else
+ xThrobber.stopAnimation();
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void SetThrobberVisible( boolean bVisible )
+ {
+ if ( m_xControlContainer != null )
+ {
+ try
+ {
+ XWindow xWindow = UnoRuntime.queryInterface( XWindow.class, m_xControlContainer.getControl( "WikiThrobber" ) );
+ if ( xWindow != null )
+ xWindow.setVisible( bVisible );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void SetFocusTo( String aControl )
+ {
+ if ( m_xControlContainer != null )
+ {
+ try
+ {
+ XWindow xWindow = UnoRuntime.queryInterface( XWindow.class, m_xControlContainer.getControl( aControl ) );
+ if ( xWindow != null )
+ xWindow.setFocus();
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void DisposeDialog()
+ {
+ Helper.Dispose( m_xDialog );
+ }
+
+ public void windowOpened( EventObject e )
+ {}
+
+ public void windowClosing( EventObject e )
+ {}
+
+ public void windowClosed( EventObject e )
+ {}
+
+ public void windowMinimized( EventObject e )
+ {}
+
+ public void windowNormalized( EventObject e )
+ {}
+
+ public void windowActivated( EventObject e )
+ {}
+
+ public void windowDeactivated( EventObject e )
+ {}
+
+ public void disposing( EventObject e )
+ {}
+}
+