diff options
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); |