/******************************************************************************* * Copyright (C) 2011, 2013 Jens Baumgart <jens.baumgart@sap.com> and others. * * 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 *******************************************************************************/ package org.eclipse.egit.ui.common; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egit.ui.JobFamilies; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.test.ContextMenuHelper; import org.eclipse.egit.ui.test.SWTBotTreeColumn; import org.eclipse.egit.ui.test.TestUtil; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.widgets.Tree; import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarToggleButton; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; public class CommitDialogTester { public static class NoFilesToCommitPopup { SWTBotShell shell; public NoFilesToCommitPopup(SWTBotShell shell) { this.shell = shell; } public CommitDialogTester confirmPopup() { shell.bot().button(IDialogConstants.YES_LABEL).click(); SWTWorkbenchBot workbenchBot = new SWTWorkbenchBot(); SWTBotShell commitDialogShell = workbenchBot .shell(UIText.CommitDialog_CommitChanges); return new CommitDialogTester(commitDialogShell); } public void cancelPopup() { shell.close(); } } private static final TestUtil util = new TestUtil(); private SWTBotShell commitDialog; public CommitDialogTester(SWTBotShell dialogShell) { commitDialog = dialogShell; } public static CommitDialogTester openCommitDialog(String projectName) { clickCommitAction(projectName); SWTWorkbenchBot workbenchBot = new SWTWorkbenchBot(); SWTBotShell shell = workbenchBot .shell(UIText.CommitDialog_CommitChanges); return new CommitDialogTester(shell); } public static NoFilesToCommitPopup openCommitDialogExpectNoFilesToCommit( String projectName) throws Exception { clickCommitAction(projectName); SWTWorkbenchBot workbenchBot = new SWTWorkbenchBot(); return new NoFilesToCommitPopup( workbenchBot.shell(UIText.CommitAction_noFilesToCommit)); } private static void clickCommitAction(String projectName) { SWTBotTree projectExplorerTree = TestUtil.getExplorerTree(); util.getProjectItems(projectExplorerTree, projectName)[0].select(); String menuString = util.getPluginLocalizedValue("CommitAction_label"); ContextMenuHelper.clickContextMenu(projectExplorerTree, "Team", menuString); } public void setAuthor(String author) { commitDialog.bot().textWithLabel(UIText.CommitDialog_Author) .setText(author); } public void setCommitter(String committer) { commitDialog.bot().textWithLabel(UIText.CommitDialog_Committer) .setText(committer); } public void setCommitMessage(String message) { commitDialog.bot() .styledTextWithLabel(UIText.CommitDialog_CommitMessage) .setText(message); } public void commit() throws Exception { commitDialog.bot().button(UIText.CommitDialog_Commit).click(); // wait until commit is completed Job.getJobManager().join(JobFamilies.COMMIT, null); } public void cancel() { commitDialog.bot().button(IDialogConstants.CANCEL_LABEL).click(); } public void setAmend(boolean amend) { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip( UIText.CommitDialog_AmendPreviousCommit); selectToolbarToggle(button, amend); } public boolean getAmend() { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip( UIText.CommitDialog_AmendPreviousCommit); return button.isChecked(); } public void setInsertChangeId(boolean insertChangeId) { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip( UIText.CommitDialog_AddChangeIdLabel); selectToolbarToggle(button, insertChangeId); } public boolean getInsertChangeId() { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip( UIText.CommitDialog_AddChangeIdLabel); return button.isChecked(); } public void setSignedOff(boolean signedOff) { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip(UIText.CommitDialog_AddSOB); selectToolbarToggle(button, signedOff); } public boolean getSignedOff() { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip(UIText.CommitDialog_AddSOB); return button.isChecked(); } private void selectToolbarToggle(SWTBotToolbarToggleButton button, boolean select) { if (select) { if (!button.isChecked()) button.select(); } else if (button.isChecked()) button.deselect(); } public int getRowCount() { return commitDialog.bot().tree().rowCount(); } public String getEntryText(int rowIndex) { SWTBotTreeItem treeItem = commitDialog.bot().tree().getAllItems()[rowIndex]; return treeItem.cell(1); } public String getCommitMessage() { return commitDialog.bot() .styledTextWithLabel(UIText.CommitDialog_CommitMessage) .getText(); } public boolean isEntryChecked(int rowIndex) { SWTBotTreeItem treeItem = commitDialog.bot().tree().getAllItems()[rowIndex]; return treeItem.isChecked(); } public void setShowUntracked(boolean untracked) { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip( UIText.CommitDialog_ShowUntrackedFiles); selectToolbarToggle(button, untracked); } public boolean getShowUntracked() { SWTBotToolbarToggleButton button = commitDialog.bot() .toolbarToggleButtonWithTooltip( UIText.CommitDialog_ShowUntrackedFiles); return button.isChecked(); } public void sortByName() { final Tree tree = commitDialog.bot().tree().widget; SWTBotTreeColumn column = SWTBotTreeColumn.getColumn(tree, 1); column.click(); } }