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:44:23 UTC

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

khammond    01/10/07 21:44:23

  Modified:    src/org/apache/jmeter/protocol/http/gui HeaderPanel.java
  Log:
  New GUI style.
  
  Revision  Changes    Path
  1.5       +257 -24   jakarta-jmeter/src/org/apache/jmeter/protocol/http/gui/HeaderPanel.java
  
  Index: HeaderPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/gui/HeaderPanel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- HeaderPanel.java	2001/07/26 00:34:48	1.4
  +++ HeaderPanel.java	2001/10/08 04:44:23	1.5
  @@ -71,11 +71,11 @@
    *  and give parameters
    *  for this service.
    *
  - *@author     $Author: mstover1 $
  - *@created    $Date: 2001/07/26 00:34:48 $
  - *@version    $Revision: 1.4 $
  + *@author     $Author: khammond $
  + *@created    $Date: 2001/10/08 04:44:23 $
  + *@version    $Revision: 1.5 $
    ***********************************************************/
  -public class HeaderPanel extends JPanel implements ModelSupported {
  +public class HeaderPanel extends JPanel implements ModelSupported, ActionListener {
   
   	HeaderManager manager;
   	InnerTableModel tableModel;
  @@ -86,6 +86,12 @@
   	JTable headerTable;
   	NamePanel namePanel;
   
  +	JButton addButton;
  +	JButton deleteButton;
  +	JButton loadButton;
  +	JButton saveButton;
  +	JPanel headerManagerPanel;
  +
   	/************************************************************
   	 *  Default constructor
   	 ***********************************************************/
  @@ -129,6 +135,33 @@
   	 ***********************************************************/
   	public void init()
   	{
  +		// set the layout of the control panel
  +		this.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
  +
  +		headerManagerPanel = new JPanel();
  +
  +		Border margin = new EmptyBorder(10, 10, 5, 10);
  +		headerManagerPanel.setBorder(margin);
  +
  +		headerManagerPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
  +
  +		JLabel panelTitleLabel = new JLabel(JMeterUtils.getResString("header_manager_title"));
  +		Font curFont = panelTitleLabel.getFont();
  +		int curFontSize = curFont.getSize();
  +		curFontSize += 4;
  +		panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize));
  +		headerManagerPanel.add(panelTitleLabel);
  +
  +		namePanel = new NamePanel(manager);
  +		headerManagerPanel.add(namePanel);
  +
  +		JPanel headerTablePanel = createHeaderTablePanel();
  +		headerManagerPanel.add(headerTablePanel);
  +
  +		this.add(headerManagerPanel);
  +
  +
  +/*
   		this.setLayout(new VerticalLayout());
   		namePanel = new NamePanel(manager);
   		this.add(namePanel);
  @@ -152,11 +185,6 @@
   		buttonPanel.addButtonListener(buttonPanel.DELETE_BUTTON,
   			new ActionListener()
   			{
  -				/************************************************************
  -				 *  !ToDo (Method description)
  -				 *
  -				 *@param  e  !ToDo (Parameter description)
  -				 ***********************************************************/
   				public void actionPerformed(ActionEvent e)
   				{
   					int row = headerTable.getSelectedRow();
  @@ -170,11 +198,6 @@
   		buttonPanel.addButtonListener(buttonPanel.LOAD_BUTTON,
   			new ActionListener()
   			{
  -				/************************************************************
  -				 *  !ToDo (Method description)
  -				 *
  -				 *@param  e  !ToDo (Parameter description)
  -				 ***********************************************************/
   				public void actionPerformed(ActionEvent e)
   				{
   					try
  @@ -196,11 +219,6 @@
   		buttonPanel.addButtonListener(buttonPanel.SAVE_BUTTON,
   			new ActionListener()
   			{
  -				/************************************************************
  -				 *  !ToDo (Method description)
  -				 *
  -				 *@param  e  !ToDo (Parameter description)
  -				 ***********************************************************/
   				public void actionPerformed(ActionEvent e)
   				{
   					try
  @@ -220,14 +238,194 @@
   			});
   		main.add(buttonPanel, "South");
   		this.add(main);
  +*/
   	}
   
   	/************************************************************
  +	 *  Description of the Method
  +	 *
  +	 *@param  e  Description of Parameter
  +	 ***********************************************************/
  +	public void actionPerformed(ActionEvent e)
  +	{
  +		String action = e.getActionCommand();
  +
  +		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 (headerTable.isEditing())
  +				{
  +					TableCellEditor cellEditor = headerTable.getCellEditor(headerTable.getEditingRow(), headerTable.getEditingColumn());
  +					cellEditor.cancelCellEditing();
  +				}
  +
  +				int rowSelected = headerTable.getSelectedRow();
  +
  +				if (rowSelected != -1)
  +				{
  +					tableModel.removeRow(rowSelected);
  +					tableModel.fireTableDataChanged();
  +
  +					// Disable the DELETE and SAVE buttons if no rows remaining after delete
  +					if (tableModel.getRowCount() == 0)
  +					{
  +						deleteButton.setEnabled(false);
  +						saveButton.setEnabled(false);
  +					}
  +				
  +					// Table still contains one or more rows, so highlight (select)
  +					// the appropriate one. 
  +					else
  +					{
  +						int rowToSelect = rowSelected;
  +
  +						if (rowSelected >= tableModel.getRowCount())
  +						{
  +							rowToSelect = rowSelected - 1;
  +						}
  +
  +						headerTable.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 (headerTable.isEditing())
  +			{
  +				TableCellEditor cellEditor = headerTable.getCellEditor(headerTable.getEditingRow(), headerTable.getEditingColumn());
  +				cellEditor.stopCellEditing();
  +			}
  +
  +			tableModel.addNewRow();
  +			tableModel.fireTableDataChanged();
  +
  +			// Enable the DELETE and SAVE buttons if they are currently disabled.
  +			if (!deleteButton.isEnabled())
  +			{
  +				deleteButton.setEnabled(true);
  +			}
  +			if (!saveButton.isEnabled())
  +			{
  +				saveButton.setEnabled(true);
  +			}
  +
  +			// Highlight (select) the appropriate row.
  +			int rowToSelect = tableModel.getRowCount() - 1;
  +			headerTable.setRowSelectionInterval(rowToSelect, rowToSelect);
  +		}
  +		else if (action.equals("Load"))
  +		{
  +			try
  +			{
  +				File tmp = FileDialoger.promptToOpenFile().getSelectedFile();
  +				if (tmp != null)
  +				{
  +					manager.addFile(tmp.getAbsolutePath());
  +					tableModel.fireTableDataChanged();
  +
  +					if (tableModel.getRowCount() > 0)
  +					{
  +						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();
  +			}
  +		}
  +	}
  +
  +	public JPanel createHeaderTablePanel()
  +	{
  +		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("headers_stored")), margin));
  +
  +		// create the JTable that holds header per row
  +		headerTable = new JTable(tableModel);
  +		headerTable.setCellSelectionEnabled(true);
  +		headerTable.setRowSelectionAllowed(true);
  +		headerTable.setColumnSelectionAllowed(false);
  +		headerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  +
  +		// create a JScrollPane and place the header JTable inside it
  +		JScrollPane scroller = new JScrollPane(headerTable);
  +		headerTable.setPreferredScrollableViewportSize(new Dimension(520, 150));
  +		JTableHeader tableHeader = headerTable.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;
  +	}
  +
  +	/************************************************************
   	 *  Updates a header record
   	 *
  -	 *@author     $Author: mstover1 $
  -	 *@created    $Date: 2001/07/26 00:34:48 $
  -	 *@version    $Revision: 1.4 $
  +	 *@author     $Author: khammond $
  +	 *@created    $Date: 2001/10/08 04:44:23 $
  +	 *@version    $Revision: 1.5 $
   	 ***********************************************************/
   	class HeaderUpdater implements ActionListener
   	{
  @@ -390,22 +588,42 @@
   			manager = man;
   		}
   
  +		public void removeRow(int row)
  +		{
  +			manager.remove(row);
  +		}
  +
  +		public void addNewRow()
  +		{
  +			manager.add();
  +		}
  +
  +		public boolean isCellEditable(int row, int column)
  +		{
  +			// all table cells are editable
  +			return true;
  +		}
  +
  +		public Class getColumnClass(int column) 
  +		{
  +			return getValueAt(0, column).getClass();
  +		}
  +
   		 /** required by table model interface */
   		 public int getRowCount() {
   			return manager.getHeaders().size();
   		 }
  +
   		 /** required by table model interface */
   		 public int getColumnCount() {
   			return manager.getColumnCount();
   		 }
  +
   		 /** required by table model interface */
   		 public String getColumnName(int column) {
   			return manager.getColumnName(column);
  -		 }
  -		 /** required by table model interface */
  -		 public Class getColumnClass(int column) {
  -			return manager.getColumnClass(column);
   		 }
  +
   		 /** required by table model interface */
   		 public Object getValueAt(int row, int column) {
   			  Header head = manager.getHeader(row);
  @@ -416,5 +634,20 @@
   			  }
   			  return null;
   		 }
  +
  +		public void setValueAt(Object value, int row, int column)
  +		{
  +			Header header = manager.getHeader(row);
  +
  +			if (column == 0)
  +			{
  +				header.setName((String)value);
  +			}
  +			else if (column == 1)
  +			{
  +				header.setValue((String)value);
  +			}
  +		}
  +
   	 }
   }
  
  
  

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