Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2004-06-08 15:32:02 +0000
committerMichael Valenta2004-06-08 15:32:02 +0000
commit606f1d8c80cfc07eadb37b587d234b4ae9bc641c (patch)
tree8c623786ddec656e2dfe270951207749116c7eb1
parent628266a7f1a2e58a167f8bddcde2b80982c3244a (diff)
downloadeclipse.platform.team-606f1d8c80cfc07eadb37b587d234b4ae9bc641c.tar.gz
eclipse.platform.team-606f1d8c80cfc07eadb37b587d234b4ae9bc641c.tar.xz
eclipse.platform.team-606f1d8c80cfc07eadb37b587d234b4ae9bc641c.zip
Checkout wizard now supports multi-select
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java29
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java86
2 files changed, 74 insertions, 41 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java
index 2cd65dd6d..e439686ea 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutWizard.java
@@ -69,6 +69,7 @@ public class CheckoutWizard extends Wizard implements ICVSWizard, INewWizard {
modulePage = new ModuleSelectionPage("moduleSelection", Policy.bind("CheckoutWizard.10"), substImage); //$NON-NLS-1$ //$NON-NLS-2$
modulePage.setDescription(Policy.bind("CheckoutWizard.11")); //$NON-NLS-1$
modulePage.setHelpContxtId(IHelpContextIds.CHECKOUT_MODULE_SELECTION_PAGE);
+ modulePage.setSupportsMultiSelection(true);
addPage(modulePage);
// Dummy page to allow lazy creation of CheckoutAsWizard
@@ -85,7 +86,7 @@ public class CheckoutWizard extends Wizard implements ICVSWizard, INewWizard {
* @see org.eclipse.jface.wizard.Wizard#canFinish()
*/
public boolean canFinish() {
- return (wizard == null && getSelectedModule() != null) ||
+ return (wizard == null && getSelectedModules().length > 0) ||
(wizard != null && wizard.canFinish());
}
@@ -102,7 +103,7 @@ public class CheckoutWizard extends Wizard implements ICVSWizard, INewWizard {
return true;
} else {
try {
- new CheckoutMultipleProjectsOperation(getPart(), new ICVSRemoteFolder[] { getSelectedModule() }, null)
+ new CheckoutMultipleProjectsOperation(getPart(), getSelectedModules(), null)
.run();
if (isNewLocation) {
KnownRepositories.getInstance().addRepository(location, true /* broadcast */);
@@ -174,15 +175,23 @@ public class CheckoutWizard extends Wizard implements ICVSWizard, INewWizard {
return modulePage;
}
if (page == modulePage) {
- ICVSRemoteFolder selectedModule = getSelectedModule();
- if (selectedModule != null && selectedModule.isDefinedModule()) {
- // No further configuration is possible for defined modules
- return null;
+ ICVSRemoteFolder[] selectedModules = getSelectedModules();
+ if (selectedModules.length == 0) return null;
+ for (int i = 0; i < selectedModules.length; i++) {
+ ICVSRemoteFolder folder = selectedModules[i];
+ if (folder.isDefinedModule()) {
+ // No further configuration is possible for defined modules
+ return null;
+ }
}
if (aboutToShow) {
try {
- boolean hasMetafile = hasProjectMetafile(selectedModule);
- wizard = new CheckoutAsWizard(getPart(), new ICVSRemoteFolder[] { selectedModule }, ! hasMetafile /* allow configuration */);
+ boolean hasMetafile = true;
+ if (selectedModules.length == 1) {
+ // Only allow configuration if one module is selected
+ hasMetafile = hasProjectMetafile(selectedModules[0]);
+ }
+ wizard = new CheckoutAsWizard(getPart(), selectedModules, ! hasMetafile /* allow configuration */);
wizard.addPages();
return wizard.getStartingPage();
} catch (InvocationTargetException e) {
@@ -218,9 +227,9 @@ public class CheckoutWizard extends Wizard implements ICVSWizard, INewWizard {
return result[0];
}
- private ICVSRemoteFolder getSelectedModule() {
+ private ICVSRemoteFolder[] getSelectedModules() {
if (modulePage == null) return null;
- return modulePage.getSelectedModule();
+ return modulePage.getSelectedModules();
}
/**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
index a150da249..1da872963 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
@@ -12,6 +12,8 @@ package org.eclipse.team.internal.ccvs.ui.wizards;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Iterator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -47,6 +49,7 @@ public class ModuleSelectionPage extends CVSWizardPage {
private ICVSRepositoryLocation location;
private boolean badLocation = false;
private String helpContextId;
+ private boolean supportsMultiSelection;
public ModuleSelectionPage(String pageName, String title, ImageDescriptor titleImage) {
super(pageName, title, titleImage);
@@ -153,26 +156,42 @@ public class ModuleSelectionPage extends CVSWizardPage {
}
setModuleListInput();
}
- ICVSRemoteFolder folder = internalGetSelectedModule();
- setPageComplete(folder != null);
+ setPageComplete(internalGetSelectedModules().length > 0);
}
}
- private ICVSRemoteFolder internalGetSelectedModule() {
+ private ICVSRemoteFolder[] internalGetSelectedModules() {
if (moduleList != null && moduleList.getControl().isEnabled()) {
ISelection selection = moduleList.getSelection();
- if (selection instanceof IStructuredSelection) {
+ if (!selection.isEmpty() && selection instanceof IStructuredSelection) {
IStructuredSelection ss = (IStructuredSelection)selection;
- Object firstElement = ss.getFirstElement();
- if (firstElement instanceof ICVSRemoteFolder) {
- return (ICVSRemoteFolder)firstElement;
+ ArrayList result = new ArrayList();
+ for (Iterator iter = ss.iterator(); iter.hasNext();) {
+ Object element = iter.next();
+ if (element instanceof ICVSRemoteFolder) {
+ result.add(element);
+ }
+
}
+ return (ICVSRemoteFolder[]) result.toArray(new ICVSRemoteFolder[result.size()]);
}
- }
- return null;
+ } else {
+ ICVSRemoteFolder folder = null;
+ if (moduleName != null) {
+ folder = internalCreateModuleHandle(moduleName);
+ } else {
+ if (project != null) {
+ folder = internalCreateModuleHandle(project.getName());
+ }
+ }
+ if (folder != null) {
+ return new ICVSRemoteFolder[] { folder };
+ }
+ }
+ return new ICVSRemoteFolder[0];
}
- private ICVSRemoteFolder internalCreateModule(String name) {
+ private ICVSRemoteFolder internalCreateModuleHandle(String name) {
ICVSRepositoryLocation location = getLocation();
if (location == null) return null;
return location.getRemoteFolder(name, CVSTag.DEFAULT);
@@ -185,30 +204,26 @@ public class ModuleSelectionPage extends CVSWizardPage {
* @return the selected exisiting remote module
*/
public ICVSRemoteFolder getSelectedModule() {
- final ICVSRemoteFolder[] folder = new ICVSRemoteFolder[] { null };
+ ICVSRemoteFolder[] selectedModules = getSelectedModules();
+ if (selectedModules.length > 0) {
+ return selectedModules[0];
+ } else {
+ return null;
+ }
+ }
+
+ public ICVSRemoteFolder[] getSelectedModules() {
+ final ICVSRemoteFolder[][] folder = new ICVSRemoteFolder[][] { null };
Display.getDefault().syncExec(new Runnable() {
public void run() {
- folder[0] = internalGetSelectedModule();
- if (folder[0] == null) {
- if (moduleName != null) {
- folder[0] = internalCreateModule(moduleName);
- } else {
- if (project != null) {
- folder[0] = internalCreateModule(project.getName());
- }
- }
- }
+ folder[0] = internalGetSelectedModules();
}
});
return folder[0];
}
- public boolean isSelectedModuleExists() {
- return internalGetSelectedModule() != null;
- }
-
private TreeViewer createModuleTree(Composite composite, int horizontalSpan) {
- Tree tree = new Tree(composite, SWT.SINGLE | SWT.BORDER);
+ Tree tree = new Tree(composite, (supportsMultiSelection ? SWT.MULTI : SWT.SINGLE) | SWT.BORDER);
GridData data = new GridData(GridData.FILL_BOTH);
data.horizontalSpan = horizontalSpan;
tree.setLayoutData(data);
@@ -235,11 +250,17 @@ public class ModuleSelectionPage extends CVSWizardPage {
result.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
updateEnablements(false);
- ICVSRemoteFolder selectedModule = getSelectedModule();
- if (selectedModule == null) return;
- String repositoryRelativePath = selectedModule.getRepositoryRelativePath();
- if (repositoryRelativePath.equals(FolderSyncInfo.VIRTUAL_DIRECTORY)) return;
- text.setText(repositoryRelativePath);
+ ICVSRemoteFolder[] modules = internalGetSelectedModules();
+ if (modules.length == 1) {
+ // There is at 1 module selected
+ ICVSRemoteFolder selectedModule = modules[0];
+ String repositoryRelativePath = selectedModule.getRepositoryRelativePath();
+ if (!repositoryRelativePath.equals(FolderSyncInfo.VIRTUAL_DIRECTORY)) {
+ text.setText(repositoryRelativePath);
+ }
+ } else {
+ text.setText(""); //$NON-NLS-1$
+ }
}
});
result.getTree().addMouseListener(new MouseAdapter() {
@@ -275,4 +296,7 @@ public class ModuleSelectionPage extends CVSWizardPage {
public void setProject(IProject project) {
this.project = project;
}
+ public void setSupportsMultiSelection(boolean supportsMultiSelection) {
+ this.supportsMultiSelection = supportsMultiSelection;
+ }
}

Back to the top