Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo')
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java55
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java51
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java64
3 files changed, 74 insertions, 96 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java
index 2c0a4c37c2..68319ab34b 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/actions/OpenSessionAction.java
@@ -10,15 +10,11 @@
*/
package org.eclipse.emf.cdo.internal.ui.actions;
-import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.internal.ui.bundle.OM;
import org.eclipse.emf.cdo.internal.ui.dialogs.OpenSessionDialog;
import org.eclipse.emf.cdo.internal.ui.views.CDOSessionsView;
-import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.session.CDOSessionProvider;
-import org.eclipse.emf.internal.cdo.session.CDOSessionFactory;
-
-import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.ui.actions.LongRunningAction;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -34,7 +30,7 @@ public final class OpenSessionAction extends LongRunningAction
private static final String TOOL_TIP = "Open a new CDO session";
- private String description;
+ private CDOSessionProvider sessionProvider;
public OpenSessionAction(IWorkbenchPage page)
{
@@ -47,16 +43,7 @@ public final class OpenSessionAction extends LongRunningAction
OpenSessionDialog dialog = new OpenSessionDialog(getPage());
if (dialog.open() == OpenSessionDialog.OK)
{
- StringBuilder builder = new StringBuilder();
- builder.append(dialog.getServerDescription());
- builder.append("?repositoryName=");
- builder.append(dialog.getRepositoryName());
- if (dialog.isAutomaticPackageRegistry())
- {
- builder.append("&automaticPackageRegistry=true");
- }
-
- description = builder.toString();
+ sessionProvider = dialog.getSessionComposite();
}
else
{
@@ -67,41 +54,21 @@ public final class OpenSessionAction extends LongRunningAction
@Override
protected void doRun(IProgressMonitor progressMonitor) throws Exception
{
- CDOSession session = null;
-
try
{
- String productGroup = CDOSessionFactory.PRODUCT_GROUP;
- String type = CDOProtocolConstants.PROTOCOL_NAME;
- session = (CDOSession)IPluginContainer.INSTANCE.getElement(productGroup, type, description);
+ sessionProvider.getSession();
}
- catch (RuntimeException ex)
+ catch (final RuntimeException ex)
{
OM.LOG.error(ex);
- }
-
- if (session == null)
- {
- try
+ getShell().getDisplay().syncExec(new Runnable()
{
- getShell().getDisplay().syncExec(new Runnable()
+ public void run()
{
- public void run()
- {
- try
- {
- MessageDialog.openError(getShell(), getText(), "Unable to open a session on the specified repository.\n"
- + description);
- }
- catch (RuntimeException ignoe)
- {
- }
- }
- });
- }
- catch (RuntimeException ignoe)
- {
- }
+ MessageDialog.openError(getShell(), getText(), "Unable to open a session on the specified repository.\n"
+ + ex.getMessage());
+ }
+ });
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java
index cfbfba2456..215ec312f1 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/dialogs/OpenSessionDialog.java
@@ -11,16 +11,12 @@
package org.eclipse.emf.cdo.internal.ui.dialogs;
import org.eclipse.emf.cdo.internal.ui.SharedIcons;
-import org.eclipse.emf.cdo.internal.ui.bundle.OM;
import org.eclipse.emf.cdo.ui.widgets.SessionComposite;
-import org.eclipse.net4j.util.ui.widgets.PreferenceButton;
-
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
@@ -33,15 +29,7 @@ public class OpenSessionDialog extends TitleAreaDialog
private IWorkbenchPage page;
- private PreferenceButton automaticButton;
-
- private SessionComposite composite;
-
- private boolean automaticPackageRegistry;
-
- private String serverDescription;
-
- private String repositoryName;
+ private SessionComposite sessionComposite;
public OpenSessionDialog(IWorkbenchPage page)
{
@@ -55,19 +43,9 @@ public class OpenSessionDialog extends TitleAreaDialog
return page;
}
- public String getServerDescription()
- {
- return serverDescription;
- }
-
- public String getRepositoryName()
- {
- return repositoryName;
- }
-
- public boolean isAutomaticPackageRegistry()
+ public SessionComposite getSessionComposite()
{
- return automaticPackageRegistry;
+ return sessionComposite;
}
@Override
@@ -80,28 +58,9 @@ public class OpenSessionDialog extends TitleAreaDialog
@Override
protected Control createDialogArea(Composite parent)
{
- composite = new SessionComposite(parent, SWT.NONE);
-
setTitle(TITLE);
setTitleImage(SharedIcons.getImage(SharedIcons.WIZBAN_PACKAGE_MANAGER));
-
- new Label(composite, SWT.NONE);
- automaticButton = new PreferenceButton(composite, SWT.CHECK, "Automatic Package Registry",
- OM.PREF_AUTOMATIC_PACKAGE_REGISTRY);
-
- return composite;
- }
-
- @Override
- protected void okPressed()
- {
- serverDescription = composite.getServerDescription();
- repositoryName = composite.getRepositoryName();
- automaticPackageRegistry = automaticButton.getSelection(true);
- super.okPressed();
- }
-
- public void closeWithSuccess()
- {
+ sessionComposite = new SessionComposite(parent, SWT.NONE);
+ return sessionComposite;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java
index 9227d4d84e..35fca1eb25 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/SessionComposite.java
@@ -12,11 +12,15 @@
package org.eclipse.emf.cdo.ui.widgets;
import org.eclipse.emf.cdo.internal.ui.bundle.OM;
+import org.eclipse.emf.cdo.session.CDOSession;
+import org.eclipse.emf.cdo.session.CDOSessionProvider;
import org.eclipse.net4j.util.collection.IHistory;
import org.eclipse.net4j.util.collection.PreferenceHistory;
+import org.eclipse.net4j.util.container.IPluginContainer;
import org.eclipse.net4j.util.ui.UIUtil;
import org.eclipse.net4j.util.ui.widgets.HistoryText;
+import org.eclipse.net4j.util.ui.widgets.PreferenceButton;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
@@ -29,7 +33,7 @@ import org.eclipse.swt.widgets.Label;
/**
* @author Victor Roldan Betancort
*/
-public class SessionComposite extends Composite
+public class SessionComposite extends Composite implements CDOSessionProvider
{
private IHistory<String> connectorHistory = new PreferenceHistory(OM.PREF_HISTORY_CONNECTORS);
@@ -41,6 +45,10 @@ public class SessionComposite extends Composite
private HistoryText repositoryText;
+ private PreferenceButton automaticButton;
+
+ private String sessionDescription;
+
public SessionComposite(Composite parent, int style)
{
super(parent, style);
@@ -55,7 +63,7 @@ public class SessionComposite extends Composite
{
new Label(this, SWT.NONE);
exampleLabel = new Label(this, SWT.NONE);
- exampleLabel.setText("for example 'tcp://estepper@dev.eclipse.org:2036'");
+ exampleLabel.setText("for example 'tcp://dev.eclipse.org:2036'");
exampleLabel.setForeground(getShell().getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
}
@@ -82,15 +90,59 @@ public class SessionComposite extends Composite
}
}
});
+
+ new Label(this, SWT.NONE);
+ automaticButton = new PreferenceButton(this, SWT.CHECK, "Automatic Package Registry",
+ OM.PREF_AUTOMATIC_PACKAGE_REGISTRY);
+ }
+
+ @Override
+ public void dispose()
+ {
+ assembleSessionDescription();
+ super.dispose();
+ }
+
+ public CDOSession getSession()
+ {
+ String description = getSessionDescription();
+ return (CDOSession)getContainer().getElement("org.eclipse.emf.cdo.sessions", "cdo", description);
+ }
+
+ public String getSessionDescription()
+ {
+ try
+ {
+ String description = sessionDescription;
+ if (description == null)
+ {
+ description = assembleSessionDescription();
+ }
+
+ return description;
+ }
+ finally
+ {
+ sessionDescription = null;
+ }
}
- public String getServerDescription()
+ protected IPluginContainer getContainer()
{
- return connectorText.getText(true);
+ return IPluginContainer.INSTANCE;
}
- public String getRepositoryName()
+ protected String assembleSessionDescription()
{
- return repositoryText.getText(true);
+ StringBuilder builder = new StringBuilder();
+ builder.append(connectorText.getText(true));
+ builder.append("?repositoryName=");
+ builder.append(repositoryText.getText(true));
+ if (automaticButton.getSelection(true))
+ {
+ builder.append("&automaticPackageRegistry=true");
+ }
+
+ return builder.toString();
}
}

Back to the top