Package com.eviware.soapui.impl.rest.panels.resource

Source Code of com.eviware.soapui.impl.rest.panels.resource.RestParamsTableModel

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.impl.rest.panels.resource;

import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

import com.eviware.soapui.impl.rest.support.RestParamProperty;
import com.eviware.soapui.impl.rest.support.RestParamsPropertyHolder;
import com.eviware.soapui.impl.rest.support.RestParamsPropertyHolder.ParameterStyle;
import com.eviware.soapui.model.testsuite.TestPropertyListener;

public class RestParamsTableModel extends AbstractTableModel implements TableModel, TestPropertyListener
{
  protected RestParamsPropertyHolder params;

  public RestParamsTableModel( RestParamsPropertyHolder params )
  {
    this.params = params;

    params.addTestPropertyListener( this );
  }

  public void release()
  {
    params.removeTestPropertyListener( this );
  }

  public int getColumnCount()
  {
    return 3;
  }

  @Override
  public String getColumnName( int column )
  {
    switch( column )
    {
    case 0 :
      return "Name";
    case 1 :
      return "Default value";
    case 2 :
      return "Style";
    }

    return null;
  }

  @Override
  public Class<?> getColumnClass( int columnIndex )
  {
    return columnIndex < 2 ? String.class : ParameterStyle.class;
  }

  @Override
  public boolean isCellEditable( int rowIndex, int columnIndex )
  {
    return true;
  }

  public int getRowCount()
  {
    return params.getPropertyCount();
  }

  public Object getValueAt( int rowIndex, int columnIndex )
  {
    RestParamProperty prop = params.getPropertyAt( rowIndex );

    switch( columnIndex )
    {
    case 0 :
      return prop.getName();
    case 1 :
      return prop.getDefaultValue();
      // case 1 : return StringUtils.hasContent(prop.getValue()) ?
      // prop.getValue() : prop.getDefaultValue();
    case 2 :
      return prop.getStyle();
    }

    return null;
  }

  @Override
  public void setValueAt( Object value, int rowIndex, int columnIndex )
  {
    RestParamProperty prop = params.getPropertyAt( rowIndex );

    switch( columnIndex )
    {
    case 0 :
      params.renameProperty( prop.getName(), value.toString() );
      return;
    case 1 :
      prop.setDefaultValue( value.toString() );
      prop.setValue( value.toString() );
      return;
    case 2 :
      prop.setStyle( ( ParameterStyle )value );
      return;
    }
  }

  public RestParamProperty getParameterAt( int selectedRow )
  {
    return params.getPropertyAt( selectedRow );
  }

  public void propertyAdded( String name )
  {
    fireTableDataChanged();
  }

  public void propertyRemoved( String name )
  {
    fireTableDataChanged();
  }

  public void propertyRenamed( String oldName, String newName )
  {
    fireTableDataChanged();
  }

  public void propertyValueChanged( String name, String oldValue, String newValue )
  {
    fireTableCellUpdated( params.getPropertyIndex( name ), 1 );
  }

  public void propertyMoved( String name, int oldIndex, int newIndex )
  {
    fireTableDataChanged();
  }

  public void setParams( RestParamsPropertyHolder params )
  {
    this.params.removeTestPropertyListener( this );
    this.params = params;
    this.params.addTestPropertyListener( this );

    fireTableDataChanged();
  }
}
TOP

Related Classes of com.eviware.soapui.impl.rest.panels.resource.RestParamsTableModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.