gcc/libjava/gnu/awt/gtk/natGtkLabelPeer.cc

60 lines
1.3 KiB
C++
Raw Normal View History

// Native Gtk AWT label code.
#include <config.h>
#include <gcj/cni.h>
#include "gtkcommon.h"
#include <gnu/awt/gtk/GtkLabelPeer.h>
#include <java/awt/Label.h>
void
gnu::awt::gtk::GtkLabelPeer::setText (java::lang::String *text)
{
_Jv_GdkThreadLock sync;
jsize len = 0;
if (text)
len = JvGetStringUTFLength (text);
// FIXME: this can allocate an unbounded amount. Should use heap
// even though it is slower.
char buf[len + 1];
if (text)
JvGetStringUTFRegion (text, 0, len, buf);
buf[len] = '\0';
gtk_label_set_text (GTK_LABEL (ptr), buf);
}
void
gnu::awt::gtk::GtkLabelPeer::setAlignment (jint alignment)
{
using namespace java::awt;
gfloat value = 0.5;
if (alignment == Label::LEFT)
value = 0.0;
else if (alignment == Label::RIGHT)
value = 1.0;
_Jv_GdkThreadLock sync;
gtk_misc_set_alignment (GTK_MISC (ptr), 0.5f, value);
}
void
gnu::awt::gtk::GtkLabelPeer::create ()
{
if (! ptr)
{
_Jv_GdkThreadLock sync;
// This is a little inefficient.
ptr = (gnu::gcj::RawData *) gtk_label_new ("");
using namespace ::java::awt;
Label *label = reinterpret_cast<Label *> (awtComponent);
setText (label->getText ());
setAlignment (label->getAlignment ());
}
gnu::awt::gtk::GtkComponentPeer::create ();
}