/******************************************************************************* * Copyright (c) 2015, 2017 Pivotal, 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, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.boot.dash.model; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IType; import org.springframework.ide.eclipse.boot.dash.metadata.IPropertyStore; import org.springframework.ide.eclipse.boot.dash.metadata.PropertyStoreApi; import org.springframework.ide.eclipse.boot.dash.model.runtargettypes.RunTargetType; import org.springframework.ide.eclipse.boot.dash.util.template.Templates; import org.springframework.ide.eclipse.boot.dash.views.sections.BootDashColumn; /** * A RunTarget represents an 'platform/environment' where we can 'Run' BootApps. * * TODO: launch configs are not applicable to all runtargets and methods relating * to launch configs do not belong in here. Remove and refactor! * * @author Kris De Volder */ public interface RunTarget extends IdAble, Nameable { public abstract RunTargetType getType(); /** * Create a launch config for a given dash element and initialize it with * some suitable defaults. * * @param mainType, * may be null if the main type can not be 'guessed' * unambiguosly. */ public abstract ILaunchConfiguration createLaunchConfig(IJavaProject jp, IType mainType) throws Exception; public abstract BootDashColumn[] getAllColumns(); public abstract BootDashColumn[] getDefaultColumns(); /** * Factory method to create the model for the 'elements tabel' of this run * target. */ public abstract BootDashModel createElementsTabelModel(BootDashModelContext context, BootDashViewModel parent); /** * * @return true if it is a run target that can be deleted (and any * associated models). False otherwise */ public abstract boolean canRemove(); /** * * @return true if this run target accepts application deployments. False otherwise. */ public abstract boolean canDeployAppsTo(); /** * * @return true if applications can be deployed from this run target to other run targets. False otherwise. */ public abstract boolean canDeployAppsFrom(); /** * Provides a means to store persistent properties associated with this {@link RunTargetType} */ public abstract IPropertyStore getPropertyStore(); /** * A convenience method that provides access to the persisent property store returned by getPropertyStore * through more convenient API. */ public abstract PropertyStoreApi getPersistentProperties(); /** * Return a nice name, suitable for displaying in a view to identify this target to the user. */ public abstract String getDisplayName(); /** * Customizable template used to create the diplayName. See {@link Templates} for the syntax. * This may return null. */ public abstract String getNameTemplate(); /** * @return true if the String returned from getNameTemplate was specifically set on this target (instead of * inherited from its type. */ public abstract boolean hasCustomNameTemplate(); /** * Set a custom name template for this target. Note that this only works on targets who provides support for * persistent properties (since that's where this value is ultimately stored). * <p> * Setting the template to null makes the effective template be inherited from the runtarget type. */ public abstract void setNameTemplate(String template) throws Exception; }