Estoy tratando de pasar el EventBus de mi aplicación a un widget declarado en un UiBinder a través de su constructor. Estoy usando la anotación @UiConstructor para marcar un constructor que acepta EventBus, pero no sé cómo hacer referencia al objeto desde mi código ui.xml.pasando un objeto al constructor de un widget definido en uibinder
Es decir, necesito algo así como
WidgetThatNeedsAnEventBus.java
public class WidgetThatNeedsAnEventBus extends Composite
{
private EventBus eventBus;
@UiConstructor
public WidgetThatNeedsAnEventBus(EventBus eventBus)
{
this.eventBus = eventBus;
}
}
TheUiBinderThatWillDeclareAWTNAEB.ui.xml
<g:HTMLPanel>
<c:WidgetThatNeedsAnEventBus eventBus=_I_need_some_way_to_specify_my_apps_event_bus_ />
</g:HTMLPanel>
no tengo ningún problema de pasar a un valor estático el WidgetThatNeedsAnEventBus, y puedo usar un método de fábrica para crear un nuevo objeto EventBus. Pero lo que necesito es pasar el EventBus ya existente de mi aplicación.
¿Hay alguna manera de referirse a objetos ya existentes en un UiBinder?
también un buen ejemplo para los métodos de fábrica: http://blog.jeffdouglas.com/2010/02/24/gwt-uibinder-passing-objects-to-widgets/ – z00bs
No quiero instanciar un nuevo objeto, ya que parece que un método de fábrica requeriría. Aquí hay un ejemplo diferente: digamos que tengo un String llamado myString, y en un archivo ui.xml tengo un declarado. ¿Cómo puedo especificar a ese que debe usar el constructor Label (String) y pasar el valor de myString a ese constructor? @UiField (provided = true) parece prometedor, pero no puedo ver cómo pasar myString a un constructor. Quizás esto no es posible con UiBinder? –
Al pasar una cadena: cree y anote el constructor de su clase ui con 'UiConstructor' y en el archivo ui.xml defina un atributo con exactamente el mismo nombre que el argumento de los constructores. 'public @UiConstructor MyWidget (String myString)' y ' '. –
z00bs