diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:06:44 +0000 |
commit | ed5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch) | |
tree | 7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java | |
parent | Initial commit. (diff) | |
download | libreoffice-upstream.tar.xz libreoffice-upstream.zip |
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java')
-rw-r--r-- | swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java | 283 |
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 ) + {} +} + |