package com.windowtester.test.eclipse.helpers; import com.windowtester.runtime.IUIContext; import com.windowtester.runtime.WidgetSearchException; import com.windowtester.runtime.condition.IsEnabledCondition; import com.windowtester.runtime.swt.condition.SWTIdleCondition; import com.windowtester.runtime.swt.condition.eclipse.JobsCompleteCondition; import com.windowtester.runtime.swt.condition.shell.ShellDisposedCondition; import com.windowtester.runtime.swt.condition.shell.ShellShowingCondition; import com.windowtester.runtime.swt.locator.ButtonLocator; import com.windowtester.runtime.swt.locator.LabeledTextLocator; import com.windowtester.runtime.swt.locator.MenuItemLocator; import com.windowtester.runtime.swt.locator.TreeItemLocator; import com.windowtester.test.eclipse.EclipseUtil; import com.windowtester.test.util.TypingLinuxHelper; /******************************************************************************* * Copyright (c) 2012 Google, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Google, Inc. - initial API and implementation *******************************************************************************/ public class JavaProjectHelper extends TestHelper { private static final String SEP_SRC_FOLDER_CREATION_LABEL = EclipseUtil.isVersion_32() ? "&Create separate source and output folders" : "&Create separate folders for sources and class files"; public static void createJavaProject(IUIContext ui, String projectName) throws WidgetSearchException { ensureNotNull(ui, projectName); try{ TypingLinuxHelper.switchToInsertStrategyIfNeeded(); ui.click(new MenuItemLocator("File/New/Project...")); ui.wait(new ShellShowingCondition("New Project")); ui.click(new TreeItemLocator("Java/Java Project")); ui.click(new ButtonLocator("Next >")); ui.assertThat(new IsEnabledCondition(new ButtonLocator("Finish"), false)); // new DebugHelper().printWidgets(); // WidgetPrinter printer = new WidgetPrinter(); // DisplayReference.getDefault().getActiveShell().accept(printer); // System.out.println(printer.asString()); // Assert.fail(); ui.click(new LabeledTextLocator("&Project name:")); ui.enterText(projectName); ui.assertThat(new IsEnabledCondition(new ButtonLocator("Finish"), true)); ui.click(new ButtonLocator(SEP_SRC_FOLDER_CREATION_LABEL)); ui.click(new ButtonLocator("Finish")); ui.wait(new ShellDisposedCondition("New Java Project")); ui.wait(new JobsCompleteCondition()); ui.wait(new SWTIdleCondition()); }finally{ TypingLinuxHelper.restoreOriginalStrategy(); } } //NOTE: assumes target project is selected... public static void createJavaClass(IUIContext ui, String sourceFolder, String className) throws WidgetSearchException { try{ TypingLinuxHelper.switchToInsertStrategyIfNeeded(); ensureNotNull(ui, className); ui.click(new MenuItemLocator("File/New/Class")); ui.wait(new ShellShowingCondition("New Java Class")); ui.click(2, new LabeledTextLocator("Source fol&der:")); ui.enterText(sourceFolder); ui.click(2, new LabeledTextLocator("Na&me:")); ui.enterText(className); ui.assertThat(new ButtonLocator("Finish").isEnabled()); ui.click(new ButtonLocator("Finish")); ui.wait(new ShellDisposedCondition("New Java Class")); }finally{ TypingLinuxHelper.restoreOriginalStrategy(); } } public static void createJavaClass(IUIContext ui, String sourceFolder, String packageName, String className) throws WidgetSearchException { try{ TypingLinuxHelper.switchToInsertStrategyIfNeeded(); ensureNotNull(ui, className); ui.click(new MenuItemLocator("File/New/Class")); ui.wait(new ShellShowingCondition("New Java Class")); ui.click(new LabeledTextLocator("Source fol&der:")); selectAll(ui); ui.enterText(sourceFolder); ui.click(new LabeledTextLocator("Pac&kage:")); ui.enterText(packageName); ui.click(new LabeledTextLocator("Na&me:")); selectAll(ui); ui.enterText(className); ui.assertThat(new ButtonLocator("Finish").isEnabled()); ui.click(new ButtonLocator("Finish")); // extra long wait for shell disposed for Dan's slow Linux box ui.wait(new ShellDisposedCondition("New Java Class")); }finally{ TypingLinuxHelper.restoreOriginalStrategy(); } } }