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 ms...@apache.org on 2002/06/15 00:45:17 UTC
cvs commit: jakarta-jmeter/src_1/org/apache/jmeter/util Data.java
mstover1 2002/06/14 15:45:17
Modified: src_1/org/apache/jmeter/assertions/gui AssertionGui.java
src_1/org/apache/jmeter/gui/util JMeterColor.java
PowerTableModel.java
src_1/org/apache/jmeter/protocol/http/control Cookie.java
CookieManager.java
src_1/org/apache/jmeter/protocol/http/gui CookiePanel.java
src_1/org/apache/jmeter/util Data.java
Added: src_1/org/apache/jmeter/gui/util TextAreaCellRenderer.java
TextAreaTableCellEditor.java
Log:
More refactoring and improvements in GUI code
Revision Changes Path
1.7 +8 -1 jakarta-jmeter/src_1/org/apache/jmeter/assertions/gui/AssertionGui.java
Index: AssertionGui.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/assertions/gui/AssertionGui.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AssertionGui.java 14 Jun 2002 00:12:33 -0000 1.6
+++ AssertionGui.java 14 Jun 2002 22:45:16 -0000 1.7
@@ -79,9 +79,11 @@
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
-import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellRenderer;
import org.apache.jmeter.assertions.Assertion;
import org.apache.jmeter.gui.util.PowerTableModel;
+import org.apache.jmeter.gui.util.TextAreaCellRenderer;
+import org.apache.jmeter.gui.util.TextAreaTableCellEditor;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
@@ -311,6 +313,10 @@
stringTable.addFocusListener(this);
tableModel = new PowerTableModel(new String[]{COL_NAME},new Class[]{String.class});
stringTable.setModel(tableModel);
+ TextAreaCellRenderer renderer = new TextAreaCellRenderer();
+ stringTable.setDefaultEditor(String.class,new TextAreaTableCellEditor());
+ stringTable.setRowHeight(renderer.getPreferredHeight());
+ stringTable.setDefaultRenderer(String.class,renderer);
panel.setLayout(new BorderLayout());
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
JMeterUtils.getResString("assertion_patterns_to_test")));
@@ -345,6 +351,7 @@
public void actionPerformed(ActionEvent e)
{
int index = stringTable.getSelectedRow();
+ stringTable.getCellEditor(index,stringTable.getSelectedColumn()).cancelCellEditing();
if(index > -1)
{
tableModel.removeRow(index);
1.4 +1 -0 jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterColor.java
Index: JMeterColor.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/util/JMeterColor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JMeterColor.java 14 Jun 2002 00:12:33 -0000 1.3
+++ JMeterColor.java 14 Jun 2002 22:45:16 -0000 1.4
@@ -66,6 +66,7 @@
public final static Color dark_green = new JMeterColor(0F,.5F,0F);
public final static Color YELLOW = new JMeterColor(1F,1F,0);
+ public final static Color LAVENDER = new JMeterColor(206F/255F,207F/255F,1F);
public JMeterColor(float r,float g,float b)
{
1.2 +85 -6 jakarta-jmeter/src_1/org/apache/jmeter/gui/util/PowerTableModel.java
Index: PowerTableModel.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/gui/util/PowerTableModel.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PowerTableModel.java 14 Jun 2002 00:12:33 -0000 1.1
+++ PowerTableModel.java 14 Jun 2002 22:45:16 -0000 1.2
@@ -1,9 +1,9 @@
package org.apache.jmeter.gui.util;
-import javax.swing.table.DefaultTableModel;
+import java.lang.reflect.Constructor;
+import javax.swing.table.DefaultTableModel;
import org.apache.jmeter.util.Data;
-
/**
* @author mstover
*
@@ -36,6 +36,7 @@
*@param row Description of Parameter
***************************************/
public void removeRow(int row) {
+ System.out.println("Removing row: "+row);
if (model.size() > row) {
model.removeRow(row);
}
@@ -50,8 +51,83 @@
/****************************************
***************************************/
- public void addNewRow() {
- model.addRow();
+ public void addNewRow() {
+ addRow(createDefaultRow());
+ }
+
+ private Object[] createDefaultRow()
+ {
+ Object[] rowData = new Object[getColumnCount()];
+ for(int i = 0;i < rowData.length;i++)
+ {
+ rowData[i] = createDefaultValue(i);
+ }
+ return rowData;
+ }
+
+ public Object[] getRowData(int row)
+ {
+ Object[] rowData = new Object[getColumnCount()];
+ for(int i = 0;i < rowData.length;i++)
+ {
+ rowData[i] = model.getColumnValue(i,row);
+ }
+ return rowData;
+ }
+
+ private Object createDefaultValue(int i)
+ {
+ Class colClass = getColumnClass(i);
+ try {
+ return colClass.newInstance();
+ } catch(Exception e) {
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{String.class});
+ return constr.newInstance(new Object[]{""});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Integer.TYPE});
+ return constr.newInstance(new Object[]{new Integer(0)});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Long.TYPE});
+ return constr.newInstance(new Object[]{new Long(0L)});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Boolean.TYPE});
+ return constr.newInstance(new Object[]{new Boolean(false)});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Float.TYPE});
+ return constr.newInstance(new Object[]{new Float(0F)});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Double.TYPE});
+ return constr.newInstance(new Object[]{new Double(0D)});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Character.TYPE});
+ return constr.newInstance(new Object[]{new Character(' ')});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Byte.TYPE});
+ return constr.newInstance(new Object[]{new Byte(Byte.MIN_VALUE)});
+ } catch(Exception err) {
+ }
+ try {
+ Constructor constr = colClass.getConstructor(new Class[]{Short.TYPE});
+ return constr.newInstance(new Object[]{new Short(Short.MIN_VALUE)});
+ } catch(Exception err) {
+ }
+ }
+ return "";
}
/****************************************
@@ -126,8 +202,11 @@
*@param column !ToDo (Parameter description)
***************************************/
public void setValueAt(Object value, int row, int column) {
- model.setCurrentPos(row);
- model.addColumnValue(model.getHeaders()[column], value);
+ if(row < model.size())
+ {
+ model.setCurrentPos(row);
+ model.addColumnValue(model.getHeaders()[column], value);
+ }
}
}
1.1 jakarta-jmeter/src_1/org/apache/jmeter/gui/util/TextAreaCellRenderer.java
Index: TextAreaCellRenderer.java
===================================================================
package org.apache.jmeter.gui.util;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;
/**
* @author mstover
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
*/
public class TextAreaCellRenderer implements TableCellRenderer {
private JTextArea rend = new JTextArea("");
/**
* @see TableCellRenderer#getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable arg0,
Object arg1,
boolean arg2,
boolean arg3,
int arg4,
int arg5)
{
rend = new JTextArea(arg1.toString());
rend.revalidate();
if(!arg3 && !arg2)
{
rend.setBackground(JMeterColor.LAVENDER);
}
if(arg0.getRowHeight(arg4) != getPreferredHeight())
{
arg0.setRowHeight(arg4,getPreferredHeight());
}
return rend;
}
public int getPreferredHeight()
{
return rend.getPreferredSize().height + 5;
}
}
1.1 jakarta-jmeter/src_1/org/apache/jmeter/gui/util/TextAreaTableCellEditor.java
Index: TextAreaTableCellEditor.java
===================================================================
package org.apache.jmeter.gui.util;
import java.awt.Component;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.util.EventObject;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.table.TableCellEditor;
/**
* @author mstover
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
*/
public class TextAreaTableCellEditor implements TableCellEditor,FocusListener {
JScrollPane pane;
JTextArea editor;
String value = "";
Set listeners = new HashSet();
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column)
{
editor = new JTextArea(value.toString());
editor.addFocusListener(this);
editor.setEnabled(true);
editor.setRows(editor.getRows()+1);
editor.revalidate();
pane = new JScrollPane(editor);
pane.validate();
return pane;
}
public void focusLost(FocusEvent fe)
{
stopCellEditing();
}
public void focusGained(FocusEvent fe)
{
}
public TextAreaTableCellEditor()
{
editor = new JTextArea();
editor.setRows(3);
}
public Component getComponent()
{
return editor;
}
public Object getCellEditorValue()
{
return editor.getText();
}
public void cancelCellEditing()
{
Iterator iter = listeners.iterator();
while(iter.hasNext())
{
((CellEditorListener)iter.next()).editingCanceled(new ChangeEvent(this));
}
}
public boolean stopCellEditing()
{
Iterator iter = listeners.iterator();
while(iter.hasNext())
{
((CellEditorListener)iter.next()).editingStopped(new ChangeEvent(this));
}
return true;
}
public void addCellEditorListener(CellEditorListener lis)
{
listeners.add(lis);
}
public boolean isCellEditable(EventObject anEvent)
{
if (anEvent instanceof MouseEvent)
{
if (((MouseEvent)anEvent).getClickCount() > 1)
{
return true;
}
}
return false;
}
public void removeCellEditorListener(CellEditorListener lis)
{
listeners.remove(lis);
}
public boolean shouldSelectCell(EventObject eo)
{
return true;
}
}
1.4 +2 -17 jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/Cookie.java
Index: Cookie.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/Cookie.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Cookie.java 29 Apr 2002 17:08:10 -0000 1.3
+++ Cookie.java 14 Jun 2002 22:45:17 -0000 1.4
@@ -188,23 +188,8 @@
* get the secure for this object.
*/
public boolean getSecure() {
- Object ret = getProperty(SECURE);
- if(ret == null)
- {
- return false;
- }
- if(ret instanceof Boolean)
- {
- return ((Boolean)ret).booleanValue();
- }
- else if(ret instanceof String)
- {
- return Boolean.getBoolean((String)ret);
- }
- else
- {
- return false;
- }
+ System.out.println("Secure = "+getProperty(SECURE));
+ return this.getPropertyAsBoolean(SECURE);
}
/**
1.6 +1 -20 jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/CookieManager.java
Index: CookieManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/control/CookieManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- CookieManager.java 23 May 2002 15:47:05 -0000 1.5
+++ CookieManager.java 14 Jun 2002 22:45:17 -0000 1.6
@@ -98,16 +98,6 @@
*/
private static SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE, dd-MMM-yyyy HH:mm:ss zzz");
- private final static int columnCount = 6;
- private final static String[] columnNames = {
- JMeterUtils.getResString("name"),
- JMeterUtils.getResString("value"),
- JMeterUtils.getResString("domain"),
- JMeterUtils.getResString("path"),
- JMeterUtils.getResString("secure"),
- JMeterUtils.getResString("expiration"),
- };
-
private static List addableList = new LinkedList();
static
@@ -132,15 +122,6 @@
return getCookies().size();
}
- public int getColumnCount()
- {
- return columnCount;
- }
-
- public String getColumnName(int column)
- {
- return columnNames[column];
- }
// Incorrect method. Always returns String. I changed CookiePanel code to perform
// this lookup.
1.7 +87 -194 jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/CookiePanel.java
Index: CookiePanel.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/protocol/http/gui/CookiePanel.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CookiePanel.java 23 May 2002 15:47:05 -0000 1.6
+++ CookiePanel.java 14 Jun 2002 22:45:17 -0000 1.7
@@ -53,18 +53,37 @@
* <http://www.apache.org/>.
*/
package org.apache.jmeter.protocol.http.gui;
-import java.awt.*;
-import java.awt.event.*;
-import java.io.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.table.*;
-import javax.swing.text.*;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.JTextPane;
+import javax.swing.ListSelectionModel;
+import javax.swing.border.Border;
+import javax.swing.border.CompoundBorder;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableCellEditor;
import org.apache.jmeter.config.gui.AbstractConfigGui;
-import org.apache.jmeter.gui.*;
import org.apache.jmeter.gui.util.FileDialoger;
+import org.apache.jmeter.gui.util.PowerTableModel;
+import org.apache.jmeter.gui.util.TextAreaTableCellEditor;
import org.apache.jmeter.gui.util.VerticalLayout;
-import org.apache.jmeter.protocol.http.control.*;
+import org.apache.jmeter.protocol.http.control.Cookie;
+import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
@@ -78,7 +97,16 @@
***************************************/
public class CookiePanel extends AbstractConfigGui implements ActionListener
{
- InnerTableModel tableModel;
+ private final static int columnCount = 6;
+ private final static String[] columnNames = {
+ JMeterUtils.getResString("name"),
+ JMeterUtils.getResString("value"),
+ JMeterUtils.getResString("domain"),
+ JMeterUtils.getResString("path"),
+ JMeterUtils.getResString("secure"),
+ JMeterUtils.getResString("expiration"),
+ };
+
JTable cookieTable;
JTextField nicknameField;
JButton addButton;
@@ -88,13 +116,15 @@
JPanel cookieManagerPanel;
JTextPane nicknameTextPane;
JTextArea nicknameText;
+ PowerTableModel tableModel;
/****************************************
* Default constructor
***************************************/
public CookiePanel()
{
- tableModel = new InnerTableModel();
+ tableModel = new PowerTableModel(columnNames,new Class[]{String.class,
+ String.class,String.class,String.class,Boolean.class,Long.class});
init();
}
@@ -193,7 +223,10 @@
File tmp = FileDialoger.promptToOpenFile().getSelectedFile();
if(tmp != null)
{
- tableModel.manager.addFile(tmp.getAbsolutePath());
+ CookieManager manager = new CookieManager();
+ manager.addFile(tmp.getAbsolutePath());
+ Cookie cookie = manager.get(0);
+ addCookieToTable(cookie);
tableModel.fireTableDataChanged();
if(tableModel.getRowCount() > 0)
@@ -216,7 +249,7 @@
File tmp = FileDialoger.promptToSaveFile(null).getSelectedFile();
if(tmp != null)
{
- tableModel.manager.save(tmp.getAbsolutePath());
+ createCookieManager().save(tmp.getAbsolutePath());
}
}
catch(IOException ex)
@@ -227,6 +260,42 @@
}
}
+ private void addCookieToTable(Cookie cookie) {
+ tableModel.addRow(new Object[]{cookie.getName(),cookie.getValue(),
+ cookie.getDomain(),cookie.getPath(),
+ new Boolean(cookie.getSecure()),
+ new Long(cookie.getExpires())});
+ }
+
+ private CookieManager createCookieManager()
+ {
+ CookieManager cookieManager = new CookieManager();
+ for(int i = 0;i < tableModel.getRowCount();i++)
+ {
+ Cookie cookie = createCookie(tableModel.getRowData(i));
+ cookieManager.add(cookie);
+ }
+ return cookieManager;
+ }
+
+ private Cookie createCookie(Object[] rowData)
+ {
+ Cookie cookie = new Cookie((String)rowData[0],(String)rowData[1],(String)rowData[2],
+ (String)rowData[3],((Boolean)rowData[4]).booleanValue(),
+ ((Long)rowData[5]).longValue());
+ return cookie;
+ }
+
+ private void populateTable(CookieManager manager)
+ {
+ Iterator iter = manager.getCookies().iterator();
+ while(iter.hasNext())
+ {
+ addCookieToTable((Cookie)iter.next());
+ }
+ }
+
+
/****************************************
* !ToDo (Method description)
*
@@ -234,7 +303,7 @@
***************************************/
public TestElement createTestElement()
{
- CookieManager cookieManager = tableModel.manager;
+ CookieManager cookieManager = createCookieManager();
configureTestElement(cookieManager);
return cookieManager;
}
@@ -247,7 +316,7 @@
public void configure(TestElement el)
{
super.configure(el);
- tableModel.manager = (CookieManager)el;
+ populateTable((CookieManager)el);
}
/****************************************
@@ -365,181 +434,5 @@
return tempPanel;
}
- /****************************************
- * Description of the Class
- *
- *@author mike
- *@created July 14, 2001
- *@version $Revision$
- ***************************************/
- public class InnerTableModel extends AbstractTableModel
- {
- CookieManager manager;
-
- /****************************************
- * Constructor for the InnerTableModel object
- *
- *@param man Description of Parameter
- ***************************************/
- public InnerTableModel(CookieManager man)
- {
- manager = man;
- }
-
- /****************************************
- * !ToDo (Constructor description)
- ***************************************/
- public InnerTableModel()
- {
- manager = new CookieManager();
- }
-
- /****************************************
- * Description of the Method
- *
- *@param row Description of Parameter
- ***************************************/
- public void removeRow(int row)
- {
- manager.remove(row);
- }
-
- /****************************************
- ***************************************/
- public void addNewRow()
- {
- manager.add();
- }
-
- /****************************************
- * required by table model interface
- *
- *@return The RowCount value
- ***************************************/
- public int getRowCount()
- {
- //System.out.println("manager.getCookieCount(): " + manager.getCookieCount());
- return manager.getCookieCount();
- }
-
- /****************************************
- * required by table model interface
- *
- *@return The ColumnCount value
- ***************************************/
- public int getColumnCount()
- {
- return manager.getColumnCount();
- }
-
- /****************************************
- * required by table model interface
- *
- *@param column Description of Parameter
- *@return The ColumnName value
- ***************************************/
- public String getColumnName(int column)
- {
- return manager.getColumnName(column);
- }
-
-
- /****************************************
- * !ToDoo (Method description)
- *
- *@param row !ToDo (Parameter description)
- *@param column !ToDo (Parameter description)
- *@return !ToDo (Return description)
- ***************************************/
- public boolean isCellEditable(int row, int column)
- {
- // all table cells are editable
- return true;
- }
-
- /****************************************
- * !ToDoo (Method description)
- *
- *@param column !ToDo (Parameter description)
- *@return !ToDo (Return description)
- ***************************************/
- public Class getColumnClass(int column)
- {
- return getValueAt(0, column).getClass();
- }
-
- /****************************************
- * required by table model interface
- *
- *@param row Description of Parameter
- *@param column Description of Parameter
- *@return The ValueAt value
- ***************************************/
- public Object getValueAt(int row, int column)
- {
- Cookie cook = manager.getCookie(row);
- if(column == 0)
- {
- return cook.getName();
- }
- else if(column == 1)
- {
- return cook.getValue();
- }
- else if(column == 2)
- {
- return cook.getDomain();
- }
- else if(column == 3)
- {
- return cook.getPath();
- }
- else if(column == 4)
- {
- return new Boolean(cook.getSecure());
- }
- else if(column == 5)
- {
- return manager.convertLongToDateFormatStr(cook.getExpires());
- }
- return null;
- }
-
- /****************************************
- * Sets the ValueAt attribute of the Arguments object
- *
- *@param value The new ValueAt value
- *@param row The new ValueAt value
- *@param column !ToDo (Parameter description)
- ***************************************/
- public void setValueAt(Object value, int row, int column)
- {
- Cookie cook = manager.getCookie(row);
-
- if(column == 0)
- {
- cook.setName((String)value);
- }
- else if(column == 1)
- {
- cook.setValue((String)value);
- }
- else if(column == 2)
- {
- cook.setDomain((String)value);
- }
- else if(column == 3)
- {
- cook.setPath((String)value);
- }
- else if(column == 4)
- {
- cook.setSecure(((Boolean)value).booleanValue());
- }
- else if(column == 5)
- {
- cook.setExpires(manager.convertDateFormatStrToLong((String)value));
- }
- }
- }
+
}
1.2 +4 -1 jakarta-jmeter/src_1/org/apache/jmeter/util/Data.java
Index: Data.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/util/Data.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Data.java 14 Jun 2002 00:12:34 -0000 1.1
+++ Data.java 14 Jun 2002 22:45:17 -0000 1.2
@@ -153,7 +153,10 @@
tempList = (List)data.get(it.next());
tempList.remove(currentPos);
}
- currentPos--;
+ if(currentPos > 0)
+ {
+ currentPos--;
+ }
size--;
}
} // End Method
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>