Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/plugin.xml25
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/actions/CheckoutCommitInfoActionDelegate.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java50
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutLabelPage.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRepositoryPage.java40
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutRootObjectPage.java101
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutTypePage.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizard.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutWizardPage.java37
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandler.java68
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/handlers/RepositoryCheckoutHandlerQuick.java83
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/repositories/CDORepositoryItemProvider.java25
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/ComposeBranchPointComposite.java20
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);
+ }
}
}

Back to the top