/* * Copyright (c) 2010-2012 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 * Martin Fluegge - initial API and implementation */ package org.eclipse.net4j.internal.ui.container; import org.eclipse.net4j.internal.jvm.JVMAcceptorFactory; import org.eclipse.net4j.internal.ui.bundle.OM; import org.eclipse.net4j.jvm.IJVMAcceptor; import org.eclipse.net4j.util.factory.ProductCreationException; import org.eclipse.net4j.util.ui.container.ElementWizard; import org.eclipse.net4j.util.ui.container.ElementWizardFactory; import org.eclipse.spi.net4j.ConnectorFactory; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author Eike Stepper * @author Martin Fluegge * @since 4.0 */ public class JVMConnectorWizard extends ElementWizard { public JVMConnectorWizard() { } @Override protected void create(Composite parent) { List<String> choices = new ArrayList<String>(); try { Object[] elements = getContainer().getElements(JVMAcceptorFactory.PRODUCT_GROUP, JVMAcceptorFactory.TYPE); for (Object object : elements) { if (object instanceof IJVMAcceptor) { IJVMAcceptor acceptor = (IJVMAcceptor)object; choices.add(acceptor.getName()); } } } catch (NoClassDefFoundError error) { OM.LOG.error(error); } if (!choices.isEmpty()) { Collections.sort(choices); final Combo acceptorCombo = addCombo(parent, "Acceptor:", choices); acceptorCombo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { String acceptorName = acceptorCombo.getText(); setResultDescription(acceptorName); } }); String description = getDefaultDescription(); if (description != null) { acceptorCombo.setText(description); } } else { final Text acceptorNameText = addText(parent, "Acceptor Name:"); acceptorNameText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { String acceptorName = acceptorNameText.getText(); if (acceptorName.length() == 0) { setValidationError(acceptorNameText, "Acceptor name is empty."); return; } setResultDescription(acceptorName); setValidationError(acceptorNameText, null); } }); String description = getDefaultDescription(); if (description != null) { acceptorNameText.setText(description); } } } /** * @author Eike Stepper */ public static class Factory extends ElementWizardFactory { public Factory() { super(ConnectorFactory.PRODUCT_GROUP, "jvm"); } @Override public JVMConnectorWizard create(String description) throws ProductCreationException { return new JVMConnectorWizard(); } } }