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

#ifndef __javax_swing_ListSelectionModel__
#define __javax_swing_ListSelectionModel__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class ListSelectionModel;
      namespace event
      {
          class ListSelectionListener;
      }
    }
  }
}

class javax::swing::ListSelectionModel : public ::java::lang::Object
{

public:
  virtual void setSelectionMode(jint) = 0;
  virtual jint getSelectionMode() = 0;
  virtual void clearSelection() = 0;
  virtual jint getMinSelectionIndex() = 0;
  virtual jint getMaxSelectionIndex() = 0;
  virtual jboolean isSelectedIndex(jint) = 0;
  virtual jboolean isSelectionEmpty() = 0;
  virtual void setSelectionInterval(jint, jint) = 0;
  virtual void addSelectionInterval(jint, jint) = 0;
  virtual void removeSelectionInterval(jint, jint) = 0;
  virtual void insertIndexInterval(jint, jint, jboolean) = 0;
  virtual void removeIndexInterval(jint, jint) = 0;
  virtual jint getAnchorSelectionIndex() = 0;
  virtual void setAnchorSelectionIndex(jint) = 0;
  virtual jint getLeadSelectionIndex() = 0;
  virtual void setLeadSelectionIndex(jint) = 0;
  virtual void setValueIsAdjusting(jboolean) = 0;
  virtual jboolean getValueIsAdjusting() = 0;
  virtual void addListSelectionListener(::javax::swing::event::ListSelectionListener *) = 0;
  virtual void removeListSelectionListener(::javax::swing::event::ListSelectionListener *) = 0;
  static const jint SINGLE_SELECTION = 0;
  static const jint SINGLE_INTERVAL_SELECTION = 1;
  static const jint MULTIPLE_INTERVAL_SELECTION = 2;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_ListSelectionModel__
