
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_swing_table_TableCellEditor__
#define __javax_swing_table_TableCellEditor__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JTable;
      namespace event
      {
          class CellEditorListener;
      }
      namespace table
      {
          class TableCellEditor;
      }
    }
  }
}

class javax::swing::table::TableCellEditor : public ::java::lang::Object
{

public:
  virtual ::java::awt::Component * getTableCellEditorComponent(::javax::swing::JTable *, ::java::lang::Object *, jboolean, jint, jint) = 0;
  virtual ::java::lang::Object * getCellEditorValue() = 0;
  virtual jboolean isCellEditable(::java::util::EventObject *) = 0;
  virtual jboolean shouldSelectCell(::java::util::EventObject *) = 0;
  virtual jboolean stopCellEditing() = 0;
  virtual void cancelCellEditing() = 0;
  virtual void addCellEditorListener(::javax::swing::event::CellEditorListener *) = 0;
  virtual void removeCellEditorListener(::javax::swing::event::CellEditorListener *) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_table_TableCellEditor__
