Пример #1
0
static AtkStateSet*
jaw_object_ref_state_set (AtkObject *atk_obj)
{
	JawObject *jaw_obj = JAW_OBJECT(atk_obj);
	AtkStateSet* state_set = jaw_obj->state_set;
	atk_state_set_clear_states( state_set );

	jobject ac = jaw_obj->acc_context;
	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" );
	jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleStateSet", "()Ljavax/accessibility/AccessibleStateSet;" );
	jobject jstate_set = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );

	jclass classAccessibleStateSet = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleStateSet" );
	jmid = (*jniEnv)->GetMethodID(jniEnv, classAccessibleStateSet, "toArray", "()[Ljavax/accessibility/AccessibleState;");
	jobjectArray jstate_arr = (*jniEnv)->CallObjectMethod( jniEnv, jstate_set, jmid );

	jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jstate_arr);
	jsize i;
	for (i = 0; i < jarr_size; i++) {
		jobject jstate = (*jniEnv)->GetObjectArrayElement( jniEnv, jstate_arr, i );
		AtkStateType state_type = jaw_util_get_atk_state_type_from_java_state( jniEnv, jstate );
		atk_state_set_add_state( state_set, state_type );
		if (state_type == ATK_STATE_ENABLED) {
			atk_state_set_add_state( state_set, ATK_STATE_SENSITIVE );
		}
	}

	g_object_ref(G_OBJECT(state_set));

	return state_set;
}
Пример #2
0
static void
jaw_value_get_current_value (AtkValue *obj, GValue *value)
{
  if (!value)
  {
    return;
  }

  JawObject *jaw_obj = JAW_OBJECT(obj);
  ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
  jobject atk_value = data->atk_value;

  JNIEnv *jniEnv = jaw_util_get_jni_env();
  jclass classAtkValue = (*jniEnv)->FindClass(jniEnv,
                                              "org/GNOME/Accessibility/AtkValue");
  jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
                                          classAtkValue,
                                          "get_current_value",
                                          "()Ljava/lang/Number;");
  jobject jnumber = (*jniEnv)->CallObjectMethod(jniEnv,
                                                atk_value,
                                                jmid);

  if (!jnumber)
  {
    return;
  }

  get_g_value_from_java_number(jniEnv, jnumber, value);
}
Пример #3
0
static void
free_callback_para (CallbackPara *para)
{
  JNIEnv *jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    free_callback_para(para);
    return;
  }

  if (para->global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("free_callback_para: para->global_ac == NULL");
    free_callback_para(para);
    return;
  }

  (*jniEnv)->DeleteGlobalRef(jniEnv, para->global_ac);

  if (para->args) {
    (*jniEnv)->DeleteGlobalRef(jniEnv, para->args);
  }

  g_free(para);
}
Пример #4
0
static gint
jaw_table_get_selected_rows (AtkTable *table, gint **selected)
{
	JawObject *jaw_obj = JAW_OBJECT(table);
	TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
	jobject atk_table = data->atk_table;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "get_selected_rows", "()[I");
	jintArray jrowArray = (*jniEnv)->CallObjectMethod(jniEnv, atk_table, jmid);

	if (!jrowArray) {
		return 0;
	}

	jsize length = (*jniEnv)->GetArrayLength(jniEnv, jrowArray);
	jint *jrows = (*jniEnv)->GetIntArrayElements(jniEnv, jrowArray, NULL);
	gint *rows = g_new(gint, length);

	gint i;
	for (i = 0; i < length; i++) {
		rows[i] = (gint)jrows[i];
	}

	(*jniEnv)->ReleaseIntArrayElements(jniEnv, jrowArray, jrows, JNI_ABORT);

	return (gint)length;
}
Пример #5
0
static void
jaw_object_finalize (GObject *gobject)
{
	/* Customized finalize code */
	JawObject *jaw_obj = JAW_OBJECT(gobject);
	AtkObject *atk_obj = ATK_OBJECT(gobject);
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	if (atk_obj->name != NULL) {
		(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
		(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
		jaw_obj->jstrName = NULL;
		atk_obj->name = NULL;
	}

	if (atk_obj->description != NULL) {
		(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrDescription, atk_obj->description);
		(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
		jaw_obj->jstrDescription = NULL;
		atk_obj->description = NULL;
	}

	if (jaw_obj->state_set != NULL) {
		g_object_unref(G_OBJECT(jaw_obj->state_set));
	}

	/* Chain up to parent's finalize method */
	G_OBJECT_CLASS(jaw_object_parent_class)->finalize(gobject);
}
Пример #6
0
static AtkObject*
jaw_impl_ref_child (AtkObject *atk_obj, gint i)
{
  JawObject *jaw_obj = JAW_OBJECT(atk_obj);
  jobject ac = jaw_obj->acc_context;
  JNIEnv *jniEnv = jaw_util_get_jni_env();

  jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
                                                       "javax/accessibility/AccessibleContext" );
  jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
                                          classAccessibleContext,
                                          "getAccessibleChild",
                                          "(I)Ljavax/accessibility/Accessible;" );
  jobject jchild = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid, i );
  if (jchild == NULL)
  {
    return NULL;
  }

  jclass classAccessible = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/Accessible" );
  jmid = (*jniEnv)->GetMethodID(jniEnv,
                                classAccessible,
                                "getAccessibleContext",
                                "()Ljavax/accessibility/AccessibleContext;" );
  jobject child_ac = (*jniEnv)->CallObjectMethod( jniEnv, jchild, jmid );

  AtkObject *obj = (AtkObject*) jaw_impl_get_instance( jniEnv, child_ac );
  if (G_OBJECT(obj) != NULL)
    g_object_ref(G_OBJECT(obj));

  return obj;
}
Пример #7
0
static gchar*
jaw_text_get_selection (AtkText *text,
		gint selection_num,
		gint *start_offset, gint *end_offset)
{
	JawObject *jaw_obj = JAW_OBJECT(text);
	TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
	jobject atk_text = data->atk_text;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "get_selection", "()Lorg/GNOME/Accessibility/AtkText$StringSequence;");
	jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv, atk_text, jmid);

	if (jStrSeq == NULL) {
		return NULL;
	}
	
	jclass classStringSeq = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText$StringSequence");
	jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv, classStringSeq, "str", "Ljava/lang/String;");
	jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv, classStringSeq, "start_offset", "I");
	jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv, classStringSeq, "end_offset", "I");

	jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
	*start_offset = (gint)(*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
	*end_offset = (gint)(*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
	
	return jaw_text_get_gtext_from_jstr(jniEnv, data, jStr);
}
Пример #8
0
static G_CONST_RETURN gchar*
jaw_object_get_name (AtkObject *atk_obj)
{
	JawObject *jaw_obj = JAW_OBJECT(atk_obj);
	jobject ac = jaw_obj->acc_context;
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	if (atk_object_get_role(atk_obj) == ATK_ROLE_COMBO_BOX
			&& atk_object_get_n_accessible_children(atk_obj) == 1) {
		AtkSelection *selection = ATK_SELECTION(atk_obj);
		if (selection != NULL) {
			AtkObject *child = atk_selection_ref_selection(selection, 0);
			if (child != NULL) {
				return atk_object_get_name(child);
			}
		}
	}
	
	jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" );
	jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleName", "()Ljava/lang/String;" );
	jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );

	if (atk_obj->name != NULL) {
		(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
		(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
	}

	if (jstr != NULL) {
		jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
		atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, jaw_obj->jstrName, NULL);
	}

	return atk_obj->name;
}
Пример #9
0
gboolean
jaw_util_is_same_jobject(gconstpointer a, gconstpointer b)
{
  JNIEnv *jniEnv = jaw_util_get_jni_env();
  if ( (*jniEnv)->IsSameObject(jniEnv, (jobject)a, (jobject)b) ) {
    return TRUE;
  } else {
    return FALSE;
  }
}
Пример #10
0
JawImpl*
jaw_impl_get_instance (JNIEnv *jniEnv, jobject ac)
{
  JawImpl *jaw_impl;
  jniEnv = jaw_util_get_jni_env();

  if (jniEnv == NULL)
    return NULL;

  g_mutex_lock(&objectTableMutex);
  if (objectTable == NULL)
    objectTable = g_hash_table_new (NULL, NULL);
  g_mutex_unlock(&objectTableMutex);

  jaw_impl = object_table_lookup(jniEnv, ac);

  if (jaw_impl == NULL)
  {
    jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, ac);
    if (global_ac != NULL)
    {
      guint tflag = jaw_util_get_tflag_from_jobj(jniEnv, global_ac);
      jaw_impl = (JawImpl*)g_object_new(JAW_TYPE_IMPL(tflag), NULL);
      if (jaw_impl != NULL)
      {
        JawObject *jaw_obj = JAW_OBJECT(jaw_impl);

        if (jaw_obj != NULL)
        {
          jaw_obj->acc_context = global_ac;
          jaw_obj->storedData = g_hash_table_new(g_str_hash, g_str_equal);
          aggregate_interface(jniEnv, jaw_obj, tflag);
          atk_object_initialize(ATK_OBJECT(jaw_impl), NULL);
          object_table_insert(jniEnv, global_ac, jaw_impl);
        } else
        {
          if (jaw_debug)
            g_warning("jaw_impl_get_instance: jaw_obj == NULL");
          return NULL;
        }
      } else
      {
        if (jaw_debug)
          g_warning("jaw_impl_get_instance: jaw_impl == NULL");
      }
    } else
    {
      if (jaw_debug)
        g_warning("jaw_impl_get_instance: global_ac == NULL");
      return NULL;
    }
  }
  return jaw_impl;
}
Пример #11
0
static gdouble
jaw_value_get_increment (AtkValue *obj)
{
  JawObject *jaw_obj = JAW_OBJECT(obj);
  ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
  jobject atk_value = data->atk_value;
  JNIEnv *env = jaw_util_get_jni_env();
  jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
  jmethodID jmid = (*env)->GetMethodID(env, classAtkValue, "getIncrement", "()D");
  return (*env)->CallDoubleMethod(env, atk_value, jmid);
}
Пример #12
0
void
jaw_value_data_finalize (gpointer p)
{
  ValueData *data = (ValueData*)p;
  JNIEnv *jniEnv = jaw_util_get_jni_env();

  if (data && data->atk_value)
  {
    (*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_value);
    data->atk_value = NULL;
  }
}
Пример #13
0
gpointer
jaw_text_data_init (jobject ac)
{
	TextData *data = g_new0(TextData, 1);

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classText, "<init>", "(Ljavax/accessibility/AccessibleContext;)V");
	jobject jatk_text = (*jniEnv)->NewObject(jniEnv, classText, jmid, ac);
	data->atk_text = (*jniEnv)->NewGlobalRef(jniEnv, jatk_text);

	return data;
}
Пример #14
0
static gint
jaw_object_get_n_children (AtkObject *atk_obj)
{
	JawObject *jaw_obj = JAW_OBJECT(atk_obj);
	jobject ac = jaw_obj->acc_context;
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" );
	jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleChildrenCount", "()I");
	jint count = (*jniEnv)->CallIntMethod( jniEnv, ac, jmid );

	return (gint)count;
}
Пример #15
0
static gint
jaw_table_get_n_rows (AtkTable *table)
{
	JawObject *jaw_obj = JAW_OBJECT(table);
	TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
	jobject atk_table = data->atk_table;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "get_n_rows", "()I");
	jint jrows = (*jniEnv)->CallIntMethod(jniEnv, atk_table, jmid);

	return (gint)jrows;
}
Пример #16
0
static gint
jaw_table_get_row_extent_at (AtkTable *table, gint row, gint column)
{
	JawObject *jaw_obj = JAW_OBJECT(table);
	TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
	jobject atk_table = data->atk_table;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "get_row_extent_at", "(II)I");
	jint jextent = (*jniEnv)->CallIntMethod(jniEnv, atk_table, jmid, (jint)row, (jint)column);

	return (gint)jextent;
}
Пример #17
0
static gint
jaw_text_get_n_selections (AtkText *text)
{
	JawObject *jaw_obj = JAW_OBJECT(text);
	TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
	jobject atk_text = data->atk_text;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "get_n_selections", "()I");
	jint jselections = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);

	return (gint)jselections;
}
Пример #18
0
static gunichar
jaw_text_get_character_at_offset (AtkText *text,
				gint offset)
{
	JawObject *jaw_obj = JAW_OBJECT(text);
	TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
	jobject atk_text = data->atk_text;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "get_character_at_offset", "(I)C");
	jchar jcharacter = (*jniEnv)->CallCharMethod( jniEnv, atk_text, jmid, (jint)offset );

	return (gunichar)jcharacter;
}
Пример #19
0
static gint
jaw_text_get_offset_at_point (AtkText *text,
		gint x, gint y, AtkCoordType coords)
{
	JawObject *jaw_obj = JAW_OBJECT(text);
	TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
	jobject atk_text = data->atk_text;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "get_offset_at_point", "(III)I");
	jint joffset = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid, (jint)x, (jint)y, (jint)coords);

	return (gint)joffset;
}
Пример #20
0
static gchar*
jaw_text_get_text (AtkText *text,
		gint start_offset, gint end_offset)
{
	JawObject *jaw_obj = JAW_OBJECT(text);
	TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
	jobject atk_text = data->atk_text;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "get_text", "(II)Ljava/lang/String;");
	jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, atk_text, jmid, (jint)start_offset, (jint)end_offset );

	return jaw_text_get_gtext_from_jstr(jniEnv, data, jstr);
}
Пример #21
0
static gboolean
component_removed_handler (gpointer p)
{
  JNIEnv *jniEnv;

  CallbackPara *para = (CallbackPara*)p;
  jobject global_ac = para->global_ac;
  jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    if (jaw_debug)
      g_warning("component_removed_handler: env == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("component_removed_handler: global_ac == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
  if (jaw_impl == NULL)
  {
    if (jaw_debug)
      g_warning("component_removed_handler: jaw_impl == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  AtkObject* atk_obj = ATK_OBJECT(jaw_impl);

  if (atk_obj == NULL)
  {
    if (jaw_debug)
      g_warning("component_removed_handler: atk_obj == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }
  if (atk_object_get_role(atk_obj) == ATK_ROLE_TOOL_TIP)
    atk_object_notify_state_change(atk_obj, ATK_STATE_SHOWING, FALSE);
  free_callback_para(para);

  return G_SOURCE_REMOVE;
}
Пример #22
0
static AtkRange*
jaw_value_get_range(AtkValue *obj)
{

  JawObject *jaw_obj = JAW_OBJECT(obj);
  ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
  jobject atk_value = data->atk_value;

  JNIEnv *env = jaw_util_get_jni_env();
  jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
  jmethodID jmidMin = (*env)->GetMethodID(env, classAtkValue, "getMinimumValue", "()D");
  jmethodID jmidMax = (*env)->GetMethodID(env, classAtkValue, "getMaximumValue", "()D");
  return atk_range_new((gdouble)(*env)->CallDoubleMethod(env, atk_value, jmidMin),
                       (gdouble)(*env)->CallDoubleMethod(env, atk_value, jmidMax),
                       NULL); // NULL description
}
Пример #23
0
/**
 * Signal is emitted when the position or size of the component changes.
 */
static gboolean
bounds_changed_handler (gpointer p)
{
  JNIEnv *jniEnv;

  CallbackPara *para = (CallbackPara*)p;
  jobject global_ac = para->global_ac;
  jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    if (jaw_debug)
      g_warning("bounds_changed_handler: env == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("bounds_changed_handler: global_ac == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  JawImpl* jaw_impl = jaw_impl_get_instance(jniEnv, global_ac);
  if (jaw_impl == NULL)
  {
    if (jaw_debug)
      g_warning("bounds_changed_handler: jaw_impl == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  AtkObject* atk_obj = ATK_OBJECT(jaw_impl);

  if (atk_obj == NULL)
  {
    if (jaw_debug)
      g_warning("bounds_changed_handler: atk_obj == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }
  g_signal_emit_by_name(atk_obj, "bounds_changed");
  free_callback_para(para);

  return G_SOURCE_REMOVE;
}
Пример #24
0
static gint
jaw_object_get_index_in_parent (AtkObject *atk_obj)
{
	if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1) {
		return jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj);
	}

	JawObject *jaw_obj = JAW_OBJECT(atk_obj);
	jobject ac = jaw_obj->acc_context;
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" );
	jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleIndexInParent", "()I");
	jint index = (*jniEnv)->CallIntMethod( jniEnv, ac, jmid );

	return (gint)index;
}
Пример #25
0
static void
jaw_impl_initialize (AtkObject *atk_obj, gpointer data)
{
  ATK_OBJECT_CLASS(jaw_impl_parent_class)->initialize(atk_obj, data);

  JawObject *jaw_obj = JAW_OBJECT(atk_obj);
  jobject ac = jaw_obj->acc_context;
  JNIEnv *jniEnv = jaw_util_get_jni_env();

  jclass classAtkWrapper = (*jniEnv)->FindClass(jniEnv,
                                                "org/GNOME/Accessibility/AtkWrapper");
  jmethodID jmid = (*jniEnv)->GetStaticMethodID(jniEnv,
                                                classAtkWrapper,
                                                "registerPropertyChangeListener",
                                                "(Ljavax/accessibility/AccessibleContext;)V");
  (*jniEnv)->CallStaticVoidMethod(jniEnv, classAtkWrapper, jmid, ac);
}
Пример #26
0
void
jaw_table_data_finalize (gpointer p)
{
	TableData *data = (TableData*)p;
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	if (data && data->atk_table) {
		if (data->description != NULL) {
			(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrDescription, data->description);
			(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrDescription);
			data->jstrDescription = NULL;
			data->description = NULL;
		}

		(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_table);
		data->atk_table = NULL;
	}
}
Пример #27
0
static gboolean
jaw_table_is_selected (AtkTable *table, gint row, gint column)
{
	JawObject *jaw_obj = JAW_OBJECT(table);
	TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
	jobject atk_table = data->atk_table;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "is_selected", "(II)Z");
	jboolean jselected = (*jniEnv)->CallBooleanMethod(jniEnv, atk_table, jmid, (jint)row, (jint)column);

	if (jselected == JNI_TRUE) {
		return TRUE;
	}

	return FALSE;
}
Пример #28
0
void
jaw_text_data_finalize (gpointer p)
{
	TextData *data = (TextData*)p;
	JNIEnv *jniEnv = jaw_util_get_jni_env();

	if (data && data->atk_text) {
		if (data->text != NULL) {
			(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrText, data->text);
			(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrText);
			data->jstrText = NULL;
			data->text = NULL;
		}

		(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_text);
		data->atk_text = NULL;
	}
}
Пример #29
0
static void
jaw_value_set_value(AtkValue *obj, const gdouble value)
{
  if (!value)
    return;

  JawObject *jaw_obj = JAW_OBJECT(obj);
  ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
  jobject atk_value = data->atk_value;

  JNIEnv *env = jaw_util_get_jni_env();
  jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
  jmethodID jmid = (*env)->GetMethodID(env,
                                       classAtkValue,
                                          "setValue",
                                          "(Ljava/lang/Number;)V");
  (*env)->CallVoidMethod(env, atk_value, jmid,(jdouble)value);
}
Пример #30
0
static gboolean
jaw_text_set_caret_offset (AtkText *text,
			gint offset)
{
	JawObject *jaw_obj = JAW_OBJECT(text);
	TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
	jobject atk_text = data->atk_text;

	JNIEnv *jniEnv = jaw_util_get_jni_env();
	jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
	jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "set_caret_offset", "(I)Z");
	jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv, atk_text, jmid, (jint)offset);

	if (jresult == JNI_TRUE) {
		return TRUE;
	} else {
		return FALSE;
	}
}