diff options
author | Eike Stepper | 2015-07-18 16:20:08 +0000 |
---|---|---|
committer | Eike Stepper | 2015-07-18 16:20:08 +0000 |
commit | ff5870ad00d84b68cc99110c41f5aaf0a7621c72 (patch) | |
tree | 6d0c34198614829db521f1f188799834be856d49 /plugins/org.eclipse.emf.cdo.explorer.ui | |
parent | 3469e7b87e0db45ceeef02d6d0c6310912989dda (diff) | |
download | cdo-ff5870ad00d84b68cc99110c41f5aaf0a7621c72.tar.gz cdo-ff5870ad00d84b68cc99110c41f5aaf0a7621c72.tar.xz cdo-ff5870ad00d84b68cc99110c41f5aaf0a7621c72.zip |
[458349] Consolidate UI - CheckoutDuplicateHandler
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458349
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.explorer.ui')
7 files changed, 66 insertions, 64 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/icons/duplicate.gif b/plugins/org.eclipse.emf.cdo.explorer.ui/icons/duplicate.gif Binary files differnew file mode 100644 index 0000000000..e7dc14e593 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/icons/duplicate.gif diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml index fc795a0ae5..b9c785bc11 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml @@ -441,6 +441,10 @@ name="Close Checkout" defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.CheckoutCloseHandler"/> <command + id="org.eclipse.emf.cdo.explorer.ui.CheckoutDuplicate" + name="Duplicate Checkout" + defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.CheckoutDuplicateHandler"/> + <command id="org.eclipse.emf.cdo.explorer.ui.WorkspaceUpdate" name="Update Workspace" defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.WorkspaceUpdateHandler"/> @@ -677,6 +681,20 @@ </with> </visibleWhen> </command> + <command + commandId="org.eclipse.emf.cdo.explorer.ui.CheckoutDuplicate" + icon="icons/duplicate.gif" + label="Duplicate Checkout" + style="push" + tooltip="Duplicate the checkout"> + <visibleWhen checkEnabled="false"> + <with variable="activeMenuSelection"> + <iterate ifEmpty="false"> + <instanceof value="org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout"/> + </iterate> + </with> + </visibleWhen> + </command> </menuContribution> <menuContribution allPopups="false" diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutLabelPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutLabelPage.java index 66a4947dd2..60533e461a 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutLabelPage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutLabelPage.java @@ -14,8 +14,6 @@ import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.util.CDOCommonUtil; import org.eclipse.emf.cdo.explorer.CDOExplorerUtil; -import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout; -import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckoutManager; import org.eclipse.emf.cdo.explorer.repositories.CDORepository; import org.eclipse.emf.cdo.internal.explorer.AbstractElement; import org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutImpl; @@ -33,9 +31,7 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Layout; import org.eclipse.swt.widgets.Text; -import java.util.HashSet; import java.util.Properties; -import java.util.Set; /** * @author Eike Stepper @@ -172,7 +168,7 @@ public class CheckoutLabelPage extends CheckoutWizardPage if (StringUtil.isEmpty(label)) { String label = StringUtil.capAll(type.replace('-', ' ')) + " Checkout"; - setLabel(getUniqueLabel(label)); + setLabel(CDOExplorerUtil.getCheckoutManager().getUniqueLabel(label)); } labelText.setFocus(); @@ -222,26 +218,4 @@ public class CheckoutLabelPage extends CheckoutWizardPage labelText.setText(""); } } - - public static String getUniqueLabel(String label) - { - Set<String> names = new HashSet<String>(); - - CDOCheckoutManager checkoutManager = CDOExplorerUtil.getCheckoutManager(); - for (CDOCheckout checkout : checkoutManager.getCheckouts()) - { - names.add(checkout.getLabel()); - } - - for (int i = 1; i < Integer.MAX_VALUE; i++) - { - String name = i == 1 ? label : label + " (" + i + ")"; - if (!names.contains(name)) - { - return name; - } - } - - throw new IllegalStateException("Too many checkouts"); - } } diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizard.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizard.java index 966592904c..5542bbecef 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizard.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizard.java @@ -203,7 +203,7 @@ public class CheckoutWizard extends Wizard implements IImportWizard, IPageChange return true; } - public static void showInProjectExplorer(final CDOCheckout checkout) + public static void showInProjectExplorer(final Object... objects) { UIUtil.getDisplay().asyncExec(new Runnable() { @@ -229,7 +229,7 @@ public class CheckoutWizard extends Wizard implements IImportWizard, IPageChange .getInstance(CDOCheckoutContentProvider.PROJECT_EXPLORER_ID); if (checkoutContentProvider != null) { - checkoutContentProvider.selectObjects(checkout); + checkoutContentProvider.selectObjects(objects); } } catch (Exception ex) diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/CheckoutDuplicateHandler.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/CheckoutDuplicateHandler.java new file mode 100644 index 0000000000..87467558ca --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/CheckoutDuplicateHandler.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2015 Eike Stepper (Berlin, Germany) 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 + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.explorer.ui.handlers; + +import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.runtime.IProgressMonitor; + +/** + * @author Eike Stepper + */ +public class CheckoutDuplicateHandler extends AbstractCheckoutHandler +{ + public CheckoutDuplicateHandler() + { + super(null, true); + } + + @Override + protected void doExecute(ExecutionEvent event, IProgressMonitor monitor) throws Exception + { + for (CDOCheckout checkout : elements) + { + checkout.duplicate(); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java index 53c08b917a..bbc5a2429c 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java @@ -14,7 +14,6 @@ import org.eclipse.emf.cdo.explorer.CDOExplorerUtil; import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout; import org.eclipse.emf.cdo.explorer.repositories.CDORepository; import org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement; -import org.eclipse.emf.cdo.explorer.ui.checkouts.wizards.CheckoutLabelPage; import org.eclipse.emf.cdo.explorer.ui.checkouts.wizards.CheckoutWizard; import org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutImpl; @@ -50,13 +49,14 @@ public class RepositoryCheckoutHandlerQuick extends AbstractBaseHandler<CDORepos String label = StringUtil.capAll(type.replace('-', ' ')) + " Checkout"; Properties properties = new Properties(); - properties.setProperty("type", type); - properties.setProperty("label", CheckoutLabelPage.getUniqueLabel(label)); - properties.setProperty("repository", repository.getID()); - properties.setProperty("branchID", Integer.toString(repositoryElement.getBranchID())); - properties.setProperty("timeStamp", Long.toString(repositoryElement.getTimeStamp())); - properties.setProperty("readOnly", readOnly); - properties.setProperty("rootID", CDOCheckoutImpl.getCDOIDString(repositoryElement.getObjectID())); + properties.setProperty(CDOCheckoutImpl.PROP_TYPE, type); + properties.setProperty(CDOCheckoutImpl.PROP_LABEL, CDOExplorerUtil.getCheckoutManager().getUniqueLabel(label)); + properties.setProperty(CDOCheckoutImpl.PROP_REPOSITORY, repository.getID()); + properties.setProperty(CDOCheckoutImpl.PROP_BRANCH_ID, Integer.toString(repositoryElement.getBranchID())); + properties.setProperty(CDOCheckoutImpl.PROP_TIME_STAMP, Long.toString(repositoryElement.getTimeStamp())); + properties.setProperty(CDOCheckoutImpl.PROP_READ_ONLY, readOnly); + properties.setProperty(CDOCheckoutImpl.PROP_ROOT_ID, + CDOCheckoutImpl.getCDOIDString(repositoryElement.getObjectID())); CDOCheckout checkout = CDOExplorerUtil.getCheckoutManager().addCheckout(properties); checkout.open(); diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/wizards/AbstractRepositoryPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/wizards/AbstractRepositoryPage.java index ad6adf6696..57413bf0f9 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/wizards/AbstractRepositoryPage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/wizards/AbstractRepositoryPage.java @@ -11,8 +11,6 @@ package org.eclipse.emf.cdo.explorer.ui.repositories.wizards; import org.eclipse.emf.cdo.explorer.CDOExplorerUtil; -import org.eclipse.emf.cdo.explorer.repositories.CDORepository; -import org.eclipse.emf.cdo.explorer.repositories.CDORepositoryManager; import org.eclipse.emf.cdo.explorer.ui.bundle.OM; import org.eclipse.emf.cdo.explorer.ui.checkouts.wizards.CheckoutWizardPage.ValidationProblem; import org.eclipse.emf.cdo.internal.explorer.AbstractElement; @@ -31,9 +29,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; -import java.util.HashSet; import java.util.Properties; -import java.util.Set; /** * @author Eike Stepper @@ -50,7 +46,7 @@ public abstract class AbstractRepositoryPage extends WizardPage implements Selec { super(pageName); setImageDescriptor(OM.getImageDescriptor("icons/wiz/new_repo.gif")); - this.defaultLabel = getUniqueLabel(defaultLabel); + this.defaultLabel = CDOExplorerUtil.getRepositoryManager().getUniqueLabel(defaultLabel); } @Override @@ -177,26 +173,4 @@ public abstract class AbstractRepositoryPage extends WizardPage implements Selec text.setLayoutData(gridData); return text; } - - public static String getUniqueLabel(String label) - { - Set<String> names = new HashSet<String>(); - - CDORepositoryManager repositoryManager = CDOExplorerUtil.getRepositoryManager(); - for (CDORepository repository : repositoryManager.getRepositories()) - { - names.add(repository.getLabel()); - } - - for (int i = 1; i < Integer.MAX_VALUE; i++) - { - String name = i == 1 ? label : label + " (" + i + ")"; - if (!names.contains(name)) - { - return name; - } - } - - throw new IllegalStateException("Too many repositories"); - } } |