Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn2014-02-06 13:55:09 +0000
committerRobin Stocker2014-02-16 17:21:29 +0000
commit93486139fada417d9028ccf8fb1d00104fcf60ab (patch)
tree597be5a502320c2f97664b2d08cfbb792f7770e5 /org.eclipse.egit.ui
parentc16854ae2cc10336b4b7f99ad0ff7d88b8ab54a6 (diff)
downloadegit-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')
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/UIText.java3
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanRepositoryPage.java21
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clean/CleanWizard.java4
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/uitext.properties1
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.

Back to the top