diff options
12 files changed, 99 insertions, 20 deletions
diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitActionTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitActionTest.java index 9841403997..7ff323e2b7 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitActionTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitActionTest.java @@ -35,6 +35,7 @@ import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -48,6 +49,8 @@ public class CommitActionTest extends LocalRepositoryTestCase { @Before public void setup() throws Exception { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, false); repositoryFile = createProjectAndCommitToRepository(); Repository repo = lookupRepository(repositoryFile); TestUtil.configureTestCommitterAsUser(repo); @@ -59,6 +62,12 @@ public class CommitActionTest extends LocalRepositoryTestCase { assertTrue(dotProject.delete()); } + @After + public void tearDown() { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, true); + } + @Test public void testOpenCommitWithoutChanged() throws Exception { NoFilesToCommitPopup popup = CommitDialogTester diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitNonWSChangesTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitNonWSChangesTest.java index 8f79fda5ec..91e13cae07 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitNonWSChangesTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/test/team/actions/CommitNonWSChangesTest.java @@ -17,6 +17,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.JobFamilies; +import org.eclipse.egit.ui.UIPreferences; import org.eclipse.egit.ui.common.LocalRepositoryTestCase; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.internal.repository.RepositoriesView; @@ -29,6 +30,7 @@ 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; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,6 +46,8 @@ public class CommitNonWSChangesTest extends LocalRepositoryTestCase { @Before public void setup() throws Exception { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, false); repositoryFile = createProjectAndCommitToRepository(); Activator.getDefault().getRepositoryUtil() .addConfiguredRepository(repositoryFile); @@ -51,6 +55,12 @@ public class CommitNonWSChangesTest extends LocalRepositoryTestCase { .getRepositoryCache().lookupRepository(repositoryFile); } + @After + public void tearDown() { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, true); + } + @Test public void testCommitDeletedProject() throws Exception { IProject project = ResourcesPlugin.getWorkspace().getRoot() diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewRepoDeletionTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewRepoDeletionTest.java index 89a9fbf4ca..b9cda2da93 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewRepoDeletionTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewRepoDeletionTest.java @@ -32,6 +32,7 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egit.core.internal.indexdiff.IndexDiffCache; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.JobFamilies; +import org.eclipse.egit.ui.UIPreferences; import org.eclipse.egit.ui.internal.RepositoryCacheRule; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.test.ContextMenuHelper; @@ -144,6 +145,9 @@ public class GitRepositoriesViewRepoDeletionTest extends @Test public void testRemoveRepositoryRemoveFromCachesBug483664() throws Exception { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, false); + deleteAllProjects(); assertProjectExistence(PROJ1, false); clearView(); @@ -264,6 +268,9 @@ public class GitRepositoriesViewRepoDeletionTest extends configuredRepos.isEmpty()); assertEquals("Expected no cached repositories", "[]", results[0]); assertEquals("Expected no IndexDiffCache entries", "[]", results[1]); + + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, true); } @Test diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTest.java index d47ecb4bc5..7196648991 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/repositories/GitRepositoriesViewTest.java @@ -32,6 +32,7 @@ import org.eclipse.egit.core.internal.Utils; import org.eclipse.egit.core.project.RepositoryMapping; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.JobFamilies; +import org.eclipse.egit.ui.UIPreferences; import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.test.ContextMenuHelper; import org.eclipse.egit.ui.test.TestUtil; @@ -190,6 +191,8 @@ public class GitRepositoriesViewTest extends GitRepositoriesViewTestBase { */ @Test public void testContextMenuRepository() throws Exception { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, false); // We just check if the dialogs open, the actual commit and import projects // is tested elsewhere SWTBotTree tree = getOrOpenView().bot().tree(); @@ -202,6 +205,8 @@ public class GitRepositoriesViewTest extends GitRepositoriesViewTestBase { myUtil.getPluginLocalizedValue("RepoViewImportProjects.label"), NLS.bind(UIText.GitCreateProjectViaWizardWizard_WizardTitle, repositoryFile)); + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, true); } /** diff --git a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/synchronize/AbstractSynchronizeViewTest.java b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/synchronize/AbstractSynchronizeViewTest.java index b50a8a479e..83a1f60b0e 100644 --- a/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/synchronize/AbstractSynchronizeViewTest.java +++ b/org.eclipse.egit.ui.test/src/org/eclipse/egit/ui/view/synchronize/AbstractSynchronizeViewTest.java @@ -83,11 +83,15 @@ public abstract class AbstractSynchronizeViewTest extends @Before public void setupViews() { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, false); TestUtil.showExplorerView(); } @After public void closeSynchronizeView() { + Activator.getDefault().getPreferenceStore() + .setValue(UIPreferences.ALWAYS_USE_STAGING_VIEW, true); TestUtil.hideView(ISynchronizeView.VIEW_ID); } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/PluginPreferenceInitializer.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/PluginPreferenceInitializer.java index 6dc1e80ab7..ae8ab39eb1 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/PluginPreferenceInitializer.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/PluginPreferenceInitializer.java @@ -92,6 +92,7 @@ public class PluginPreferenceInitializer extends AbstractPreferenceInitializer { store.setDefault(UIPreferences.FINDTOOLBAR_IGNORE_CASE, true); store.setDefault(UIPreferences.FINDTOOLBAR_FIND_IN, FindToolbar.PREFS_FINDIN_ALL); + store.setDefault(UIPreferences.ALWAYS_USE_STAGING_VIEW, true); store.setDefault(UIPreferences.COMMIT_DIALOG_HARD_WRAP_MESSAGE, true); store.setDefault(UIPreferences.COMMIT_DIALOG_WARN_ABOUT_MESSAGE_SECOND_LINE, true); store.setDefault(UIPreferences.COMMIT_DIALOG_SIGNED_OFF_BY, false); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIPreferences.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIPreferences.java index 9ea9fa7fc4..6486701c40 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIPreferences.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIPreferences.java @@ -67,6 +67,8 @@ public class UIPreferences { /** */ public final static String COMMIT_DIALOG_HARD_WRAP_MESSAGE = "commit_dialog_hard_wrap_message"; //$NON-NLS-1$ /** */ + public final static String ALWAYS_USE_STAGING_VIEW = "always_use_staging_view"; //$NON-NLS-1$ + /** */ public final static String COMMIT_DIALOG_WARN_ABOUT_MESSAGE_SECOND_LINE = "commit_dialog_warn_about_message_second_line"; //$NON-NLS-1$ /** */ public final static String COMMIT_DIALOG_SIGNED_OFF_BY = "commit_dialog_signed_off_by"; //$NON-NLS-1$ diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java index 598afec4be..cadf297e01 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java @@ -3207,6 +3207,9 @@ public class UIText extends NLS { public static String CommittingPreferencePage_BlockCommitCombo; /** */ + public static String CommittingPreferencePage_AlwaysUseStagingView; + + /** */ public static String DateFormatPreferencePage_title; /** */ diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/CommitActionHandler.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/CommitActionHandler.java index 56311c134e..729e805188 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/CommitActionHandler.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/CommitActionHandler.java @@ -19,11 +19,16 @@ package org.eclipse.egit.ui.internal.actions; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IResource; +import org.eclipse.egit.ui.Activator; +import org.eclipse.egit.ui.UIPreferences; import org.eclipse.egit.ui.internal.commit.CommitUI; import org.eclipse.egit.ui.internal.operations.GitScopeUtil; +import org.eclipse.egit.ui.internal.staging.StagingView; import org.eclipse.jgit.lib.Repository; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; /** * Scan for modified resources in the same project as the selected resources. @@ -32,27 +37,48 @@ public class CommitActionHandler extends RepositoryActionHandler { @Override public Object execute(final ExecutionEvent event) throws ExecutionException { - final Repository repo = getRepository(true, event); - if (repo == null) - return null; - final Shell shell = getShell(event); - IResource[] resourcesInScope; - try { - IResource[] selectedResources = getSelectedResources(event); - if (selectedResources.length > 0) { - IWorkbenchPart part = getPart(event); - resourcesInScope = GitScopeUtil.getRelatedChanges(part, - selectedResources); - } else - resourcesInScope = new IResource[0]; - } catch (InterruptedException e) { - // ignore, we will not show the commit dialog in case the user - // cancels the scope operation + + final Repository repository = getRepository(true, event); + if (repository == null) { return null; } - CommitUI commitUi = new CommitUI(shell, repo, resourcesInScope, - false); - commitUi.commit(); + boolean useStagingView = Activator.getDefault().getPreferenceStore() + .getBoolean(UIPreferences.ALWAYS_USE_STAGING_VIEW); + if (useStagingView) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + + @Override + public void run() { + try { + StagingView view = (StagingView) PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getActivePage() + .showView(StagingView.VIEW_ID); + view.setFocus(); + } catch (PartInitException e) { + Activator.logError(e.getMessage(), e); + } + } + }); + } else { + final Shell shell = getShell(event); + IResource[] resourcesInScope; + try { + IResource[] selectedResources = getSelectedResources(event); + if (selectedResources.length > 0) { + IWorkbenchPart part = getPart(event); + resourcesInScope = GitScopeUtil.getRelatedChanges(part, + selectedResources); + } else + resourcesInScope = new IResource[0]; + } catch (InterruptedException e) { + // ignore, we will not show the commit dialog in case the user + // cancels the scope operation + return null; + } + CommitUI commitUi = new CommitUI(shell, repository, + resourcesInScope, false); + commitUi.commit(); + } return null; } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/CommittingPreferencePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/CommittingPreferencePage.java index f86601bccd..28d8e49e56 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/CommittingPreferencePage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/CommittingPreferencePage.java @@ -64,6 +64,11 @@ public class CommittingPreferencePage extends FieldEditorPreferencePage protected void createFieldEditors() { Composite main = getFieldEditorParent(); + BooleanFieldEditor useStagingView = new BooleanFieldEditor( + UIPreferences.ALWAYS_USE_STAGING_VIEW, + UIText.CommittingPreferencePage_AlwaysUseStagingView, main); + addField(useStagingView); + Group formattingGroup = new Group(main, SWT.SHADOW_ETCHED_IN); formattingGroup.setText(UIText.CommittingPreferencePage_formatting); GridDataFactory.fillDefaults().grab(true, false).span(3, 1) diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java index 6502c1ab8d..0fbb21b44e 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/staging/StagingView.java @@ -3302,7 +3302,13 @@ public class StagingView extends ViewPart implements IShowInSource { @Override public void setFocus() { - unstagedViewer.getControl().setFocus(); + Tree tree = unstagedViewer.getTree(); + if (tree.getItemCount() > 0) { + tree.setSelection(tree.getItems()); + unstagedViewer.getControl().setFocus(); + return; + } + commitMessageText.setFocus(); } @Override diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties index 6ecd6b5b19..bc1cff5d08 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties @@ -1032,6 +1032,7 @@ CommittingPreferencePage_WarnBlock_Errors=Errors CommittingPreferencePage_WarnBlock_WarningsAndErrors=Warnings and errors CommittingPreferencePage_BlockCommit=Block commit button CommittingPreferencePage_BlockCommitCombo=Block if there are: +CommittingPreferencePage_AlwaysUseStagingView=Use Staging View to commit instead of Commit Dialog DateFormatPreferencePage_title=Date Format DateFormatPreferencePage_formatChooser_label=&Format: |