You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2013/08/15 22:06:13 UTC

svn commit: r1514461 - in /jmeter/trunk: src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java xdocs/changes.xml

Author: sebb
Date: Thu Aug 15 20:06:12 2013
New Revision: 1514461

URL: http://svn.apache.org/r1514461
Log:
Need GUI Editor to process fields which are based on Enums with localised display strings
Bugzilla Id: 55241

Added:
    jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java   (with props)
Modified:
    jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java
    jmeter/trunk/xdocs/changes.xml

Added: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java?rev=1514461&view=auto
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java (added)
+++ jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java Thu Aug 15 20:06:12 2013
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jmeter.testbeans.gui;
+
+import java.awt.Component;
+import java.beans.PropertyDescriptor;
+import java.beans.PropertyEditorSupport;
+import java.util.ResourceBundle;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+
+import org.apache.jmeter.gui.ClearGui;
+
+/**
+ * This class implements a property editor for String properties based on an enum
+ * that supports custom editing (i.e.: provides a GUI component) based on a
+ * combo box.
+ * <p>
+ * The provided GUI is a combo box with an option for each value in the enum.
+ * <p>
+ * The resource bundle must be provided by the attribute
+ * GenericTestBeanCustomizer.RESOURCE_BUNDLE
+ */
+class EnumEditor extends PropertyEditorSupport implements ClearGui {
+
+    private final JComboBox combo;
+
+    private final DefaultComboBoxModel model;
+
+    private final Enum<?>[] eNum;
+
+    private final ResourceBundle rb;
+
+    private final int defaultIndex;
+
+    public EnumEditor(PropertyDescriptor descriptor) {
+        model = new DefaultComboBoxModel();
+        combo = new JComboBox(model);
+        combo.setEditable(false);
+        rb = (ResourceBundle) descriptor.getValue(GenericTestBeanCustomizer.RESOURCE_BUNDLE);
+        eNum = (Enum<?>[]) descriptor.getValue(GenericTestBeanCustomizer.TAGS);
+        for(Enum<?> e : eNum) {
+            model.addElement(rb.getObject(e.toString()));
+        }
+        Enum<?> def = (Enum<?>) descriptor.getValue(GenericTestBeanCustomizer.DEFAULT);
+        if (def != null) {
+            this.defaultIndex = def.ordinal();
+        } else {
+            this.defaultIndex = 0;
+        }
+        combo.setSelectedIndex(defaultIndex);
+    }
+
+    @Override
+    public boolean supportsCustomEditor() {
+        return true;
+    }
+
+    @Override
+    public Component getCustomEditor() {
+        return combo;
+    }
+
+    @Override
+    public Object getValue() {
+        return Integer.valueOf(combo.getSelectedIndex());
+    }
+
+    @Override
+    public String getAsText() {
+        Object value = combo.getSelectedItem();
+        return (String) value;
+    }
+
+    @Override
+    public void setValue(Object value) {
+        if (value instanceof Enum<?>){
+            combo.setSelectedIndex(((Enum<?>) value).ordinal());
+        } else if (value instanceof Integer) {
+            combo.setSelectedIndex(((Integer) value).intValue());
+        } else {
+            combo.setSelectedItem(value);
+        }
+    }
+
+    @Override
+    public void setAsText(String value) {
+        combo.setSelectedItem(value);
+    }
+
+    @Override
+    public void clearGui() {
+        combo.setSelectedIndex(defaultIndex);
+    }
+
+}
\ No newline at end of file

Propchange: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/EnumEditor.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java?rev=1514461&r1=1514460&r2=1514461&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java Thu Aug 15 20:06:12 2013
@@ -29,6 +29,7 @@ public enum TypeEditor {
     PasswordEditor {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new PasswordEditor(); }},
     TableEditor    {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new TableEditor(); }},
     TextAreaEditor {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new TextAreaEditor(descriptor); }},
+    EnumEditor     {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new EnumEditor(descriptor); }},
     ;
     // Some editors may need the descriptor
     abstract PropertyEditor getInstance(PropertyDescriptor descriptor);

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1514461&r1=1514460&r2=1514461&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Thu Aug 15 20:06:12 2013
@@ -343,6 +343,7 @@ Previously the default was 1, which coul
 
 <h3>I18N</h3>
 <ul>
+<li><bugzilla>55241</bugzilla> - Need GUI Editor to process fields which are based on Enums with localised display strings</li>
 </ul>
 
 <h3>General</h3>