diff options
author | Matthias Sohn | 2014-02-06 13:55:09 +0000 |
---|---|---|
committer | Robin Stocker | 2014-02-16 17:21:29 +0000 |
commit | 93486139fada417d9028ccf8fb1d00104fcf60ab (patch) | |
tree | 597be5a502320c2f97664b2d08cfbb792f7770e5 /org.eclipse.egit.ui | |
parent | c16854ae2cc10336b4b7f99ad0ff7d88b8ab54a6 (diff) | |
download | egit-93486139fada417d9028ccf8fb1d00104fcf60ab.tar.gz egit-93486139fada417d9028ccf8fb1d00104fcf60ab.tar.xz egit-93486139fada417d9028ccf8fb1d00104fcf60ab.zip |
Disable cleaning if selection is empty
The current implementation runs the git clean command even if no file or
directory is selected in the clean wizard. That may take quite some time
and may lead to cleaning the repository although the user expected
nothing to be cleaned.
Change-Id: If59bd58b0204a069d9cf77b5ffa05d4d566cf802
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Signed-off-by: Robin Stocker <robin@nibor.org>
Diffstat (limited to 'org.eclipse.egit.ui')
4 files changed, 29 insertions, 0 deletions
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 1f566b7ef6..26b9e95925 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 @@ -1057,6 +1057,9 @@ public class UIText extends NLS { public static String CleanRepositoryPage_message; /** */ + public static String CleanRepositoryPage_SelectFilesToClean; + + /** */ public static String CleanRepositoryPage_title; /** */ diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanRepositoryPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanRepositoryPage.java index b64102cf9a..11ed5e0739 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanRepositoryPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanRepositoryPage.java @@ -23,7 +23,9 @@ import org.eclipse.egit.ui.internal.UIText; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTableViewer; +import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.jgit.api.CleanCommand; @@ -107,6 +109,13 @@ public class CleanRepositoryPage extends WizardPage { return fileImage; } }); + setPageComplete(false); + cleanTable.addCheckStateListener(new ICheckStateListener() { + + public void checkStateChanged(CheckStateChangedEvent event) { + updatePageComplete(); + } + }); GridDataFactory.fillDefaults().grab(true, true).applyTo(cleanTable.getControl()); @@ -139,6 +148,7 @@ public class CleanRepositoryPage extends WizardPage { if (cleanTable.getInput() instanceof Set<?>) { Set<?> input = (Set<?>) cleanTable.getInput(); cleanTable.setCheckedElements(input.toArray()); + updatePageComplete(); } } }); @@ -147,12 +157,22 @@ public class CleanRepositoryPage extends WizardPage { @Override public void widgetSelected(SelectionEvent e) { cleanTable.setCheckedElements(new Object[0]); + updatePageComplete(); } }); setControl(main); } + private void updatePageComplete() { + boolean hasCheckedElements = cleanTable.getCheckedElements().length != 0; + setPageComplete(hasCheckedElements); + if (hasCheckedElements) + setMessage(null, NONE); + else + setMessage(UIText.CleanRepositoryPage_SelectFilesToClean, INFORMATION); + } + @Override public void setVisible(boolean visible) { super.setVisible(visible); @@ -191,6 +211,7 @@ public class CleanRepositoryPage extends WizardPage { monitor.done(); } }); + updatePageComplete(); } catch (InvocationTargetException e) { Activator.logError("Unexpected exception while finding items to clean", e); //$NON-NLS-1$ clearPage(); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanWizard.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanWizard.java index 5971275efd..cdf88f39a0 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanWizard.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanWizard.java @@ -51,4 +51,8 @@ public class CleanWizard extends Wizard { return true; } + @Override + public boolean canFinish() { + return cleanPage.isPageComplete(); + } } 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 c05bcc0dbe..d438de9a5c 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 @@ -247,6 +247,7 @@ CleanRepositoryPage_cleaningItems=Cleaning selected items... CleanRepositoryPage_findingItems=Finding items to clean... CleanRepositoryPage_includeIgnored=Include ignored resources CleanRepositoryPage_message=Select items to clean +CleanRepositoryPage_SelectFilesToClean=Select files to be deleted CleanRepositoryPage_title=Clean Repository CleanWizard_title=Clean ''{0}'' ClearCredentialsCommand_clearingCredentialsFailed=Clearing credentials failed. |