1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package com.sun.star.wiki; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.awt.XDialog; 27*b1cdbd2cSJim Jagielski import com.sun.star.awt.XWindowPeer; 28*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 30*b1cdbd2cSJim Jagielski import com.sun.star.uno.XComponentContext; 31*b1cdbd2cSJim Jagielski import com.sun.star.lang.EventObject; 32*b1cdbd2cSJim Jagielski import java.util.Hashtable; 33*b1cdbd2cSJim Jagielski import javax.net.ssl.SSLException; 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski import org.apache.commons.httpclient.*; 36*b1cdbd2cSJim Jagielski import org.apache.commons.httpclient.methods.*; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski public class WikiEditSettingDialog extends WikiDialog 39*b1cdbd2cSJim Jagielski { 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski private final String sOKMethod = "OK"; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski String[] Methods = 44*b1cdbd2cSJim Jagielski {sOKMethod }; 45*b1cdbd2cSJim Jagielski private Hashtable setting; 46*b1cdbd2cSJim Jagielski private boolean addMode; 47*b1cdbd2cSJim Jagielski private boolean m_bAllowURLChange = true; 48*b1cdbd2cSJim Jagielski WikiEditSettingDialog( XComponentContext xContext, String DialogURL )49*b1cdbd2cSJim Jagielski public WikiEditSettingDialog( XComponentContext xContext, String DialogURL ) 50*b1cdbd2cSJim Jagielski { 51*b1cdbd2cSJim Jagielski super( xContext, DialogURL ); 52*b1cdbd2cSJim Jagielski super.setMethods( Methods ); 53*b1cdbd2cSJim Jagielski setting = new Hashtable(); 54*b1cdbd2cSJim Jagielski addMode = true; 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski InsertThrobber( 184, 20, 10, 10 ); 57*b1cdbd2cSJim Jagielski InitStrings( xContext ); 58*b1cdbd2cSJim Jagielski InitSaveCheckbox( xContext, false ); 59*b1cdbd2cSJim Jagielski } 60*b1cdbd2cSJim Jagielski WikiEditSettingDialog( XComponentContext xContext, String DialogURL, Hashtable ht, boolean bAllowURLChange )61*b1cdbd2cSJim Jagielski public WikiEditSettingDialog( XComponentContext xContext, String DialogURL, Hashtable ht, boolean bAllowURLChange ) 62*b1cdbd2cSJim Jagielski { 63*b1cdbd2cSJim Jagielski super( xContext, DialogURL ); 64*b1cdbd2cSJim Jagielski super.setMethods( Methods ); 65*b1cdbd2cSJim Jagielski setting = ht; 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski boolean bInitSaveCheckBox = false; 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski try 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski XPropertySet xUrlField = GetPropSet( "UrlField" ); 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski xUrlField.setPropertyValue( "Text", ht.get( "Url" ) ); 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski GetPropSet( "UsernameField" ).setPropertyValue( "Text", ht.get( "Username" ) ); 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski if ( Helper.PasswordStoringIsAllowed( m_xContext ) ) 78*b1cdbd2cSJim Jagielski { 79*b1cdbd2cSJim Jagielski String[] pPasswords = Helper.GetPasswordsForURLAndUser( m_xContext, (String)ht.get( "Url" ), (String)ht.get( "Username" ) ); 80*b1cdbd2cSJim Jagielski bInitSaveCheckBox = ( pPasswords != null && pPasswords.length > 0 && pPasswords[0].equals( (String)ht.get( "Password" ) ) ); 81*b1cdbd2cSJim Jagielski } 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski // the password should be entered by the user or the Cancel should be pressed 84*b1cdbd2cSJim Jagielski // GetPropSet( "PasswordField" ).setPropertyValue( "Text", ht.get( "Password" )); 85*b1cdbd2cSJim Jagielski } 86*b1cdbd2cSJim Jagielski catch ( Exception ex ) 87*b1cdbd2cSJim Jagielski { 88*b1cdbd2cSJim Jagielski ex.printStackTrace(); 89*b1cdbd2cSJim Jagielski } 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski addMode = false; 92*b1cdbd2cSJim Jagielski m_bAllowURLChange = bAllowURLChange; 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski InsertThrobber( 184, 20, 10, 10 ); 95*b1cdbd2cSJim Jagielski InitStrings( xContext ); 96*b1cdbd2cSJim Jagielski InitSaveCheckbox( xContext, bInitSaveCheckBox ); 97*b1cdbd2cSJim Jagielski } 98*b1cdbd2cSJim Jagielski show( )99*b1cdbd2cSJim Jagielski public boolean show( ) 100*b1cdbd2cSJim Jagielski { 101*b1cdbd2cSJim Jagielski SetThrobberVisible( false ); 102*b1cdbd2cSJim Jagielski EnableControls( true ); 103*b1cdbd2cSJim Jagielski boolean bResult = super.show(); 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski try 106*b1cdbd2cSJim Jagielski { 107*b1cdbd2cSJim Jagielski if ( bResult && Helper.PasswordStoringIsAllowed( m_xContext ) 108*b1cdbd2cSJim Jagielski && ( (Short)( GetPropSet( "SaveBox" ).getPropertyValue("State") ) ).shortValue() != (short)0 ) 109*b1cdbd2cSJim Jagielski { 110*b1cdbd2cSJim Jagielski String sURL = (String)setting.get( "Url" ); 111*b1cdbd2cSJim Jagielski String sUserName = (String)setting.get( "Username" ); 112*b1cdbd2cSJim Jagielski String sPassword = (String)setting.get( "Password" ); 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski if ( sURL != null && sURL.length() > 0 && sUserName != null && sUserName.length() > 0 && sPassword != null && sPassword.length() > 0 ) 115*b1cdbd2cSJim Jagielski { 116*b1cdbd2cSJim Jagielski String[] pPasswords = { sPassword }; 117*b1cdbd2cSJim Jagielski Helper.GetPasswordContainer( m_xContext ).addPersistent( sURL, sUserName, pPasswords, Helper.GetInteractionHandler( m_xContext ) ); 118*b1cdbd2cSJim Jagielski } 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski } 121*b1cdbd2cSJim Jagielski catch( Exception e ) 122*b1cdbd2cSJim Jagielski { 123*b1cdbd2cSJim Jagielski e.printStackTrace(); 124*b1cdbd2cSJim Jagielski } 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski return bResult; 127*b1cdbd2cSJim Jagielski } 128*b1cdbd2cSJim Jagielski EnableControls( boolean bEnable )129*b1cdbd2cSJim Jagielski public void EnableControls( boolean bEnable ) 130*b1cdbd2cSJim Jagielski { 131*b1cdbd2cSJim Jagielski if ( !bEnable ) 132*b1cdbd2cSJim Jagielski SetFocusTo( "CancelButton" ); 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski try 135*b1cdbd2cSJim Jagielski { 136*b1cdbd2cSJim Jagielski GetPropSet( "UsernameField" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); 137*b1cdbd2cSJim Jagielski GetPropSet( "PasswordField" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); 138*b1cdbd2cSJim Jagielski GetPropSet( "OkButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); 139*b1cdbd2cSJim Jagielski GetPropSet( "HelpButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) ); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski if ( bEnable ) 142*b1cdbd2cSJim Jagielski { 143*b1cdbd2cSJim Jagielski GetPropSet( "UrlField" ).setPropertyValue( "Enabled", new Boolean( m_bAllowURLChange ) ); 144*b1cdbd2cSJim Jagielski GetPropSet( "SaveBox" ).setPropertyValue( "Enabled", new Boolean( Helper.PasswordStoringIsAllowed( m_xContext ) ) ); 145*b1cdbd2cSJim Jagielski if ( m_bAllowURLChange ) 146*b1cdbd2cSJim Jagielski SetFocusTo( "UrlField" ); 147*b1cdbd2cSJim Jagielski else 148*b1cdbd2cSJim Jagielski SetFocusTo( "UsernameField" ); 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski else 151*b1cdbd2cSJim Jagielski { 152*b1cdbd2cSJim Jagielski GetPropSet( "UrlField" ).setPropertyValue( "Enabled", Boolean.FALSE ); 153*b1cdbd2cSJim Jagielski GetPropSet( "SaveBox" ).setPropertyValue( "Enabled", Boolean.FALSE ); 154*b1cdbd2cSJim Jagielski } 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski catch ( Exception ex ) 157*b1cdbd2cSJim Jagielski { 158*b1cdbd2cSJim Jagielski ex.printStackTrace(); 159*b1cdbd2cSJim Jagielski } 160*b1cdbd2cSJim Jagielski } 161*b1cdbd2cSJim Jagielski InitStrings( XComponentContext xContext )162*b1cdbd2cSJim Jagielski private void InitStrings( XComponentContext xContext ) 163*b1cdbd2cSJim Jagielski { 164*b1cdbd2cSJim Jagielski try 165*b1cdbd2cSJim Jagielski { 166*b1cdbd2cSJim Jagielski SetTitle( Helper.GetLocalizedString( xContext, Helper.DLG_MEDIAWIKI_TITLE ) ); 167*b1cdbd2cSJim Jagielski GetPropSet( "UrlLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_URLLABEL ) ); 168*b1cdbd2cSJim Jagielski GetPropSet( "UsernameLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_USERNAMELABEL ) ); 169*b1cdbd2cSJim Jagielski GetPropSet( "PasswordLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_PASSWORDLABEL ) ); 170*b1cdbd2cSJim Jagielski GetPropSet( "AccountLine" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_ACCOUNTLINE ) ); 171*b1cdbd2cSJim Jagielski GetPropSet( "WikiLine" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_WIKILINE ) ); 172*b1cdbd2cSJim Jagielski GetPropSet( "SaveBox" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_SAVEBOX ) ); 173*b1cdbd2cSJim Jagielski GetPropSet( "OkButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_OK ) ); 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski catch( Exception e ) 176*b1cdbd2cSJim Jagielski { 177*b1cdbd2cSJim Jagielski e.printStackTrace(); 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski } 180*b1cdbd2cSJim Jagielski InitSaveCheckbox( XComponentContext xContext, boolean bInitSaveCheckBox )181*b1cdbd2cSJim Jagielski private void InitSaveCheckbox( XComponentContext xContext, boolean bInitSaveCheckBox ) 182*b1cdbd2cSJim Jagielski { 183*b1cdbd2cSJim Jagielski XPropertySet xSaveCheck = GetPropSet( "SaveBox" ); 184*b1cdbd2cSJim Jagielski try 185*b1cdbd2cSJim Jagielski { 186*b1cdbd2cSJim Jagielski xSaveCheck.setPropertyValue( "State", new Short( bInitSaveCheckBox ? (short)1 : (short)0 ) ); 187*b1cdbd2cSJim Jagielski xSaveCheck.setPropertyValue( "Enabled", new Boolean( Helper.PasswordStoringIsAllowed( xContext ) ) ); 188*b1cdbd2cSJim Jagielski } 189*b1cdbd2cSJim Jagielski catch( Exception e ) 190*b1cdbd2cSJim Jagielski { 191*b1cdbd2cSJim Jagielski e.printStackTrace(); 192*b1cdbd2cSJim Jagielski } 193*b1cdbd2cSJim Jagielski } 194*b1cdbd2cSJim Jagielski DoLogin( XDialog xDialog )195*b1cdbd2cSJim Jagielski public void DoLogin( XDialog xDialog ) 196*b1cdbd2cSJim Jagielski { 197*b1cdbd2cSJim Jagielski String sRedirectURL = ""; 198*b1cdbd2cSJim Jagielski String sURL = ""; 199*b1cdbd2cSJim Jagielski try 200*b1cdbd2cSJim Jagielski { 201*b1cdbd2cSJim Jagielski sURL = ( String ) GetPropSet( "UrlField" ).getPropertyValue( "Text" ); 202*b1cdbd2cSJim Jagielski String sUserName = ( String ) GetPropSet( "UsernameField" ).getPropertyValue( "Text" ); 203*b1cdbd2cSJim Jagielski String sPassword = ( String ) GetPropSet( "PasswordField" ).getPropertyValue( "Text" ); 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski HostConfiguration aHostConfig = new HostConfiguration(); 206*b1cdbd2cSJim Jagielski boolean bInitHost = true; 207*b1cdbd2cSJim Jagielski boolean bAllowIndex = true; 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski do 210*b1cdbd2cSJim Jagielski { 211*b1cdbd2cSJim Jagielski if ( sRedirectURL.length() > 0 ) 212*b1cdbd2cSJim Jagielski { 213*b1cdbd2cSJim Jagielski sURL = sRedirectURL; 214*b1cdbd2cSJim Jagielski sRedirectURL = ""; 215*b1cdbd2cSJim Jagielski } 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski if ( sURL.length() > 0 ) 218*b1cdbd2cSJim Jagielski { 219*b1cdbd2cSJim Jagielski URI aURI = new URI( sURL ); 220*b1cdbd2cSJim Jagielski GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() ); 221*b1cdbd2cSJim Jagielski aRequest.setFollowRedirects( false ); 222*b1cdbd2cSJim Jagielski Helper.ExecuteMethod( aRequest, aHostConfig, aURI, m_xContext, bInitHost ); 223*b1cdbd2cSJim Jagielski bInitHost = false; 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski int nResultCode = aRequest.getStatusCode(); 226*b1cdbd2cSJim Jagielski String sWebPage = null; 227*b1cdbd2cSJim Jagielski if ( nResultCode == 200 ) 228*b1cdbd2cSJim Jagielski sWebPage = aRequest.getResponseBodyAsString(); 229*b1cdbd2cSJim Jagielski else if ( nResultCode >= 301 && nResultCode <= 303 || nResultCode == 307 ) 230*b1cdbd2cSJim Jagielski sRedirectURL = aRequest.getResponseHeader( "Location" ).getValue(); 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski aRequest.releaseConnection(); 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski if ( sWebPage != null && sWebPage.length() > 0 ) 235*b1cdbd2cSJim Jagielski { 236*b1cdbd2cSJim Jagielski //the URL is valid 237*b1cdbd2cSJim Jagielski String sMainURL = Helper.GetMainURL( sWebPage, sURL ); 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski if ( sMainURL.equals( "" ) ) 240*b1cdbd2cSJim Jagielski { 241*b1cdbd2cSJim Jagielski // TODO: 242*b1cdbd2cSJim Jagielski // it's not a Wiki Page, check first whether a redirect is requested 243*b1cdbd2cSJim Jagielski // happens usually in case of https 244*b1cdbd2cSJim Jagielski sRedirectURL = Helper.GetRedirectURL( sWebPage, sURL ); 245*b1cdbd2cSJim Jagielski if ( sRedirectURL.equals( "" ) ) 246*b1cdbd2cSJim Jagielski { 247*b1cdbd2cSJim Jagielski // show error 248*b1cdbd2cSJim Jagielski Helper.ShowError( m_xContext, 249*b1cdbd2cSJim Jagielski m_xDialog, 250*b1cdbd2cSJim Jagielski Helper.DLG_MEDIAWIKI_TITLE, 251*b1cdbd2cSJim Jagielski Helper.NOURLCONNECTION_ERROR, 252*b1cdbd2cSJim Jagielski sURL, 253*b1cdbd2cSJim Jagielski false ); 254*b1cdbd2cSJim Jagielski } 255*b1cdbd2cSJim Jagielski } 256*b1cdbd2cSJim Jagielski else 257*b1cdbd2cSJim Jagielski { 258*b1cdbd2cSJim Jagielski URI aMainURI = new URI( sMainURL, true ); // it must be an escaped URL, otherwise an exception should be thrown 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski if ( ( sUserName.length() > 0 || sPassword.length() > 0 ) 261*b1cdbd2cSJim Jagielski && Helper.Login( aMainURI, sUserName, sPassword, m_xContext ) == null ) 262*b1cdbd2cSJim Jagielski { 263*b1cdbd2cSJim Jagielski // a wrong login information is provided 264*b1cdbd2cSJim Jagielski // show error 265*b1cdbd2cSJim Jagielski Helper.ShowError( m_xContext, 266*b1cdbd2cSJim Jagielski m_xDialog, 267*b1cdbd2cSJim Jagielski Helper.DLG_MEDIAWIKI_TITLE, 268*b1cdbd2cSJim Jagielski Helper.WRONGLOGIN_ERROR, 269*b1cdbd2cSJim Jagielski null, 270*b1cdbd2cSJim Jagielski false ); 271*b1cdbd2cSJim Jagielski } 272*b1cdbd2cSJim Jagielski else 273*b1cdbd2cSJim Jagielski { 274*b1cdbd2cSJim Jagielski setting.put( "Url", aMainURI.getEscapedURI() ); 275*b1cdbd2cSJim Jagielski setting.put( "Username", sUserName ); 276*b1cdbd2cSJim Jagielski setting.put( "Password", sPassword ); 277*b1cdbd2cSJim Jagielski if ( addMode ) 278*b1cdbd2cSJim Jagielski { 279*b1cdbd2cSJim Jagielski // no cleaning of the settings is necessary 280*b1cdbd2cSJim Jagielski Settings.getSettings( m_xContext ).addWikiCon( setting ); 281*b1cdbd2cSJim Jagielski Settings.getSettings( m_xContext ).storeConfiguration(); 282*b1cdbd2cSJim Jagielski } 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski m_bAction = true; 285*b1cdbd2cSJim Jagielski } 286*b1cdbd2cSJim Jagielski } 287*b1cdbd2cSJim Jagielski } 288*b1cdbd2cSJim Jagielski else if ( sRedirectURL == null || sRedirectURL.length() == 0 ) 289*b1cdbd2cSJim Jagielski { 290*b1cdbd2cSJim Jagielski if ( sURL.length() > 0 && !sURL.endsWith( "index.php" ) && bAllowIndex ) 291*b1cdbd2cSJim Jagielski { 292*b1cdbd2cSJim Jagielski // the used MainURL is not alwais directly accessible 293*b1cdbd2cSJim Jagielski // add the suffix as workaround, but only once 294*b1cdbd2cSJim Jagielski sRedirectURL = sURL + "/index.php"; 295*b1cdbd2cSJim Jagielski bAllowIndex = false; 296*b1cdbd2cSJim Jagielski } 297*b1cdbd2cSJim Jagielski else 298*b1cdbd2cSJim Jagielski { 299*b1cdbd2cSJim Jagielski // URL invalid 300*b1cdbd2cSJim Jagielski // show error 301*b1cdbd2cSJim Jagielski Helper.ShowError( m_xContext, 302*b1cdbd2cSJim Jagielski m_xDialog, 303*b1cdbd2cSJim Jagielski Helper.DLG_MEDIAWIKI_TITLE, 304*b1cdbd2cSJim Jagielski Helper.INVALIDURL_ERROR, 305*b1cdbd2cSJim Jagielski null, 306*b1cdbd2cSJim Jagielski false ); 307*b1cdbd2cSJim Jagielski } 308*b1cdbd2cSJim Jagielski } 309*b1cdbd2cSJim Jagielski } 310*b1cdbd2cSJim Jagielski else 311*b1cdbd2cSJim Jagielski { 312*b1cdbd2cSJim Jagielski // URL field empty 313*b1cdbd2cSJim Jagielski // show error 314*b1cdbd2cSJim Jagielski Helper.ShowError( m_xContext, 315*b1cdbd2cSJim Jagielski m_xDialog, 316*b1cdbd2cSJim Jagielski Helper.DLG_MEDIAWIKI_TITLE, 317*b1cdbd2cSJim Jagielski Helper.NOURL_ERROR, 318*b1cdbd2cSJim Jagielski null, 319*b1cdbd2cSJim Jagielski false ); 320*b1cdbd2cSJim Jagielski } 321*b1cdbd2cSJim Jagielski } while ( sRedirectURL.length() > 0 ); 322*b1cdbd2cSJim Jagielski } 323*b1cdbd2cSJim Jagielski catch ( WikiCancelException ce ) 324*b1cdbd2cSJim Jagielski { 325*b1cdbd2cSJim Jagielski } 326*b1cdbd2cSJim Jagielski catch ( SSLException essl ) 327*b1cdbd2cSJim Jagielski { 328*b1cdbd2cSJim Jagielski if ( Helper.IsConnectionAllowed() ) 329*b1cdbd2cSJim Jagielski { 330*b1cdbd2cSJim Jagielski Helper.ShowError( m_xContext, 331*b1cdbd2cSJim Jagielski m_xDialog, 332*b1cdbd2cSJim Jagielski Helper.DLG_MEDIAWIKI_TITLE, 333*b1cdbd2cSJim Jagielski Helper.UNKNOWNCERT_ERROR, 334*b1cdbd2cSJim Jagielski null, 335*b1cdbd2cSJim Jagielski false ); 336*b1cdbd2cSJim Jagielski } 337*b1cdbd2cSJim Jagielski essl.printStackTrace(); 338*b1cdbd2cSJim Jagielski } 339*b1cdbd2cSJim Jagielski catch ( Exception ex ) 340*b1cdbd2cSJim Jagielski { 341*b1cdbd2cSJim Jagielski if ( Helper.IsConnectionAllowed() ) 342*b1cdbd2cSJim Jagielski { 343*b1cdbd2cSJim Jagielski Helper.ShowError( m_xContext, 344*b1cdbd2cSJim Jagielski m_xDialog, 345*b1cdbd2cSJim Jagielski Helper.DLG_MEDIAWIKI_TITLE, 346*b1cdbd2cSJim Jagielski Helper.NOURLCONNECTION_ERROR, 347*b1cdbd2cSJim Jagielski sURL, 348*b1cdbd2cSJim Jagielski false ); 349*b1cdbd2cSJim Jagielski } 350*b1cdbd2cSJim Jagielski ex.printStackTrace(); 351*b1cdbd2cSJim Jagielski } 352*b1cdbd2cSJim Jagielski } 353*b1cdbd2cSJim Jagielski callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName )354*b1cdbd2cSJim Jagielski public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName ) 355*b1cdbd2cSJim Jagielski { 356*b1cdbd2cSJim Jagielski if ( MethodName.equals( sOKMethod ) ) 357*b1cdbd2cSJim Jagielski { 358*b1cdbd2cSJim Jagielski EnableControls( false ); 359*b1cdbd2cSJim Jagielski SetThrobberVisible( true ); 360*b1cdbd2cSJim Jagielski SetThrobberActive( true ); 361*b1cdbd2cSJim Jagielski 362*b1cdbd2cSJim Jagielski if ( Helper.AllowThreadUsage( m_xContext ) ) 363*b1cdbd2cSJim Jagielski { 364*b1cdbd2cSJim Jagielski final XDialog xDialogForThread = xDialog; 365*b1cdbd2cSJim Jagielski final XComponentContext xContext = m_xContext; 366*b1cdbd2cSJim Jagielski final WikiEditSettingDialog aThis = this; 367*b1cdbd2cSJim Jagielski 368*b1cdbd2cSJim Jagielski // the thread name is used to allow the error dialogs 369*b1cdbd2cSJim Jagielski m_bThreadFinished = false; 370*b1cdbd2cSJim Jagielski m_aThread = new Thread( "com.sun.star.thread.WikiEditorSendingThread" ) 371*b1cdbd2cSJim Jagielski { 372*b1cdbd2cSJim Jagielski public void run() 373*b1cdbd2cSJim Jagielski { 374*b1cdbd2cSJim Jagielski try 375*b1cdbd2cSJim Jagielski { 376*b1cdbd2cSJim Jagielski Thread.yield(); 377*b1cdbd2cSJim Jagielski } catch( java.lang.Exception e ){} 378*b1cdbd2cSJim Jagielski 379*b1cdbd2cSJim Jagielski DoLogin( xDialogForThread ); 380*b1cdbd2cSJim Jagielski aThis.EnableControls( true ); 381*b1cdbd2cSJim Jagielski aThis.SetThrobberActive( false ); 382*b1cdbd2cSJim Jagielski aThis.SetThrobberVisible( false ); 383*b1cdbd2cSJim Jagielski 384*b1cdbd2cSJim Jagielski ThreadStop( true ); 385*b1cdbd2cSJim Jagielski 386*b1cdbd2cSJim Jagielski if ( m_bAction ) 387*b1cdbd2cSJim Jagielski MainThreadDialogExecutor.Close( xContext, xDialogForThread ); 388*b1cdbd2cSJim Jagielski } 389*b1cdbd2cSJim Jagielski }; 390*b1cdbd2cSJim Jagielski 391*b1cdbd2cSJim Jagielski m_aThread.start(); 392*b1cdbd2cSJim Jagielski } 393*b1cdbd2cSJim Jagielski else 394*b1cdbd2cSJim Jagielski { 395*b1cdbd2cSJim Jagielski try 396*b1cdbd2cSJim Jagielski { 397*b1cdbd2cSJim Jagielski DoLogin( xDialog ); 398*b1cdbd2cSJim Jagielski } catch( java.lang.Exception e ) 399*b1cdbd2cSJim Jagielski {} 400*b1cdbd2cSJim Jagielski finally 401*b1cdbd2cSJim Jagielski { 402*b1cdbd2cSJim Jagielski EnableControls( true ); 403*b1cdbd2cSJim Jagielski SetThrobberActive( false ); 404*b1cdbd2cSJim Jagielski SetThrobberVisible( false ); 405*b1cdbd2cSJim Jagielski 406*b1cdbd2cSJim Jagielski if ( m_bAction ) 407*b1cdbd2cSJim Jagielski xDialog.endExecute(); 408*b1cdbd2cSJim Jagielski 409*b1cdbd2cSJim Jagielski Helper.AllowConnection( true ); 410*b1cdbd2cSJim Jagielski } 411*b1cdbd2cSJim Jagielski } 412*b1cdbd2cSJim Jagielski 413*b1cdbd2cSJim Jagielski return true; 414*b1cdbd2cSJim Jagielski } 415*b1cdbd2cSJim Jagielski 416*b1cdbd2cSJim Jagielski return false; 417*b1cdbd2cSJim Jagielski } 418*b1cdbd2cSJim Jagielski windowClosed( EventObject e )419*b1cdbd2cSJim Jagielski public void windowClosed( EventObject e ) 420*b1cdbd2cSJim Jagielski { 421*b1cdbd2cSJim Jagielski ThreadStop( false ); 422*b1cdbd2cSJim Jagielski } 423*b1cdbd2cSJim Jagielski } 424*b1cdbd2cSJim Jagielski 425