Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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/CDOCheckoutContentProvider.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutLabelDecorator.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/AbstractBranchPointActionProvider.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/SwitchToActionProvider.java47
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoriesView.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/TimeSlider.java8
8 files changed, 117 insertions, 16 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml
index 923003c6e8..2316e90083 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml
@@ -507,9 +507,12 @@
tooltip="Check the repository out as an online connection">
<visibleWhen checkEnabled="false">
<with variable="activeMenuSelection">
- <iterate>
- <adapt type="org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement"/>
- </iterate>
+ <and>
+ <count value="1"/>
+ <iterate>
+ <adapt type="org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement"/>
+ </iterate>
+ </and>
</with>
</visibleWhen>
</command>
@@ -521,9 +524,12 @@
tooltip="Check the repository out as an offline connection">
<visibleWhen checkEnabled="false">
<with variable="activeMenuSelection">
- <iterate>
- <adapt type="org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement"/>
- </iterate>
+ <and>
+ <count value="1"/>
+ <iterate>
+ <adapt type="org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement"/>
+ </iterate>
+ </and>
</with>
</visibleWhen>
</command>
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java
index 3370c00b20..7c282cddf0 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java
@@ -465,10 +465,11 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
}
CDOCheckout openingCheckout = null;
+ CDOCheckout checkout = null;
if (object instanceof CDOCheckout)
{
- CDOCheckout checkout = (CDOCheckout)object;
+ checkout = (CDOCheckout)object;
if (!checkout.isOpen())
{
openingCheckout = openingCheckouts.remove(checkout);
@@ -486,6 +487,7 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
final Object finalObject = object;
final CDOCheckout finalOpeningCheckout = openingCheckout;
+ final CDOCheckout finalCheckout = checkout;
final ITreeContentProvider contentProvider = stateManager.getContentProvider(finalObject);
if (contentProvider == null)
{
@@ -533,7 +535,13 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
loadedRevisions.addAll(revisions);
}
- Object[] children = contentProvider.getChildren(finalObject);
+ Object[] children;
+ CDOCheckout checkout = finalCheckout != null ? finalCheckout : CDOExplorerUtil.getCheckout(finalObject);
+ synchronized (checkout.getView())
+ {
+ children = contentProvider.getChildren(finalObject);
+ }
+
children = CDOCheckoutContentModifier.Registry.INSTANCE.modifyChildren(finalObject, children);
childrenCache.put(originalObject, children);
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java
index 44c49eb4c3..a7798c89fc 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java
@@ -200,7 +200,10 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant
CDOSession session = CDOUtil.getSession(branchPoint);
if (session == checkout.getView().getSession())
{
- return branchPoint;
+ if (checkout.isReadOnly() || branchPoint.getTimeStamp() == CDOBranchPoint.UNSPECIFIED_DATE)
+ {
+ return branchPoint;
+ }
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutLabelDecorator.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutLabelDecorator.java
index f87e1c3dcc..7158b53509 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutLabelDecorator.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutLabelDecorator.java
@@ -118,6 +118,10 @@ public class CDOCheckoutLabelDecorator extends BaseLabelDecorator
{
text += " " + CDOCommonUtil.formatTimeStamp(timeStamp);
}
+ else if (checkout.isReadOnly())
+ {
+ text += " read-only";
+ }
if (checkout.isOffline())
{
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/AbstractBranchPointActionProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/AbstractBranchPointActionProvider.java
index 1ef75145f8..43a63e6693 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/AbstractBranchPointActionProvider.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/AbstractBranchPointActionProvider.java
@@ -77,16 +77,16 @@ public abstract class AbstractBranchPointActionProvider extends AbstractActionPr
{
if (!ObjectUtil.equals(branchPoint, checkoutBranchPoint))
{
- subMenu.add(new HistorizedBranchPointAction(page, checkout, branchPoint));
+ fillHistorizedAction(page, subMenu, checkout, branchPoint);
}
}
subMenu.add(new Separator("other"));
- subMenu.add(new OtherBranchPointAction(page, checkout, false));
- subMenu.add(new OtherBranchPointAction(page, checkout, true));
+ fillOtherBranchAction(page, subMenu, checkout);
+ fillOtherBranchPointAction(page, subMenu, checkout);
subMenu.add(new Separator("commit"));
- subMenu.add(new CommitBranchPointAction(page, checkout));
+ fillCommitAction(page, subMenu, checkout);
subMenu.add(new Separator("checkout"));
for (CDOCheckout otherCheckout : CDOExplorerUtil.getCheckoutManager().getCheckouts())
@@ -107,11 +107,38 @@ public abstract class AbstractBranchPointActionProvider extends AbstractActionPr
continue;
}
- subMenu.add(new OtherCheckoutAction(page, checkout, otherCheckout));
+ fillOtherCheckoutAction(page, subMenu, checkout, otherCheckout);
}
}
}
+ protected void fillHistorizedAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout,
+ CDOBranchPoint branchPoint)
+ {
+ subMenu.add(new HistorizedBranchPointAction(page, checkout, branchPoint));
+ }
+
+ protected void fillOtherBranchAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout)
+ {
+ subMenu.add(new OtherBranchPointAction(page, checkout, false));
+ }
+
+ protected void fillOtherBranchPointAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout)
+ {
+ subMenu.add(new OtherBranchPointAction(page, checkout, true));
+ }
+
+ protected void fillCommitAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout)
+ {
+ subMenu.add(new CommitBranchPointAction(page, checkout));
+ }
+
+ protected void fillOtherCheckoutAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout,
+ CDOCheckout otherCheckout)
+ {
+ subMenu.add(new OtherCheckoutAction(page, checkout, otherCheckout));
+ }
+
protected abstract String getHistorizedBranchPointToolTip(boolean allowTimeStamp);
protected abstract String getOtherBranchPointToolTip(boolean allowTimeStamp);
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/SwitchToActionProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/SwitchToActionProvider.java
index 4f69e5ffa9..c2a1737e31 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/SwitchToActionProvider.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/actions/SwitchToActionProvider.java
@@ -44,6 +44,53 @@ public class SwitchToActionProvider extends AbstractBranchPointActionProvider
}
@Override
+ protected void fillHistorizedAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout,
+ CDOBranchPoint branchPoint)
+ {
+ if (checkout.isReadOnly() || branchPoint.getTimeStamp() == CDOBranchPoint.UNSPECIFIED_DATE)
+ {
+ super.fillHistorizedAction(page, subMenu, checkout, branchPoint);
+ }
+ }
+
+ @Override
+ protected void fillOtherBranchAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout)
+ {
+ if (!checkout.isReadOnly())
+ {
+ super.fillOtherBranchAction(page, subMenu, checkout);
+ }
+ }
+
+ @Override
+ protected void fillOtherBranchPointAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout)
+ {
+ if (checkout.isReadOnly())
+ {
+ super.fillOtherBranchPointAction(page, subMenu, checkout);
+ }
+ }
+
+ @Override
+ protected void fillCommitAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout)
+ {
+ if (checkout.isReadOnly())
+ {
+ super.fillCommitAction(page, subMenu, checkout);
+ }
+ }
+
+ @Override
+ protected void fillOtherCheckoutAction(IWorkbenchPage page, IMenuManager subMenu, CDOCheckout checkout,
+ CDOCheckout otherCheckout)
+ {
+ if (checkout.isReadOnly() == otherCheckout.isReadOnly())
+ {
+ super.fillOtherCheckoutAction(page, subMenu, checkout, otherCheckout);
+ }
+ }
+
+ @Override
protected String getHistorizedBranchPointToolTip(boolean allowTimeStamp)
{
return allowTimeStamp ? "Switch to this branch point" : "Switch to this branch";
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoriesView.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoriesView.java
index 89c1bcc71c..03b6f3bcac 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoriesView.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoriesView.java
@@ -217,7 +217,7 @@ public class CDORepositoriesView extends ContainerView
manager.add(new Separator("group.properties"));
IWorkbenchPage page = getSite().getPage();
- Object selectedElement = selection.getFirstElement();
+ Object selectedElement = selection.size() == 1 ? selection.getFirstElement() : null;
IMenuManager subMenu = new MenuManager(ShowInActionProvider.TITLE, ICommonMenuConstants.GROUP_OPEN_WITH);
subMenu.add(new GroupMarker(ICommonMenuConstants.GROUP_TOP));
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/TimeSlider.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/TimeSlider.java
index eae38c27af..203b2fc926 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/TimeSlider.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/TimeSlider.java
@@ -128,6 +128,12 @@ public class TimeSlider extends Scale implements IListener, ITreeViewerListener
if (this.timeStamp != timeStamp)
{
this.timeStamp = timeStamp;
+ int newSelection = (int)((timeStamp - startTimeStamp) / stepSize);
+ if (getSelection() != newSelection)
+ {
+ setSelection(newSelection);
+ }
+
timeStampChanged(timeStamp);
}
}
@@ -164,7 +170,7 @@ public class TimeSlider extends Scale implements IListener, ITreeViewerListener
absoluteTimeWindowLength = endTimeStamp - startTimeStamp;
stepSize = absoluteTimeWindowLength / FACTOR;
- setTimeStamp(endTimeStamp);
+ setTimeStamp(view.getTimeStamp());
staleReferencePolicy = new CDOStaleReferencePolicy.DynamicProxy.Enhanced(view);
view.addListener(this);

Back to the top