/******************************************************************************* * Copyright (c) 2013 GoPivotal, 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: * GoPivotal, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.boot.core; import java.util.Collection; import org.eclipse.core.runtime.Assert; import org.springsource.ide.eclipse.commons.completions.externaltype.ExternalType; import org.springsource.ide.eclipse.commons.livexp.core.BooleanFieldModel; import org.springsource.ide.eclipse.commons.livexp.core.LiveExpression; import org.springsource.ide.eclipse.commons.livexp.core.LiveVariable; import org.springsource.ide.eclipse.commons.livexp.core.ValidationResult; import org.springsource.ide.eclipse.commons.livexp.core.Validator; import org.springsource.ide.eclipse.commons.livexp.ui.OkButtonHandler; /** * Model for a ChooseDependencyDialog. * * @author Kris De Volder */ public class ChooseDependencyModel implements OkButtonHandler { public final MavenCoordinates[] availableChoices; public final LiveVariable<MavenCoordinates> selected = new LiveVariable<MavenCoordinates>(); public final LiveExpression<ValidationResult> validator = Validator.notNull(selected, "No dependency selected"); public final BooleanFieldModel disableJarTypeAssist = new BooleanFieldModel("disableJarTypeAssist", false); { disableJarTypeAssist.label("Don't ask again (disables Jar Type Search content assistant)"); } public final LiveExpression<String> previewText = new LiveExpression<String>("") { { dependsOn(selected); } @Override protected String compute() { MavenCoordinates d = selected.getValue(); if (d!=null) { return d.toXmlString(); } return ""; } }; /** * Records when performOk is called. This allows us to determine if the dialog was closed * via ok button or via another means (i.e. cancel button). */ private boolean okPerformed = false; private String dependencyFileName; private ExternalType type; public ChooseDependencyModel(Collection<MavenCoordinates> availableChoices, String dependencyFileName, ExternalType type) { this.type = type; this.dependencyFileName = dependencyFileName; Assert.isLegal(!availableChoices.isEmpty()); this.availableChoices = availableChoices.toArray(new MavenCoordinates[availableChoices.size()]); selected.setValue(this.availableChoices[0]); } public MavenCoordinates getResult() { if (okPerformed && !disableJarTypeAssist.getValue()) { return selected.getValue(); } //We cannot distinguish between cancelation and no selection is this a problem? return null; } @Override public void performOk() throws Exception { okPerformed = true; } public void performDisable() { disableJarTypeAssist.setValue(true); } public String getTitle() { return "Confirm Changes to '"+dependencyFileName+"'"; } public String getDependencyFileName() { return dependencyFileName; } public boolean isShowChoices() { return availableChoices.length>1; } public String getTypeName() { return type.getFullyQualifiedName(); } }