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 kh...@apache.org on 2001/10/08 06:15:09 UTC

cvs commit: jakarta-jmeter/src/org/apache/jmeter/protocol/http/gui CookiePanel.java

khammond    01/10/07 21:15:09

  Modified:    src/org/apache/jmeter/protocol/http/gui CookiePanel.java
  Log:
  New GUI style.
  
  Revision  Changes    Path
  1.9       +257 -305  jakarta-jmeter/src/org/apache/jmeter/protocol/http/gui/CookiePanel.java
  
  Index: CookiePanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/gui/CookiePanel.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- CookiePanel.java	2001/07/14 19:51:07	1.8
  +++ CookiePanel.java	2001/10/08 04:15:09	1.9
  @@ -60,7 +60,7 @@
   import java.awt.*;
   import java.awt.event.*;
   import java.io.*;
  -
  +import javax.swing.text.*;
   import org.apache.jmeter.protocol.http.control.*;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.gui.*;
  @@ -69,20 +69,23 @@
    *  Allows the user to specify if she needs cookie services, and give parameters
    *  for this service.
    *
  - *@author     $Author: mstover1 $
  - *@created    $Date: 2001/07/14 19:51:07 $
  - *@version    $Revision: 1.8 $
  + *@author     $Author: khammond $
  + *@created    $Date: 2001/10/08 04:15:09 $
  + *@version    $Revision: 1.9 $
    */
  -public class CookiePanel extends JPanel implements ModelSupported
  +public class CookiePanel extends JPanel implements ModelSupported, ActionListener
   {
  -
   	CookieManager manager;
   	InnerTableModel tableModel;
  -
  -	/**
  -	 *  A table to show the authentication information
  -	 */
   	JTable cookieTable;
  +	JTextField nicknameField;
  +	JButton addButton;
  +	JButton deleteButton;
  +	JButton loadButton;
  +	JButton saveButton;
  +	JPanel cookieManagerPanel;
  +	JTextPane nicknameTextPane;
  +	JTextArea nicknameText;
   	NamePanel namePanel;
   
   	/**
  @@ -123,108 +126,218 @@
   	public void updateGui()
   	{
   		tableModel.fireTableDataChanged();
  -		namePanel.updateGui();
   	}
   
  -	/**
  -	 *  Shows the main cookie configuration panel
  -	 */
  -	public void init()
  +	/************************************************************
  +	 *  Description of the Method
  +	 *
  +	 *@param  e  Description of Parameter
  +	 ***********************************************************/
  +	public void actionPerformed(ActionEvent e)
   	{
  -		this.setLayout(new VerticalLayout());
  -		namePanel = new NamePanel(manager);
  -		this.add(namePanel);
  -		cookieTable = new JTable(tableModel);
  -		cookieTable.setCellSelectionEnabled(false);
  -		cookieTable.setRowSelectionAllowed(true);
  -		cookieTable.setColumnSelectionAllowed(false);
  -		cookieTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  +		String action = e.getActionCommand();
   
  -		JPanel main = new JPanel();
  -		main.setLayout(new BorderLayout());
  +		if (action.equals("Delete"))
  +		{
  +			if (tableModel.getRowCount() > 0)
  +			{
  +				// If a table cell is being edited, we must cancel the editing before 
  +				// deleting the row
  +				if (cookieTable.isEditing())
  +				{
  +					TableCellEditor cellEditor = cookieTable.getCellEditor(cookieTable.getEditingRow(), cookieTable.getEditingColumn());
  +					cellEditor.cancelCellEditing();
  +				}
   
  -		JScrollPane scroller = new JScrollPane(cookieTable);
  -		JTableHeader tableHeader = cookieTable.getTableHeader();
  -		scroller.setColumnHeaderView(tableHeader);
  -		main.add(scroller);
  -		CookieUpdater updater = new CookieUpdater();
  -		ButtonPanel buttons = new ButtonPanel();
  -		buttons.addButtonListener(buttons.ADD_BUTTON,updater);
  -		buttons.addButtonListener(buttons.EDIT_BUTTON,updater);
  -		buttons.addButtonListener(buttons.DELETE_BUTTON,
  -			new ActionListener()
  -			{
  -				/**
  -				 *  !ToDo (Method description)
  -				 *
  -				 *@param  e  !ToDo (Parameter description)
  -				 */
  -				public void actionPerformed(ActionEvent e)
  +				int rowSelected = cookieTable.getSelectedRow();
  +
  +				if (rowSelected != -1)
   				{
  -					int row = cookieTable.getSelectedRow();
  -					if (row >= 0)
  +					tableModel.removeRow(rowSelected);
  +					tableModel.fireTableDataChanged();
  +
  +					// Disable the DELETE and SAVE buttons if no rows remaining after delete
  +					if (tableModel.getRowCount() == 0)
   					{
  -						manager.remove(row);
  +						deleteButton.setEnabled(false);
  +						saveButton.setEnabled(false);
   					}
  -					tableModel.fireTableDataChanged();
  -				}
  -			});
  -		buttons.addButtonListener(buttons.LOAD_BUTTON,
  -			new ActionListener()
  -			{
  -				/**
  -				 *  !ToDo (Method description)
  -				 *
  -				 *@param  e  !ToDo (Parameter description)
  -				 */
  -				public void actionPerformed(ActionEvent e)
  -				{
  -					try
  +				
  +					// Table still contains one or more rows, so highlight (select)
  +					// the appropriate one. 
  +					else
   					{
  -						File tmp = FileDialoger.promptToOpenFile()
  -								.getSelectedFile();
  -						if (tmp != null)
  +						int rowToSelect = rowSelected;
  +
  +						if (rowSelected >= tableModel.getRowCount())
   						{
  -							manager.addFile(tmp.getAbsolutePath());
  +							rowToSelect = rowSelected - 1;
   						}
  -					}
  -					catch (IOException ex)
  -					{
  -						ex.printStackTrace();
  +
  +						cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect);
   					}
   				}
  -			});
  +			}
  +		}
  +		else if(action.equals("Add"))
  +		{
  +			// If a table cell is being edited, we should accept the current value
  +			// and stop the editing before adding a new row.
  +			if (cookieTable.isEditing())
  +			{
  +				TableCellEditor cellEditor = cookieTable.getCellEditor(cookieTable.getEditingRow(), cookieTable.getEditingColumn());
  +				cellEditor.stopCellEditing();
  +			}
  +
  +			tableModel.addNewRow();
  +			tableModel.fireTableDataChanged();
   
  -		buttons.addButtonListener(buttons.SAVE_BUTTON,
  -			new ActionListener()
  +			// Enable the DELETE and SAVE buttons if they are currently disabled.
  +			if (!deleteButton.isEnabled())
  +			{
  +				deleteButton.setEnabled(true);
  +			}
  +			if (!saveButton.isEnabled())
   			{
  -				/**
  -				 *  !ToDo (Method description)
  -				 *
  -				 *@param  e  !ToDo (Parameter description)
  -				 */
  -				public void actionPerformed(ActionEvent e)
  +				saveButton.setEnabled(true);
  +			}
  +
  +			// Highlight (select) the appropriate row.
  +			int rowToSelect = tableModel.getRowCount() - 1;
  +			cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect);
  +		}
  +		else if (action.equals("Load"))
  +		{
  +			try
  +			{
  +				File tmp = FileDialoger.promptToOpenFile().getSelectedFile();
  +				if (tmp != null)
   				{
  -					try
  -					{
  -						File tmp = FileDialoger.promptToOpenFile()
  -								.getSelectedFile();
  -						if (tmp != null)
  -						{
  -							manager.save(tmp.getAbsolutePath());
  -						}
  -					}
  -					catch (IOException ex)
  +					manager.addFile(tmp.getAbsolutePath());
  +					tableModel.fireTableDataChanged();
  +
  +					if (tableModel.getRowCount() > 0)
   					{
  -						ex.printStackTrace();
  +						deleteButton.setEnabled(true);
  +						saveButton.setEnabled(true);
   					}
  +				}
  +			}
  +			catch (IOException ex)
  +			{
  +				ex.printStackTrace();
  +			}
  +		}
  +		else if (action.equals("Save"))
  +		{
  +			try
  +			{
  +				File tmp = FileDialoger.promptToSaveFile(null).getSelectedFile();
  +				if (tmp != null)
  +				{
  +					manager.save(tmp.getAbsolutePath());
   				}
  -			});
  +			}
  +			catch (IOException ex)
  +			{
  +				ex.printStackTrace();
  +			}
  +		}
  +	}
  +
  +	/**
  +	 *  Shows the main cookie configuration panel
  +	 */
  +	public void init()
  +	{
  +		// set the layout of the control panel
  +		this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
   
  -		main.add(buttons, "South");
  -		this.add(main);
  +		cookieManagerPanel = new JPanel();
  +
  +		Border margin = new EmptyBorder(10, 10, 5, 10);
  +		cookieManagerPanel.setBorder(margin);
  +
  +		cookieManagerPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
  +
  +		JLabel panelTitleLabel = new JLabel(JMeterUtils.getResString("cookie_manager_title"));
  +		Font curFont = panelTitleLabel.getFont();
  +		int curFontSize = curFont.getSize();
  +		curFontSize += 4;
  +		panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
  +		cookieManagerPanel.add(panelTitleLabel);
  +
  +		namePanel = new NamePanel(manager);
  +		cookieManagerPanel.add(namePanel);
  +
  +		JPanel cookieTablePanel = createCookieTablePanel();
  +		cookieManagerPanel.add(cookieTablePanel);
  +
  +		this.add(cookieManagerPanel);
   	}
   
  +	public JPanel createCookieTablePanel()
  +	{
  +		Border margin = new EmptyBorder(5, 10, 10, 10);
  +
  +		JPanel tempPanel = new JPanel();
  +		tempPanel.setLayout(new VerticalLayout(0, VerticalLayout.CENTER));
  +		tempPanel.setBorder(new CompoundBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("cookies_stored")), margin));
  +
  +		// create the JTable that holds one cookie per row
  +		cookieTable = new JTable(tableModel);
  +		cookieTable.setCellSelectionEnabled(true);
  +		cookieTable.setRowSelectionAllowed(true);
  +		cookieTable.setColumnSelectionAllowed(false);
  +		cookieTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  +
  +		// create a JScrollPane and place the cookie JTable inside it
  +		JScrollPane scroller = new JScrollPane(cookieTable);
  +		cookieTable.setPreferredScrollableViewportSize(new Dimension(520, 150));
  +		JTableHeader tableHeader = cookieTable.getTableHeader();
  +		scroller.setColumnHeaderView(tableHeader);
  +
  +		tempPanel.add(scroller);
  +
  +		// ADD button
  +		addButton = new JButton(JMeterUtils.getResString("add"));
  +		addButton.setMnemonic('A');
  +		addButton.setActionCommand("Add");
  +		addButton.addActionListener(this);
  +
  +		// DELETE button
  +		deleteButton = new JButton(JMeterUtils.getResString("delete"));
  +		deleteButton.setEnabled(false);  // disabled by default
  +		deleteButton.setMnemonic('D');
  +		deleteButton.setActionCommand("Delete");
  +		deleteButton.addActionListener(this);
  +
  +		// LOAD button
  +		loadButton = new JButton(JMeterUtils.getResString("load"));
  +		loadButton.setMnemonic('L');
  +		loadButton.setActionCommand("Load");
  +		loadButton.addActionListener(this);
  +
  +		// SAVE button
  +		saveButton = new JButton(JMeterUtils.getResString("save"));
  +		saveButton.setEnabled(false);  // disabled by default
  +		saveButton.setMnemonic('S');
  +		saveButton.setActionCommand("Save");
  +		saveButton.addActionListener(this);
  +
  +		// Button Panel
  +		JPanel buttonPanel = new JPanel();
  +		buttonPanel.add(addButton);
  +		buttonPanel.add(deleteButton);
  +		buttonPanel.add(loadButton);
  +		buttonPanel.add(saveButton);
  +
  +		tempPanel.add(Box.createRigidArea(new Dimension(0, 10)));
  +		tempPanel.add(buttonPanel);
  +
  +		return tempPanel;
  +	}
  +
   	/**
   	 *  Description of the Class
   	 *
  @@ -245,6 +358,24 @@
   			manager = man;
   		}
   
  +		/************************************************************
  +		 *  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
   		 *
  @@ -252,6 +383,7 @@
   		 */
   		public int getRowCount()
   		{
  +			//System.out.println("manager.getCookieCount(): " + manager.getCookieCount());
   			return manager.getCookieCount();
   		}
   
  @@ -276,15 +408,16 @@
   			return manager.getColumnName(column);
   		}
   
  -		/**
  -		 *  required by table model interface
  -		 *
  -		 *@param  column  Description of Parameter
  -		 *@return         The ColumnClass value
  -		 */
  -		public Class getColumnClass(int column)
  +
  +		public boolean isCellEditable(int row, int column)
  +		{
  +			// all table cells are editable
  +			return true;
  +		}
  +
  +		public Class getColumnClass(int column) 
   		{
  -			return manager.getColumnClass(column);
  +			return getValueAt(0, column).getClass();
   		}
   
   		/**
  @@ -319,227 +452,46 @@
   			}
   			else if (column == 5)
   			{
  -				return new Long(cook.getExpires());
  +				return manager.convertLongToDateFormatStr(cook.getExpires());
   			}
   			return null;
   		}
  -	}
  -
  -	/**
  -	 *  Updates a cookie record
  -	 *
  -	 *@author     $Author: mstover1 $
  -	 *@created    $Date: 2001/07/14 19:51:07 $
  -	 *@version    $Revision: 1.8 $
  -	 */
  -	class CookieUpdater implements ActionListener
  -	{
  -		int index;
  -		JTextField nameField = new JTextField(20);
  -		JTextField valueField = new JTextField(20);
  -		JTextField domainField = new JTextField(20);
  -		JTextField pathField = new JTextField(20);
  -		JCheckBox secureCheck = new JCheckBox("Secure");
  -		JTextField expiresField = new JTextField(20);
  -		JButton ok = new JButton("Ok");
  -		JButton cancel = new JButton("Cancel");
  -
  -		JDialog updateDialog;
  -
  -		/**
  -		 *  !ToDo (Constructor description)
  -		 */
  -		public CookieUpdater()
  -		{
  -		}
   
  -		/**
  -		 *  returns the contructed panel containing the cookie record
  +		/************************************************************
  +		 *  Sets the ValueAt attribute of the Arguments object
   		 *
  -		 *@return    !ToDo (Return description)
  -		 */
  -		public JPanel getPanel()
  +		 *@param  value  The new ValueAt value
  +		 *@param  row    The new ValueAt value
  +		 *@param  col    The new ValueAt value
  +		 ***********************************************************/
  +		public void setValueAt(Object value, int row, int column)
   		{
  -			JPanel main = new JPanel();
  -			GridBagLayout g = new GridBagLayout();
  -
  -			main.setLayout(g);
  -			GridBagConstraints c = new GridBagConstraints();
  -			c.fill = c.BOTH;
  -			c.gridwidth = 1;
  -			c.gridheight = 1;
  -			JLabel nameLabel = new JLabel(JMeterUtils.getResString("name")+":");
  -			c.gridx = 1;
  -			c.gridy = 1;
  -			g.setConstraints(nameLabel, c);
  -			main.add(nameLabel);
  -			JLabel valueLabel = new JLabel(JMeterUtils.getResString("value")+":");
  -			c.gridx = 1;
  -			c.gridy = 2;
  -			g.setConstraints(valueLabel, c);
  -			main.add(valueLabel);
  -			JLabel domainLabel = new JLabel(JMeterUtils.getResString("domain")+":");
  -			c.gridx = 1;
  -			c.gridy = 3;
  -			g.setConstraints(domainLabel, c);
  -			main.add(domainLabel);
  -			JLabel pathLabel = new JLabel(JMeterUtils.getResString("path")+":");
  -			c.gridx = 1;
  -			c.gridy = 4;
  -			g.setConstraints(pathLabel, c);
  -			main.add(pathLabel);
  -			JLabel expiresLabel = new JLabel(JMeterUtils.getResString("expiration")+":");
  -			c.gridx = 1;
  -			c.gridy = 6;
  -			g.setConstraints(expiresLabel, c);
  -			main.add(expiresLabel);
  -
  -			c.gridwidth = 2;
  -			c.gridx = 1;
  -			c.gridy = 5;
  -			g.setConstraints(secureCheck, c);
  -			c.gridwidth = 1;
  -			main.add(secureCheck);
  -
  -			c.gridx = 2;
  -			c.gridy = 1;
  -			g.setConstraints(nameField, c);
  -			main.add(nameField);
  -			c.gridx = 2;
  -			c.gridy = 2;
  -			g.setConstraints(valueField, c);
  -			main.add(valueField);
  -			c.gridx = 2;
  -			c.gridy = 3;
  -			g.setConstraints(domainField, c);
  -			main.add(domainField);
  -			c.gridx = 2;
  -			c.gridy = 4;
  -			g.setConstraints(pathField, c);
  -			main.add(pathField);
  -			c.gridx = 2;
  -			c.gridy = 6;
  -			g.setConstraints(expiresField, c);
  -			main.add(expiresField);
  -
  -			JPanel buttons = new JPanel();
  -			ok.setPreferredSize(cancel.getPreferredSize());
  -			buttons.add(ok);
  -			buttons.add(cancel);
  -			c.gridwidth = 2;
  -			c.gridx = 1;
  -			c.gridy = 7;
  -			g.setConstraints(buttons, c);
  -			main.add(buttons);
  -
  -			return main;
  -		}
  +			Cookie cook = manager.getCookie(row);
   
  -		/**
  -		 *  !ToDo (Method description)
  -		 *
  -		 *@param  e  !ToDo (Parameter description)
  -		 */
  -		public void actionPerformed(ActionEvent e)
  -		{
  -			String command = e.getActionCommand();
  -			boolean valid = true;
  -			index = -1;
  -			if (command.equals("Edit"))
  +			if (column == 0)
   			{
  -				index = cookieTable.getSelectedRow();
  -				if (index < 0)
  -				{
  -					valid = false;
  -				}
  -				else
  -				{
  -					Cookie c = manager.get(index);
  -					nameField = new JTextField(c.getName(), 20);
  -					valueField = new JTextField(c.getValue(), 20);
  -					domainField = new JTextField(c.getDomain(), 20);
  -					pathField = new JTextField(c.getPath(), 20);
  -					secureCheck = new JCheckBox("Secure", c.getSecure());
  -					expiresField = new JTextField(new Long(c.getExpires()).toString(), 20);
  -					ok = new JButton("Ok");
  -					cancel = new JButton("Cancel");
  -				}
  +				cook.setName((String)value);
  +			}
  +			else if (column == 1)
  +			{
  +				cook.setValue((String)value);
   			}
  -			else if (command.equals("Add"))
  +			else if (column == 2)
   			{
  -				nameField = new JTextField(20);
  -				valueField = new JTextField(20);
  -				domainField = new JTextField(20);
  -				pathField = new JTextField(20);
  -				secureCheck = new JCheckBox("Secure");
  -				expiresField = new JTextField(20);
  -				ok = new JButton("Ok");
  -				cancel = new JButton("Cancel");
  +				cook.setDomain((String)value);
   			}
  -			if (valid)
  +			else if (column == 3)
   			{
  -				if (updateDialog != null)
  -				{
  -					updateDialog.dispose();
  -				}
  -				updateDialog = new JDialog();
  -				updateDialog.setSize(350, 300);
  -
  -				ok.addActionListener(
  -					new ActionListener()
  -					{
  -						/**
  -						 *  !ToDo (Method description)
  -						 *
  -						 *@param  ev  !ToDo (Parameter description)
  -						 */
  -						public void actionPerformed(ActionEvent ev)
  -						{
  -							int i = index;
  -							Cookie c = new Cookie();
  -							if (i >= 0)
  -							{
  -								c = manager.get(index);
  -							}
  -							c.setName(nameField.getText());
  -							c.setValue(valueField.getText());
  -							c.setDomain(domainField.getText());
  -							c.setPath(pathField.getText());
  -							c.setSecure(secureCheck.isSelected());
  -							try
  -							{
  -								c.setExpires(Long.parseLong(expiresField.getText()));
  -							}
  -							catch (NumberFormatException ex)
  -							{
  -								c.setExpires(0);
  -							}
  -							if (i < 0)
  -							{
  -								manager.add(c);
  -							}
  -							tableModel.fireTableDataChanged();
  -							updateDialog.dispose();
  -						}
  -					});
  -				cancel.addActionListener(
  -					new ActionListener()
  -					{
  -						/**
  -						 *  !ToDo (Method description)
  -						 *
  -						 *@param  ev  !ToDo (Parameter description)
  -						 */
  -						public void actionPerformed(ActionEvent ev)
  -						{
  -							updateDialog.dispose();
  -						}
  -					});
  -				updateDialog.getContentPane().add(getPanel());
  -				updateDialog.show();
  +				cook.setPath((String)value);
  +			}
  +			else if (column == 4)
  +			{
  +				cook.setSecure(((Boolean)value).booleanValue());
   			}
  +			else if (column == 5)
  +			{
  +				cook.setExpires(manager.convertDateFormatStrToLong((String)value));
  +			}
   		}
   	}
  -
  -
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org