Blame jni/src/jawtable.c

Packit Service 31d16d
/*
Packit Service 31d16d
 * Java ATK Wrapper for GNOME
Packit Service 31d16d
 * Copyright (C) 2009 Sun Microsystems Inc.
Packit Service 31d16d
 * Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
Packit Service 31d16d
 *
Packit Service 31d16d
 * This library is free software; you can redistribute it and/or
Packit Service 31d16d
 * modify it under the terms of the GNU Lesser General Public
Packit Service 31d16d
 * License as published by the Free Software Foundation; either
Packit Service 31d16d
 * version 2.1 of the License, or (at your option) any later version.
Packit Service 31d16d
 *
Packit Service 31d16d
 * This library is distributed in the hope that it will be useful,
Packit Service 31d16d
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 31d16d
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 31d16d
 * Lesser General Public License for more details.
Packit Service 31d16d
 *
Packit Service 31d16d
 * You should have received a copy of the GNU Lesser General Public
Packit Service 31d16d
 * License along with this library; if not, write to the Free Software
Packit Service 31d16d
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Packit Service 31d16d
 */
Packit Service 31d16d
Packit Service 31d16d
#include <atk/atk.h>
Packit Service 31d16d
#include <glib.h>
Packit Service 31d16d
#include "jawimpl.h"
Packit Service 31d16d
#include "jawutil.h"
Packit Service 31d16d
Packit Service 31d16d
extern void jaw_table_interface_init (AtkTableIface*);
Packit Service 31d16d
extern gpointer jaw_table_data_init (jobject ac);
Packit Service 31d16d
extern void jaw_table_data_finalize (gpointer);
Packit Service 31d16d
Packit Service 31d16d
static AtkObject*   jaw_table_ref_at(AtkTable *table, gint row, gint column);
Packit Service 31d16d
static gint         jaw_table_get_index_at(AtkTable *table, gint row, gint column);
Packit Service 31d16d
static gint         jaw_table_get_column_at_index(AtkTable *table, gint index);
Packit Service 31d16d
static gint         jaw_table_get_row_at_index(AtkTable *table, gint index);
Packit Service 31d16d
static gint         jaw_table_get_n_columns(AtkTable *table);
Packit Service 31d16d
static gint         jaw_table_get_n_rows(AtkTable *table);
Packit Service 31d16d
static gint         jaw_table_get_column_extent_at(AtkTable	*table, gint row, gint column);
Packit Service 31d16d
static gint         jaw_table_get_row_extent_at(AtkTable *table, gint row, gint column);
Packit Service 31d16d
static AtkObject*   jaw_table_get_caption(AtkTable *table);
Packit Service 31d16d
static const gchar* jaw_table_get_column_description(AtkTable *table, gint column);
Packit Service 31d16d
static const gchar* jaw_table_get_row_description(AtkTable *table, gint row);
Packit Service 31d16d
static AtkObject*   jaw_table_get_column_header(AtkTable *table, gint column);
Packit Service 31d16d
static AtkObject*   jaw_table_get_row_header(AtkTable *table, gint row);
Packit Service 31d16d
static AtkObject*   jaw_table_get_summary(AtkTable *table);
Packit Service 31d16d
static gint         jaw_table_get_selected_columns(AtkTable *table, gint **selected);
Packit Service 31d16d
static gint         jaw_table_get_selected_rows(AtkTable *table, gint **selected);
Packit Service 31d16d
static gboolean     jaw_table_is_column_selected(AtkTable *table, gint column);
Packit Service 31d16d
static gboolean     jaw_table_is_row_selected(AtkTable *table, gint row);
Packit Service 31d16d
static gboolean     jaw_table_is_selected(AtkTable *table,gint row, gint column);
Packit Service 31d16d
static gboolean     jaw_table_add_row_selection(AtkTable *table, gint row);
Packit Service 31d16d
static gboolean     jaw_table_add_column_selection(AtkTable *table, gint column);
Packit Service 31d16d
static void         jaw_table_set_row_description(AtkTable *table,
Packit Service 31d16d
                                                  gint row,
Packit Service 31d16d
                                                  const gchar *description);
Packit Service 31d16d
static void         jaw_table_set_column_description(AtkTable *table,
Packit Service 31d16d
                                                     gint column,
Packit Service 31d16d
                                                     const gchar *description);
Packit Service 31d16d
static void         jaw_table_set_row_header(AtkTable *table, gint row, AtkObject *header);
Packit Service 31d16d
static void         jaw_table_set_column_header(AtkTable *table, gint column, AtkObject *header);
Packit Service 31d16d
static void         jaw_table_set_caption(AtkTable *table, AtkObject *caption);
Packit Service 31d16d
static void         jaw_table_set_summary(AtkTable *table, AtkObject *summary);
Packit Service 31d16d
Packit Service 31d16d
typedef struct _TableData {
Packit Service 31d16d
  jobject atk_table;
Packit Service 31d16d
  gchar* description;
Packit Service 31d16d
  jstring jstrDescription;
Packit Service 31d16d
} TableData;
Packit Service 31d16d
Packit Service 31d16d
void
Packit Service 31d16d
jaw_table_interface_init (AtkTableIface *iface)
Packit Service 31d16d
{
Packit Service 31d16d
  iface->ref_at = jaw_table_ref_at;
Packit Service 31d16d
  iface->get_index_at = jaw_table_get_index_at;
Packit Service 31d16d
  iface->get_column_at_index = jaw_table_get_column_at_index;
Packit Service 31d16d
  iface->get_row_at_index = jaw_table_get_row_at_index;
Packit Service 31d16d
  iface->get_n_columns = jaw_table_get_n_columns;
Packit Service 31d16d
  iface->get_n_rows = jaw_table_get_n_rows;
Packit Service 31d16d
  iface->get_column_extent_at = jaw_table_get_column_extent_at;
Packit Service 31d16d
  iface->get_row_extent_at = jaw_table_get_row_extent_at;
Packit Service 31d16d
  iface->get_caption = jaw_table_get_caption;
Packit Service 31d16d
  iface->get_column_description = jaw_table_get_column_description;
Packit Service 31d16d
  iface->get_row_description = jaw_table_get_row_description;
Packit Service 31d16d
  iface->get_column_header = jaw_table_get_column_header;
Packit Service 31d16d
  iface->get_row_header = jaw_table_get_row_header;
Packit Service 31d16d
  iface->get_summary = jaw_table_get_summary;
Packit Service 31d16d
  iface->get_selected_columns = jaw_table_get_selected_columns;
Packit Service 31d16d
  iface->get_selected_rows = jaw_table_get_selected_rows;
Packit Service 31d16d
  iface->is_column_selected = jaw_table_is_column_selected;
Packit Service 31d16d
  iface->is_row_selected = jaw_table_is_row_selected;
Packit Service 31d16d
  iface->is_selected = jaw_table_is_selected;
Packit Service 31d16d
  iface->add_row_selection = jaw_table_add_row_selection;
Packit Service 31d16d
  iface->add_column_selection = jaw_table_add_column_selection;
Packit Service 31d16d
  iface->set_row_description = jaw_table_set_row_description;
Packit Service 31d16d
  iface->set_column_description = jaw_table_set_column_description;
Packit Service 31d16d
  iface->set_row_header = jaw_table_set_row_header;
Packit Service 31d16d
  iface->set_column_header = jaw_table_set_column_header;
Packit Service 31d16d
  iface->set_caption = jaw_table_set_caption;
Packit Service 31d16d
  iface->set_summary = jaw_table_set_summary;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
gpointer
Packit Service 31d16d
jaw_table_data_init (jobject ac)
Packit Service 31d16d
{
Packit Service 31d16d
  TableData *data = g_new0(TableData, 1);
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classTable,
Packit Service 31d16d
                                       "<init>",
Packit Service 31d16d
                                       "(Ljavax/accessibility/AccessibleContext;)V");
Packit Service 31d16d
Packit Service 31d16d
  jobject jatk_table = (*env)->NewObject(env, classTable, jmid, ac);
Packit Service 31d16d
  data->atk_table = (*env)->NewGlobalRef(env, jatk_table);
Packit Service 31d16d
Packit Service 31d16d
  return data;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
void
Packit Service 31d16d
jaw_table_data_finalize (gpointer p)
Packit Service 31d16d
{
Packit Service 31d16d
  TableData *data = (TableData*)p;
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
Packit Service 31d16d
  if (data && data->atk_table)
Packit Service 31d16d
  {
Packit Service 31d16d
    if (data->description != NULL)
Packit Service 31d16d
    {
Packit Service 31d16d
      (*env)->ReleaseStringUTFChars(env, data->jstrDescription, data->description);
Packit Service 31d16d
      (*env)->DeleteGlobalRef(env, data->jstrDescription);
Packit Service 31d16d
      data->jstrDescription = NULL;
Packit Service 31d16d
      data->description = NULL;
Packit Service 31d16d
    }
Packit Service 31d16d
Packit Service 31d16d
    (*env)->DeleteGlobalRef(env, data->atk_table);
Packit Service 31d16d
    data->atk_table = NULL;
Packit Service 31d16d
  }
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static AtkObject*
Packit Service 31d16d
jaw_table_ref_at (AtkTable *table, gint	row, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "ref_at",
Packit Service 31d16d
                                       "(II)Ljavax/accessibility/AccessibleContext;");
Packit Service 31d16d
  jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)row, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  if (!jac)
Packit Service 31d16d
    return NULL;
Packit Service 31d16d
Packit Service 31d16d
  JawImpl* jaw_impl = jaw_impl_get_instance( env, jac );
Packit Service 31d16d
Packit Service 31d16d
  if (G_OBJECT(jaw_impl) != NULL)
Packit Service 31d16d
    g_object_ref(G_OBJECT(jaw_impl));
Packit Service 31d16d
Packit Service 31d16d
  return ATK_OBJECT(jaw_impl);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_index_at (AtkTable *table, gint row, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_index_at", "(II)I");
Packit Service 31d16d
  jint index = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)index;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_column_at_index (AtkTable *table, gint index)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_at_index", "(I)I");
Packit Service 31d16d
  jint jcolumn = (*env)->CallIntMethod(env, atk_table, jmid, (jint)index);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)jcolumn;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_row_at_index (AtkTable *table, gint index)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_at_index", "(I)I");
Packit Service 31d16d
  jint jrow = (*env)->CallIntMethod(env, atk_table, jmid, (jint)index);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)jrow;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_n_columns	(AtkTable *table)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_n_columns", "()I");
Packit Service 31d16d
  jint jcolumns = (*env)->CallIntMethod(env, atk_table, jmid);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)jcolumns;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_n_rows (AtkTable *table)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_n_rows", "()I");
Packit Service 31d16d
  jint jrows = (*env)->CallIntMethod(env, atk_table, jmid);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)jrows;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_column_extent_at (AtkTable *table, gint row, gint	column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_extent_at", "(II)I");
Packit Service 31d16d
  jint jextent = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)jextent;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_row_extent_at (AtkTable *table, gint row, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_extent_at", "(II)I");
Packit Service 31d16d
  jint jextent = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)jextent;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static AtkObject*
Packit Service 31d16d
jaw_table_get_caption (AtkTable	*table)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "get_caption",
Packit Service 31d16d
                                       "()Ljavax/accessibility/AccessibleContext;");
Packit Service 31d16d
Packit Service 31d16d
  jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid);
Packit Service 31d16d
Packit Service 31d16d
  if (!jac)
Packit Service 31d16d
    return NULL;
Packit Service 31d16d
Packit Service 31d16d
  JawImpl* jaw_impl = jaw_impl_get_instance( env, jac );
Packit Service 31d16d
Packit Service 31d16d
  return ATK_OBJECT(jaw_impl);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static const gchar*
Packit Service 31d16d
jaw_table_get_column_description (AtkTable *table, gint	column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_description", "(I)Ljava/lang/String;");
Packit Service 31d16d
  jstring jstr = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  if (data->description != NULL)
Packit Service 31d16d
  {
Packit Service 31d16d
    (*env)->ReleaseStringUTFChars(env, data->jstrDescription, data->description);
Packit Service 31d16d
    (*env)->DeleteGlobalRef(env, data->jstrDescription);
Packit Service 31d16d
  }
Packit Service 31d16d
Packit Service 31d16d
  data->jstrDescription = (*env)->NewGlobalRef(env, jstr);
Packit Service 31d16d
  data->description = (gchar*)(*env)->GetStringUTFChars(env, data->jstrDescription, NULL);
Packit Service 31d16d
Packit Service 31d16d
  return data->description;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static const gchar*
Packit Service 31d16d
jaw_table_get_row_description (AtkTable *table, gint row)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_description", "(I)Ljava/lang/String;");
Packit Service 31d16d
  jstring jstr = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)row);
Packit Service 31d16d
Packit Service 31d16d
  if (data->description != NULL)
Packit Service 31d16d
  {
Packit Service 31d16d
    (*env)->ReleaseStringUTFChars(env, data->jstrDescription, data->description);
Packit Service 31d16d
    (*env)->DeleteGlobalRef(env, data->jstrDescription);
Packit Service 31d16d
  }
Packit Service 31d16d
Packit Service 31d16d
  data->jstrDescription = (*env)->NewGlobalRef(env, jstr);
Packit Service 31d16d
  data->description = (gchar*)(*env)->GetStringUTFChars(env, data->jstrDescription, NULL);
Packit Service 31d16d
Packit Service 31d16d
  return data->description;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static AtkObject*
Packit Service 31d16d
jaw_table_get_column_header (AtkTable *table, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_header", "(I)Ljavax/accessibility/AccessibleContext;");
Packit Service 31d16d
  jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  if (!jac)
Packit Service 31d16d
    return NULL;
Packit Service 31d16d
Packit Service 31d16d
  JawImpl* jaw_impl = jaw_impl_get_instance( env, jac );
Packit Service 31d16d
Packit Service 31d16d
  return ATK_OBJECT(jaw_impl);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static AtkObject*
Packit Service 31d16d
jaw_table_get_row_header (AtkTable *table, gint row)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_header", "(I)Ljavax/accessibility/AccessibleContext;");
Packit Service 31d16d
  jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid, (jint)row);
Packit Service 31d16d
Packit Service 31d16d
  if (!jac)
Packit Service 31d16d
    return NULL;
Packit Service 31d16d
Packit Service 31d16d
  JawImpl* jaw_impl = jaw_impl_get_instance( env, jac );
Packit Service 31d16d
Packit Service 31d16d
  return ATK_OBJECT(jaw_impl);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static AtkObject*
Packit Service 31d16d
jaw_table_get_summary (AtkTable *table)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_summary", "()Ljavax/accessibility/AccessibleContext;");
Packit Service 31d16d
  jobject jac = (*env)->CallObjectMethod(env, atk_table, jmid);
Packit Service 31d16d
Packit Service 31d16d
  if (!jac)
Packit Service 31d16d
    return NULL;
Packit Service 31d16d
Packit Service 31d16d
  JawImpl* jaw_impl = jaw_impl_get_instance( env, jac );
Packit Service 31d16d
Packit Service 31d16d
  return ATK_OBJECT(jaw_impl);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_selected_columns (AtkTable *table, gint **selected)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_selected_columns", "()[I");
Packit Service 31d16d
  jintArray jcolumnArray = (*env)->CallObjectMethod(env, atk_table, jmid);
Packit Service 31d16d
Packit Service 31d16d
  if (!jcolumnArray)
Packit Service 31d16d
    return 0;
Packit Service 31d16d
Packit Service 31d16d
  jsize length = (*env)->GetArrayLength(env, jcolumnArray);
Packit Service 31d16d
  jint *jcolumns = (*env)->GetIntArrayElements(env, jcolumnArray, NULL);
Packit Service 31d16d
  gint *columns = g_new(gint, length);
Packit Service 31d16d
Packit Service 31d16d
  gint i;
Packit Service 31d16d
  for (i = 0; i < length; i++) {
Packit Service 31d16d
    columns[i] = (gint)jcolumns[i];
Packit Service 31d16d
  }
Packit Service 31d16d
Packit Service 31d16d
  (*env)->ReleaseIntArrayElements(env, jcolumnArray, jcolumns, JNI_ABORT);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)length;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gint
Packit Service 31d16d
jaw_table_get_selected_rows (AtkTable *table, gint **selected)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_selected_rows", "()[I");
Packit Service 31d16d
  jintArray jrowArray = (*env)->CallObjectMethod(env, atk_table, jmid);
Packit Service 31d16d
Packit Service 31d16d
  if (!jrowArray)
Packit Service 31d16d
    return 0;
Packit Service 31d16d
Packit Service 31d16d
  jsize length = (*env)->GetArrayLength(env, jrowArray);
Packit Service 31d16d
  jint *jrows = (*env)->GetIntArrayElements(env, jrowArray, NULL);
Packit Service 31d16d
  gint *rows = g_new(gint, length);
Packit Service 31d16d
Packit Service 31d16d
  gint i;
Packit Service 31d16d
  for (i = 0; i < length; i++) {
Packit Service 31d16d
    rows[i] = (gint)jrows[i];
Packit Service 31d16d
  }
Packit Service 31d16d
Packit Service 31d16d
  (*env)->ReleaseIntArrayElements(env, jrowArray, jrows, JNI_ABORT);
Packit Service 31d16d
Packit Service 31d16d
  return (gint)length;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gboolean
Packit Service 31d16d
jaw_table_is_column_selected (AtkTable *table, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_column_selected", "(I)Z");
Packit Service 31d16d
  jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  if (jselected == JNI_TRUE)
Packit Service 31d16d
    return TRUE;
Packit Service 31d16d
Packit Service 31d16d
  return FALSE;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gboolean
Packit Service 31d16d
jaw_table_is_row_selected (AtkTable *table, gint row)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_row_selected", "(I)Z");
Packit Service 31d16d
  jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)row);
Packit Service 31d16d
Packit Service 31d16d
  if (jselected == JNI_TRUE)
Packit Service 31d16d
    return TRUE;
Packit Service 31d16d
Packit Service 31d16d
  return FALSE;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gboolean
Packit Service 31d16d
jaw_table_is_selected (AtkTable *table, gint row, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_selected", "(II)Z");
Packit Service 31d16d
  jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)row, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  if (jselected == JNI_TRUE)
Packit Service 31d16d
    return TRUE;
Packit Service 31d16d
Packit Service 31d16d
  return FALSE;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gboolean
Packit Service 31d16d
jaw_table_add_row_selection(AtkTable *table, gint row)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "addRowSelection", "(I)Z");
Packit Service 31d16d
  jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)row);
Packit Service 31d16d
Packit Service 31d16d
  if (jselected == JNI_TRUE)
Packit Service 31d16d
    return TRUE;
Packit Service 31d16d
Packit Service 31d16d
  return FALSE;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static gboolean
Packit Service 31d16d
jaw_table_add_column_selection(AtkTable *table, gint column)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "addColumnSelection", "(I)Z");
Packit Service 31d16d
  jboolean jselected = (*env)->CallBooleanMethod(env, atk_table, jmid, (jint)column);
Packit Service 31d16d
Packit Service 31d16d
  if (jselected == JNI_TRUE)
Packit Service 31d16d
    return TRUE;
Packit Service 31d16d
Packit Service 31d16d
  return FALSE;
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static void
Packit Service 31d16d
jaw_table_set_row_description(AtkTable *table, gint row, const gchar *description)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "setRowDescription",
Packit Service 31d16d
                                       "(ILjava/lang/String;)V");
Packit Service 31d16d
  jstring jstr = (*env)->NewStringUTF(env, description);
Packit Service 31d16d
  (*env)->CallVoidMethod(env, atk_table, jmid, (jint)row, jstr);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static void
Packit Service 31d16d
jaw_table_set_column_description(AtkTable *table, gint column, const gchar *description)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "setColumnDescription",
Packit Service 31d16d
                                       "(ILjava/lang/String;)V");
Packit Service 31d16d
  jstring jstr = (*env)->NewStringUTF(env, description);
Packit Service 31d16d
  (*env)->CallVoidMethod(env, atk_table, jmid, (jint)column, jstr);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static void
Packit Service 31d16d
jaw_table_set_row_header(AtkTable *table, gint row, AtkObject *header)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "setRowHeader",
Packit Service 31d16d
                                       "(ILjavax/accessibility/AccessibleTable;)V");
Packit Service 31d16d
  (*env)->CallVoidMethod(env, atk_table, jmid, (jint)row, (jobject)header);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static void
Packit Service 31d16d
jaw_table_set_column_header(AtkTable *table, gint column, AtkObject *header)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "setColumnHeader",
Packit Service 31d16d
                                       "(ILjavax/accessibility/AccessibleTable;)V");
Packit Service 31d16d
  (*env)->CallVoidMethod(env, atk_table, jmid, (jint)column, (jobject)header);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static void
Packit Service 31d16d
jaw_table_set_caption(AtkTable *table, AtkObject *caption)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "setCaption",
Packit Service 31d16d
                                       "(Ljavax/accessibility/Accessible;)V");
Packit Service 31d16d
  (*env)->CallVoidMethod(env, atk_table, jmid, (jobject)caption);
Packit Service 31d16d
}
Packit Service 31d16d
Packit Service 31d16d
static void
Packit Service 31d16d
jaw_table_set_summary(AtkTable *table, AtkObject *summary)
Packit Service 31d16d
{
Packit Service 31d16d
  JawObject *jaw_obj = JAW_OBJECT(table);
Packit Service 31d16d
  TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
Packit Service 31d16d
  jobject atk_table = data->atk_table;
Packit Service 31d16d
Packit Service 31d16d
  JNIEnv *env = jaw_util_get_jni_env();
Packit Service 31d16d
  jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
Packit Service 31d16d
  jmethodID jmid = (*env)->GetMethodID(env,
Packit Service 31d16d
                                       classAtkTable,
Packit Service 31d16d
                                       "setSummary",
Packit Service 31d16d
                                       "(Ljavax/accessibility/Accessible;)V");
Packit Service 31d16d
  (*env)->CallVoidMethod(env, atk_table, jmid, (jobject)summary);
Packit Service 31d16d
}