[vassalengine-svn-trunk] [vassalengine-svn] SF.net SVN: vassalengine:[8023] VASSAL-src/trunk
Brought to you by:
rodneykinney,
uckelman
From: <uck...@us...> - 2011-11-17 02:16:08
|
Revision: 8023 http://vassalengine.svn.sourceforge.net/vassalengine/?rev=8023&view=rev Author: uckelman Date: 2011-11-16 22:46:44 +0000 (Wed, 16 Nov 2011) Log Message: ----------- Merged brent-3.2@7995. Fixed Bug 1926: Allow Dynamic Property Select Value list to be dynamic Modified Paths: -------------- VASSAL-src/trunk/src/VASSAL/build/module/properties/EnumeratedPropertyPrompt.java VASSAL-src/trunk/src/VASSAL/build/module/properties/PropertyChangerConfigurer.java VASSAL-src/trunk/src/VASSAL/configure/StringArrayConfigurer.java Added Paths: ----------- VASSAL-src/trunk/src/VASSAL/configure/FormattedStringArrayConfigurer.java Property Changed: ---------------- VASSAL-src/trunk/ Property changes on: VASSAL-src/trunk ___________________________________________________________________ Modified: svn:mergeinfo - /VASSAL-src/branches/3.1:7756,7764,7810,7812-7813,7872,7876,7879,7909,7913,7964,7966,7968,7998 /VASSAL-src/branches/brent-3.2:7824-7825,7862-7865,7875,7878,7882,7884,7886,7896,7903,7911,7917,7929,7942,7988 /VASSAL-src/branches/george973-bugs:7800,7806,7962-7963 /VASSAL-src/branches/lancel-3.1:7680 /VASSAL-src/branches/pgeerkens-3.2:7836-7837,7839,7841-7842,7849,7893,7899,7902,7904,7906,7922,7930 /VASSAL-src/branches/uckelman-integration:7971-8007 /VASSAL-src/branches/uckelman-working2:7194-7700 /VASSAL-src/branches/viewport-3.2:7992 + /VASSAL-src/branches/3.1:7756,7764,7810,7812-7813,7872,7876,7879,7909,7913,7964,7966,7968,7998 /VASSAL-src/branches/brent-3.2:7824-7825,7862-7865,7875,7878,7882,7884,7886,7896,7903,7911,7917,7929,7942,7988,7995 /VASSAL-src/branches/george973-bugs:7800,7806,7962-7963 /VASSAL-src/branches/lancel-3.1:7680 /VASSAL-src/branches/pgeerkens-3.2:7836-7837,7839,7841-7842,7849,7893,7899,7902,7904,7906,7922,7930 /VASSAL-src/branches/uckelman-integration:7971-8007 /VASSAL-src/branches/uckelman-working2:7194-7700 /VASSAL-src/branches/viewport-3.2:7992 Modified: VASSAL-src/trunk/src/VASSAL/build/module/properties/EnumeratedPropertyPrompt.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/properties/EnumeratedPropertyPrompt.java 2011-11-16 18:01:07 UTC (rev 8022) +++ VASSAL-src/trunk/src/VASSAL/build/module/properties/EnumeratedPropertyPrompt.java 2011-11-16 22:46:44 UTC (rev 8023) @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (c) 2000-2008 by Rodney Kinney + * 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 @@ -20,6 +20,9 @@ import javax.swing.JOptionPane; +import VASSAL.script.expression.Expression; +import VASSAL.script.expression.ExpressionException; + /** * Prompts user to select from a list * @author rkinney @@ -27,16 +30,38 @@ */ public class EnumeratedPropertyPrompt extends PropertyPrompt { protected String[] validValues; + protected Expression[] valueExpressions; protected DialogParent dialogParent; - + protected PropertySource propertySource; + public EnumeratedPropertyPrompt(DialogParent dialogParent, String prompt, String[] validValues) { + this (dialogParent, prompt, validValues, null); + } + + public EnumeratedPropertyPrompt(DialogParent dialogParent, String prompt, String[] validValues, PropertySource 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 newValue = (String) JOptionPane.showInputDialog(dialogParent.getComponent(), promptText, null, JOptionPane.QUESTION_MESSAGE, null,validValues,oldValue); + final String[] finalValues = new String[valueExpressions.length]; + for (int i = 0; i < finalValues.length; i++) { + String value; + try { + value = valueExpressions[i].evaluate(propertySource); + } + 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; } Modified: VASSAL-src/trunk/src/VASSAL/build/module/properties/PropertyChangerConfigurer.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/build/module/properties/PropertyChangerConfigurer.java 2011-11-16 18:01:07 UTC (rev 8022) +++ VASSAL-src/trunk/src/VASSAL/build/module/properties/PropertyChangerConfigurer.java 2011-11-16 22:46:44 UTC (rev 8023) @@ -30,6 +30,7 @@ import VASSAL.build.module.gamepieceimage.StringEnumConfigurer; import VASSAL.configure.Configurer; import VASSAL.configure.FormattedExpressionConfigurer; +import VASSAL.configure.FormattedStringArrayConfigurer; import VASSAL.configure.StringArrayConfigurer; import VASSAL.configure.StringConfigurer; import VASSAL.tools.SequenceEncoder; @@ -105,7 +106,7 @@ promptConfig.addPropertyChangeListener(l); incrConfig = new FormattedExpressionConfigurer(null, "Increment by: "); incrConfig.addPropertyChangeListener(l); - validValuesConfig = new StringArrayConfigurer(null, "Valid Values"); + validValuesConfig = new FormattedStringArrayConfigurer(null, "Valid Values"); validValuesConfig.addPropertyChangeListener(l); controls.add(typeConfig.getControls()); controls.add(valueConfig.getControls()); @@ -214,7 +215,7 @@ p = new IncrementProperty(this, sd.nextToken("1"), constraints); break; case ENUM_CODE: - p = new EnumeratedPropertyPrompt(constraints, sd.nextToken("Select new value"), sd.nextStringArray(0)); + p = new EnumeratedPropertyPrompt(constraints, sd.nextToken("Select new value"), sd.nextStringArray(0), constraints); break; case PLAIN_CODE: default: Copied: VASSAL-src/trunk/src/VASSAL/configure/FormattedStringArrayConfigurer.java (from rev 7995, VASSAL-src/branches/brent-3.2/src/VASSAL/configure/FormattedStringArrayConfigurer.java) =================================================================== --- VASSAL-src/trunk/src/VASSAL/configure/FormattedStringArrayConfigurer.java (rev 0) +++ VASSAL-src/trunk/src/VASSAL/configure/FormattedStringArrayConfigurer.java 2011-11-16 22:46:44 UTC (rev 8023) @@ -0,0 +1,55 @@ +/* + * $Id: FormattedStringArrayConfigurer.java 7861 2011-10-01 06:23:11Z swampwallaby $ + * + * Copyright (c) 2011 by 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.configure; + +import java.awt.Component; +import java.awt.event.ActionListener; + +public class FormattedStringArrayConfigurer extends StringArrayConfigurer { + + protected FormattedExpressionConfigurer config; + + public FormattedStringArrayConfigurer(String key, String name, Object val) { + super(key, name, val); + } + + public FormattedStringArrayConfigurer(String key, String name) { + super(key, name); + } + + protected Component getTextComponent() { + if (config == null) { + config = new FormattedExpressionConfigurer(null, ""); + } + return config.getControls(); + } + + protected String getTextValue() { + return config.getValueString(); + } + + protected void setTextValue(String s) { + config.setValue(s); + } + + protected void addTextActionListener(ActionListener a) { + return; + } +} \ No newline at end of file Modified: VASSAL-src/trunk/src/VASSAL/configure/StringArrayConfigurer.java =================================================================== --- VASSAL-src/trunk/src/VASSAL/configure/StringArrayConfigurer.java 2011-11-16 18:01:07 UTC (rev 8022) +++ VASSAL-src/trunk/src/VASSAL/configure/StringArrayConfigurer.java 2011-11-16 22:46:44 UTC (rev 8023) @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (c) 2000-2003 by Rodney Kinney + * 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 @@ -16,15 +16,7 @@ * License along with this library; if not, copies are available * at http://www.opensource.org. */ -/* - * Created by IntelliJ IDEA. - * User: rkinney - * Date: Jul 20, 2002 - * Time: 4:10:29 AM - * To change template for new class use - * Code Style | Class Templates options (Tools | IDE Options). - * i18n - */ + package VASSAL.configure; import java.awt.Component; @@ -56,10 +48,11 @@ * A Configurer that returns an array of Strings */ public class StringArrayConfigurer extends Configurer { - private JPanel panel; - private JList list; - private DefaultListModel model; + protected JPanel panel; + protected JList list; + protected DefaultListModel model; private static final String[] EMPTY = new String[0]; + protected JTextField textField; public StringArrayConfigurer(String key, String name, Object val) { super(key, name, val); @@ -96,34 +89,33 @@ list.setPrototypeCellValue("MMMMMMMM"); list.setVisibleRowCount(2); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - final JTextField tf = new JTextField(8); - tf.setMaximumSize(new Dimension(Integer.MAX_VALUE, tf.getPreferredSize().height)); + final Component textComponent = getTextComponent(); ActionListener addAction = new ActionListener() { public void actionPerformed(ActionEvent e) { - String s = tf.getText(); + String s = getTextValue(); addValue(s); - tf.setText(""); + setTextValue(""); } }; ActionListener insertAction = new ActionListener() { public void actionPerformed(ActionEvent e) { if (value == null) { - addValue(tf.getText()); + addValue(getTextValue()); } else { int pos = list.getSelectedIndex(); if (pos < 0) pos = list.getModel().getSize(); - setValue(ArrayUtils.insert((String[]) value, pos, tf.getText())); - tf.setText(""); + setValue(ArrayUtils.insert((String[]) value, pos, getTextValue())); + setTextValue(""); list.setSelectedIndex(pos+1); } } }; JButton addButton = new JButton(Resources.getString(Resources.ADD)); addButton.addActionListener(addAction); - tf.addActionListener(insertAction); - leftBox.add(tf); + addTextActionListener(insertAction); + leftBox.add(textComponent); buttonBox.add(addButton); JButton removeButton = new JButton(Resources.getString(Resources.REMOVE)); @@ -151,6 +143,26 @@ return panel; } + protected Component getTextComponent() { + if (textField == null) { + textField = new JTextField(8); + textField.setMaximumSize(new Dimension(Integer.MAX_VALUE, textField.getPreferredSize().height)); + } + return textField; + } + + protected String getTextValue() { + return textField.getText(); + } + + protected void setTextValue(String s) { + textField.setText(s); + } + + protected void addTextActionListener(ActionListener a) { + textField.addActionListener(a); + } + public String[] getStringArray() { if (value instanceof String[]) { return (String[]) value; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ vassalengine-svn mailing list vas...@li... https://lists.sourceforge.net/lists/listinfo/vassalengine-svn |