/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ package ifc.script.framework; import com.sun.star.awt.*; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XInterface; import drafts.com.sun.star.accessibility.*; import drafts.com.sun.star.awt.XExtendedToolkit; // Jsuite classes import util.AccessibilityTools; import util.dbg; /** * Thread that pushes the buttons or checkbox * on the message box that is on top. */ public class SecurityDialogUtil extends Thread { private XMultiServiceFactory xMSF = null; private String errorMsg; private boolean errorHappened; private String btnName; private boolean checkBox; /** * Constructor. * @param xMSF A MultiServiceFactory. * @param log The log writer. */ public SecurityDialogUtil(XMultiServiceFactory xMSF, String btnName, boolean checkBox ) { this.xMSF = xMSF; this.btnName = btnName; this.checkBox = checkBox; errorMsg = ""; errorHappened=false; } /** * Returns the error message that occured while * accessing and pressing the button. * @return Error message. */ public String getErrorMessage() { return errorMsg; } /** * Is there an error message available? * @return true, if an error happened */ public boolean hasErrorMessage() { return !errorMsg.equals(""); } /** * Press the named button in the currently visible dialog box. */ public void run() { // wait for the message box to appear try { Thread.currentThread().sleep(4000) ; } catch (InterruptedException e) { System.err.println("While waiting :" + e.getMessage()) ; } // access the message box XAccessibleContext xCon = null; try { XInterface x = (XInterface) xMSF.createInstance( "com.sun.star.awt.Toolkit") ; XExtendedToolkit tk = (XExtendedToolkit)UnoRuntime.queryInterface( XExtendedToolkit.class,x); AccessibilityTools at = new AccessibilityTools(); XWindow xWindow = (XWindow)UnoRuntime.queryInterface( XWindow.class,tk.getActiveTopWindow()); XAccessible xRoot = at.getAccessibleObject(xWindow); xCon = xRoot.getAccessibleContext(); } catch (Exception e) { errorMsg="Exception while using Accessibility\n"+ e.getMessage(); return; } // get the button XInterface oObj = null; try { /* System.err.println("Name of the AccessibleContext:\n\t"+ xCon.getAccessibleName()); */ int count = xCon.getAccessibleChildCount(); // System.err.println("Number of children: "+count); for (int i=0; i