diff options
Diffstat (limited to 'swext/mediawiki/src/com')
12 files changed, 0 insertions, 4286 deletions
diff --git a/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java b/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java deleted file mode 100644 index 42cc7a8..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java +++ /dev/null @@ -1,193 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import javax.swing.text.html.*; -import javax.swing.text.MutableAttributeSet; - -public class EditPageParser extends HTMLEditorKit.ParserCallback -{ - - protected String m_sEditTime = ""; - protected String m_sEditToken = ""; - protected String m_sLoginToken = ""; - protected String m_sMainURL = ""; - - private int m_nWikiArticleHash = 0; - private boolean m_bHTMLStartFound = false; - private boolean m_bInHead = false; - - protected int m_nWikiArticleStart = -1; - protected int m_nWikiArticleEnd = -1; - protected int m_nHTMLArticleStart = -1; - protected int m_nHTMLArticleEnd = -1; - protected int m_nNoArticleInd = -1; - protected int m_nErrorInd = -1; - - /** Creates a new instance of WikiHTMLParser */ - public EditPageParser() - { - } - - public void handleComment( char[] data,int pos ) - { - // insert code to handle comments - } - - public void handleEndTag( HTML.Tag t,int pos ) - { - if ( t == HTML.Tag.TEXTAREA ) - { - m_nWikiArticleEnd = pos; - } - else if ( t == HTML.Tag.DIV ) - { - if ( m_bHTMLStartFound ) - { - m_nHTMLArticleStart = pos+6; - m_bHTMLStartFound = false; - } - } - else if ( t == HTML.Tag.HEAD ) - { - m_bInHead = false; - } - } - - public void handleError( String errorMsg,int pos ) - { - //System.out.println( errorMsg ); - } - - public void handleSimpleTag( HTML.Tag t, MutableAttributeSet a,int pos ) - { - // insert code to handle simple tags - - if ( t == HTML.Tag.INPUT ) - { - String sName = ( String ) a.getAttribute( HTML.Attribute.NAME ); - if ( sName != null ) - { - if ( sName.equalsIgnoreCase( "wpEdittime" ) ) - { - this.m_sEditTime = ( String ) a.getAttribute( HTML.Attribute.VALUE ); - } - else if ( sName.equalsIgnoreCase( "wpEditToken" ) ) - { - this.m_sEditToken = ( String ) a.getAttribute( HTML.Attribute.VALUE ); - } - else if ( sName.equalsIgnoreCase( "wpLoginToken" ) ) - { - this.m_sLoginToken = ( String ) a.getAttribute( HTML.Attribute.VALUE ); - } - } - - } - else if ( t == HTML.Tag.LINK ) - { - if ( m_bInHead ) - { - String sName = ( String ) a.getAttribute( HTML.Attribute.HREF ); - if ( sName != null ) - { - int nIndexStart = sName.indexOf( "index.php" ); - // get the main URL from the first header-link with index.php - // the link with "action=edit" inside is preferable - if ( nIndexStart>= 0 - && ( m_sMainURL.length() == 0 || sName.indexOf( "action=edit" ) >= 0 ) ) - { - m_sMainURL = sName.substring( 0, nIndexStart ); - } - } - } - } - - } - - public void handleStartTag( HTML.Tag t, MutableAttributeSet a,int pos ) - { - // insert code to handle starting tags - String sName = ""; - String sId = ""; - String sClass = ""; - - if ( t == HTML.Tag.HEAD ) - { - m_bInHead = true; - } - if ( t == HTML.Tag.TEXTAREA ) - { - sName = ( String ) a.getAttribute( HTML.Attribute.NAME ); - if ( sName != null ) - { - if ( sName.equalsIgnoreCase( "wpTextbox1" ) ) - { - m_nWikiArticleHash = t.hashCode(); - m_nWikiArticleStart = pos; - } - } - } - else if ( t == HTML.Tag.DIV ) - { - sId = ( String ) a.getAttribute( HTML.Attribute.ID ); - sClass = ( String ) a.getAttribute( HTML.Attribute.CLASS ); - if ( sId != null ) - { - if ( sId.equalsIgnoreCase( "contentSub" ) ) - { - m_bHTMLStartFound = true; - } - } - if ( sClass != null ) - { - if ( sClass.equalsIgnoreCase( "printfooter" ) ) - { - m_nHTMLArticleEnd = pos; - } - else if ( sClass.equalsIgnoreCase( "noarticletext" ) ) - { - m_nNoArticleInd = pos; - } - else if ( sClass.equalsIgnoreCase( "errorbox" ) ) - { - m_nErrorInd = pos; - } - } - } - else if ( t == HTML.Tag.P ) - { - sClass = ( String ) a.getAttribute( HTML.Attribute.CLASS ); - if ( sClass != null && sClass.equalsIgnoreCase( "error" ) ) - { - m_nErrorInd = pos; - } - } - } - - -} diff --git a/swext/mediawiki/src/com/sun/star/wiki/Helper.java b/swext/mediawiki/src/com/sun/star/wiki/Helper.java deleted file mode 100644 index a94dfc0..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/Helper.java +++ /dev/null @@ -1,1153 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.awt.MessageBoxButtons; -import com.sun.star.awt.XControl; -import com.sun.star.awt.XControlContainer; -import com.sun.star.awt.XDialog; -import com.sun.star.awt.XMessageBox; -import com.sun.star.awt.XMessageBoxFactory; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.beans.NamedValue; -import com.sun.star.beans.PropertyValue; -import com.sun.star.beans.XPropertySet; -import com.sun.star.container.XContainerQuery; -import com.sun.star.container.XEnumeration; -import com.sun.star.container.XNameAccess; -import com.sun.star.container.XNameContainer; -import com.sun.star.document.XDocumentInfoSupplier; -import com.sun.star.frame.XModel; -import com.sun.star.frame.XModuleManager; -import com.sun.star.io.XInputStream; -import com.sun.star.io.XOutputStream; -import com.sun.star.io.XSeekable; -import com.sun.star.io.XStream; -import com.sun.star.lang.XMultiComponentFactory; -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.lang.XComponent; -import com.sun.star.system.SystemShellExecuteFlags; -import com.sun.star.system.XSystemShellExecute; -import com.sun.star.task.UrlRecord; -import com.sun.star.task.XInteractionHandler; -import com.sun.star.task.XMasterPasswordHandling; -import com.sun.star.task.XPasswordContainer; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.util.XChangesBatch; -import java.net.*; -import java.io.*; -import java.util.Hashtable; -import java.util.Random; -import javax.net.ssl.SSLException; -import javax.swing.text.html.HTMLEditorKit; - -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HostConfiguration; -import org.apache.commons.httpclient.HttpMethodBase; -import org.apache.commons.httpclient.cookie.CookiePolicy; -import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; -import org.apache.commons.httpclient.protocol.Protocol; -import org.apache.commons.httpclient.URI; -import org.apache.commons.httpclient.methods.GetMethod; -import org.apache.commons.httpclient.methods.PostMethod; - -public class Helper -{ - public final static int GENERALSEND_ERROR = 0; - public final static int NOWIKIFILTER_ERROR = 1; - public final static int NOURLCONNECTION_ERROR = 2; - public final static int WRONGLOGIN_ERROR = 3; - public final static int INVALIDURL_ERROR = 4; - public final static int NOURL_ERROR = 5; - - public final static int DLG_SENDTITLE = 6; - public final static int DLG_WIKIARTICLE = 7; - public final static int DLG_NO = 8; - public final static int DLG_OK = 9; - public final static int DLG_YES = 10; - // 11 is reserved - public final static int DLG_ADDBUTTON = 12; - public final static int DLG_EDITBUTTON = 13; - public final static int DLG_SENDBUTTON = 14; - public final static int DLG_REMOVEBUTTON = 15; - - public final static int DLG_EDITSETTING_URLLABEL = 16; - public final static int DLG_EDITSETTING_USERNAMELABEL = 17; - public final static int DLG_EDITSETTING_PASSWORDLABEL = 18; - public final static int DLG_NEWWIKIPAGE_LABEL1 = 19; - public final static int DLG_SENDTOMEDIAWIKI_LABEL1 = 20; - public final static int DLG_SENDTOMEDIAWIKI_LABEL2 = 21; - public final static int DLG_SENDTOMEDIAWIKI_LABEL3 = 22; - public final static int DLG_SENDTOMEDIAWIKI_MINORCHECK = 23; - public final static int DLG_SENDTOMEDIAWIKI_BROWSERCHECK = 24; - public final static int UNKNOWNCERT_ERROR = 25; - public final static int DLG_MEDIAWIKI_TITLE = 26; - public final static int DLG_EDITSETTING_ACCOUNTLINE = 27; - public final static int DLG_EDITSETTING_WIKILINE = 28; - public final static int DLG_EDITSETTING_SAVEBOX = 29; - public final static int CANCELSENDING_ERROR = 30; - public final static int DLG_MEDIAWIKIEXTENSION_STRING = 31; - public final static int DLG_WIKIPAGEEXISTS_LABEL1 = 32; - - public final static int STRINGS_NUM = 33; - - private final static String[] m_pEntryNames = { "GeneralSendError", - "NoWikiFilter", - "NoConnectionToURL", - "WrongLogin", - "InvalidURL", - "NoURL", - "Dlg_SendTitle", - "Dlg_WikiArticle", - "Dlg_No", - "Dlg_OK", - "Dlg_Yes", - null, // reserved - "Dlg_AddButton", - "Dlg_EditButton", - "Dlg_SendButton", - "Dlg_RemoveButton", - "Dlg_EditSetting_UrlLabel", - "Dlg_EditSetting_UsernameLabel", - "Dlg_EditSetting_PasswordLabel", - "Dlg_NewWikiPage_Label1", - "Dlg_SendToMediaWiki_Label1", - "Dlg_SendToMediaWiki_Label2", - "Dlg_SendToMediaWiki_Label3", - "Dlg_SendToMediaWiki_MinorCheck", - "Dlg_SendToMediaWiki_BrowserCheck", - "UnknownCert", - "Dlg_MediaWiki_Title", - "Dlg_EditSetting_AccountLine", - "Dlg_EditSetting_WikiLine", - "Dlg_EditSetting_SaveBox", - "CancelSending", - "Dlg_MediaWiki_Extension_String", - "Dlg_WikiPageExists_Label1" }; - - private static String[] m_pConfigStrings; - - private static final String sHTMLHeader = "<HTML><HEAD><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><TITLE></TITLE></HEAD><BODY>"; - private static final String sHTMLFooter = "</BODY></HTML>"; - - private static Random m_aRandom; - private static MultiThreadedHttpConnectionManager m_aConnectionManager; - private static HttpClient m_aClient; - private static boolean m_bAllowConnection = true; - private static Hashtable m_aAcceptedUnknownCerts; - - private static Boolean m_bShowInBrowser = null; - - private static XPasswordContainer m_xPasswordContainer; - private static XInteractionHandler m_xInteractionHandler; - - synchronized protected static String GetLocalizedString( XComponentContext xContext, int nID ) - throws com.sun.star.uno.Exception - { - if ( nID >= STRINGS_NUM ) - throw new com.sun.star.uno.RuntimeException(); - - if ( m_pConfigStrings == null ) - { - XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/Strings" ); - - String[] pStrings = new String[STRINGS_NUM]; - for ( int nInd = 0; nInd < STRINGS_NUM; nInd++ ) - if ( m_pEntryNames[nInd] != null ) - pStrings[nInd] = AnyConverter.toString( xNameAccess.getByName( m_pEntryNames[nInd] ) ); - else - pStrings[nInd] = ""; - - m_pConfigStrings = pStrings; - } - - return m_pConfigStrings[nID]; - } - - synchronized protected static HttpClient GetHttpClient() - throws WikiCancelException - { - if ( !m_bAllowConnection ) - throw new WikiCancelException(); - - if ( m_aConnectionManager == null ) - m_aConnectionManager = new MultiThreadedHttpConnectionManager(); - - if ( m_aClient == null ) - { - m_aClient = new HttpClient( m_aConnectionManager ); - m_aClient.getParams().setParameter( "http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY ); - m_aClient.getParams().setParameter( "http.protocol.single-cookie-header", Boolean.TRUE ); - m_aClient.getParams().setParameter( "http.protocol.content-charset", "UTF-8" ); - } - - return m_aClient; - } - - synchronized protected static void AllowConnection( boolean bAllow ) - { - m_bAllowConnection = bAllow; - if ( !bAllow && m_aConnectionManager != null ) - { - m_aClient = null; - m_aConnectionManager.shutdown(); - m_aConnectionManager = null; - } - } - - synchronized protected static boolean IsConnectionAllowed() - { - return m_bAllowConnection; - } - - synchronized protected static boolean GetShowInBrowserByDefault( XComponentContext xContext ) - { - if ( m_bShowInBrowser == null ) - { - try - { - XNameAccess xAccess = Helper.GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/Settings" ); - m_bShowInBrowser = new Boolean( AnyConverter.toBoolean( xAccess.getByName( "PreselectShowBrowser" ) ) ); - } - catch( com.sun.star.uno.Exception e ) - { - e.printStackTrace(); - } - } - - return m_bShowInBrowser.booleanValue(); - } - - synchronized protected static void SetShowInBrowserByDefault( XComponentContext xContext, boolean bValue ) - { - try - { - m_bShowInBrowser = new Boolean( bValue ); - - XPropertySet xProps = Helper.GetConfigProps( xContext, "org.openoffice.Office.Custom.WikiExtension/Settings" ); - xProps.setPropertyValue( "PreselectShowBrowser", new Boolean( bValue ) ); - XChangesBatch xBatch = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xProps ); - if ( xBatch != null ) - xBatch.commitChanges(); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - synchronized protected static XPasswordContainer GetPasswordContainer( XComponentContext xContext ) - throws com.sun.star.uno.Exception - { - if ( m_xPasswordContainer == null && xContext != null ) - { - XMultiComponentFactory xFactory = xContext.getServiceManager(); - if ( xFactory != null ) - m_xPasswordContainer = (XPasswordContainer)UnoRuntime.queryInterface( - XPasswordContainer.class, - xFactory.createInstanceWithContext( "com.sun.star.task.PasswordContainer", xContext ) ); - } - - if ( m_xPasswordContainer == null ) - throw new com.sun.star.uno.RuntimeException(); - - return m_xPasswordContainer; - } - - synchronized protected static XInteractionHandler GetInteractionHandler( XComponentContext xContext ) - throws com.sun.star.uno.Exception - { - if ( m_xInteractionHandler == null && xContext != null ) - { - XMultiComponentFactory xFactory = xContext.getServiceManager(); - if ( xFactory != null ) - m_xInteractionHandler = ( XInteractionHandler )UnoRuntime.queryInterface( - XInteractionHandler.class, - xFactory.createInstanceWithContext( "com.sun.star.task.InteractionHandler", xContext ) ); - } - - if ( m_xInteractionHandler == null ) - throw new com.sun.star.uno.RuntimeException(); - - return m_xInteractionHandler; - } - - protected static Protocol GetOwnHttps( int nPort ) - { - return new Protocol( "https", new WikiProtocolSocketFactory(), ( ( nPort < 0 ) ? 443 : nPort ) ); - } - - protected static String GetMainURL( String sWebPage, String sVURL ) - { - String sResultURL = ""; - try - { - StringReader aReader = new StringReader( sWebPage ); - HTMLEditorKit.Parser aParser = GetHTMLParser(); - EditPageParser aCallback = new EditPageParser(); - - aParser.parse( aReader, aCallback, true ); - sResultURL = aCallback.m_sMainURL; - - if ( !sResultURL.startsWith( "http" ) ) - { - //if the url is only relative then complete it - URL aURL = new URL( sVURL ); - sResultURL = aURL.getProtocol() + "://" + aURL.getHost() + sResultURL; - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - if ( sResultURL.length() == 0 ) - { - // usually that should not happen - // workaround: try to get index.php from the provided URL - int nIndex = sVURL.indexOf( "index.php" ); - if ( nIndex >= 0 ) - sResultURL = sVURL.substring( 0, nIndex ); - } - - return sResultURL; - } - - protected static String GetRedirectURL( String sWebPage, String sURL ) - { - //scrape the HTML source and find the EditURL - // TODO/LATER: Use parser in future - - String sResultURL = ""; - int nInd = sWebPage.indexOf( "http-equiv=\"refresh\"" ); - if ( nInd != -1 ) - { - int nContent = sWebPage.indexOf( "content=", nInd ); - if ( nContent > 0 ) - { - int nURL = sWebPage.indexOf( "URL=", nContent ); - if ( nURL > 0 ) - { - int nEndURL = sWebPage.indexOf( "\"", nURL ); - if ( nEndURL > 0 ) - sResultURL = sWebPage.substring( nURL + 4, nEndURL ); - } - } - - try - { - URL aURL = new URL( sURL ); - if ( !sResultURL.startsWith( aURL.getProtocol() )) - { - //if the url is only relative then complete it - if ( sResultURL.startsWith( "/" ) ) - sResultURL = aURL.getProtocol() + "://" + aURL.getHost() + sResultURL; - else - sResultURL = aURL.getProtocol() + "://" + aURL.getHost() + aURL.getPath() + sResultURL; - } - } - catch ( MalformedURLException ex ) - { - ex.printStackTrace(); - } - } - - return sResultURL; - - } - - protected static XInputStream SaveHTMLTemp( XComponentContext xContext, String sArticle ) - { - XInputStream xResult = null; - - if ( xContext != null ) - { - try - { - Object oTempFile = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.io.TempFile", xContext ); - XStream xStream = ( XStream ) UnoRuntime.queryInterface( XStream.class, oTempFile ); - XSeekable xSeekable = ( XSeekable ) UnoRuntime.queryInterface( XSeekable.class, oTempFile ); - if ( xStream != null && xSeekable != null ) - { - XOutputStream xOutputStream = xStream.getOutputStream(); - XInputStream xInputStream = xStream.getInputStream(); - if ( xOutputStream != null && xInputStream != null ) - { - String sHTML = sHTMLHeader.concat( sArticle ); - sHTML = sHTML.concat( sHTMLFooter ); - xOutputStream.writeBytes( sHTML.getBytes( "UTF-8" ) ); - // xOutputStream.closeOutput(); - xSeekable.seek( 0 ); - - xResult = xInputStream; - } - } - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } - - return xResult; - } - - - protected static String CreateTempFile( XComponentContext xContext ) - { - String sURL = ""; - try - { - Object oTempFile = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.io.TempFile", xContext ); - XPropertySet xPropertySet = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, oTempFile ); - xPropertySet.setPropertyValue( "RemoveFile", Boolean.FALSE ); - sURL = ( String ) xPropertySet.getPropertyValue( "Uri" ); - - XInputStream xInputStream = ( XInputStream ) UnoRuntime.queryInterface( XInputStream.class, oTempFile ); - xInputStream.closeInput(); - XOutputStream xOutputStream = ( XOutputStream ) UnoRuntime.queryInterface( XOutputStream.class, oTempFile ); - xOutputStream.closeOutput(); - } catch ( com.sun.star.uno.Exception ex ) - { - ex.printStackTrace(); - } - return sURL; - } - - protected static String EachLine( String sURL ) - { - String sText = ""; - try - { - URL aURL = new URL( sURL ); - File aFile = new File( aURL.getFile() ); - InputStreamReader aInputReader = new InputStreamReader( new FileInputStream( aFile ), "UTF-8" ); - BufferedReader aBufReader = new BufferedReader( aInputReader ); - - StringBuffer aBuf = new StringBuffer(); - String sEachLine = aBufReader.readLine(); - - while( sEachLine != null ) - { - aBuf.append( sEachLine ); - aBuf.append( "\n" ); - - sEachLine = aBufReader.readLine(); - } - sText = aBuf.toString(); - } catch ( Exception e ) - { - e.printStackTrace(); - } - return sText; - } - - protected static String GetDocTitle( XModel xDoc ) - { - String sTitle = ""; - XDocumentInfoSupplier xDocInfoSup = ( XDocumentInfoSupplier ) UnoRuntime.queryInterface( XDocumentInfoSupplier.class, xDoc ); - XPropertySet xPropSet = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xDocInfoSup.getDocumentInfo() ); - try - { - sTitle = ( String ) xPropSet.getPropertyValue( "Title" ); - } catch ( Exception ex ) - { - ex.printStackTrace(); - } - return sTitle; - } - - protected static void SetDocTitle( XModel xDoc, String sTitle ) - { - XDocumentInfoSupplier xDocInfoSup = ( XDocumentInfoSupplier ) UnoRuntime.queryInterface( XDocumentInfoSupplier.class, xDoc ); - if ( xDocInfoSup != null ) - { - XPropertySet xPropSet = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xDocInfoSup.getDocumentInfo() ); - if ( xPropSet != null ) - { - try - { - xPropSet.setPropertyValue( "Title", sTitle ); - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } - } - } - - protected static String GetDocServiceName( XComponentContext xContext, XModel xModel ) - { - String aDocServiceName = ""; - if ( xModel != null && xContext != null ) - { - try - { - XMultiComponentFactory xFactory = xContext.getServiceManager(); - if ( xFactory == null ) - throw new com.sun.star.uno.RuntimeException(); - - Object oModuleManager = xFactory.createInstanceWithContext( "com.sun.star.frame.ModuleManager", xContext ); - XModuleManager xModuleManager = ( XModuleManager ) UnoRuntime.queryInterface( XModuleManager.class, oModuleManager ); - if ( xModuleManager != null ) - aDocServiceName = xModuleManager.identify( xModel ); - } - catch( java.lang.Exception e ) - { - e.printStackTrace(); - } - } - - return aDocServiceName; - } - - protected static String GetFilterName( XComponentContext xContext, String aTypeName, String aDocServiceName ) - { - String aFilterName = ""; - if ( xContext != null && aTypeName != null && aTypeName.length() != 0 - && aDocServiceName != null && aDocServiceName.length() != 0 ) - { - try - { - Object oFilterFactory = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.document.FilterFactory", xContext ); - XContainerQuery xQuery = ( XContainerQuery )UnoRuntime.queryInterface( XContainerQuery.class, oFilterFactory ); - if ( xQuery != null ) - { - NamedValue[] aRequest = new NamedValue[2]; - aRequest[0] = new NamedValue( "Type", aTypeName ); - aRequest[1] = new NamedValue( "DocumentService", aDocServiceName ); - - XEnumeration xSet = xQuery.createSubSetEnumerationByProperties( aRequest ); - if ( xSet != null ) - { - boolean bAcceptable = false; - while ( xSet.hasMoreElements() && !bAcceptable ) - { - PropertyValue[] pFilterProps = ( PropertyValue[] )AnyConverter.toArray( xSet.nextElement() ); - if ( pFilterProps != null ) - { - int nLen = pFilterProps.length; - String aTmpFilter = null; - - for ( int nInd = 0; nInd < nLen; nInd++ ) - { - if ( pFilterProps[nInd].Name.equals( "Name" ) ) - aTmpFilter = AnyConverter.toString( pFilterProps[nInd].Value ); - else if ( pFilterProps[nInd].Name.equals( "Flags" ) ) - bAcceptable = ( ( AnyConverter.toInt( pFilterProps[nInd].Value ) & 2 ) == 2 ); // must allow export - } - - if ( bAcceptable ) - aFilterName = aTmpFilter; - } - } - } - } - } - catch( java.lang.Exception e ) - { - e.printStackTrace(); - } - } - - return aFilterName; - } - - protected static XMultiServiceFactory GetConfigurationProvider( XComponentContext xContext ) - throws com.sun.star.uno.Exception - { - XMultiServiceFactory xConfigurationProvider = null; - if ( xContext != null ) - { - XMultiComponentFactory xFactory = xContext.getServiceManager(); - Object oConfigProvider = xFactory.createInstanceWithContext( "com.sun.star.configuration.ConfigurationProvider", xContext ); - xConfigurationProvider = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, oConfigProvider ); - } - - if ( xConfigurationProvider == null ) - throw new com.sun.star.uno.RuntimeException(); - - return xConfigurationProvider; - } - - protected static Object GetConfig( XComponentContext xContext, String sNodepath, boolean bWriteAccess ) - throws com.sun.star.uno.Exception - { - if ( xContext == null || sNodepath == null ) - throw new com.sun.star.uno.RuntimeException(); - - PropertyValue aVal = new PropertyValue(); - aVal.Name = "nodepath"; - aVal.Value = sNodepath; - Object[] aArgs = new Object[1]; - aArgs[0] = aVal; - - return GetConfigurationProvider( xContext ).createInstanceWithArguments( - ( bWriteAccess ? "com.sun.star.configuration.ConfigurationUpdateAccess" - : "com.sun.star.configuration.ConfigurationAccess" ), - aArgs ); - } - - protected static XPropertySet GetConfigProps( XComponentContext xContext, String sNodepath ) - throws com.sun.star.uno.Exception - { - XPropertySet xProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, GetConfig( xContext, sNodepath, true ) ); - if ( xProps == null ) - throw new com.sun.star.uno.RuntimeException(); - - return xProps; - } - - - protected static XNameContainer GetConfigNameContainer( XComponentContext xContext, String sNodepath ) - throws com.sun.star.uno.Exception - { - XNameContainer xContainer = ( XNameContainer ) UnoRuntime.queryInterface( XNameContainer.class, GetConfig( xContext, sNodepath, true ) ); - if ( xContainer == null ) - throw new com.sun.star.uno.RuntimeException(); - - return xContainer; - } - - protected static XNameAccess GetConfigNameAccess( XComponentContext xContext, String sNodepath ) - throws com.sun.star.uno.Exception - { - XNameAccess xNameAccess = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, GetConfig( xContext, sNodepath, false ) ); - if ( xNameAccess == null ) - throw new com.sun.star.uno.RuntimeException(); - - return xNameAccess; - } - - protected static void SetConfigurationProxy( HostConfiguration aHostConfig, XComponentContext xContext ) - { - if ( aHostConfig == null || xContext == null ) - return; - - try - { - XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Inet/Settings" ); - - int nProxyType = AnyConverter.toInt( xNameAccess.getByName( "ooInetProxyType" ) ); - if ( nProxyType == 0 ) - aHostConfig.setProxyHost( null ); - else - { - if ( nProxyType == 1 ) - { - // system proxy - } - else if ( nProxyType == 2 ) - { - String aProxyNameProp = "ooInetHTTPProxyName"; - String aProxyPortProp = "ooInetHTTPProxyPort"; - - if ( aHostConfig.getProtocol().getScheme().equals( "https" ) ) - { - aProxyNameProp = "ooInetHTTPSProxyName"; - aProxyPortProp = "ooInetHTTPSProxyPort"; - } - - String aNoProxyList = AnyConverter.toString( xNameAccess.getByName( "ooInetNoProxy" ) ); - String aProxyName = AnyConverter.toString( xNameAccess.getByName( aProxyNameProp ) ); - - int nProxyPort = 80; - - Object aPortNo = xNameAccess.getByName( aProxyPortProp ); - if ( !AnyConverter.isVoid( aPortNo ) ) - nProxyPort = AnyConverter.toInt( aPortNo ); - - if ( nProxyPort == -1 ) - nProxyPort = 80; - - // TODO: check whether the URL is in the NoProxy list - aHostConfig.setProxy( aProxyName, nProxyPort ); - } - } - } - catch( java.lang.Exception e ) - { - e.printStackTrace(); - } - } - - protected static void ShowURLInBrowser( XComponentContext xContext, String sURL ) - { - if ( xContext != null && sURL != null && sURL.length() > 0 ) - { - try - { - Object oSystemShell = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.system.SystemShellExecute", xContext ); - XSystemShellExecute xSystemShell = (XSystemShellExecute)UnoRuntime.queryInterface( XSystemShellExecute.class, oSystemShell ); - if ( xSystemShell != null ) - xSystemShell.execute( sURL, "", SystemShellExecuteFlags.DEFAULTS ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - } - - protected static void ExecuteMethod( HttpMethodBase aMethod, HostConfiguration aHostConfig, URI aURI, XComponentContext xContext, boolean bSetHost ) - throws WikiCancelException, IOException, SSLException - { - if ( aMethod != null && aHostConfig != null && aURI != null && xContext != null ) - { - if ( bSetHost ) - { - aHostConfig.setHost( aURI ); - SetConfigurationProxy( aHostConfig, xContext ); - } - - boolean bNoUnknownCertNotification = false; - if ( aHostConfig.getProtocol().getScheme().equals( "https" ) - && AllowUnknownCert( xContext, aURI.getHost() ) ) - { - // let unknown certificates be accepted - { - { - aHostConfig.setHost( aHostConfig.getHost(), ( aURI.getPort() < 0 ? 443 : aURI.getPort() ), Helper.GetOwnHttps( aURI.getPort() ) ); - Helper.GetHttpClient().executeMethod( aHostConfig, aMethod ); - } - } - } - else - { - Helper.GetHttpClient().executeMethod( aHostConfig, aMethod ); - } - } - } - - static private class HTMLParse extends HTMLEditorKit - { - - public HTMLEditorKit.Parser getParser() - { - return super.getParser(); - } - } - - static protected HTMLEditorKit.Parser GetHTMLParser() - { - return new HTMLParse().getParser(); - } - - static protected boolean LoginReportsError( String sRespond ) - { - boolean bResult = true; - if ( sRespond != null ) - { - try - { - StringReader aReader = new StringReader( sRespond ); - HTMLEditorKit.Parser aParser = GetHTMLParser(); - EditPageParser aCallback = new EditPageParser(); - - aParser.parse( aReader, aCallback, true ); - bResult = ( aCallback.m_nErrorInd >= 0 ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - return bResult; - } - - static protected String GetLoginToken( String sLoginPage ) - { - String sResult = ""; - if ( sLoginPage != null && sLoginPage.length() > 0 ) - { - try - { - StringReader aReader = new StringReader( sLoginPage ); - HTMLEditorKit.Parser aParser = Helper.GetHTMLParser(); - EditPageParser aCallbacks = new EditPageParser(); - - aParser.parse( aReader, aCallbacks, true ); - sResult = aCallbacks.m_sLoginToken; - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - return sResult; - } - - static protected HostConfiguration Login( URI aMainURL, String sWikiUser, String sWikiPass, XComponentContext xContext ) - throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException - { - HostConfiguration aHostConfig = null; - - if ( sWikiUser != null && sWikiPass != null && xContext != null ) - { - HostConfiguration aNewHostConfig = new HostConfiguration(); - - URI aURI = new URI( aMainURL.toString() + "index.php?title=Special:Userlogin" ); - GetMethod aGetCookie = new GetMethod( aURI.getEscapedPathQuery() ); - - ExecuteMethod( aGetCookie, aNewHostConfig, aURI, xContext, true ); - - int nResultCode = aGetCookie.getStatusCode(); - String sLoginPage = null; - if ( nResultCode == 200 ) - sLoginPage = aGetCookie.getResponseBodyAsString(); - - aGetCookie.releaseConnection(); - - if ( sLoginPage != null ) - { - String sLoginToken = GetLoginToken( sLoginPage ); - - PostMethod aPost = new PostMethod(); - URI aPostURI = new URI( aMainURL.getPath() + "index.php?title=Special:Userlogin&action=submitlogin" ); - aPost.setPath( aPostURI.getEscapedPathQuery() ); - - aPost.addParameter( "wpName", sWikiUser ); - aPost.addParameter( "wpRemember", "1" ); - aPost.addParameter( "wpPassword", sWikiPass ); - if ( sLoginToken.length() > 0 ) - aPost.addParameter( "wpLoginToken", sLoginToken ); - - String[][] pArgs = GetSpecialArgs( xContext, aMainURL.getHost() ); - if ( pArgs != null ) - for ( int nArgInd = 0; nArgInd < pArgs.length; nArgInd++ ) - if ( pArgs[nArgInd].length == 2 && pArgs[nArgInd][0] != null && pArgs[nArgInd][1] != null ) - aPost.addParameter( pArgs[nArgInd][0], pArgs[nArgInd][1] ); - - ExecuteMethod( aPost, aNewHostConfig, aPostURI, xContext, false ); - - nResultCode = aPost.getStatusCode(); - - while( nResultCode >= 301 && nResultCode <= 303 || nResultCode == 307 ) - { - String sRedirectURL = aPost.getResponseHeader( "Location" ).getValue(); - aPost.releaseConnection(); - - aURI = new URI( sRedirectURL ); - aPost = new PostMethod(); - aPost.setPath( aURI.getEscapedPathQuery() ); - ExecuteMethod( aPost, aNewHostConfig, aURI, xContext, false ); - - nResultCode = aPost.getStatusCode(); - } - - if ( nResultCode == 200 ) - { - String sResult = aPost.getResponseBodyAsString(); - if ( !LoginReportsError( sResult ) ) - aHostConfig = aNewHostConfig; - } - - aPost.releaseConnection(); - } - } - - return aHostConfig; - } - - private static XControl GetControlFromDialog( XDialog xDialog, String aControlName ) - { - XControl xResult = null; - XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface( XControlContainer.class, xDialog ); - - if ( xControlCont != null ) - { - Object oControl = xControlCont.getControl( aControlName ); - xResult = ( XControl ) UnoRuntime.queryInterface( XControl.class, oControl ); - } - - return xResult; - } - - private static XPropertySet GetSubControlPropSet( XDialog xDialog, String aControlName ) - { - XControl xControl = GetControlFromDialog( xDialog, aControlName ); - if ( xControl != null ) - return ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xControl.getModel() ); - - return null; - } - - protected static void SetControlPropInDialog( XDialog xDialog, String aControlName, String aPropName, Object aPropValue ) - { - if ( xDialog != null && aControlName != null && aPropName != null && aPropValue != null ) - { - try - { - XPropertySet xPropSet = GetSubControlPropSet( xDialog, aControlName ); - if ( xPropSet != null ) - xPropSet.setPropertyValue( aPropName, aPropValue ); - } - catch ( com.sun.star.uno.Exception e ) - { - e.printStackTrace(); - } - } - } - - protected static String[] GetPasswordsForURLAndUser( XComponentContext xContext, String sURL, String sUserName ) - { - String[] aResult = null; - - try - { - if ( xContext != null && sURL != null && sURL.length() > 0 && sUserName != null && sUserName.length() > 0 ) - { - UrlRecord aRec = GetPasswordContainer( xContext ).findForName( sURL, sUserName, GetInteractionHandler( xContext ) ); - if ( aRec != null && aRec.UserList != null && aRec.UserList.length > 0 - && aRec.UserList[0].UserName.equals( sUserName ) ) - aResult = aRec.UserList[0].Passwords; - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - return aResult; - } - - protected static boolean PasswordStoringIsAllowed( XComponentContext xContext ) - { - boolean bResult = false; - try - { - XMasterPasswordHandling xMasterHdl = (XMasterPasswordHandling)UnoRuntime.queryInterface( XMasterPasswordHandling.class, GetPasswordContainer( xContext ) ); - if ( xMasterHdl != null ) - bResult = xMasterHdl.isPersistentStoringAllowed(); - } - catch( Exception e ) - { - e.printStackTrace(); - } - - return bResult; - } - - protected static void ShowError( XComponentContext xContext, XDialog xDialog, int nTitleID, int nErrorID, String sArg, boolean bQuery ) - { - XWindowPeer xPeer = null; - XControl xControl = (XControl)UnoRuntime.queryInterface( XControl.class, xDialog ); - if ( xControl != null ) - xPeer = xControl.getPeer(); - ShowError( xContext, xPeer, nTitleID, nErrorID, sArg, bQuery ); - } - - protected static boolean ShowError( XComponentContext xContext, XWindowPeer xParentPeer, int nTitleID, int nErrorID, String sArg, boolean bQuery ) - { - boolean bResult = false; - - if ( xContext != null && nErrorID >= 0 && nErrorID < STRINGS_NUM ) - { - boolean bShown = false; - - String sError = null; - String sTitle = ""; - - try - { - sError = GetLocalizedString( xContext, nErrorID ); - if ( sError != null && sArg != null ) - sError = sError.replaceAll( "\\$ARG1", sArg ); - - sTitle = GetLocalizedString( xContext, nTitleID ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - - if ( sError == null ) - sError = "Error: " + nErrorID; - - if ( xParentPeer != null ) - { - XMessageBoxFactory xMBFactory = null; - XMessageBox xMB = null; - try - { - XMultiComponentFactory xFactory = xContext.getServiceManager(); - if ( xFactory != null ) - xMBFactory = (XMessageBoxFactory)UnoRuntime.queryInterface( - XMessageBoxFactory.class, - xFactory.createInstanceWithContext( "com.sun.star.awt.Toolkit", xContext ) ); - - if ( xMBFactory != null ) - { - if ( bQuery ) - { - xMB = xMBFactory.createMessageBox( - xParentPeer, - new com.sun.star.awt.Rectangle(), - "querybox", - MessageBoxButtons.BUTTONS_YES_NO | MessageBoxButtons.DEFAULT_BUTTON_NO, - sTitle, - sError ); - } - else - { - xMB = xMBFactory.createMessageBox( - xParentPeer, - new com.sun.star.awt.Rectangle(), - "errorbox", - MessageBoxButtons.BUTTONS_OK, - sTitle, - sError ); - } - if ( xMB != null ) - { - bResult = MainThreadDialogExecutor.Execute( xContext, xMB ); - bShown = true; - } - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - finally - { - if ( xMB != null ) - Dispose( xMB ); - } - } - } - - return bResult; - } - - private static boolean AllowUnknownCert( XComponentContext xContext, String aURL ) - { - try - { - XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/SpecialData" ); - if ( xNameAccess.hasByName( aURL ) ) - { - XNameAccess xEntry = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xNameAccess.getByName( aURL ) ); - if ( xEntry != null && xEntry.hasByName( "AllowUnknownCertificate" ) ) - return AnyConverter.toBoolean( xEntry.getByName( "AllowUnknownCertificate" ) ); - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - return false; - } - - private static String[][] GetSpecialArgs( XComponentContext xContext, String aURL ) - { - try - { - XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/SpecialData" ); - if ( xNameAccess.hasByName( aURL ) ) - { - XNameAccess xEntry = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xNameAccess.getByName( aURL ) ); - if ( xEntry != null ) - { - XNameAccess xArgs = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xEntry.getByName( "AdditionalLoginArguments" ) ); - if ( xArgs != null ) - { - String[] pNames = xArgs.getElementNames(); - if ( pNames != null && pNames.length > 0 ) - { - String[][] pResult = new String[pNames.length][2]; - for ( int nInd = 0; nInd < pNames.length; nInd++ ) - { - XNameAccess xArgument = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xArgs.getByName( pNames[nInd] ) ); - if ( xArgument == null ) - throw new com.sun.star.uno.RuntimeException(); - - pResult[nInd][0] = pNames[nInd]; - pResult[nInd][1] = AnyConverter.toString( xArgument.getByName( "Value" ) ); - } - - return pResult; - } - } - } - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - return null; - } - - protected static boolean AllowThreadUsage( XComponentContext xContext ) - { - if ( xContext != null ) - { - try - { - XMultiComponentFactory xFactory = xContext.getServiceManager(); - if ( xFactory == null ) - throw new com.sun.star.uno.RuntimeException(); - - Object oCheckCallback = xFactory.createInstanceWithContext( "com.sun.star.awt.AsyncCallback", xContext ); - return ( oCheckCallback != null ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - return false; - } - - public static void Dispose( Object oObject ) - { - if ( oObject != null ) - { - try - { - XComponent xComp = (XComponent)UnoRuntime.queryInterface( XComponent.class, oObject ); - if ( xComp != null ) - xComp.dispose(); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - } -} - diff --git a/swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java b/swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java deleted file mode 100644 index ddc7602..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java +++ /dev/null @@ -1,176 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.uno.Any; -import com.sun.star.awt.XDialog; -import com.sun.star.awt.XCallback; -import com.sun.star.awt.XMessageBox; -import com.sun.star.awt.XRequestCallback; -import com.sun.star.lang.XMultiComponentFactory; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; - -public class MainThreadDialogExecutor implements XCallback -{ - private WikiDialog m_aWikiDialog; - private XDialog m_xDialog; - private XMessageBox m_xMessageBox; - private boolean m_bResult = false; - private boolean m_bCalled = false; - private boolean m_bClose = false; - - static public boolean Show( XComponentContext xContext, WikiDialog aWikiDialog ) - { - MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( aWikiDialog ); - return GetCallback( xContext, aExecutor ); - } - - static public boolean Execute( XComponentContext xContext, XDialog xDialog ) - { - MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( xDialog ); - return GetCallback( xContext, aExecutor ); - } - - static public boolean Execute( XComponentContext xContext, XMessageBox xMessageBox ) - { - MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( xMessageBox ); - return GetCallback( xContext, aExecutor ); - } - - static public boolean Close( XComponentContext xContext, XDialog xDialog ) - { - MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( xDialog, true ); - return GetCallback( xContext, aExecutor ); - } - - static private boolean GetCallback( XComponentContext xContext, MainThreadDialogExecutor aExecutor ) - { - try - { - if ( aExecutor != null ) - { - String aThreadName = null; - Thread aCurThread = Thread.currentThread(); - if ( aCurThread != null ) - aThreadName = aCurThread.getName(); - - if ( aThreadName != null && aThreadName.equals( "com.sun.star.thread.WikiEditorSendingThread" ) ) - { - // the main thread should be accessed asynchronously - XMultiComponentFactory xFactory = xContext.getServiceManager(); - if ( xFactory == null ) - throw new com.sun.star.uno.RuntimeException(); - - XRequestCallback xRequest = (XRequestCallback)UnoRuntime.queryInterface( - XRequestCallback.class, - xFactory.createInstanceWithContext( "com.sun.star.awt.AsyncCallback", xContext ) ); - if ( xRequest != null ) - { - xRequest.addCallback( aExecutor, Any.VOID ); - do - { - Thread.yield(); - } - while( !aExecutor.m_bCalled ); - } - } - else - { - // handle it as a main thread - aExecutor.notify( Any.VOID ); - } - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - return aExecutor.GetResult(); - } - - private MainThreadDialogExecutor( WikiDialog aWikiDialog ) - { - m_aWikiDialog = aWikiDialog; - } - - private MainThreadDialogExecutor( XDialog xDialog ) - { - m_xDialog = xDialog; - } - - private MainThreadDialogExecutor( XDialog xDialog, boolean bClose ) - { - m_xDialog = xDialog; - m_bClose = true; - m_bCalled = true; // no yielding, asynchronous closing - } - - private MainThreadDialogExecutor( XMessageBox xMessageBox ) - { - m_xMessageBox = xMessageBox; - } - - private boolean GetResult() - { - return m_bResult; - } - - public void notify( Object aData ) - { - if ( m_aWikiDialog != null ) - m_bResult = m_aWikiDialog.show(); - else if ( m_xDialog != null ) - { - if ( !m_bClose ) - m_bResult = ( m_xDialog.execute() == 1 ); - else - { - try - { - m_xDialog.endExecute(); - } - catch( Exception e ) - { - e.printStackTrace(); - } - m_bResult = true; - } - } - else if ( m_xMessageBox != null ) - { - int nRes = m_xMessageBox.execute(); - m_bResult = ( nRes == com.sun.star.awt.MessageBoxCommand.OK - || nRes == com.sun.star.awt.MessageBoxCommand.YES ); - } - - m_bCalled = true; - } -}; - diff --git a/swext/mediawiki/src/com/sun/star/wiki/Settings.java b/swext/mediawiki/src/com/sun/star/wiki/Settings.java deleted file mode 100644 index b4ba8cd..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/Settings.java +++ /dev/null @@ -1,347 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.beans.XPropertySet; -import com.sun.star.container.XNameAccess; -import com.sun.star.container.XNameContainer; -import com.sun.star.container.XNameReplace; -import com.sun.star.lang.XSingleServiceFactory; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.util.XChangesBatch; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Vector; - -public class Settings -{ - - private XComponentContext m_xContext; - private int lastUsedWikiServer = 0; - - - /* Singelton */ - private static Settings m_instance; - - - private Vector m_WikiConnections = new Vector(); - private Vector m_aWikiDocs = new Vector(); - - private Settings( XComponentContext ctx ) - { - m_xContext=ctx; - loadConfiguration(); - } - - - public static synchronized Settings getSettings( XComponentContext ctx ) - { - if ( m_instance == null ) - m_instance = new Settings( ctx ); - // m_instance.loadSettings(); - return m_instance; - } - - - public void addWikiCon ( Hashtable wikiCon ) - { - m_WikiConnections.add( wikiCon ); - } - - - public Vector getWikiCons() - { - return m_WikiConnections; - } - - public String getWikiConUrlByNumber( int num ) - { - String url = ""; - if ( num >=0 && num < m_WikiConnections.size() ) - { - Hashtable ht = ( Hashtable ) m_WikiConnections.get( num ); - url = ( String ) ht.get( "Url" ); - } - return url; - } - - - public void addWikiDoc ( Hashtable aWikiDoc ) - { - String sURL = ( String ) aWikiDoc.get( "CompleteUrl" ); - Hashtable aEntry = getDocByCompleteUrl( sURL ); - - if ( aEntry != null ) - { - // add doc to the end, even if it has been added before - m_aWikiDocs.remove( aEntry ); - } - else if ( m_aWikiDocs.size() > 10 ) - { - // if the number of elements has reached maximum the oldest element should be removed - m_aWikiDocs.remove( 0 ); - } - - m_aWikiDocs.add( aWikiDoc ); - } - - - public Vector getWikiDocs() - { - return m_aWikiDocs; - } - - public Object[] getWikiDocList( int serverid, int num ) - { - String wikiserverurl = getWikiConUrlByNumber( serverid ); - Vector theDocs = new Vector(); - String [] docs = new String[0]; - for ( int i=0; i<m_aWikiDocs.size(); i++ ) - { - Hashtable ht = ( Hashtable ) m_aWikiDocs.get( i ); - String docurl = ( String ) ht.get( "Url" ); - if ( docurl.equals( wikiserverurl ) ) - { - theDocs.add( (String ) ht.get( "Doc" ) ); - } - } - return theDocs.toArray( docs ); - } - - public int getLastUsedWikiServer() - { - return lastUsedWikiServer; - } - - public void setLastUsedWikiServer( int l ) - { - lastUsedWikiServer = l; - } - - public String[] getWikiURLs() - { - String [] WikiList = new String [m_WikiConnections.size()]; - for ( int i=0; i<m_WikiConnections.size(); i++ ) - { - Hashtable ht = ( Hashtable ) m_WikiConnections.get( i ); - WikiList[i] = ( String ) ht.get( "Url" ); - } - return WikiList; - } - - - public Hashtable getSettingByUrl( String sUrl ) - { - Hashtable ht = null; - for( int i=0;i<m_WikiConnections.size();i++ ) - { - Hashtable h1 = ( Hashtable ) m_WikiConnections.get( i ); - String u1 = ( String ) h1.get( "Url" ); - if ( u1.equals( sUrl ) ) - { - ht = h1; - try - { - String sUserName = (String)ht.get( "Username" ); - String aPassword = (String)ht.get( "Password" ); - if ( sUserName != null && sUserName.length() > 0 && ( aPassword == null || aPassword.length() == 0 ) ) - { - String[] pPasswords = Helper.GetPasswordsForURLAndUser( m_xContext, sUrl, sUserName ); - if ( pPasswords != null && pPasswords.length > 0 ) - ht.put( "Password", pPasswords[0] ); - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - break; - } - } - return ht; - } - - public Hashtable getDocByCompleteUrl( String curl ) - { - Hashtable ht = null; - for( int i=0;i<m_aWikiDocs.size();i++ ) - { - Hashtable h1 = ( Hashtable ) m_aWikiDocs.get( i ); - String u1 = ( String ) h1.get( "CompleteUrl" ); - if ( u1.equals( curl ) ) - { - ht = h1; - } - } - return ht; - } - - - public void removeSettingByUrl( String sUrl ) - { - Hashtable ht = null; - for( int i=0;i<m_WikiConnections.size();i++ ) - { - Hashtable h1 = ( Hashtable ) m_WikiConnections.get( i ); - String u1 = ( String ) h1.get( "Url" ); - if ( u1.equals( sUrl ) ) - { - m_WikiConnections.remove( i ); - } - } - } - - - public void storeConfiguration() - { - try - { - // remove stored connection information - XNameContainer xContainer = Helper.GetConfigNameContainer( m_xContext, "org.openoffice.Office.Custom.WikiExtension/ConnectionList" ); - String[] pNames = xContainer.getElementNames(); - for( int i=0; i<pNames.length; i++ ) - { - xContainer.removeByName( pNames[i] ); - } - - // store all connections - XSingleServiceFactory xConnectionFactory = ( XSingleServiceFactory ) UnoRuntime.queryInterface( XSingleServiceFactory.class, xContainer ); - for ( int i=0; i< m_WikiConnections.size(); i++ ) - { - Object oNewConnection = xConnectionFactory.createInstance(); - Hashtable ht = ( Hashtable ) m_WikiConnections.get( i ); - XNameReplace xNewConn = ( XNameReplace ) UnoRuntime.queryInterface( XNameReplace.class, oNewConnection ); - - if ( xNewConn != null ) - xNewConn.replaceByName( "UserName", ht.get( "Username" ) ); - - xContainer.insertByName( (String)ht.get( "Url" ), xNewConn ); - } - // commit changes - XChangesBatch xBatch = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xContainer ); - xBatch.commitChanges(); - - // remove stored connection information - XNameContainer xContainer2 = Helper.GetConfigNameContainer( m_xContext, "org.openoffice.Office.Custom.WikiExtension/RecentDocs" ); - String[] pNames2 = xContainer2.getElementNames(); - for( int i=0; i<pNames2.length; i++ ) - { - xContainer2.removeByName( pNames2[i] ); - } - // store all Docs - XSingleServiceFactory xDocListFactory = ( XSingleServiceFactory ) UnoRuntime.queryInterface( XSingleServiceFactory.class, xContainer2 ); - for ( int i=0; i< m_aWikiDocs.size(); i++ ) - { - Hashtable ht = ( Hashtable ) m_aWikiDocs.get( i ); - - Object oNewDoc = xDocListFactory.createInstance(); - XNameReplace xNewDoc = ( XNameReplace ) UnoRuntime.queryInterface( XNameReplace.class, oNewDoc ); - - Enumeration e = ht.keys(); - while ( e.hasMoreElements() ) - { - String key = ( String ) e.nextElement(); - xNewDoc.replaceByName( key, ht.get( key ) ); - } - - xContainer2.insertByName( "d" + i, xNewDoc ); - } - // commit changes - XChangesBatch xBatch2 = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xContainer2 ); - xBatch2.commitChanges(); - - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } - - public void loadConfiguration() - { - m_WikiConnections.clear(); - try - { - // get configuration service - // connect to configmanager - XNameAccess xAccess = Helper.GetConfigNameAccess( m_xContext, "org.openoffice.Office.Custom.WikiExtension" ); - - if ( xAccess != null ) - { - Object oList = xAccess.getByName( "ConnectionList" ); - XNameAccess xConnectionList = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oList ); - String [] allCons = xConnectionList.getElementNames(); - for ( int i=0; i<allCons.length; i++ ) - { - Hashtable ht = new Hashtable(); - ht.put( "Url", allCons[i] ); - ht.put( "Username", "" ); - ht.put( "Password", "" ); - - try - { - XPropertySet xProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xConnectionList.getByName( allCons[i] ) ); - if ( xProps != null ) - { - String aUsername = AnyConverter.toString( xProps.getPropertyValue( "UserName" ) ); - if ( aUsername != null && aUsername.length() > 0 ) - ht.put( "Username", aUsername ); - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - addWikiCon( ht ); - } - - Object oDocs = xAccess.getByName( "RecentDocs" ); - XNameAccess xRecentDocs = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oDocs ); - String [] allDocs = xRecentDocs.getElementNames(); - for ( int i=0; i<allDocs.length; i++ ) - { - Object oDoc = xRecentDocs.getByName( allDocs[i] ); - XNameAccess xDoc = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oDoc ); - Hashtable ht = new Hashtable(); - ht.put( "Url", xDoc.getByName( "Url" ) ); - ht.put( "CompleteUrl", xDoc.getByName( "CompleteUrl" ) ); - ht.put( "Doc", xDoc.getByName( "Doc" ) ); - addWikiDoc( ht ); - } - } - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } -} diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java b/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java deleted file mode 100644 index 1859ca5..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java +++ /dev/null @@ -1,295 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.task.UrlRecord; -import java.io.*; -import java.util.Hashtable; -import javax.swing.text.html.*; -import com.sun.star.uno.XComponentContext; - -import org.apache.commons.httpclient.*; -import org.apache.commons.httpclient.methods.*; - - -public class WikiArticle -{ - private XComponentContext m_xContext; - - private String m_sEditTime = ""; - private String m_sEditToken = ""; - - protected String m_sHTMLCode; - private boolean m_bNoArticle = true; - - protected String m_sWikiUser; - protected String m_sWikiPass; - - protected String m_sTitle = ""; - - private URI m_aMainURI; - private HostConfiguration m_aHostConfig; - - - /** Creates a new instance of WikiArticle */ - public WikiArticle( XComponentContext xContext, String sTitle, Hashtable wikiSettings, boolean bLogin, WikiPropDialog aPropDialog ) - throws java.net.MalformedURLException, com.sun.star.uno.Exception, java.io.IOException, WikiCancelException - { - m_xContext = xContext; - - String sMainUrl = (String) wikiSettings.get("Url"); - m_sWikiUser = (String) wikiSettings.get("Username"); - m_sWikiPass = (String) wikiSettings.get("Password"); - m_sTitle = sTitle; - - m_aMainURI = new URI( sMainUrl ); - -// viewURL = sMainUrl + "index.php?title=" + m_sTitle; -// editURL = sMainUrl + "index.php?title=" + m_sTitle + "&action=edit"; -// submitURL = sMainUrl + "index.php?title=" + m_sTitle + "&action=submit"; -// loginURL = sMainUrl + "index.php?title=Special:Userlogin"; -// loginSubmitURL = sMainUrl + "index.php?title=Special:Userlogin&action=submitlogin"; - - if ( bLogin ) - { - WikiEditSettingDialog aDialog = new WikiEditSettingDialog(m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application", wikiSettings, false ); - try - { - while( !Login() ) - { - if ( aPropDialog != null ) - aPropDialog.SetThrobberActive( false ); - - if ( MainThreadDialogExecutor.Show( xContext, aDialog ) ) - { - m_sWikiUser = (String) wikiSettings.get("Username"); - m_sWikiPass = (String) wikiSettings.get("Password"); - } - else - throw new WikiCancelException(); - - if ( aPropDialog != null ) - { - aPropDialog.SetThrobberActive( true ); - Thread.yield(); - } - } - } - finally - { - aDialog.DisposeDialog(); - } - } - - // in case of loading the html contents are used - // in case of saving the contents should be checked whether they are empty - InitArticleHTML(); - - // getArticleWiki(); - } - - public String GetMainURL() - { - return m_aMainURI.toString(); - } - - public String GetTitle() - { - return m_sTitle; - } - - public String GetViewURL() - { - return m_aMainURI.toString() + "index.php?title=" + m_sTitle; - } - - private String getArticleWiki() - throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException - { - String sWikiCode = null; - - if ( m_aHostConfig != null ) - { - URI aURI = new URI( m_aMainURI.toString() + "index.php?title=" + m_sTitle + "&action=edit" ); - GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() ); - - Helper.ExecuteMethod( aRequest, m_aHostConfig, aURI, m_xContext, false ); - - int nResultCode = aRequest.getStatusCode(); - String sWebPage = null; - if ( nResultCode == 200 ) - sWebPage = aRequest.getResponseBodyAsString(); - - aRequest.releaseConnection(); - - if ( sWebPage != null ) - { - StringReader r = new StringReader(sWebPage); - HTMLEditorKit.Parser parse = Helper.GetHTMLParser(); - EditPageParser callback = new EditPageParser(); - - parse.parse(r,callback,true); - m_sEditTime = callback.m_sEditTime; - m_sEditToken = callback.m_sEditToken; - - int iPosStart = callback.m_nWikiArticleStart; - int iPosEnd = callback.m_nWikiArticleEnd; - - if ( iPosStart >= 0 && iPosEnd > 0 ) - { - String sArticle = sWebPage.substring(iPosStart, iPosEnd); - iPosStart = sArticle.indexOf(">") + 1; - sWikiCode = sArticle.substring( iPosStart, sArticle.length() ); - } - } - } - - return sWikiCode; - } - - private void InitArticleHTML() - throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException - { - if ( m_aHostConfig != null ) - { - URI aURI = new URI( m_aMainURI.toString() + "index.php?title=" + m_sTitle ); - GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() ); - - Helper.ExecuteMethod( aRequest, m_aHostConfig, aURI, m_xContext, false ); - - int nResultCode = aRequest.getStatusCode(); - String sWebPage = null; - if ( nResultCode == 200 ) - sWebPage = aRequest.getResponseBodyAsString(); - - if ( sWebPage != null ) - { - StringReader r = new StringReader(sWebPage); - HTMLEditorKit.Parser parse = Helper.GetHTMLParser(); - EditPageParser callback = new EditPageParser(); - - parse.parse(r,callback,true); - - int iPosStart = callback.m_nHTMLArticleStart; - int iPosEnd = callback.m_nHTMLArticleEnd; - int nPosNoArt = callback.m_nNoArticleInd; - - if ( iPosStart >= 0 && iPosEnd > 0 ) - { - m_sHTMLCode = sWebPage.substring(iPosStart, iPosEnd); - m_bNoArticle = ( nPosNoArt >= 0 && nPosNoArt >= iPosStart && nPosNoArt <= iPosEnd ); - } - } - } - } - - protected boolean setArticle( String sWikiCode, String sWikiComment, boolean bMinorEdit ) - throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException - { - boolean bResult = false; - - if ( m_aHostConfig != null && sWikiCode != null && sWikiComment != null ) - { - // get the edit time and token - getArticleWiki(); - - URI aURI = new URI( m_aMainURI.getPath() + "index.php?title=" + m_sTitle + "&action=submit" ); - PostMethod aPost = new PostMethod(); - aPost.setPath( aURI.getEscapedPathQuery() ); - - // aPost.addParameter( "title", m_sTitle ); - // aPost.addParameter( "action", "submit" ); - aPost.addParameter( "wpTextbox1", sWikiCode ); - aPost.addParameter( "wpSummary", sWikiComment ); - aPost.addParameter( "wpSection", "" ); - aPost.addParameter( "wpEdittime", m_sEditTime ); - aPost.addParameter( "wpSave", "Save page" ); - aPost.addParameter( "wpEditToken", m_sEditToken ); - - if ( bMinorEdit ) - aPost.addParameter( "wpMinoredit", "1" ); - - Helper.ExecuteMethod( aPost, m_aHostConfig, aURI, m_xContext, false ); - - int nResultCode = aPost.getStatusCode(); - if ( nResultCode < 400 ) - bResult = true; - - String aResult = aPost.getResponseBodyAsString(); - - // TODO: remove the debug printing, try to detect the error - System.out.print( "nSubmitCode = " + nResultCode + "\n===\n" + aResult ); - } - - return bResult; - } - - protected boolean Login() - throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException - { - m_aHostConfig = Helper.Login( m_aMainURI, m_sWikiUser, m_sWikiPass, m_xContext ); - return ( m_aHostConfig != null ); - } - - protected void cleanHTML() - { - if ( m_sHTMLCode != null ) - { - //Welcome to regex hell ;) - - //strip comments - m_sHTMLCode = m_sHTMLCode.replaceAll("\\<![ \\r\\n\\t]*(--([^\\-]|[\\r\\n]|-[^\\-])*--[ \\r\\n\\t]*)\\>",""); - - //strip edit section links - m_sHTMLCode = m_sHTMLCode.replaceAll("\\<div class=\"editsection\".*?\\</div\\>",""); - - //strip huge spaces - m_sHTMLCode = m_sHTMLCode.replaceAll("\\<p\\>\\<br /\\>[ \r\n\t]*?\\</p\\>",""); - - //strip toc - m_sHTMLCode = m_sHTMLCode.replaceAll("\\<table.*id=\"toc\"(.|[\r\n])*?\\</table\\>",""); - - //strip jump-to-nav - m_sHTMLCode = m_sHTMLCode.replaceAll("\\<div id=\"jump-to-nav\".*?\\</div\\>",""); - - //strip Javascript - m_sHTMLCode = m_sHTMLCode.replaceAll("\\<script(.|[\r\n])*?\\</script\\>",""); - } - } - - - protected boolean NotExist() - { - boolean bResult = true; - if ( m_sHTMLCode != null ) - bResult = m_bNoArticle; - - return bResult; - } - -} diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java b/swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java deleted file mode 100644 index b76e004..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java +++ /dev/null @@ -1,33 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -class WikiCancelException extends java.lang.Exception -{ -}; - diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java deleted file mode 100644 index cd01675..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java +++ /dev/null @@ -1,325 +0,0 @@ -/************************************************************************* - * - * 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 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.XThrobber; -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 -{ - XComponentContext m_xContext; - XControlContainer m_xControlContainer; - XDialog m_xDialog; - String[] m_aMethods; - boolean m_bAction = false; - 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 = (XDialogProvider2) UnoRuntime.queryInterface( XDialogProvider2.class, obj ); - - m_xDialog = xDialogProvider.createDialogWithHandler( DialogURL, this ); - m_xControlContainer = (XControlContainer)UnoRuntime.queryInterface( XControlContainer.class, m_xDialog ); - XTopWindow 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 ); - } - - public static void SetTitle( XDialog xDialog, String sTitle ) - throws Exception - { - if ( xDialog != null && sTitle != null ) - { - XControl xDialogControl = (XControl)UnoRuntime.queryInterface( XControl.class, xDialog ); - if ( xDialogControl != null ) - { - XPropertySet xPropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xDialogControl.getModel() ); - if ( xPropSet != null ) - xPropSet.setPropertyValue( "Title", sTitle ); - } - } - } - - protected XPropertySet GetPropSet(String sControl) - { - return GetPropSet( m_xControlContainer, sControl ); - } - - protected static XPropertySet GetPropSet( XControlContainer xControlContainer, String sControl ) - { - XPropertySet xPS = null; - - if ( xControlContainer != null && sControl != null ) - { - XControl xControl = xControlContainer.getControl(sControl); - xPS = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xControl.getModel() ); - } - - if ( xPS == null ) - throw new com.sun.star.uno.RuntimeException(); - - return xPS; - } - - public static XDialog CreateSimpleDialog( XComponentContext xContext, String sURL, int nTitleID, String[] pControls, int[] pStringIDs ) - { - XDialog xResult = null; - - if ( xContext != null && sURL != null && sURL.length() > 0 ) - { - try - { - Object oDialogProvider = xContext.getServiceManager().createInstanceWithContext("com.sun.star.awt.DialogProvider2", xContext ); - XDialogProvider2 xDialogProvider = (XDialogProvider2) UnoRuntime.queryInterface( XDialogProvider2.class, oDialogProvider ); - - if ( xDialogProvider != null ) - xResult = xDialogProvider.createDialog( sURL ); - - if ( xResult != null ) - { - SetTitle( xResult, Helper.GetLocalizedString( xContext, nTitleID ) ); - if ( pControls != null && pStringIDs != null && pControls.length == pStringIDs.length ) - { - XControlContainer xControlContainer = (XControlContainer)UnoRuntime.queryInterface( XControlContainer.class, xResult ); - for ( int nInd = 0; nInd < pControls.length; nInd++ ) - GetPropSet( xControlContainer, pControls[nInd] ).setPropertyValue( "Label", new Integer( pStringIDs[nInd] ) ); - } - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - - return xResult; - } - - protected void InsertThrobber( int X, int Y, int Width, int Height ) - { - try - { - XControl xDialogControl = ( XControl ) UnoRuntime.queryInterface( XControl.class, m_xDialog ); - XControlModel xDialogModel = null; - if ( xDialogControl != null ) - xDialogModel = xDialogControl.getModel(); - - XMultiServiceFactory xDialogFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, xDialogModel ); - if ( xDialogFactory != null ) - { - XControlModel xThrobberModel = (XControlModel)UnoRuntime.queryInterface( XControlModel.class, xDialogFactory.createInstance( "com.sun.star.awt.UnoThrobberControlModel" ) ); - XPropertySet xThrobberProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xThrobberModel ); - if ( xThrobberProps != null ) - { - xThrobberProps.setPropertyValue( "Name", "WikiThrobber" ); - xThrobberProps.setPropertyValue( "PositionX", new Integer( X ) ); - xThrobberProps.setPropertyValue( "PositionY", new Integer( Y ) ); - xThrobberProps.setPropertyValue( "Height", new Integer( Width ) ); - xThrobberProps.setPropertyValue( "Width", new Integer( Height ) ); - - XNameContainer xDialogContainer = (XNameContainer)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 - { - XThrobber xThrobber = (XThrobber)UnoRuntime.queryInterface( XThrobber.class, m_xControlContainer.getControl( "WikiThrobber" ) ); - if ( xThrobber != null ) - { - if ( bActive ) - xThrobber.start(); - else - xThrobber.stop(); - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - } - - public void SetThrobberVisible( boolean bVisible ) - { - if ( m_xControlContainer != null ) - { - try - { - XWindow 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 = (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 ) - {} -} - diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java deleted file mode 100644 index 44a75dc..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java +++ /dev/null @@ -1,429 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.awt.XDialog; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.awt.XThrobber; -import com.sun.star.beans.XPropertySet; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.lang.EventObject; -import java.util.Hashtable; -import javax.net.ssl.SSLException; - -import org.apache.commons.httpclient.*; -import org.apache.commons.httpclient.methods.*; - -public class WikiEditSettingDialog extends WikiDialog -{ - - private final String sOKMethod = "OK"; - - String[] Methods = - {sOKMethod }; - private Hashtable setting; - private boolean addMode; - private boolean m_bAllowURLChange = true; - - public WikiEditSettingDialog( XComponentContext xContext, String DialogURL ) - { - super( xContext, DialogURL ); - super.setMethods( Methods ); - setting = new Hashtable(); - addMode = true; - - InsertThrobber( 184, 20, 10, 10 ); - InitStrings( xContext ); - InitSaveCheckbox( xContext, false ); - } - - public WikiEditSettingDialog( XComponentContext xContext, String DialogURL, Hashtable ht, boolean bAllowURLChange ) - { - super( xContext, DialogURL ); - super.setMethods( Methods ); - setting = ht; - - boolean bInitSaveCheckBox = false; - - try - { - XPropertySet xUrlField = GetPropSet( "UrlField" ); - - xUrlField.setPropertyValue( "Text", ht.get( "Url" ) ); - - GetPropSet( "UsernameField" ).setPropertyValue( "Text", ht.get( "Username" ) ); - - if ( Helper.PasswordStoringIsAllowed( m_xContext ) ) - { - String[] pPasswords = Helper.GetPasswordsForURLAndUser( m_xContext, (String)ht.get( "Url" ), (String)ht.get( "Username" ) ); - bInitSaveCheckBox = ( pPasswords != null && pPasswords.length > 0 && pPasswords[0].equals( (String)ht.get( "Password" ) ) ); - } - - // the password should be entered by the user or the Cancel should be pressed - // GetPropSet( "PasswordField" ).setPropertyValue( "Text", ht.get( "Password" )); - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - - addMode = false; - m_bAllowURLChange = bAllowURLChange; - - InsertThrobber( 184, 20, 10, 10 ); - InitStrings( xContext ); - InitSaveCheckbox( xContext, bInitSaveCheckBox ); - } - - public boolean show( ) - { - SetThrobberVisible( false ); - EnableControls( true ); - boolean bResult = super.show(); - - try - { - if ( bResult && Helper.PasswordStoringIsAllowed( m_xContext ) - && ( (Short)( GetPropSet( "SaveBox" ).getPropertyValue("State") ) ).shortValue() != (short)0 ) - { - String sURL = (String)setting.get( "Url" ); - String sUserName = (String)setting.get( "Username" ); - String sPassword = (String)setting.get( "Password" ); - - if ( sURL != null && sURL.length() > 0 && sUserName != null && sUserName.length() > 0 && sPassword != null && sPassword.length() > 0 ) - { - String[] pPasswords = { sPassword }; - Helper.GetPasswordContainer( m_xContext ).addPersistent( sURL, sUserName, pPasswords, Helper.GetInteractionHandler( m_xContext ) ); - } - } - } - catch( Exception e ) - { - e.printStackTrace(); - } - - return bResult; - } - - public void EnableControls( boolean bEnable ) - { - if ( !bEnable ) - SetFocusTo( "CancelButton" ); - - try - { - GetPropSet( "UsernameField" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); - GetPropSet( "PasswordField" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); - GetPropSet( "OkButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); - GetPropSet( "HelpButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); - - if ( bEnable ) - { - GetPropSet( "UrlField" ).setPropertyValue( "Enabled", new Boolean( m_bAllowURLChange ) ); - GetPropSet( "SaveBox" ).setPropertyValue( "Enabled", new Boolean( Helper.PasswordStoringIsAllowed( m_xContext ) ) ); - if ( m_bAllowURLChange ) - SetFocusTo( "UrlField" ); - else - SetFocusTo( "UsernameField" ); - } - else - { - GetPropSet( "UrlField" ).setPropertyValue( "Enabled", Boolean.FALSE ); - GetPropSet( "SaveBox" ).setPropertyValue( "Enabled", Boolean.FALSE ); - } - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } - - private void InitStrings( XComponentContext xContext ) - { - try - { - SetTitle( Helper.GetLocalizedString( xContext, Helper.DLG_MEDIAWIKI_TITLE ) ); - GetPropSet( "UrlLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_URLLABEL ) ); - GetPropSet( "UsernameLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_USERNAMELABEL ) ); - GetPropSet( "PasswordLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_PASSWORDLABEL ) ); - GetPropSet( "AccountLine" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_ACCOUNTLINE ) ); - GetPropSet( "WikiLine" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_WIKILINE ) ); - GetPropSet( "SaveBox" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_SAVEBOX ) ); - GetPropSet( "OkButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_OK ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - private void InitSaveCheckbox( XComponentContext xContext, boolean bInitSaveCheckBox ) - { - XPropertySet xSaveCheck = GetPropSet( "SaveBox" ); - try - { - xSaveCheck.setPropertyValue( "State", new Short( bInitSaveCheckBox ? (short)1 : (short)0 ) ); - xSaveCheck.setPropertyValue( "Enabled", new Boolean( Helper.PasswordStoringIsAllowed( xContext ) ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - public void DoLogin( XDialog xDialog ) - { - String sRedirectURL = ""; - String sURL = ""; - try - { - sURL = ( String ) GetPropSet( "UrlField" ).getPropertyValue( "Text" ); - String sUserName = ( String ) GetPropSet( "UsernameField" ).getPropertyValue( "Text" ); - String sPassword = ( String ) GetPropSet( "PasswordField" ).getPropertyValue( "Text" ); - - HostConfiguration aHostConfig = new HostConfiguration(); - boolean bInitHost = true; - boolean bAllowIndex = true; - - do - { - if ( sRedirectURL.length() > 0 ) - { - sURL = sRedirectURL; - sRedirectURL = ""; - } - - if ( sURL.length() > 0 ) - { - URI aURI = new URI( sURL ); - GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() ); - aRequest.setFollowRedirects( false ); - Helper.ExecuteMethod( aRequest, aHostConfig, aURI, m_xContext, bInitHost ); - bInitHost = false; - - int nResultCode = aRequest.getStatusCode(); - String sWebPage = null; - if ( nResultCode == 200 ) - sWebPage = aRequest.getResponseBodyAsString(); - else if ( nResultCode >= 301 && nResultCode <= 303 || nResultCode == 307 ) - sRedirectURL = aRequest.getResponseHeader( "Location" ).getValue(); - - aRequest.releaseConnection(); - - if ( sWebPage != null && sWebPage.length() > 0 ) - { - //the URL is valid - String sMainURL = Helper.GetMainURL( sWebPage, sURL ); - - if ( sMainURL.equals( "" ) ) - { - // TODO: - // it's not a Wiki Page, check first whether a redirect is requested - // happens usually in case of https - sRedirectURL = Helper.GetRedirectURL( sWebPage, sURL ); - if ( sRedirectURL.equals( "" ) ) - { - // show error - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_MEDIAWIKI_TITLE, - Helper.NOURLCONNECTION_ERROR, - sURL, - false ); - } - } - else - { - URI aMainURI = new URI( sMainURL, true ); // it must be an escaped URL, otherwise an exception should be thrown - - if ( ( sUserName.length() > 0 || sPassword.length() > 0 ) - && Helper.Login( aMainURI, sUserName, sPassword, m_xContext ) == null ) - { - // a wrong login information is provided - // show error - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_MEDIAWIKI_TITLE, - Helper.WRONGLOGIN_ERROR, - null, - false ); - } - else - { - setting.put( "Url", aMainURI.getEscapedURI() ); - setting.put( "Username", sUserName ); - setting.put( "Password", sPassword ); - if ( addMode ) - { - // no cleaning of the settings is necessary - Settings.getSettings( m_xContext ).addWikiCon( setting ); - Settings.getSettings( m_xContext ).storeConfiguration(); - } - - m_bAction = true; - } - } - } - else if ( sRedirectURL == null || sRedirectURL.length() == 0 ) - { - if ( sURL.length() > 0 && !sURL.endsWith( "index.php" ) && bAllowIndex ) - { - // the used MainURL is not alwais directly accessible - // add the suffix as workaround, but only once - sRedirectURL = sURL + "/index.php"; - bAllowIndex = false; - } - else - { - // URL invalid - // show error - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_MEDIAWIKI_TITLE, - Helper.INVALIDURL_ERROR, - null, - false ); - } - } - } - else - { - // URL field empty - // show error - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_MEDIAWIKI_TITLE, - Helper.NOURL_ERROR, - null, - false ); - } - } while ( sRedirectURL.length() > 0 ); - } - catch ( WikiCancelException ce ) - { - } - catch ( SSLException essl ) - { - if ( Helper.IsConnectionAllowed() ) - { - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_MEDIAWIKI_TITLE, - Helper.UNKNOWNCERT_ERROR, - null, - false ); - } - essl.printStackTrace(); - } - catch ( Exception ex ) - { - if ( Helper.IsConnectionAllowed() ) - { - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_MEDIAWIKI_TITLE, - Helper.NOURLCONNECTION_ERROR, - sURL, - false ); - } - ex.printStackTrace(); - } - } - - public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName ) - { - if ( MethodName.equals( sOKMethod ) ) - { - EnableControls( false ); - SetThrobberVisible( true ); - SetThrobberActive( true ); - - if ( Helper.AllowThreadUsage( m_xContext ) ) - { - final XDialog xDialogForThread = xDialog; - final XComponentContext xContext = m_xContext; - final WikiEditSettingDialog aThis = this; - - // the thread name is used to allow the error dialogs - m_bThreadFinished = false; - m_aThread = new Thread( "com.sun.star.thread.WikiEditorSendingThread" ) - { - public void run() - { - try - { - Thread.yield(); - } catch( java.lang.Exception e ){} - - DoLogin( xDialogForThread ); - aThis.EnableControls( true ); - aThis.SetThrobberActive( false ); - aThis.SetThrobberVisible( false ); - - ThreadStop( true ); - - if ( m_bAction ) - MainThreadDialogExecutor.Close( xContext, xDialogForThread ); - } - }; - - m_aThread.start(); - } - else - { - try - { - DoLogin( xDialog ); - } catch( java.lang.Exception e ) - {} - finally - { - EnableControls( true ); - SetThrobberActive( false ); - SetThrobberVisible( false ); - - if ( m_bAction ) - xDialog.endExecute(); - - Helper.AllowConnection( true ); - } - } - - return true; - } - - return false; - } - - public void windowClosed( EventObject e ) - { - ThreadStop( false ); - } -} - diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java b/swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java deleted file mode 100644 index e670e3f..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java +++ /dev/null @@ -1,476 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.awt.XDialog; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.beans.PropertyValue; -import com.sun.star.frame.DispatchDescriptor; -import com.sun.star.frame.XComponentLoader; -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.XFrame; -import com.sun.star.frame.XModel; -import com.sun.star.frame.XStatusListener; -import com.sun.star.frame.XStorable; -import com.sun.star.io.XInputStream; -import com.sun.star.lang.XComponent; -import com.sun.star.lang.XInitialization; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import com.sun.star.lib.uno.helper.Factory; -import com.sun.star.lang.XSingleComponentFactory; -import com.sun.star.registry.XRegistryKey; -import com.sun.star.lib.uno.helper.WeakBase; -import com.sun.star.util.XCloseBroadcaster; -import com.sun.star.view.XSelectionSupplier; -import java.io.File; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import javax.net.ssl.SSLException; - - -public final class WikiEditorImpl extends WeakBase - implements com.sun.star.lang.XServiceInfo, XDispatchProvider, XDispatch, XInitialization -{ - - private final XComponentContext m_xContext; - private static final String m_implementationName = WikiEditorImpl.class.getName(); - private static final String[] m_serviceNames = {"com.sun.star.wiki.WikiEditor" }; - - // information needed for component registration - public static final String[] supportedServiceNames = {"com.sun.star.frame.ProtocolHandler"}; - public static final Class implementationClass = WikiEditorImpl.class; - // protocol name that this protocol handler handles - public static final String protocolName = "vnd.com.sun.star.wiki:"; - - private Map m_statusListeners = new HashMap(); - - - private XComponent xComp; - private String sTempUrl; - - private XFrame m_xFrame; - private XModel m_xModel; - private Settings m_aSettings; - - private String m_aFilterName; - - public WikiEditorImpl( XComponentContext xContext ) - { - // Helper.trustAllSSL(); - m_xContext = xContext; - m_aSettings = Settings.getSettings( m_xContext ); - }; - - public static XSingleComponentFactory __getComponentFactory( String sImplementationName ) - { - XSingleComponentFactory xFactory = null; - - if ( sImplementationName.equals( m_implementationName ) ) - xFactory = Factory.createComponentFactory( WikiEditorImpl.class, m_serviceNames ); - else if ( sImplementationName.equals( WikiOptionsEventHandlerImpl.m_sImplementationName ) ) - xFactory = Factory.createComponentFactory( WikiOptionsEventHandlerImpl.class, - WikiOptionsEventHandlerImpl.m_pServiceNames ); - - return xFactory; - } - - public static boolean __writeRegistryServiceInfo( XRegistryKey xRegistryKey ) - { - boolean bResult = Factory.writeRegistryServiceInfo( m_implementationName, - m_serviceNames, - xRegistryKey ); - return ( bResult && Factory.writeRegistryServiceInfo( WikiOptionsEventHandlerImpl.m_sImplementationName, - WikiOptionsEventHandlerImpl.m_pServiceNames, - xRegistryKey ) ); - } - - // com.sun.star.lang.XServiceInfo: - public String getImplementationName() - { - return m_implementationName; - } - - public boolean supportsService( String sService ) - { - int len = m_serviceNames.length; - - for( int i=0; i < len; i++ ) - { - if ( sService.equals( m_serviceNames[i] )) - return true; - } - return false; - } - - public String[] getSupportedServiceNames() - { - return m_serviceNames; - } - - - private XSelectionSupplier m_sel; - private XController m_ctrl; - private boolean m_bInitialized; - public synchronized void initialize( Object[] args ) throws com.sun.star.uno.Exception - { - if ( m_bInitialized ) - { - //logger.log( Level.SEVERE, "Extension instance was initialized again" ); - } - if ( args.length > 0 ) - { - m_bInitialized = true; - m_xFrame = ( XFrame )UnoRuntime.queryInterface( XFrame.class, args[0] ); - // become close listener - XCloseBroadcaster cb = ( XCloseBroadcaster )UnoRuntime.queryInterface( - XCloseBroadcaster.class, m_xFrame ); - } - } - - - - public void dispatch( - final com.sun.star.util.URL aURL, - com.sun.star.beans.PropertyValue[] propertyValue ) - { - final com.sun.star.util.URL myURL = aURL; - //logger.log( Level.INFO, "received dispatch request for: "+aURL.Complete ); - if ( aURL.Protocol.compareTo( protocolName ) == 0 ) - { - /* - synchronized( this ) - { - if( m_bClosing ) return; - else m_bActive = true; - } - **/ - - try - { - if ( myURL.Path.compareTo( "send" ) == 0 ) - { - sendArticle(); - } - } catch( java.lang.Throwable t ) - { - //logger.log( Level.WARNING, "exception while handeling dispatch", t ); - } - - /* - synchronized( this ) - { - m_bActive = false; - // if we became owner while we were active - // we are responsible for closing the m_xFrame now - if ( m_bOwner && m_xFrame != null ) - { - try - { - XCloseable xclose = ( XCloseable )UnoRuntime.queryInterface( - XCloseable.class, m_xFrame ); - xclose.close( true ); - } catch ( CloseVetoException cve ) - { - logger.log( Level.SEVERE, "cannot close owned frame" ); - } - // relase reference to the m_xFrame; - m_xFrame = null; - } - } - */ - } - } - - - public com.sun.star.frame.XDispatch queryDispatch( - com.sun.star.util.URL aURL, - String str, - int param ) - { - if ( aURL.Protocol.equals( protocolName )) - { - - // by default, we are responsible - return this; - } else - { - return null; - } - } - - public XDispatch[] queryDispatches( DispatchDescriptor[] seqDescripts ) - { - int nCount = seqDescripts.length; - XDispatch[] lDispatcher = new XDispatch[nCount]; - - for( int i=0; i<nCount; ++i ) - lDispatcher[i] = queryDispatch( - seqDescripts[i].FeatureURL, - seqDescripts[i].FrameName, - seqDescripts[i].SearchFlags ); - return lDispatcher; - } - - - public void removeStatusListener( - com.sun.star.frame.XStatusListener xStatusListener, - com.sun.star.util.URL aURL ) - { - } - - - public void addStatusListener( - com.sun.star.frame.XStatusListener listener, - com.sun.star.util.URL url ) - { - String urlstring = url.Complete; - m_statusListeners.put( urlstring, listener ); - // synchroneous callback required!!! - callStatusListener( urlstring, listener ); - } - - public void callStatusListeners() - { - Set entries = m_statusListeners.entrySet(); - Iterator iter = entries.iterator(); - while ( iter.hasNext() ) - { - Map.Entry entry = ( Map.Entry ) iter.next(); - String uristring = ( String ) entry.getKey(); - XStatusListener listener = ( XStatusListener ) entry.getValue(); - callStatusListener( uristring, listener ); - } - } - - public void callStatusListener( String uristring, XStatusListener listener ) - { - try - { - - URI uri = new URI( uristring ); - - // check whether any blogs are live... - setListenerState( listener, "command", false ); - } catch ( URISyntaxException ex ) - { - ex.printStackTrace(); - } - } - - - private void setListenerState( XStatusListener listener, String urlstring, boolean state ) - { - com.sun.star.util.URL url = new com.sun.star.util.URL(); - url.Complete = urlstring; - //listener.statusChanged( new FeatureStateEvent( this, url, "", state, false, null )); - - } - - public void sendArticle() - { - if ( m_xFrame != null ) - { - WikiPropDialog aSendDialog = null; - try - { - if ( m_xModel == null ) - { - XController xController = m_xFrame.getController(); - if ( xController != null ) - m_xModel = xController.getModel(); - } - - if ( m_xModel != null ) - { - // The related Wiki filter must be detected from the typename - String aServiceName = Helper.GetDocServiceName( m_xContext, m_xModel ); - m_aFilterName = Helper.GetFilterName( m_xContext, "MediaWiki", aServiceName ); - - if ( m_aFilterName == null || m_aFilterName.length() == 0 ) - { - Helper.ShowError( m_xContext, - (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ), - Helper.DLG_SENDTITLE, - Helper.NOWIKIFILTER_ERROR, - null, - false ); - throw new com.sun.star.uno.RuntimeException(); - } - - m_aSettings.loadConfiguration(); // throw away all the noncommited changes - // show the send dialog - aSendDialog = new WikiPropDialog( m_xContext, "vnd.sun.star.script:WikiEditor.SendToMediaWiki?location=application", this ); - aSendDialog.fillWikiList(); - aSendDialog.SetWikiTitle( Helper.GetDocTitle( m_xModel ) ); - aSendDialog.show(); // triggers the sending - } - } - catch ( Exception e ) - { - // TODO: Error handling here - e.printStackTrace(); - } - finally - { - if ( aSendDialog != null ) - aSendDialog.DisposeDialog(); - } - } - } - - public boolean SendArticleImpl( WikiPropDialog aSendDialog, Hashtable aWikiSetting ) - { - boolean bResult = false; - - if ( aSendDialog != null ) - { - String sTemp2Url = null; - - try - { - // TODO: stop progress spinning - WikiArticle aArticle = new WikiArticle( m_xContext, aSendDialog.GetWikiTitle(), aWikiSetting, true, aSendDialog ); - - boolean bAllowSending = true; - if ( !aArticle.NotExist() ) - { - // ask whether creation of a new page is allowed - aSendDialog.SetThrobberActive( false ); - bAllowSending = Helper.ShowError( - m_xContext, - (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ), - Helper.DLG_SENDTITLE, - Helper.DLG_WIKIPAGEEXISTS_LABEL1, - aSendDialog.GetWikiTitle(), - true ); - aSendDialog.SetThrobberActive( true ); - } - - if ( bAllowSending ) - { - PropertyValue[] lProperties = new PropertyValue[2]; - lProperties[0] = new PropertyValue(); - lProperties[0].Name = "FilterName"; - lProperties[0].Value = m_aFilterName; - lProperties[1] = new PropertyValue(); - lProperties[1].Name = "Overwrite"; - lProperties[1].Value = new Boolean( true ); - - sTemp2Url = Helper.CreateTempFile( m_xContext ); - - XStorable xStore = ( com.sun.star.frame.XStorable )UnoRuntime.queryInterface ( XStorable.class, m_xModel ); - if ( xStore == null ) - throw new com.sun.star.uno.RuntimeException(); - - xStore.storeToURL( sTemp2Url, lProperties ); - String sWikiCode = Helper.EachLine( sTemp2Url ); - - if ( aArticle.setArticle( sWikiCode, aSendDialog.m_sWikiComment, aSendDialog.m_bWikiMinorEdit ) ) - { - bResult = true; - Object desktop = m_xContext.getServiceManager().createInstanceWithContext( "com.sun.star.frame.Desktop", m_xContext ); - XDesktop xDesktop = ( XDesktop ) UnoRuntime.queryInterface( com.sun.star.frame.XDesktop.class, desktop ); - Helper.SetDocTitle( m_xModel, aArticle.GetTitle() ); - Hashtable aDocInfo = new Hashtable(); - aDocInfo.put( "Doc", aArticle.GetTitle() ); - aDocInfo.put( "Url", aArticle.GetMainURL() ); - aDocInfo.put( "CompleteUrl", aArticle.GetMainURL() + aArticle.GetTitle() ); - m_aSettings.addWikiDoc( aDocInfo ); - m_aSettings.storeConfiguration(); - } - else - { - Helper.ShowError( m_xContext, - (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ), - Helper.DLG_SENDTITLE, - Helper.GENERALSEND_ERROR, - null, - false ); - } - } - } - catch( WikiCancelException ec ) - { - // nothing to do, the sending was cancelled - } - catch( SSLException essl ) - { - if ( Helper.IsConnectionAllowed() ) - { - // report the error only if sending was not cancelled - Helper.ShowError( m_xContext, - (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ), - Helper.DLG_SENDTITLE, - Helper.UNKNOWNCERT_ERROR, - null, - false ); - } - } - catch( Exception e ) - { - if ( Helper.IsConnectionAllowed() ) - { - // report the error only if sending was not cancelled - Helper.ShowError( m_xContext, - (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ), - Helper.DLG_SENDTITLE, - Helper.GENERALSEND_ERROR, - null, - false ); - } - e.printStackTrace(); - } - - if ( sTemp2Url != null ) - { - try - { - // remove the temporary file - File aFile = new File( new URI( sTemp2Url ) ); - aFile.delete(); - } - catch ( java.lang.Exception e ) - { - e.printStackTrace(); - } - } - } - - return bResult; - } - -} diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java b/swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java deleted file mode 100644 index 98fcb0c..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java +++ /dev/null @@ -1,303 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.awt.XContainerWindowEventHandler; -import com.sun.star.awt.XControl; -import com.sun.star.awt.XControlContainer; -import com.sun.star.awt.XDialog; -import com.sun.star.awt.XDialogEventHandler; -import com.sun.star.awt.XWindow; -import com.sun.star.beans.XPropertySet; -import com.sun.star.lang.WrappedTargetException; -import com.sun.star.lang.XServiceInfo; -import com.sun.star.lib.uno.helper.WeakBase; -import com.sun.star.uno.AnyConverter; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import java.util.Hashtable; - -public final class WikiOptionsEventHandlerImpl extends WeakBase - implements XServiceInfo, XContainerWindowEventHandler, XDialogEventHandler -{ - static final String[] m_pServiceNames = { "com.sun.star.wiki.WikiOptionsEventHandler" }; - static final String m_sImplementationName = WikiOptionsEventHandlerImpl.class.getName(); - - static final String sExternalEvent = "external_event"; - static final String sAdd = "Add"; - static final String sEdit = "Edit"; - static final String sRemove = "Remove"; - static final String sListStatus = "ListStatus"; - static final String sListEdit = "ListEdit"; - static final String sInitialize = "initialize"; - static final String sOk = "ok"; - static final String sBack = "back"; - - private XComponentContext m_xContext; - private XDialog m_xDialog; - private XControlContainer m_xControlContainer; - - Settings m_aSettings; - - public WikiOptionsEventHandlerImpl( XComponentContext xContext ) - { - m_xContext = xContext; - } - - protected XPropertySet GetPropSet( String sControl ) - { - if ( m_xControlContainer != null ) - { - XControl xControl = m_xControlContainer.getControl(sControl); - XPropertySet xListProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xControl.getModel() ); - return xListProps; - } - - return null; - } - - private void RefreshView() - { - if ( m_aSettings != null ) - { - String[] pWikiList = m_aSettings.getWikiURLs(); - XPropertySet xListProps = GetPropSet( "WikiList" ); - if ( xListProps != null ) - { - try - { - xListProps.setPropertyValue( "StringItemList", pWikiList ); - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } - } - } - - private void CheckButtonState() - { - XPropertySet xListProps = GetPropSet( "WikiList" ); - if ( xListProps != null ) - { - try - { - short [] pSel = (short []) xListProps.getPropertyValue( "SelectedItems" ); - XPropertySet xEditProps = GetPropSet( "EditButton" ); - XPropertySet xRemoveProps = GetPropSet( "RemoveButton" ); - Boolean bState = new Boolean( pSel.length != 0 ); - - xEditProps.setPropertyValue( "Enabled", bState ); - xRemoveProps.setPropertyValue( "Enabled", bState ); - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - } - } - - private void AddSetting() - { - WikiEditSettingDialog aSettingDialog = new WikiEditSettingDialog( m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application" ); - if ( aSettingDialog.show() ) - RefreshView(); - - aSettingDialog.DisposeDialog(); - } - - private void EditSetting() - { - XPropertySet xListProps = GetPropSet( "WikiList" ); - if ( xListProps != null ) - { - Hashtable ht = null; - try - { - short[] pSel = (short []) xListProps.getPropertyValue( "SelectedItems" ); - String[] pItems = (String []) xListProps.getPropertyValue("StringItemList"); - if ( pSel.length > 0 && pItems.length > pSel[0] ) - { - String selName = pItems[pSel[0]]; - ht = m_aSettings.getSettingByUrl( pItems[pSel[0]] ); - } - } - catch ( Exception ex ) - { - ex.printStackTrace(); - } - - WikiEditSettingDialog aSettingDialog = new WikiEditSettingDialog(m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application", ht, true ); - if ( aSettingDialog.show() ) - RefreshView(); - - aSettingDialog.DisposeDialog(); - } - } - - private void RemoveSetting() - { - XPropertySet xListProps = GetPropSet("WikiList"); - if ( xListProps != null ) - { - try - { - short[] pSel = (short []) xListProps.getPropertyValue("SelectedItems"); - String[] pItems = (String []) GetPropSet("WikiList").getPropertyValue("StringItemList"); - if ( pSel.length > 0 && pItems.length > pSel[0] ) - { - m_aSettings.removeSettingByUrl( pItems[pSel[0]] ); - RefreshView(); - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - } - - private void InitStrings() - { - try - { - - GetPropSet( "FixedLine1" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_MEDIAWIKIEXTENSION_STRING ) ); - GetPropSet( "AddButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_ADDBUTTON ) ); - GetPropSet( "EditButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_EDITBUTTON ) ); - GetPropSet( "RemoveButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_REMOVEBUTTON ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - // com.sun.star.lang.XServiceInfo: - public String getImplementationName() - { - return m_sImplementationName; - } - - public boolean supportsService( String sService ) - { - int len = m_pServiceNames.length; - - for( int i=0; i < len; i++ ) - { - if ( sService.equals( m_pServiceNames[i] )) - return true; - } - return false; - } - - public String[] getSupportedServiceNames() - { - return m_pServiceNames; - } - - // XContainerWindowEventHandler - public boolean callHandlerMethod( XWindow xWindow, Object aEventObject, String sMethod ) - throws WrappedTargetException, com.sun.star.uno.RuntimeException - { - if ( sMethod.equals( sExternalEvent ) ) - { - try - { - String sEvent = (String)AnyConverter.toString( aEventObject ); - if ( sEvent != null ) - { - if ( sEvent.equals( sOk ) ) - { - if ( m_aSettings != null ) - m_aSettings.storeConfiguration(); - } - else if ( sEvent.equals( sInitialize ) || sEvent.equals( sBack ) ) - { - if ( sEvent.equals( sInitialize ) ) - { - m_xDialog = (XDialog)UnoRuntime.queryInterface( XDialog.class, xWindow ); - m_xControlContainer = (XControlContainer)UnoRuntime.queryInterface( - XControlContainer.class, m_xDialog ); - m_aSettings = Settings.getSettings( m_xContext ); - m_aSettings.loadConfiguration(); // throw away all the noncommited changes - InitStrings(); - } - else if ( m_aSettings != null ) - m_aSettings.loadConfiguration(); // throw away all the noncommited changes - - RefreshView(); - CheckButtonState(); - } - } - } - catch ( com.sun.star.uno.RuntimeException r ) - { - throw r; - } - catch ( com.sun.star.uno.Exception e ) - { - throw new WrappedTargetException( sMethod, this, e ); - } - } - else if ( sMethod.equals( sAdd ) ) - { - AddSetting(); - } - else if ( sMethod.equals( sEdit ) || sMethod.equals( sListEdit ) ) - { - EditSetting(); - } - else if ( sMethod.equals( sRemove ) ) - { - RemoveSetting(); - CheckButtonState(); - } - else if ( sMethod.equals( sListStatus ) ) - { - CheckButtonState(); - } - - return true; - } - - public boolean callHandlerMethod( XDialog xDialog, Object aEventObject, String sMethod ) - throws WrappedTargetException, com.sun.star.uno.RuntimeException - { - - - return true; - } - - public String[] getSupportedMethodNames() - { - return new String[] { sExternalEvent, sAdd, sEdit, sRemove }; - } -}; - diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java deleted file mode 100644 index 0afad6a..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java +++ /dev/null @@ -1,388 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import com.sun.star.awt.XControl; -import com.sun.star.awt.XControlModel; -import com.sun.star.awt.XDialog; -import com.sun.star.awt.XThrobber; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.beans.UnknownPropertyException; -import com.sun.star.beans.XPropertySet; -import com.sun.star.container.XNameContainer; -import com.sun.star.lang.WrappedTargetException; -import com.sun.star.lang.XMultiComponentFactory; -import com.sun.star.lang.XMultiServiceFactory; -import com.sun.star.lang.EventObject; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.uno.XComponentContext; -import java.util.Hashtable; - -public class WikiPropDialog extends WikiDialog{ - - WikiEditorImpl m_aWikiEditor; - - private final String sSendMethod = "Send"; - private final String sWikiListMethod = "WikiListChange"; - private final String sArticleTextMethod = "ArticleTextChange"; - private final String sAddWikiMethod = "AddWiki"; - - String[] m_pMethods = {sSendMethod, sWikiListMethod, sArticleTextMethod, sAddWikiMethod}; - - private String m_sWikiTitle = ""; - protected String m_sWikiEngineURL = ""; - protected String m_sWikiComment = ""; - protected boolean m_bWikiMinorEdit = false; - - /** Creates a new instance of WikiPropDialog */ - public WikiPropDialog(XComponentContext xContext, String DialogURL, WikiEditorImpl aWikiEditorForThrobber ) - { - super(xContext, DialogURL); - super.setMethods(m_pMethods); - - if ( aWikiEditorForThrobber != null ) - { - InsertThrobber( 224, 122, 10, 10 ); - m_aWikiEditor = aWikiEditorForThrobber; - } - - InitStrings( xContext ); - InitShowBrowser( xContext ); - InitControls( xContext ); - } - - private void InitControls( XComponentContext xContext ) - { - try - { - GetPropSet( "CommentText" ).setPropertyValue( "AutoVScroll", Boolean.TRUE ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - private void InitStrings( XComponentContext xContext ) - { - try - { - SetTitle( Helper.GetLocalizedString( xContext, Helper.DLG_SENDTITLE ) ); - GetPropSet( "Label1" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_LABEL1 ) ); - GetPropSet( "FixedLine2" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_WIKIARTICLE ) ); - GetPropSet( "Label2" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_LABEL2 ) ); - GetPropSet( "Label3" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_LABEL3 ) ); - GetPropSet( "MinorCheck" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_MINORCHECK ) ); - GetPropSet( "BrowserCheck" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_BROWSERCHECK ) ); - GetPropSet( "AddButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_ADDBUTTON ) ); - GetPropSet( "SendButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDBUTTON ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - private void InitShowBrowser( XComponentContext xContext ) - { - try - { - GetPropSet( "BrowserCheck" ).setPropertyValue( "State", new Short( Helper.GetShowInBrowserByDefault( m_xContext ) ? (short)1 : (short)0 ) ); - } - catch( Exception e ) - { - e.printStackTrace(); - } - } - - public boolean show() - { - EnableControls( true ); - boolean bResult = super.show(); - - if ( bResult && Helper.GetShowInBrowserByDefault( m_xContext ) ) - Helper.ShowURLInBrowser( m_xContext, m_sWikiEngineURL + "index.php?title=" + m_sWikiTitle ); - - return bResult; - } - - public synchronized void ThreadStop( boolean bSelf ) - { - boolean bShowError = ( !bSelf && m_aThread != null && !m_bThreadFinished ); - - super.ThreadStop( bSelf ); - - if ( bShowError ) - Helper.ShowError( m_xContext, - m_xDialog, - Helper.DLG_SENDTITLE, - Helper.CANCELSENDING_ERROR, - null, - false ); - } - - public void fillWikiList() - { - String [] WikiList = m_aSettings.getWikiURLs(); - - try - { - XPropertySet xPS = GetPropSet("WikiList"); - xPS.setPropertyValue("StringItemList", WikiList); - // short [] nSel = new short[1]; - // nSel[0] = (short) m_aSettings.getLastUsedWikiServer(); - // xPS.setPropertyValue("SelectedItems", sel); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - - public void fillDocList() - { - XPropertySet xPS = GetPropSet("ArticleText"); - try - { - short [] sel = (short[]) GetPropSet("WikiList").getPropertyValue("SelectedItems"); - xPS.setPropertyValue("StringItemList", m_aSettings.getWikiDocList(sel[0], 5)); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - - - public String GetWikiTitle() - { - return m_sWikiTitle; - } - - public void SetWikiTitle(String sArticle) - { - m_sWikiTitle = sArticle; - try - { - XPropertySet xPS = GetPropSet("ArticleText"); - xPS.setPropertyValue("Text", sArticle); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - - - public void switchSendButtonIfNecessary() - { - XPropertySet xSendButton = GetPropSet( "SendButton" ); - if ( xSendButton != null ) - { - XPropertySet xWikiListProps = GetPropSet( "WikiList" ); - XPropertySet xArticleProps = GetPropSet( "ArticleText" ); - if ( xWikiListProps != null && xArticleProps != null ) - { - try - { - short [] pSel = (short[]) GetPropSet("WikiList").getPropertyValue("SelectedItems"); - String sArticle = (String)xArticleProps.getPropertyValue( "Text" ); - if ( pSel != null && pSel.length > 0 && sArticle != null && sArticle.length() != 0 ) - xSendButton.setPropertyValue( "Enabled", Boolean.TRUE ); - else - xSendButton.setPropertyValue( "Enabled", Boolean.FALSE ); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - } - } - - public void EnableControls( boolean bEnable ) - { - try - { - String[] pControls = { "WikiList", - "ArticleText", - "CommentText", - "MinorCheck", - "BrowserCheck", - "HelpButton", - "AddButton" }; - - for ( int nInd = 0; nInd < pControls.length; nInd++ ) - GetPropSet( pControls[nInd] ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); - - if ( bEnable ) - { - SetFocusTo( "WikiList" ); - switchSendButtonIfNecessary(); - } - else - { - GetPropSet( "SendButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); - SetFocusTo( "CancelButton" ); - } - } - catch (Exception ex) - { - ex.printStackTrace(); - } - } - - public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName ) - { - if ( MethodName.equals( sSendMethod ) ) - { - try - { - XPropertySet aWikiListProps = GetPropSet( "WikiList" ); - XPropertySet aArticleTextProps = GetPropSet( "ArticleText" ); - XPropertySet aCommentTextProps = GetPropSet( "CommentText" ); - XPropertySet aMinorCheckProps = GetPropSet( "MinorCheck" ); - XPropertySet aBrowserCheckProps = GetPropSet( "BrowserCheck" ); - - short [] sel = (short[]) aWikiListProps.getPropertyValue("SelectedItems"); - String [] items = (String []) aWikiListProps.getPropertyValue("StringItemList"); - m_sWikiEngineURL = items[sel[0]]; - m_aSettings.setLastUsedWikiServer(sel[0]); - m_sWikiTitle = (String) aArticleTextProps.getPropertyValue("Text"); - m_sWikiComment = (String) aCommentTextProps.getPropertyValue("Text"); - - short minorState = ((Short) aMinorCheckProps.getPropertyValue("State")).shortValue(); - if (minorState != 0) - m_bWikiMinorEdit = true; - else - m_bWikiMinorEdit = false; - - short nBrowserState = ((Short) aBrowserCheckProps.getPropertyValue("State")).shortValue(); - Helper.SetShowInBrowserByDefault( m_xContext, nBrowserState != 0 ); - - // allow to disable other buttons - EnableControls( false ); - } - catch (Exception ex) - { - ex.printStackTrace(); - } - - final WikiPropDialog aThisDialog = this; - final XDialog xDialogToClose = xDialog; - final XComponentContext xContext = m_xContext; - - // start spinning - SetThrobberVisible( true ); - SetThrobberActive( true ); - - // the following method might show a dialog, should be used in main thread - final Hashtable aWikiSettings = m_aSettings.getSettingByUrl( m_sWikiEngineURL ); - if ( Helper.AllowThreadUsage( m_xContext ) ) - { - m_aThread = new Thread( "com.sun.star.thread.WikiEditorSendingThread" ) - { - public void run() - { - try - { - if ( m_aWikiEditor != null ) - { - Thread.yield(); - m_bAction = m_aWikiEditor.SendArticleImpl( aThisDialog, aWikiSettings ); - } - } - finally - { - EnableControls( true ); - SetThrobberActive( false ); - SetThrobberVisible( false ); - - ThreadStop( true ); - if ( m_bAction ) - MainThreadDialogExecutor.Close( xContext, xDialogToClose ); - } - } - }; - - m_aThread.start(); - } - else - { - try - { - if ( m_aWikiEditor != null ) - { - m_bAction = m_aWikiEditor.SendArticleImpl( aThisDialog, aWikiSettings ); - } - } catch( java.lang.Exception e ) - {} - finally - { - EnableControls( true ); - SetThrobberActive( false ); - SetThrobberVisible( false ); - - if ( m_bAction ) - xDialogToClose.endExecute(); - } - } - - return true; - } - else if ( MethodName.equals( sWikiListMethod ) ) - { - fillDocList(); - switchSendButtonIfNecessary(); - return true; - } - else if ( MethodName.equals( sArticleTextMethod ) ) - { - switchSendButtonIfNecessary(); - return true; - } - else if ( MethodName.equals( sAddWikiMethod ) ) - { - WikiEditSettingDialog xAddDialog = new WikiEditSettingDialog(m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application"); - if ( xAddDialog.show() ) - fillWikiList(); - - xAddDialog.DisposeDialog(); - - return true; - } - - return false; - } - - public void windowClosed( EventObject e ) - { - ThreadStop( false ); - } -} - diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java b/swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java deleted file mode 100644 index bba7d08..0000000 --- a/swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java +++ /dev/null @@ -1,168 +0,0 @@ -/************************************************************************* - * - * 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 com.sun.star.wiki; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.UnknownHostException; -import java.security.KeyStore; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; -import javax.net.ssl.X509TrustManager; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import org.apache.commons.httpclient.ConnectTimeoutException; -import org.apache.commons.httpclient.HttpClientError; -import org.apache.commons.httpclient.params.HttpConnectionParams; -import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; - -class WikiProtocolSocketFactory implements SecureProtocolSocketFactory -{ - private SSLContext m_aSSLContext; - - public WikiProtocolSocketFactory() - { - super(); - } - - public synchronized SSLContext GetNotSoSecureSSLContext() - { - if ( m_aSSLContext == null ) - { - TrustManager[] pTrustUnknownCerts = new TrustManager[] - { - new X509TrustManager() { - private X509TrustManager m_aOrgTrustManager; - - private X509TrustManager GetOrgTrustManager() - { - if ( m_aOrgTrustManager == null ) - { - try - { - TrustManagerFactory aFactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() ); - aFactory.init( (KeyStore)null ); - TrustManager[] pTrustmanagers = aFactory.getTrustManagers(); - if ( pTrustmanagers.length != 0 && pTrustmanagers[0] != null ) - m_aOrgTrustManager = (X509TrustManager)pTrustmanagers[0]; - } - catch( Exception e ) - { - throw new RuntimeException( "No access to the default trust manager!" ); - } - } - - return m_aOrgTrustManager; - } - - public X509Certificate[] getAcceptedIssuers() - { - return GetOrgTrustManager().getAcceptedIssuers(); - } - - public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException - { - GetOrgTrustManager().checkClientTrusted( certs, authType ); - } - - public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException - { - if ( certs == null || certs.length == 0 ) - GetOrgTrustManager().checkServerTrusted( certs, authType ); - else - for ( int nInd = 0; nInd < certs.length; nInd++ ) - certs[nInd].checkValidity(); - } - } - }; - - try - { - SSLContext aContext = SSLContext.getInstance("SSL"); - if ( aContext != null ) - { - aContext.init( null, pTrustUnknownCerts, null ); - m_aSSLContext = aContext; - } - } - catch ( Exception e ) - { - } - } - - if ( m_aSSLContext == null ) - throw new HttpClientError(); - - return m_aSSLContext; - } - - public Socket createSocket( String sHost, int nPort, InetAddress clientHost, int clientPort ) - throws IOException, UnknownHostException - { - return GetNotSoSecureSSLContext().getSocketFactory().createSocket( sHost, nPort, clientHost, clientPort ); - } - - public Socket createSocket( final String sHost, final int nPort, final InetAddress aLocalAddress, final int nLocalPort, final HttpConnectionParams params ) - throws IOException, UnknownHostException, ConnectTimeoutException - { - if ( params == null ) - return createSocket( sHost, nPort, aLocalAddress, nLocalPort ); - - int nTimeout = params.getConnectionTimeout(); - Socket aSocket = GetNotSoSecureSSLContext().getSocketFactory().createSocket(); - aSocket.bind( new InetSocketAddress( aLocalAddress, nLocalPort ) ); - aSocket.connect( new InetSocketAddress( sHost, nPort ), nTimeout ); - return aSocket; - } - - public Socket createSocket( String sHost, int nPort ) - throws IOException, UnknownHostException - { - return GetNotSoSecureSSLContext().getSocketFactory().createSocket( sHost, nPort ); - } - - public Socket createSocket( Socket aSocket, String sHost, int nPort, boolean bAutoClose ) - throws IOException, UnknownHostException - { - return GetNotSoSecureSSLContext().getSocketFactory().createSocket( aSocket, sHost, nPort, bAutoClose ); - } - - public boolean equals(Object obj) - { - return ((obj != null) && obj.getClass().equals(WikiProtocolSocketFactory.class)); - } - - public int hashCode() - { - return WikiProtocolSocketFactory.class.hashCode(); - } -}; - |