/** * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * 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. * */ package gov.redhawk.sca.ui; import gov.redhawk.model.sca.DomainConnectionException; import gov.redhawk.model.sca.RefreshDepth; import gov.redhawk.model.sca.ScaDomainManager; import gov.redhawk.model.sca.ScaDomainManagerRegistry; import gov.redhawk.model.sca.commands.ScaModelCommandWithResult; import gov.redhawk.sca.ScaPlugin; import gov.redhawk.sca.ui.preferences.DomainEntryWizard; import gov.redhawk.sca.ui.preferences.DomainSettingModel.ConnectionMode; import java.util.Collections; import java.util.Map; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; /** * @since 2.1 */ public class DomainConnectionUtil { private DomainConnectionUtil() { } /** * @since 10.0 * @deprecated Use new {@link #showDialog(Display, String, String)} */ @Deprecated public static void showDialog(final String host, final String domainName, String localName) { DomainConnectionUtil.showDialog(null, host, domainName, localName); } /** * @deprecated Use {@link #showDialog(Display, String, String, String)} instead. * @since 9.3 */ @Deprecated public static void showDialog(Display context, final String host, final String domainName) { showDialog(context, host, domainName, null); } /** * @since 10.0 */ public static void showDialog(Display context, final String host, final String domainName, final String localName) { final DomainEntryWizard wizard = new DomainEntryWizard(); final ScaDomainManagerRegistry registry = ScaPlugin.getDefault().getDomainManagerRegistry(context); wizard.setNameServiceInitRef(host); wizard.setRegistry(registry); wizard.setDomainName(domainName); wizard.setLocalDomainName(localName); wizard.setShowExtraSettings(true); wizard.setWindowTitle("Edit Domain Manager"); final WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), wizard); if (dialog.open() == IStatus.OK) { final boolean autoConnect = wizard.getConnectionMode() == ConnectionMode.AUTO; final Map<String, String> connectionProperties = Collections.singletonMap(ScaDomainManager.NAMING_SERVICE_PROP, wizard.getNameServiceInitRef()); // In the "AUTO" connect case the preference monitor // will connect for us // for the "NOW" case we need to connect ourselves if (wizard.getConnectionMode() == ConnectionMode.NOW) { final Job connectionJob = new Job("Connecting to domain") { @Override protected IStatus run(final IProgressMonitor monitor) { final ScaDomainManager domain = ScaModelCommandWithResult.execute(registry, new ScaModelCommandWithResult<ScaDomainManager>() { @Override public void execute() { setResult(registry.createDomain(localName, domainName, autoConnect, connectionProperties)); } }); if (domain != null) { try { domain.connect(monitor, RefreshDepth.SELF); return Status.OK_STATUS; } catch (final DomainConnectionException e) { return new Status(IStatus.ERROR, ScaUiPlugin.PLUGIN_ID, "Failed to connect to domain", e); } } else { return Status.CANCEL_STATUS; } } }; connectionJob.setUser(true); connectionJob.schedule(); } } } }