blob: 2a9e69d6ed5c2c3a753f78e5afff920633b954b8 [file] [log] [blame]
/**************************************************************
*
* 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 testlib.gui;
import static org.openoffice.test.common.Testspace.*;
import static testlib.gui.UIMap.*;
import org.openoffice.test.common.Condition;
import org.openoffice.test.common.FileUtil;
import org.openoffice.test.common.SystemUtil;
import org.openoffice.test.common.Testspace;
import org.openoffice.test.vcl.Tester;
import org.openoffice.test.vcl.widgets.VclWindow;
public class AppTool extends Tester {
static {
Testspace.getFile("temp").mkdirs();
// TODO move these shortcut into a file
setCustomizedShortcut("copy", "ctrl", "c");
setCustomizedShortcut("select_all", "ctrl", "a");
setCustomizedShortcut("paste", "ctrl", "v");
setCustomizedShortcut("cut", "ctrl", "x");
setCustomizedShortcut("startcenter", "ctrl", "n");
setCustomizedShortcut("find", "ctrl", "f");
setCustomizedShortcut("undo", "ctrl", "z");
setCustomizedShortcut("redo", "ctrl", "y");
if (SystemUtil.isMac()) {
setCustomizedShortcut("copy", "command", "c");
setCustomizedShortcut("select_all", "command", "a");
setCustomizedShortcut("paste", "command", "v");
setCustomizedShortcut("cut", "command", "x");
setCustomizedShortcut("startcenter", "command", "n");
setCustomizedShortcut("find", "command", "f");
setCustomizedShortcut("undo", "command", "z");
setCustomizedShortcut("redo", "command", "shift", "z");
} else if (SystemUtil.isLinux()) {
}
}
public static void newTextDocument() {
app.dispatch("private:factory/swriter");
writer.waitForExistence(10, 2);
sleep(1);
}
public static void newSpreadsheet() {
app.dispatch("private:factory/scalc");
calc.waitForExistence(10, 2);
sleep(1);
}
public static void newPresentation() {
app.dispatch("private:factory/simpress");
impress.waitForExistence(10, 2);
sleep(1);
}
public static void newDrawing() {
app.dispatch("private:factory/sdraw");
draw.waitForExistence(10, 2);
sleep(1);
}
public static void newFormula() {
app.dispatch("private:factory/smath");
mathEditWindow.waitForExistence(10, 2);
sleep(1);
}
public static void open(String path) {
app.dispatch(".uno:Open");
submitOpenDlg(getPath(path));
}
public static void saveAs(String path) {
app.dispatch(".uno:SaveAs");
submitSaveDlg(getPath(path));
if (alienFormatDlg.exists(3))
alienFormatDlg.ok();
if( activeMsgBox.exists(1)) {
String msg = activeMsgBox.getMessage();
// #i123142# confirm overwriting of test files
if( msg.indexOf( "overwrite changes") >= 0)
activeMsgBox.yes();
}
app.waitSlot(5 * 60); // 5 minutes
}
public static void close() {
app.dispatch(".uno:CloseDoc");
}
public static void saveAndReopen(String path){
saveAs(path);
close();
open(path);
}
public static void discard() {
app.dispatch(".uno:CloseDoc");
if (activeMsgBox.exists(2))
activeMsgBox.no();
}
public static void typeKeys(String keys) {
Tester.typeKeys(keys);
}
public static void openStartcenter() {
if (startcenter.exists())
return;
if (SystemUtil.isMac()) {
SystemUtil.execScript("osascript -e 'tell app \"OpenOffice.org\" to activate'");
typeKeys("<command n>");
}
}
public static String copyAll() {
app.setClipboard(".d.i.r.t.y.");
try {
app.dispatch(".uno:SelectAll");
} catch (Exception e) {
app.dispatch(".uno:Select");
}
app.dispatch(".uno:Copy");
return app.getClipboard();
}
public static void submitOpenDlg(String path) {
filePickerPath.setText(path);
filePickerOpen.click();
}
public static void submitSaveDlg(String path) {
fileSavePath.setText(path);
String extName = FileUtil.getFileExtName(path).toLowerCase();
String[] filters = fileSaveFileType.getItemsText();
int i = 0;
for (; i < filters.length; i++) {
String f = filters[i];
int dotIndex = f.lastIndexOf(".");
if (dotIndex == -1)
continue;
if (extName.equals(f.substring(dotIndex + 1, f.length() - 1)))
break;
}
if (i == filters.length)
throw new RuntimeException("Can't find the supported doc format!");
fileSaveFileType.select(i);
fileSaveSave.click();
}
public static void submitSaveDlg(String path, String ext) {
fileSavePath.setText(path);
if (ext != null) {
// change filter
String[] filters = fileSaveFileType.getItemsText();
int i = 0;
for (; i < filters.length; i++) {
String f = filters[i];
int dotIndex = f.lastIndexOf(".");
if (dotIndex == -1)
continue;
if (ext.equals(f.substring(dotIndex + 1, f.length() - 1)))
break;
}
if (i == filters.length)
throw new RuntimeException("Can't find the supported doc format!");
}
fileSaveFileType.click();
}
public static void handleBlocker(final VclWindow... windows) {
new Condition() {
@Override
public boolean value() {
if (activeMsgBox.exists()) {
try {
activeMsgBox.ok();
} catch (Exception e) {
try {
activeMsgBox.yes();
} catch (Exception e1) {
}
}
}
boolean shown = false;
for (VclWindow w : windows) {
if (w.exists()) {
shown = true;
break;
}
}
if (!shown)
return false;
if (activeMsgBox.exists(2)) {
try {
activeMsgBox.ok();
} catch (Exception e) {
try {
activeMsgBox.yes();
} catch (Exception e1) {
}
}
}
return true;
}
}.waitForTrue("Time out wait window to be active.", 120, 2);
}
public static void insertPicture(String path) {
app.dispatch(".uno:InsertGraphic");
submitOpenDlg(getPath(path));
}
}