KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jmeter > protocol > jdbc > config > gui > PoolConfigGui


1 // $Header: /home/cvs/jakarta-jmeter/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/gui/Attic/PoolConfigGui.java,v 1.12 2004/03/05 01:38:42 sebb Exp $
2
/*
3  * Copyright 2001-2004 The Apache Software Foundation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17 */

18
19 package org.apache.jmeter.protocol.jdbc.config.gui;
20
21 import java.awt.BorderLayout JavaDoc;
22 import java.awt.event.FocusEvent JavaDoc;
23 import java.awt.event.FocusListener JavaDoc;
24
25 import javax.swing.BorderFactory JavaDoc;
26 import javax.swing.JLabel JavaDoc;
27 import javax.swing.JOptionPane JavaDoc;
28 import javax.swing.JPanel JavaDoc;
29 import javax.swing.JTextField JavaDoc;
30
31 import org.apache.jmeter.config.ConfigTestElement;
32 import org.apache.jmeter.config.gui.AbstractConfigGui;
33 import org.apache.jmeter.gui.util.VerticalPanel;
34 import org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler;
35 import org.apache.jmeter.protocol.jdbc.util.JMeter19ConnectionPool;
36 import org.apache.jmeter.testelement.TestElement;
37 import org.apache.jmeter.util.JMeterUtils;
38
39 /**
40  * @version $Revision: 1.12 $ on $Date: 2004/03/05 01:38:42 $
41  */

42 public class PoolConfigGui extends AbstractConfigGui implements FocusListener JavaDoc
43 {
44     private static String JavaDoc CONNECTIONS = "connections";
45     private static String JavaDoc MAXUSE = "maxuse";
46     private static String JavaDoc DEFAULT_MAX_USE = "50";
47     private static String JavaDoc DEFAULT_NUM_CONNECTIONS = "1";
48     private JTextField JavaDoc connField;
49     private JTextField JavaDoc maxUseField;
50
51     private boolean displayName;
52
53     public PoolConfigGui()
54     {
55         this(true);
56     }
57
58     public PoolConfigGui(boolean displayName)
59     {
60         this.displayName = displayName;
61         init();
62     }
63
64     public void configure(TestElement element)
65     {
66         super.configure(element);
67         connField.setText(
68             element.getPropertyAsString(JMeter19ConnectionPool.CONNECTIONS));
69         maxUseField.setText(
70             element.getPropertyAsString(JMeter19ConnectionPool.MAXUSE));
71     }
72
73     public TestElement createTestElement()
74     {
75         ConfigTestElement element = new ConfigTestElement();
76         modifyTestElement(element);
77         return element;
78     }
79
80     /**
81      * Modifies a given TestElement to mirror the data in the gui components.
82      * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement)
83      */

84     public void modifyTestElement(TestElement element)
85     {
86         configureTestElement(element);
87         element.setProperty(
88             JDBCSampler.CONNECTION_POOL_IMPL,
89             JMeter19ConnectionPool.class.getName());
90         element.setProperty(
91             JMeter19ConnectionPool.CONNECTIONS,
92             connField.getText());
93         element.setProperty(
94             JMeter19ConnectionPool.MAXUSE,
95             maxUseField.getText());
96     }
97
98     public String JavaDoc getLabelResource()
99     {
100         return "database_conn_pool_title";
101     }
102
103     public void focusGained(FocusEvent JavaDoc e)
104     {
105     }
106
107     public void focusLost(FocusEvent JavaDoc e)
108     {
109         String JavaDoc name = e.getComponent().getName();
110
111         if (name.equals(CONNECTIONS))
112         {
113             try
114             {
115                 Integer.parseInt(connField.getText());
116             }
117             catch (NumberFormatException JavaDoc nfe)
118             {
119                 if (connField.getText().length() > 0)
120                 {
121                     JOptionPane.showMessageDialog(
122                         this,
123                         "You must enter a valid number",
124                         "Invalid data",
125                         JOptionPane.WARNING_MESSAGE);
126                 }
127                 connField.setText(DEFAULT_NUM_CONNECTIONS);
128             }
129         }
130         else if (name.equals(MAXUSE))
131         {
132             try
133             {
134                 Integer.parseInt(maxUseField.getText());
135             }
136             catch (NumberFormatException JavaDoc nfe)
137             {
138                 if (maxUseField.getText().length() > 0)
139                 {
140                     JOptionPane.showMessageDialog(
141                         this,
142                         "You must enter a valid number",
143                         "Invalid data",
144                         JOptionPane.WARNING_MESSAGE);
145                 }
146                 maxUseField.setText(DEFAULT_NUM_CONNECTIONS);
147             }
148         }
149     }
150
151     private void init()
152     {
153         setLayout(new BorderLayout JavaDoc(0, 5));
154
155         if (displayName)
156         {
157             setBorder(makeBorder());
158             add(makeTitlePanel(), BorderLayout.NORTH);
159         }
160
161         VerticalPanel poolPanel = new VerticalPanel();
162         poolPanel.setBorder(
163             BorderFactory.createTitledBorder(
164                 JMeterUtils.getResString("database_conn_pool_props")));
165
166         poolPanel.add(createConnPanel());
167         poolPanel.add(createMaxUsePanel());
168
169         // The Center component will fill all available space. Since poolPanel
170
// has a titled border, this means that the border would extend to the
171
// bottom of the frame, which is ugly. So put the poolPanel in a
172
// second panel to fix this.
173
VerticalPanel mainPanel = new VerticalPanel();
174         mainPanel.add(poolPanel);
175
176         add(mainPanel, BorderLayout.CENTER);
177     }
178
179     private JPanel JavaDoc createConnPanel()
180     {
181         connField = new JTextField JavaDoc(DEFAULT_NUM_CONNECTIONS, 5);
182         connField.setName(CONNECTIONS);
183         connField.addFocusListener(this);
184
185         JLabel JavaDoc label =
186             new JLabel JavaDoc(JMeterUtils.getResString("database_conn_pool_size"));
187         label.setLabelFor(connField);
188
189         JPanel JavaDoc panel = new JPanel JavaDoc(new BorderLayout JavaDoc(5, 0));
190         panel.add(label, BorderLayout.WEST);
191         panel.add(connField, BorderLayout.CENTER);
192         return panel;
193     }
194
195     private JPanel JavaDoc createMaxUsePanel()
196     {
197         maxUseField = new JTextField JavaDoc(DEFAULT_MAX_USE, 5);
198         maxUseField.setName(MAXUSE);
199         maxUseField.addFocusListener(this);
200
201         JLabel JavaDoc label =
202             new JLabel JavaDoc(
203                 JMeterUtils.getResString("database_conn_pool_max_usage"));
204         label.setLabelFor(maxUseField);
205
206         JPanel JavaDoc panel = new JPanel JavaDoc(new BorderLayout JavaDoc(5, 0));
207         panel.add(label, BorderLayout.WEST);
208         panel.add(maxUseField, BorderLayout.CENTER);
209         return panel;
210     }
211 }
212
Popular Tags