You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2008/11/11 03:12:05 UTC
svn commit: r712912 -
/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java
Author: sebb
Date: Mon Nov 10 18:12:05 2008
New Revision: 712912
URL: http://svn.apache.org/viewvc?rev=712912&view=rev
Log:
I18N version of JLabeledRadio (radio button group)
Added:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java (with props)
Added: jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java?rev=712912&view=auto
==============================================================================
--- jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java (added)
+++ jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java Mon Nov 10 18:12:05 2008
@@ -0,0 +1,166 @@
+/*
+ * 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.jorphan.gui;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ButtonModel;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.apache.jmeter.util.JMeterUtils;
+
+/**
+ * JLabeledRadio will create a set of Radio buttons with a label.
+ * This is a version of the original JLabelledRadio class, but modified
+ * to accept resource names rather than language strings.
+ *
+ */
+public class JLabeledRadioI18N extends JPanel implements JLabeledField, ActionListener {
+
+ private final JLabel mLabel = new JLabel();
+
+ private final ButtonGroup bGroup = new ButtonGroup();
+
+ private final ArrayList mChangeListeners = new ArrayList(3);
+
+ /**
+ *
+ * @param label_resouce text resource name for group label
+ * @param item_resources list of resource names for individual buttons
+ * @param selectedItem button to be selected (if not null)
+ */
+ public JLabeledRadioI18N(String label_resouce, String[] item_resources, String selectedItem) {
+ setLabel(label_resouce);
+ init(item_resources, selectedItem);
+ }
+
+ /**
+ * Method is responsible for creating the JRadioButtons and adding them to
+ * the ButtonGroup.
+ *
+ * The resource name is used as the action command for the button model,
+ * and the reource value is used to set the button label.
+ *
+ * @param resouces list of resource names
+ * @param selected initially selected resource (if not null)
+ *
+ */
+ private void init(String[] resouces, String selected) {
+ this.add(mLabel);
+ for (int idx = 0; idx < resouces.length; idx++) {
+ JRadioButton btn = new JRadioButton(JMeterUtils.getResString(resouces[idx]));
+ btn.setActionCommand(resouces[idx]);
+ btn.addActionListener(this);
+ // add the button to the button group
+ this.bGroup.add(btn);
+ // add the button
+ this.add(btn);
+ if (selected != null && selected.equals(resouces[idx])) {
+ btn.setSelected(true);
+ }
+ }
+ }
+
+ /**
+ * The implementation will get the resource name from the selected radio button
+ * in the JButtonGroup.
+ */
+ public String getText() {
+ return this.bGroup.getSelection().getActionCommand();
+ }
+
+ /**
+ * The implementation will iterate through the radio buttons and find the
+ * match. It then sets it to selected and sets all other radio buttons as
+ * not selected.
+ * @param resourcename name of resource whose button is to be selected
+ */
+ public void setText(String resourcename) {
+ Enumeration en = this.bGroup.getElements();
+ while (en.hasMoreElements()) {
+ ButtonModel model = ((JRadioButton) en.nextElement()).getModel();
+ if (model.getActionCommand().equals(resourcename)) {
+ this.bGroup.setSelected(model, true);
+ } else {
+ this.bGroup.setSelected(model, false);
+ }
+ }
+ }
+
+ /**
+ * Set the group label from the resource name.
+ *
+ * @param label_resource
+ */
+ public final void setLabel(String label_resource) {
+ this.mLabel.setText(JMeterUtils.getResString(label_resource));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jorphan.gui.JLabeledField#addChangeListener(javax.swing.event.ChangeListener)
+ */
+ public void addChangeListener(ChangeListener pChangeListener) {
+ this.mChangeListeners.add(pChangeListener);
+ }
+
+ /**
+ * Notify all registered change listeners that the text in the text field
+ * has changed.
+ */
+ private void notifyChangeListeners() {
+ ChangeEvent ce = new ChangeEvent(this);
+ for (int index = 0; index < mChangeListeners.size(); index++) {
+ ((ChangeListener) mChangeListeners.get(index)).stateChanged(ce);
+ }
+ }
+
+ /**
+ * Method will return all the label and JRadioButtons. ButtonGroup is
+ * excluded from the list.
+ */
+ public List getComponentList() {
+ List comps = new LinkedList();
+ comps.add(mLabel);
+ Enumeration en = this.bGroup.getElements();
+ while (en.hasMoreElements()) {
+ comps.add(en.nextElement());
+ }
+ return comps;
+ }
+
+ /**
+ * When a radio button is clicked, an ActionEvent is triggered.
+ */
+ public void actionPerformed(ActionEvent e) {
+ this.notifyChangeListeners();
+ }
+
+}
Propchange: jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledRadioI18N.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org