SORU
17 Mayıs 2011, Salı


Nasıl kızaran Tel testinde EventBus kullanmak

Henüz GWT aşina değilim ve EventBus nasıl kullanılacağını veya proje üzerinden bir Olay göndermek için daha iyi çözümler varsa orada kendimi merak ediyorum.

Widget 1 Düğmesi var. Widget 2 düğmesine bastığımda sarsan bir Etiket var. Bu aletler bir DockLayout

    RootLayoutPanel rootLayoutPanel = RootLayoutPanel.get();
    DockLayoutPanel dock = new DockLayoutPanel(Unit.EM);

    dock.addWest(new Widget1(), 10);
    dock.add(new Widget2());

    rootLayoutPanel.add(dock);

Widget 1 Bir handleClickAlert ilan ediyorum

@UiHandler("button")
void handleClickAlert(ClickEvent e) {
    //fireEvent(e); 
}

Umarım birisi bana yardımcı olabilir. Teşekkürler!

CEVAP
17 Mayıs 2011, Salı


Mantıksal parçalar (MVP ile örneğin) farklı parçaları içine proje bölmek bazen iletişim kurmak gerekir. Tipik iletişim durum değişiklikleri, örneğin gönderiyor:

  • kullanıcı loged-out / giriş.
  • kullanıcı menüsü güncellendi doğrudan sayfaya URL ile gidilen.

Olay otobüs kullanarak bu gibi durumlarda oldukça mantıklı.

Bunu kullanmak sonra, diğer tüm sınıflar tarafından kullanılan her uygulama için bir EventBus başlatılamadı. Bu statik bir kullanım alanı elde etmek için, fabrika veya bağımlılık enjeksiyon (GWT durumunda CİN).

Bu, büyük bir olay kendi türleri:

public class AppUtils{

    public static EventBus EVENT_BUS = GWT.create(SimpleEventBus.class);
}

Normalde de kendi türleri ve olay işleyicileri oluşturmak istiyorum:

public class AuthenticationEvent extends GwtEvent<AuthenticationEventHandler> {

public static Type<AuthenticationEventHandler> TYPE = new Type<AuthenticationEventHandler>();

  @Override
public Type<AuthenticationEventHandler> getAssociatedType() {
    return TYPE;
}

@Override
protected void dispatch(AuthenticationEventHandler handler) {
    handler.onAuthenticationChanged(this);
}
}

ve işleyici:

public interface AuthenticationEventHandler extends EventHandler {
    void onAuthenticationChanged(AuthenticationEvent authenticationEvent);
}

O zaman bu gibi kullan:

AppUtils.EVENT_BUS.addHandler(AuthenticationEvent.TYPE, new AuthenticationEventHandler()     {
        @Override
        public void onAuthenticationChanged(AuthenticationEvent authenticationEvent) {
            // authentication changed - do something
        }
    });

ve olay yangın çıktı

AppUtils.EVENT_BUS.fireEvent(new AuthenticationEvent());

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SelmerSaxMan

    SelmerSaxMan

    24 HAZİRAN 2006
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • TV nEW

    TV nEW

    25 AĞUSTOS 2012