diff options
13 files changed, 401 insertions, 94 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml index a4fc98e8c4..09b2a3871c 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml @@ -434,13 +434,17 @@ name="Disconnect Repository" defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryDisconnectHandler"/> <command + id="org.eclipse.emf.cdo.explorer.ui.RepositoryCheckout" + name="Checkout Repository" + defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandler"/> + <command id="org.eclipse.emf.cdo.explorer.ui.RepositoryCheckoutOnline" name="Checkout Repository Online" - defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandler$Online"/> + defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandlerQuick$Online"/> <command id="org.eclipse.emf.cdo.explorer.ui.RepositoryCheckoutOffline" name="Checkout Repository Offline" - defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandler$Offline"/> + defaultHandler="org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandlerQuick$Offline"/> <command id="org.eclipse.emf.cdo.explorer.ui.CheckoutOpen" name="Open Checkout" @@ -542,6 +546,23 @@ allPopups="false" locationURI="popup:org.eclipse.ui.popup.any?after=group.checkout"> <command + commandId="org.eclipse.emf.cdo.explorer.ui.RepositoryCheckout" + icon="icons/checkout_online.gif" + label="Checkout..." + style="push" + tooltip="Check the repository out into the Project Explorer"> + <visibleWhen checkEnabled="false"> + <with variable="activeMenuSelection"> + <and> + <count value="1"/> + <iterate> + <adapt type="org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement"/> + </iterate> + </and> + </with> + </visibleWhen> + </command> + <command commandId="org.eclipse.emf.cdo.explorer.ui.RepositoryCheckoutOnline" icon="icons/checkout_online.gif" label="Checkout Online" diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/actions/CheckoutCommitInfoActionDelegate.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/actions/CheckoutCommitInfoActionDelegate.java index dd6d7b4a3f..4be6b196cf 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/actions/CheckoutCommitInfoActionDelegate.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/actions/CheckoutCommitInfoActionDelegate.java @@ -14,7 +14,7 @@ import org.eclipse.emf.cdo.common.commit.CDOCommitInfo; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.explorer.repositories.CDORepository; import org.eclipse.emf.cdo.explorer.repositories.CDORepositoryElement; -import org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandler; +import org.eclipse.emf.cdo.explorer.ui.handlers.RepositoryCheckoutHandlerQuick; import org.eclipse.emf.cdo.internal.explorer.repositories.CDORepositoryImpl; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.util.CDOUtil; @@ -76,7 +76,7 @@ public class CheckoutCommitInfoActionDelegate extends LongRunningActionDelegate } }; - RepositoryCheckoutHandler.checkout(repositoryElement, "online"); + RepositoryCheckoutHandlerQuick.checkout(repositoryElement, "online"); } } } diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java index e56401c012..36430b390a 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java @@ -30,6 +30,8 @@ import java.util.Properties; */ public class CheckoutBranchPointPage extends CheckoutWizardPage { + private CDORepository repository; + private CDOBranchPoint branchPoint; private ComposeBranchPointComposite branchPointComposite; @@ -38,7 +40,7 @@ public class CheckoutBranchPointPage extends CheckoutWizardPage public CheckoutBranchPointPage() { - super("New Checkout", "Select the type of the new checkout."); + super("Branch Point", "Select the branch point of the new checkout."); } public final CDOBranchPoint getBranchPoint() @@ -50,7 +52,21 @@ public class CheckoutBranchPointPage extends CheckoutWizardPage { if (this.branchPoint != branchPoint) { + log("Setting branch point to " + branchPoint); this.branchPoint = branchPoint; + + if (branchPointComposite != null) + { + if (branchPoint != null) + { + CDOBranch branch = branchPoint.getBranch(); + + TreeViewer branchViewer = branchPointComposite.getBranchViewer(); + branchViewer.setSelection(new StructuredSelection(branch)); + branchViewer.setExpandedState(branch, true); + } + } + branchPointChanged(branchPoint); } } @@ -81,40 +97,50 @@ public class CheckoutBranchPointPage extends CheckoutWizardPage @Override protected void branchPointChanged(CDOBranchPoint branchPoint) { + CheckoutBranchPointPage.this.setBranchPoint(branchPoint); validate(); } @Override protected void doubleClicked() { - if (isPageComplete()) - { - getContainer().showPage(getNextPage()); - } + showNextPage(); } }; branchPointComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); - CDOBranch branch = branchPoint.getBranch(); - - TreeViewer branchViewer = branchPointComposite.getBranchViewer(); - branchViewer.setSelection(new StructuredSelection(branch)); - branchViewer.setExpandedState(branch, true); } @Override protected void repositoryChanged(CDORepository repository) { + this.repository = repository; + + TreeViewer branchViewer = branchPointComposite.getBranchViewer(); + branchViewer.setSelection(StructuredSelection.EMPTY); + branchViewer.setInput(null); + setBranchPoint(null); + super.repositoryChanged(repository); + } + + @Override + protected void pageActivated() + { + CDOSession session = getWizard().getRepositoryPage().getSession(); + + TreeViewer branchViewer = branchPointComposite.getBranchViewer(); + branchViewer.setInput(session.getBranchManager()); + setBranchPoint(CDOBranch.MAIN_BRANCH_ID, CDOBranchPoint.UNSPECIFIED_DATE); } @Override - protected boolean doValidate() throws Exception + protected boolean doValidate() throws ValidationProblem { if (timeStampError != null) { - throw new Exception(timeStampError); + throw new ValidationProblem(timeStampError); } return true; 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 5a615b8d8b..c5530d14c4 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 @@ -23,7 +23,7 @@ public class CheckoutLabelPage extends CheckoutWizardPage public CheckoutLabelPage() { - super("New Checkout", "Select the type of the new checkout."); + super("Label", "Enter the label of the new checkout."); } public final String getLabel() @@ -42,7 +42,7 @@ public class CheckoutLabelPage extends CheckoutWizardPage } @Override - protected boolean doValidate() throws Exception + protected boolean doValidate() throws ValidationProblem { return true; } diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRepositoryPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRepositoryPage.java index ccf0b60c96..256449b427 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRepositoryPage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRepositoryPage.java @@ -18,6 +18,8 @@ import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.jface.layout.TableColumnLayout; import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; @@ -60,11 +62,9 @@ public class CheckoutRepositoryPage extends CheckoutWizardPage { if (this.repository != repository) { - if (this.repository != null && session != null) - { - this.repository.releaseSession(); - } + releaseSession(); + log("Setting repository to " + repository); this.repository = repository; repositoryChanged(repository); } @@ -74,12 +74,30 @@ public class CheckoutRepositoryPage extends CheckoutWizardPage { if (session == null && repository != null) { + log("Acquiring session from " + repository); session = repository.acquireSession(); } return session; } + private void releaseSession() + { + if (repository != null && session != null) + { + log("Releasing session of " + repository); + repository.releaseSession(); + session = null; + } + } + + @Override + public void dispose() + { + releaseSession(); + super.dispose(); + } + @Override protected void createUI(final Composite parent) { @@ -103,6 +121,14 @@ public class CheckoutRepositoryPage extends CheckoutWizardPage } }); + tableViewer.addDoubleClickListener(new IDoubleClickListener() + { + public void doubleClick(DoubleClickEvent event) + { + showNextPage(); + } + }); + Table table = tableViewer.getTable(); table.setHeaderVisible(true); @@ -112,11 +138,11 @@ public class CheckoutRepositoryPage extends CheckoutWizardPage TableColumn modeColumn = new TableColumn(table, SWT.NONE); modeColumn.setText("Versioning Mode"); - tableLayout.setColumnData(modeColumn, new ColumnWeightData(0, 100, true)); + tableLayout.setColumnData(modeColumn, new ColumnWeightData(0, 120, true)); TableColumn idColumn = new TableColumn(table, SWT.NONE); idColumn.setText("ID Generation"); - tableLayout.setColumnData(idColumn, new ColumnWeightData(0, 90, true)); + tableLayout.setColumnData(idColumn, new ColumnWeightData(0, 100, true)); GridLayout gridLayout = new GridLayout(1, false); gridLayout.marginWidth = 0; @@ -140,7 +166,7 @@ public class CheckoutRepositoryPage extends CheckoutWizardPage } @Override - protected boolean doValidate() throws Exception + protected boolean doValidate() throws ValidationProblem { IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection(); if (selection.size() == 1) diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRootObjectPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRootObjectPage.java index c678e63dd9..32be547071 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRootObjectPage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRootObjectPage.java @@ -10,9 +10,23 @@ */ package org.eclipse.emf.cdo.explorer.ui.checkouts.wizards; +import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.explorer.repositories.CDORepository; +import org.eclipse.emf.cdo.explorer.ui.checkouts.CDOCheckoutViewerSorter; import org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutImpl; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.ui.CDOItemProvider; +import org.eclipse.emf.cdo.view.CDOView; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ITreeSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import java.util.Properties; @@ -24,9 +38,17 @@ public class CheckoutRootObjectPage extends CheckoutWizardPage { private CDOID rootID; + private TreeViewer objectViewer; + + private CDOView view; + + private CDORepository repository; + + private CDOBranchPoint branchPoint; + public CheckoutRootObjectPage() { - super("New Checkout", "Select the type of the new checkout."); + super("Root Object", "Select the root object of the new checkout."); } public final CDOID getRootID() @@ -36,23 +58,96 @@ public class CheckoutRootObjectPage extends CheckoutWizardPage public final void setRootID(CDOID rootID) { - this.rootID = rootID; + if (this.rootID != rootID) + { + log("Setting root id to " + rootID); + this.rootID = rootID; + rootObjectChanged(rootID); + } + } + + @Override + public void dispose() + { + closeView(); + super.dispose(); } @Override protected void createUI(Composite parent) { + // TODO This is not lazy, async: + CDOItemProvider itemProvider = new CDOItemProvider(null) + { + @Override + public void fillContextMenu(IMenuManager manager, ITreeSelection selection) + { + // Do nothing. + } + }; + + objectViewer = new TreeViewer(parent, SWT.BORDER); + objectViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); + objectViewer.setContentProvider(itemProvider); + objectViewer.setLabelProvider(itemProvider); + objectViewer.setSorter(new CDOCheckoutViewerSorter()); + objectViewer.addSelectionChangedListener(new ISelectionChangedListener() + { + public void selectionChanged(SelectionChangedEvent event) + { + validate(); + } + }); } @Override - protected boolean doValidate() throws Exception + protected boolean doValidate() throws ValidationProblem { return true; } @Override + protected void repositoryChanged(CDORepository repository) + { + this.repository = repository; + closeView(); + super.repositoryChanged(repository); + } + + @Override + protected void branchPointChanged(CDOBranchPoint branchPoint) + { + this.branchPoint = branchPoint; + closeView(); + super.branchPointChanged(branchPoint); + } + + @Override + protected void pageActivated() + { + CDOSession session = repository.getSession(); + view = session.openView(branchPoint); + objectViewer.setInput(view); + } + + @Override protected void fillProperties(Properties properties) { properties.setProperty("rootID", CDOCheckoutImpl.getCDOIDString(rootID)); } + + private void closeView() + { + if (view != null) + { + if (objectViewer != null) + { + objectViewer.setSelection(StructuredSelection.EMPTY); + objectViewer.setInput(null); + } + + view.close(); + view = null; + } + } } diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutTypePage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutTypePage.java index 98290572bf..bf625d210c 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutTypePage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutTypePage.java @@ -37,7 +37,7 @@ public class CheckoutTypePage extends CheckoutWizardPage public CheckoutTypePage() { - super("New Checkout", "Select the type of the new checkout."); + super("Type", "Select the type of the new checkout."); } public final String getType() @@ -88,7 +88,7 @@ public class CheckoutTypePage extends CheckoutWizardPage public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); - getContainer().showPage(getNextPage()); + showNextPage(); } }; @@ -118,7 +118,7 @@ public class CheckoutTypePage extends CheckoutWizardPage } @Override - protected boolean doValidate() throws Exception + protected boolean doValidate() throws ValidationProblem { return true; } 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 1d8c2fc3c8..7ea6ad3d10 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 @@ -25,8 +25,12 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.IPageChangedListener; +import org.eclipse.jface.dialogs.PageChangedEvent; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.ui.IImportWizard; import org.eclipse.ui.IWorkbench; @@ -35,7 +39,7 @@ import java.util.Properties; /** * @author Eike Stepper */ -public class CheckoutWizard extends Wizard implements IImportWizard +public class CheckoutWizard extends Wizard implements IImportWizard, IPageChangedListener { private CDORepositoryElement selectedElement; @@ -88,6 +92,32 @@ public class CheckoutWizard extends Wizard implements IImportWizard } @Override + public void setContainer(IWizardContainer wizardContainer) + { + if (getContainer() instanceof WizardDialog) + { + ((WizardDialog)getContainer()).removePageChangedListener(this); + } + + super.setContainer(wizardContainer); + + if (getContainer() instanceof WizardDialog) + { + ((WizardDialog)getContainer()).addPageChangedListener(this); + } + } + + public void pageChanged(PageChangedEvent event) + { + Object page = event.getSelectedPage(); + if (page instanceof CheckoutWizardPage) + { + CheckoutWizardPage checkoutWizardPage = (CheckoutWizardPage)page; + checkoutWizardPage.pageActivated(); + } + } + + @Override public void addPages() { addPage(repositoryPage = new CheckoutRepositoryPage()); diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizardPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizardPage.java index be84552227..e0cf3808fd 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizardPage.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizardPage.java @@ -73,6 +73,14 @@ public abstract class CheckoutWizardPage extends WizardPage protected abstract void createUI(Composite parent); + protected void showNextPage() + { + if (isPageComplete()) + { + getContainer().showPage(getNextPage()); + } + } + protected void repositoryChanged(CDORepository repository) { CheckoutWizardPage nextPage = (CheckoutWizardPage)getNextPage(); @@ -109,6 +117,10 @@ public abstract class CheckoutWizardPage extends WizardPage } } + protected void pageActivated() + { + } + protected final void validate() { try @@ -117,14 +129,33 @@ public abstract class CheckoutWizardPage extends WizardPage setErrorMessage(null); setPageComplete(valid); } - catch (Exception ex) + catch (ValidationProblem ex) { - setErrorMessage(ex.getMessage()); + String message = ex.getMessage(); + setErrorMessage(message); setPageComplete(false); } } - protected abstract boolean doValidate() throws Exception; + protected abstract boolean doValidate() throws ValidationProblem; protected abstract void fillProperties(Properties properties); + + protected static void log(String message) + { + System.out.println(message); + } + + /** + * @author Eike Stepper + */ + public static final class ValidationProblem extends Exception + { + private static final long serialVersionUID = 1L; + + public ValidationProblem(String message) + { + super(message); + } + } } diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandler.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandler.java index 26a98b11a8..43a7485d67 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandler.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandler.java @@ -14,12 +14,16 @@ 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.CheckoutWizard; import org.eclipse.emf.cdo.internal.explorer.checkouts.CDOCheckoutImpl; import org.eclipse.net4j.util.ui.handlers.AbstractBaseHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.handlers.HandlerUtil; import java.util.Properties; @@ -28,56 +32,42 @@ import java.util.Properties; */ public class RepositoryCheckoutHandler extends AbstractBaseHandler<CDORepositoryElement> { - private final String type; - - protected RepositoryCheckoutHandler(String type) + public RepositoryCheckoutHandler() { super(CDORepositoryElement.class, false); - this.type = type; } @Override protected void doExecute(ExecutionEvent event, IProgressMonitor monitor) throws Exception { - checkout(elements.get(0), type); + Shell shell = HandlerUtil.getActiveShell(event); + checkout(shell, elements.get(0)); } - public static void checkout(CDORepositoryElement repositoryElement, String type) + public static void checkout(final Shell shell, final CDORepositoryElement repositoryElement) { - CDORepository repository = repositoryElement.getRepository(); - - Properties properties = new Properties(); - properties.setProperty("type", type); - properties.setProperty("label", repository.getLabel()); - properties.setProperty("repository", repository.getID()); - properties.setProperty("branchID", Integer.toString(repositoryElement.getBranchID())); - properties.setProperty("timeStamp", Long.toString(repositoryElement.getTimeStamp())); - properties.setProperty("readOnly", Boolean.FALSE.toString()); - properties.setProperty("rootID", CDOCheckoutImpl.getCDOIDString(repositoryElement.getObjectID())); - - CDOCheckout checkout = CDOExplorerUtil.getCheckoutManager().addCheckout(properties); - checkout.open(); - } - - /** - * @author Eike Stepper - */ - public static final class Online extends RepositoryCheckoutHandler - { - public Online() + shell.getDisplay().asyncExec(new Runnable() { - super("online"); - } - } + public void run() + { + CDORepository repository = repositoryElement.getRepository(); + CheckoutWizard wizard = new CheckoutWizard(); + WizardDialog dialog = new WizardDialog(shell, wizard); + if (dialog.open() == WizardDialog.OK) + { + Properties properties = new Properties(); + // properties.setProperty("type", type); + properties.setProperty("label", repository.getLabel()); + properties.setProperty("repository", repository.getID()); + properties.setProperty("branchID", Integer.toString(repositoryElement.getBranchID())); + properties.setProperty("timeStamp", Long.toString(repositoryElement.getTimeStamp())); + properties.setProperty("readOnly", Boolean.FALSE.toString()); + properties.setProperty("rootID", CDOCheckoutImpl.getCDOIDString(repositoryElement.getObjectID())); - /** - * @author Eike Stepper - */ - public static final class Offline extends RepositoryCheckoutHandler - { - public Offline() - { - super("offline"); - } + 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/handlers/RepositoryCheckoutHandlerQuick.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java new file mode 100644 index 0000000000..f10165279f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2009-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.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.internal.explorer.checkouts.CDOCheckoutImpl; + +import org.eclipse.net4j.util.ui.handlers.AbstractBaseHandler; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.runtime.IProgressMonitor; + +import java.util.Properties; + +/** + * @author Eike Stepper + */ +public abstract class RepositoryCheckoutHandlerQuick extends AbstractBaseHandler<CDORepositoryElement> +{ + private final String type; + + protected RepositoryCheckoutHandlerQuick(String type) + { + super(CDORepositoryElement.class, false); + this.type = type; + } + + @Override + protected void doExecute(ExecutionEvent event, IProgressMonitor monitor) throws Exception + { + checkout(elements.get(0), type); + } + + public static void checkout(CDORepositoryElement repositoryElement, String type) + { + CDORepository repository = repositoryElement.getRepository(); + + Properties properties = new Properties(); + properties.setProperty("type", type); + properties.setProperty("label", repository.getLabel()); + properties.setProperty("repository", repository.getID()); + properties.setProperty("branchID", Integer.toString(repositoryElement.getBranchID())); + properties.setProperty("timeStamp", Long.toString(repositoryElement.getTimeStamp())); + properties.setProperty("readOnly", Boolean.FALSE.toString()); + properties.setProperty("rootID", CDOCheckoutImpl.getCDOIDString(repositoryElement.getObjectID())); + + CDOCheckout checkout = CDOExplorerUtil.getCheckoutManager().addCheckout(properties); + checkout.open(); + } + + /** + * @author Eike Stepper + */ + public static final class Online extends RepositoryCheckoutHandlerQuick + { + public Online() + { + super("online"); + } + } + + /** + * @author Eike Stepper + */ + public static final class Offline extends RepositoryCheckoutHandlerQuick + { + public Offline() + { + super("offline"); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoryItemProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoryItemProvider.java index d73f443c9d..21eaa90c03 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoryItemProvider.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoryItemProvider.java @@ -30,6 +30,7 @@ import org.eclipse.net4j.util.ui.views.ContainerItemProvider; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; @@ -62,7 +63,7 @@ public class CDORepositoryItemProvider extends ContainerItemProvider<IContainer< { RepositoryConnectionEvent e = (RepositoryConnectionEvent)event; - TreeViewer viewer = getViewer(); + StructuredViewer viewer = getViewer(); CDORepository repository = e.getRepository(); if (!e.isConnected()) @@ -71,7 +72,11 @@ public class CDORepositoryItemProvider extends ContainerItemProvider<IContainer< if (node != null) { node.disposeChildren(); - ViewerUtil.expand(viewer, repository, false); + + if (viewer instanceof TreeViewer) + { + ViewerUtil.expand((TreeViewer)viewer, repository, false); + } } } @@ -82,7 +87,7 @@ public class CDORepositoryItemProvider extends ContainerItemProvider<IContainer< { CDOExplorerManager.ElementsChangedEvent e = (CDOExplorerManager.ElementsChangedEvent)event; - TreeViewer viewer = getViewer(); + StructuredViewer viewer = getViewer(); Collection<Object> changedElements = e.getChangedElements(); ViewerUtil.update(viewer, changedElements); @@ -135,20 +140,18 @@ public class CDORepositoryItemProvider extends ContainerItemProvider<IContainer< super.dispose(); } - @Override - public TreeViewer getViewer() - { - return (TreeViewer)super.getViewer(); - } - public void connectRepository(CDORepository repository) { // Mark this repository as connecting. connectingRepositories.put(repository, repository); - TreeViewer viewer = getViewer(); + StructuredViewer viewer = getViewer(); ViewerUtil.refresh(viewer, repository); // Trigger hasChildren(). - ViewerUtil.expand(viewer, repository, true); // Trigger getChildren(). + + if (viewer instanceof TreeViewer) + { + ViewerUtil.expand((TreeViewer)viewer, repository, true); // Trigger getChildren(). + } } @Override diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/ComposeBranchPointComposite.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/ComposeBranchPointComposite.java index 2f63457ae6..1d6342561a 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/ComposeBranchPointComposite.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/ComposeBranchPointComposite.java @@ -268,17 +268,19 @@ public class ComposeBranchPointComposite extends Composite IStructuredSelection selection = (IStructuredSelection)branchViewer.getSelection(); CDOBranch branch = (CDOBranch)selection.getFirstElement(); - - long timeStamp = CDOBranchPoint.UNSPECIFIED_DATE; - if (timeStampComposite != null) + if (branch != null) { - timeStamp = timeStampComposite.getTimeStamp(); - } + long timeStamp = CDOBranchPoint.UNSPECIFIED_DATE; + if (timeStampComposite != null) + { + timeStamp = timeStampComposite.getTimeStamp(); + } - branchPoint = branch.getPoint(timeStamp); - if (!ObjectUtil.equals(branchPoint, oldBranchPoint)) - { - branchPointChanged(branchPoint); + branchPoint = branch.getPoint(timeStamp); + if (!ObjectUtil.equals(branchPoint, oldBranchPoint)) + { + branchPointChanged(branchPoint); + } } } |