/** * Copyright 2014 SAP AG * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.spotter.eclipse.ui.dialogs; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.spotter.eclipse.ui.Activator; import org.spotter.eclipse.ui.ServiceClientWrapper; import org.spotter.eclipse.ui.listeners.IConnectionChangedListener; import org.spotter.eclipse.ui.wizard.ConnectionWizardPage; /** * A dialog to edit the service client settings of a DynamicSpotter project. * * @author Denis Knoepfle * */ public class ServiceClientSettingsDialog extends TitleAreaDialog implements IConnectionChangedListener { private final ServiceClientWrapper client; private ConnectionTestComposite connTestComposite; /** * Creates a new dialog for the given project. * * @param parentShell * The underlying shell for this dialog * @param projectName * The name of the project whose settings will be edited */ public ServiceClientSettingsDialog(Shell parentShell, String projectName) { super(parentShell); this.client = Activator.getDefault().getClient(projectName); setHelpAvailable(false); } /** * Create contents of the dialog. * * @param parent * The parent composite the content is placed in * @return a {@link Control} instance */ @Override protected Control createDialogArea(Composite parent) { setTitle(ConnectionWizardPage.TITLE); setMessage(ConnectionWizardPage.DESCRIPTION); Composite area = (Composite) super.createDialogArea(parent); Composite container = new Composite(area, SWT.NONE); container.setLayoutData(new GridData(GridData.FILL_BOTH)); container.setLayout(new FillLayout()); connTestComposite = new ConnectionTestComposite(container, false, client); connTestComposite.addConnectionChangedListener(this); return area; } /** * Create contents of the button bar. * * @param parent * The parent composite the content is placed in */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } @Override protected void okPressed() { String host = connTestComposite.getHost(); String port = connTestComposite.getPort(); if (!client.saveServiceClientSettings(host, port)) { return; } super.okPressed(); } @Override public void connectionChanged(boolean connectionOk) { String errorMsg = connTestComposite.getErrorMessage(); setErrorMessage(errorMsg); Button okButton = getButton(IDialogConstants.OK_ID); if (okButton != null) { okButton.setEnabled(errorMsg == null); } } }