/******************************************************************************* * Copyright (c) 2015, 2016 Pivotal Software, Inc. * 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: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.boot.dash.model; import java.util.Collection; import java.util.List; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.jdt.core.IType; import org.eclipse.jface.dialogs.IInputValidator; import org.springframework.ide.eclipse.boot.dash.cloudfoundry.deployment.CloudApplicationDeploymentProperties; import org.springframework.ide.eclipse.boot.dash.dialogs.CustomizeAppsManagerURLDialog; import org.springframework.ide.eclipse.boot.dash.dialogs.CustomizeAppsManagerURLDialogModel; import org.springframework.ide.eclipse.boot.dash.dialogs.DeploymentPropertiesDialogModel; import org.springframework.ide.eclipse.boot.dash.dialogs.EditTemplateDialog; import org.springframework.ide.eclipse.boot.dash.dialogs.EditTemplateDialogModel; import org.springframework.ide.eclipse.boot.dash.dialogs.ManifestDiffDialogModel; import org.springframework.ide.eclipse.boot.dash.dialogs.PasswordDialogModel; import org.springframework.ide.eclipse.boot.dash.dialogs.ToggleFiltersDialogModel; /** * An instance of this interface handles interactions with the GUI code from * the model code. It's main purpose is to provide a convenient handle for * 'mocking' GUI interactions in test code, using, for example, mockito. * * @author Kris De Volder */ public interface UserInteractions { ILaunchConfiguration chooseConfigurationDialog(String dialogTitle, String message, Collection<ILaunchConfiguration> configs); IType chooseMainType(IType[] mainTypes, String dialogTitle, String message); void errorPopup(String title, String message); void warningPopup(String title, String message); void openLaunchConfigurationDialogOnGroup(ILaunchConfiguration selection, String launchGroup); void openUrl(String url); boolean confirmOperation(String title, String message); boolean confirmApplicationReplacement(String title, String message, List<String> services); void openDialog(ToggleFiltersDialogModel model); void openPasswordDialog(PasswordDialogModel model); String selectRemoteEureka(BootDashViewModel model, String title, String message, String initialValue, IInputValidator validator); int confirmOperation(String title, String message, String[] buttonLabels, int defaultButtonIndex); /** * Brings up the UI to enter application deployment manifest * @param cloudData * @param project * @param manifest * @param defaultYaml * @param readOnly * @param noModeSwicth * @return * @throws OperationCanceledException */ CloudApplicationDeploymentProperties promptApplicationDeploymentProperties(DeploymentPropertiesDialogModel model) throws Exception; /** * Ask the user to select a file. * @param title The title of the open file dialog * @param file The default path/file that should be used when opening the dialog * @return The full path of the selected file */ String chooseFile(String title, String file); /** * Ask the user to confirm or cancel an operation, with a toggle option. * * @param propertyKey a preference name that will be used to remember the state of the 'toggle' option. * @param title Title for the dialog * @param message Detailed message * @param toggleMessage Message for the 'togle switch'. */ boolean confirmWithToggle(String propertyKey, String title, String message, String toggleMessage); /** * Ask the user to answer 'yes' or 'no' to a question with a 'toggle' to optionally remember the answer. * * @param propertyKey a preference name that will be used to remember the state of the 'toggle' and 'answer'. * @param title Title for the dialog * @param message Detailed message * @param toggleMessage Message for the 'togle switch'. */ boolean yesNoWithToggle(String propertyKey, String title, String message, String toggleMessage); ManifestDiffDialogModel.Result openManifestDiffDialog(ManifestDiffDialogModel model) throws Exception; /** * Opens a {@link EditTemplateDialog} on given dialog model. */ void openEditTemplateDialog(EditTemplateDialogModel model); /** * Opens a {@link CustomizeAppsManagerURLDialog} on given dialog model. */ void openEditAppsManagerURLDialog(CustomizeAppsManagerURLDialogModel model); }