Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-07-18 16:20:08 +0000
committerEike Stepper2015-07-18 16:20:08 +0000
commitff5870ad00d84b68cc99110c41f5aaf0a7621c72 (patch)
tree6d0c34198614829db521f1f188799834be856d49 /plugins/org.eclipse.emf.cdo.explorer.ui
parent3469e7b87e0db45ceeef02d6d0c6310912989dda (diff)
downloadcdo-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')
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/icons/duplicate.gifbin0 -> 350 bytes
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml18
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutLabelPage.java28
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizard.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/CheckoutDuplicateHandler.java36
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java16
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/wizards/AbstractRepositoryPage.java28
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
new file mode 100644
index 0000000000..e7dc14e593
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/icons/duplicate.gif
Binary files differ
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");
- }
}

Back to the top