/* * $Id$ * * Copyright (c) 2000-2011 by Rodney Kinney, Brent Easton * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.build.module.properties; import javax.swing.JOptionPane; import VASSAL.script.expression.Expression; import VASSAL.script.expression.ExpressionException; /** * Prompts user to select from a list * @author rkinney * */ public class EnumeratedPropertyPrompt extends PropertyPrompt { protected String[] validValues; protected Expression[] valueExpressions; protected DialogParent dialogParent; protected Constraints propertySource; @Deprecated public EnumeratedPropertyPrompt(DialogParent dialogParent, String prompt, String[] validValues) { this (dialogParent, prompt, validValues, null); } public EnumeratedPropertyPrompt(DialogParent dialogParent, String prompt, String[] validValues, Constraints propertySource) { super(null, prompt); this.validValues = validValues; valueExpressions = new Expression[validValues.length]; for (int i = 0; i < validValues.length; i++) { valueExpressions[i] = Expression.createExpression(validValues[i]); } this.dialogParent = dialogParent; this.propertySource = propertySource; } public String getNewValue(String oldValue) { final String[] finalValues = new String[valueExpressions.length]; for (int i = 0; i < finalValues.length; i++) { String value; try { if (propertySource == null) { value = valueExpressions[i].evaluate(); } else { value = valueExpressions[i].evaluate(propertySource.getPropertySource()); } } catch (ExpressionException e) { value = valueExpressions[i].getExpression(); } finalValues[i] = value; } final String newValue = (String) JOptionPane.showInputDialog(dialogParent.getComponent(), promptText, null, JOptionPane.QUESTION_MESSAGE, null,finalValues,oldValue); return newValue == null ? oldValue : newValue; } public String[] getValidValues() { return validValues; } }