/******************************************************************************* * Copyright © 2008, 2013 IBM Corporation 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: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.ui.internal.wizards; import org.eclipse.core.runtime.IStatus; import org.eclipse.edt.ide.core.internal.model.SourcePart; import org.eclipse.edt.ide.core.internal.model.SourcePartElementInfo; import org.eclipse.edt.ide.core.model.EGLModelException; import org.eclipse.edt.ide.core.model.IPart; import org.eclipse.edt.ide.core.search.IEGLSearchConstants; import org.eclipse.edt.ide.ui.internal.IUIHelpConstants; import org.eclipse.edt.ide.ui.internal.deployment.EGLDeploymentRoot; import org.eclipse.edt.ide.ui.internal.dialogs.StatusInfo; import org.eclipse.edt.ide.ui.internal.wizards.dialogfields.DialogField; import org.eclipse.edt.ide.ui.internal.wizards.dialogfields.StringDialogField; import org.eclipse.edt.ide.ui.wizards.BindingBaseConfiguration; import org.eclipse.edt.ide.ui.wizards.BindingEGLConfiguration; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; public class EGLBindingWizardPage extends EGLDDBindingWizardPage { public static final String WIZPAGENAME_EGLBindingWizardPage = "WIZPAGENAME_EGLBindingWizardPage"; //$NON-NLS-1$ private StringDialogField fServiceNameField; private StringDialogField fAliasField; private EGLBindingFieldAdapter adapter = new EGLBindingFieldAdapter(); private StatusInfo fServiceNameStatus; private class EGLBindingFieldAdapter implements IStringBrowseButtonFieldAdapter{ public void dialogFieldChanged(DialogField field) { if(field == fNameField) HandleBindingNameChanged(getBindingEGLConfiguration()); else if(field == fAliasField) HandleAliasFieldChanged(); else if(field == fServiceNameField) HandleServiceNameFieldChanged(); } public void changeControlPressed(DialogField field) { if(field == fNameField) HandleEGLBindingNameBrowsePressed(); } } public EGLBindingWizardPage(String pageName) { super(pageName); setTitle(NewWizardMessages.EGLBindingWizPageTitle); setDescription(NewWizardMessages.EGLBindingWizPageDescription); nColumns = 4; fServiceNameStatus = new StatusInfo(); } public void HandleEGLBindingNameBrowsePressed() { IPart servicePart = browsedEGLPartFQValue(getBindingEGLConfiguration().getProject(), IEGLSearchConstants.SERVICE|IEGLSearchConstants.INTERFACE, true); if(servicePart != null){ SourcePart sourcePart = (SourcePart)servicePart; //set to be the simple name fNameField.setText(servicePart.getElementName()); try { SourcePartElementInfo elemInfo = (SourcePartElementInfo)sourcePart.getElementInfo(); //if it's interface, do not set these field if(elemInfo.isService()){ fServiceNameField.setText(servicePart.getFullyQualifiedName()); fAliasField.setText(""); } } catch (EGLModelException e) { e.printStackTrace(); } } } protected void HandleBindingNameChanged(BindingBaseConfiguration esConfig) { super.HandleBindingNameChanged(esConfig); validatePage(); } protected boolean validatePage(){ fNameStatus.setOK(); fServiceNameStatus.setOK(); validateBindingName(fNameStatus); if(fServiceNameField != null){ String serviceName = fServiceNameField.getText(); if(serviceName == null || serviceName.trim().length() ==0){ fServiceNameStatus.setError(NewWizardMessages.EGLBindingValidationMsgFQServiceName); } } updateStatus(new IStatus[]{fNameStatus, fServiceNameStatus}); return (!fNameStatus.isError() && !fServiceNameStatus.isError()); } protected BindingEGLConfiguration getBindingEGLConfiguration(){ return (BindingEGLConfiguration)((EGLPartWizard)getWizard()).getConfiguration(EGLBindingWizardPage.WIZPAGENAME_EGLBindingWizardPage); } public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite= new Composite(parent, SWT.NONE); PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IUIHelpConstants.EGLDDWIZ_ADDBINDING_EGL); GridLayout layout = new GridLayout(); layout.marginWidth= 0; layout.marginHeight= 0; layout.numColumns= nColumns; composite.setLayout(layout); createBindingControls(composite); setControl(composite); validatePage(); Dialog.applyDialogFont(parent); } protected void createBindingControls(Composite composite){ EGLDeploymentRoot deploymentRoot = getEGLDDBindingConfiguration().getDeploymentRoot(); createBindingControls(composite, getEGLDDBindingConfiguration().getBindingEGLConfiguration(), deploymentRoot, false); } protected void createBindingControls(Composite composite, BindingEGLConfiguration bindingEGLConfig, EGLDeploymentRoot deploymentRoot, boolean isReadOnly) { createComponentNameControl(composite, NewWizardMessages.EGLBindingNameLabel, bindingEGLConfig); createServiceNameControl(composite, isReadOnly); createAliasControl(composite, isReadOnly); } protected void createComponentNameControl(Composite parent, String labelName, final BindingBaseConfiguration esConfig) { fNameField = createStringBrowseButtonDialogField(parent, adapter, labelName, esConfig.getBindingName(), nColumns-1); } private void createServiceNameControl(Composite composite, boolean isReadOnly) { fServiceNameField = new StringDialogField(); fServiceNameField.setLabelText(NewWizardMessages.ServiceNameLabel); fServiceNameField.setText(getBindingEGLConfiguration().getEGLServiceOrInterface()); createStringDialogField(composite, fServiceNameField, adapter); fServiceNameField.getTextControl(composite).setEditable(!isReadOnly); } private void createAliasControl(Composite composite, boolean isReadOnly) { fAliasField = new StringDialogField(); fAliasField.setLabelText(NewWizardMessages.ServiceAliasLabel); fAliasField.setText(getBindingEGLConfiguration().getAlias()); createStringDialogField(composite, fAliasField, adapter); fAliasField.getTextControl(composite).setEditable(!isReadOnly); } public void HandleAliasFieldChanged() { getBindingEGLConfiguration().setAlias(fAliasField.getText()); } public void HandleServiceNameFieldChanged() { getBindingEGLConfiguration().setEGLServiceOrInterface(fServiceNameField.getText()); validatePage(); } }