/******************************************************************************* * Copyright (c) 2010, SAP AG * * 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: * Stefan Lay (SAP AG) - initial implementation *******************************************************************************/ package org.eclipse.egit.ui.common; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; import org.eclipse.swtbot.swt.finder.widgets.SWTBotCheckBox; import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; public class ExistingOrNewPage { private static final SWTWorkbenchBot bot = new SWTWorkbenchBot(); public void setInternalMode(boolean internalMode) { SWTBotCheckBox internalModeCheckbox = bot .checkBox(UIText.ExistingOrNewPage_InternalModeCheckbox); if (!internalMode) internalModeCheckbox.deselect(); else internalModeCheckbox.select(); } public SWTBotShell clickCreateRepository() { bot.button(UIText.ExistingOrNewPage_CreateRepositoryButton).click(); return bot.shell(UIText.NewRepositoryWizard_WizardTitle); } @SuppressWarnings("boxing") public void assertEnabling(boolean createRepository, boolean textField, boolean finish) { assertEquals(createRepository, bot.button("Create Repository") .isEnabled()); assertEquals(textField, bot.text().isEnabled()); assertEquals(finish, bot.button("Finish").isEnabled()); } public void assertContents(boolean selected, String project, String path, String repository, String newRepoPath) { assertContents( new Row[] { new Row(selected, project, path, repository) }, newRepoPath); } public void assertTableContents(String[][] contents) { assertEquals(contents.length, bot.table().rowCount()); for (int i = 0; i < contents.length; i++) { String[] testStrings = contents[i]; assertEquals(testStrings.length, bot.table().columnCount()); for (int j = 0; j < testStrings.length; j++) { assertEquals(testStrings[j], bot.table().cell(i, j)); } } } public void assertContents(Row[] rows, String newRepoPath) { assertContents(rows); assertEquals(newRepoPath, bot.text().getText()); } @SuppressWarnings("boxing") private void assertContents(Row[] rows) { assertEquals(rows.length, bot.tree().rowCount()); for (int i = 0; i < rows.length; i++) { assertEquals(rows[i].isSelected(), bot.tree().getAllItems()[i].isChecked()); assertEquals(rows[i].getProject(), bot.tree().cell(i, 0)); assertEquals(rows[i].getPath(), bot.tree().cell(i, 1)); assertEquals(rows[i].getRepository(), bot.tree().cell(i, 2)); SWTBotTreeItem subteeItems = bot.tree().getAllItems()[i]; Row[] subrows = rows[i].getSubrows(); if (subrows != null) { assertEquals("Row " + i + " is a tree:", subrows.length, subteeItems.getItems().length); assertNotNull("Rows " + i + " is not a tree", subteeItems.getItems()); for (int j = 0; j < subrows.length; ++j) { Row r = subrows[j]; assertEquals(r.isSelected(), subteeItems.getItems()[j].isChecked()); assertEquals(r.getProject(), subteeItems.cell(j, 0)); assertEquals(r.getPath(), subteeItems.cell(j, 1)); assertEquals(r.getRepository(), subteeItems.cell(j, 2)); } } else assertEquals("Row " + i + " is a tree:", 0, subteeItems.getItems().length); } } public static class Row { private final boolean selected; private String project; private String path; private String repository; private final Row[] subrows; public Row(boolean selected, String project, String path, String repository) { this(selected, project, path, repository, null); } public Row(boolean selected, String project, String path, String repository, Row[] subrows) { this.selected = selected; this.project = project; this.path = path; this.repository = repository; if (subrows != null) { this.subrows = new Row[subrows.length]; System.arraycopy(subrows, 0, this.subrows, 0, subrows.length); } else this.subrows = null; } String getProject() { return project; } String getPath() { return path; } String getRepository() { return repository; } Row[] getSubrows() { return subrows; } boolean isSelected() { return selected; } } public void setRelativePath(String path) { bot.textWithLabel(UIText.ExistingOrNewPage_RelativePathLabel).setText( path); } }