рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ GWT- рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореВрд▓ рдмрд╛рддреЗрдВ

рд╕рднреА habrazhitel рд╢реБрдн рджрд┐рди!

рдореИрдВ рдПрдХ рд╢реБрд░реБрдЖрддреА рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рдкрд░ рдПрдХ рдЧрдВрднреАрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХрд░рд┐рдпрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред рд╣рдм рдкрд░ GWT рд╡рд┐рд╖рдп рдкрд░ рдХрд╛рдлреА рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрджреНрднреБрдд GWT- рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреИрдирд▓ рд╣реЛрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рд╕реНрдерд┐рдд рд╣реИрдВред рд╕рд╛рде рд╣реА рджреЛ рдХреЙрд▓рдо рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рд╛рдордЧреНрд░реА рдбрд╛рд▓реЗрдВрдЧреЗред рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдХреЙрд▓рдо рдмрдирд╛рдПред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдпрджрд┐ рдЖрдк рдирд╛рд╡рдмрд╛рд░ рдореЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╛ рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдмрд╛рдИрдВ рдУрд░ рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдЕрд░реНрдерд╣реАрди рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рджрд╛рдИрдВ рдУрд░ред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмрд╛рдПрдВ рдХреЙрд▓рдо рдЦреБрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рд╣реЛрддрд╛ рд╣реИред рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдбреЗрдЯрд╛ рд╕рд╣реА рдХреЙрд▓рдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред






рдЗрд╕рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ IDE рдореЗрдВ GWT рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред GWTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: guice-2.0.jar, guice-3.0.jar, gwtp-all-1.0.jar, aopalliance.jar, guice-Assistedinjectject-3.0.jarред рдореИрдВрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ "рд╕реМрдВрджрд░реНрдп" рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП gwt-bootstrap-2.2.2.0-SNAPSHOT.jar рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ред



рдЖрдк рдЧреНрд░рд╣рдг рдореЗрдВ gwt-platform plugin рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕реБрдЧрдо рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, рдЖрдк рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐-рдкреНрд░рд╕реНрддреБрддрд┐ рджреЛрдиреЛрдВ рдмрдВрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓рд┐рдВрдХ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: plugin.gwt-platform.googlecode.com/hg/update

рдЖрдЗрдП рд╢реБрд░реВ:
рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдПрдХ Ginjector рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ:
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ () рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзреЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред
public class ClientModule extends AbstractPresenterModule { @Override protected void configure() { install(new DefaultModule(ClientPlaceManager.class)); bindPresenter(MainPagePresenter.class, MainPagePresenter.MyView.class, MainPageView.class, MainPagePresenter.MyProxy.class); bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.main); } } 


  @GinModules({ DispatchAsyncModule.class, ClientModule.class }) public interface ClientGinjector extends Ginjector { EventBus getEventBus(); PlaceManager getPlaceManager(); Provider<MainPagePresenter> getMainPagePresenter(); } 


рдЕрдЧрд▓рд╛ рд╣рдорд╛рд░рд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ: рдпрд╣рд╛рдВ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда (рд╕реНрдерд╛рди) рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдордиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рдХреБрдЫ рдЯреЛрдХрди рджрд░реНрдЬ рдХрд┐рдП рд╣реИрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВрдЧреЗред рдмреЗрд╢рдХ, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╣рдорд╛рд░реА рдкрд╣реБрдВрдЪ рд╣реЛред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреЗрдЯрдХреАрдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

 public class HabraTest implements EntryPoint { private final ClientGinjector ginjector = GWT.create(ClientGinjector.class); @Override public void onModuleLoad() { DelayedBindRegistry.bind(ginjector); ginjector.getPlaceManager().revealCurrentPlace(); } } 


рдореИрдВ рдЬрдЧрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА GWT рдкрд░ рдХрдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд▓реЗрдЦ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдЬрдЧрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЫреЛрдЯреЗ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ,)ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдмрдирд╛рдПрдБ:

 public class MainPagePresenter extends Presenter<MainPagePresenter.MyView, MainPagePresenter.MyProxy> implements MainPageUiHandlers, FirstPageEvent.Handler{ public interface MyView extends View, HasUiHandlers<MainPageUiHandlers> { } //       public final static Object SLOT_FIRST_PAGE = new Object(); public final static Object SLOT_SECOND_PAGE = new Object(); //  private FirstPagePresenter firstPagePresenter; private SecondPagePresenter secondPagePresenter; @ProxyStandard @NameToken(NameTokens.main) public interface MyProxy extends ProxyPlace<MainPagePresenter> { } private EventBus eventBus; private final PlaceManager placeManager; //    @Inject public MainPagePresenter(final EventBus eventBus, final MyView view, FirstPagePresenter firstPagePresenter, SecondPagePresenter secondPagePresenter, final MyProxy proxy, final PlaceManager placeManager) { super(eventBus, view, proxy); this.placeManager = placeManager; this.firstPagePresenter = firstPagePresenter; this.secondPagePresenter = secondPagePresenter; this.eventBus = eventBus; //      getView().setUiHandlers(this); eventBus.addHandler(FirstPageEvent.getType(), this); } //       @Override protected void revealInParent() { RevealRootContentEvent.fire(this, this); } @Override protected void onBind() { super.onBind(); //       getView().setInSlot(SLOT_FIRST_PAGE, firstPagePresenter); } //       MainPageView @Override public void onRightBtnClicked() { showRightContent(); MainPageEvent mainPageEvent = new MainPageEvent( MainPageEvent.Action.SHOW_LOREM_IPSUM); eventBus.fireEvent(mainPageEvent); } //     @Override public void onLeftBtnClicked() { showLeftContent(); } public void showLeftContent() { removeFromSlot(SLOT_SECOND_PAGE, secondPagePresenter); getView().setInSlot(SLOT_FIRST_PAGE, firstPagePresenter); } public void showRightContent() { removeFromSlot(SLOT_FIRST_PAGE, firstPagePresenter); getView().setInSlot(SLOT_SECOND_PAGE, secondPagePresenter); } @Override public void onFirstPageEvent(FirstPageEvent event) { //      ,         showRightContent(); MainPageEvent mainPageEvent = new MainPageEvent( MainPageEvent.Action.SHOW_FORM_RESULT, event.getFirstName(), event.getLastName()); eventBus.fireEvent(mainPageEvent); } } 


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ FirstPagePresenter FirstPagePresenter, SecondPagePresenter secondPagePresenter рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ред
рдпреЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╣реЛрдВрдЧреЗ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рднрд╛рдЧреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЬреЗрдЯ (рдЬреЛ рдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреГрд╖реНрда рд╣реИрдВ);

GWTP рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рддреАрди рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:


рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛-рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рддрдерд╛рдХрдерд┐рдд рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдореЗрдВ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдЯреЛрдХрди рдкреНрд░рд╕реНрддреЛрддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдРрд╕реЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

"рдкреГрд╖реНрдареЛрдВ" рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрд▓реЙрдЯреНрд╕ рдФрд░ рд╕реНрд▓реЙрдЯреНрд╕ рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╡рд┐рдЬреЗрдЯ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╡рд┐рдЬреЗрдЯ рдПрдХ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИред рдЗрд╕рдХреЗ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрд▓реЙрдЯреНрд╕ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЕрдВрддрд╣реАрди рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╡рд┐рдЬреЗрдЯ рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдореВрд▓ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдореЗрдВ рд╕реНрд▓реЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдореВрд▓ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХреЗ рджреГрд╢реНрдп рдореЗрдВ setInSlot () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

MainPagePresenter рд╡рд░реНрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╕реНрддреБ рд╣реИ:

  public final static Object SLOT_FIRST_PAGE = new Object(); public final static Object SLOT_SECOND_PAGE = new Object(); 


рд╕рдВрдмрдВрдзрд┐рдд рджреГрд╢реНрдп рдореЗрдВ, рд╣рдо рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 public class MainPageView extends ViewWithUiHandlers<MainPageUiHandlers> implements MainPagePresenter.MyView { //    @UiField HTMLPanel main; //   @UiField ResponsiveNavbar navbar; //   @UiField Button firstPageBtn, secondPageBtn; private static MainPageViewUiBinder uiBinder = GWT .create(MainPageViewUiBinder.class); interface MainPageViewUiBinder extends UiBinder<Widget, MainPageView> { } //     @UiField Column leftColumn, rightColumn; @Inject public MainPageView() { uiBinder.createAndBindUi(this); navbar.setInverse(true); //   firstPageBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { getUiHandlers().onLeftBtnClicked(); } }); secondPageBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { getUiHandlers().onRightBtnClicked(); } }); } @Override public Widget asWidget() { return main; } //       @Override public void setInSlot(Object slot, IsWidget content) { if(slot == MainPagePresenter.SLOT_FIRST_PAGE ) { leftColumn.add(content); } else if(slot == MainPagePresenter.SLOT_SECOND_PAGE ){ rightColumn.add(content); } else { super.setInSlot(slot, content); } } //       @Override public void removeFromSlot(Object slot, IsWidget content) { if(slot == MainPagePresenter.SLOT_FIRST_PAGE ) { leftColumn.remove(content); } else if(slot == MainPagePresenter.SLOT_SECOND_PAGE ){ rightColumn.remove(content); } else { super.removeFromSlot(slot, content); } } } 


рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: setInSlot () рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд▓реЙрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдкреНрд░рд╕реНрддреЛрддрд╛ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпреЗ рджреЛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЙрд▓рдо рд╣реИрдВ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рджрд╛рдПрдБ рд╕реНрддрдВрднред
рдпрджреНрдпрдкрд┐ рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдПрдХ рдХреЙрд▓рдо рдореЗрдВ рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╡рд┐рдЧреЗрдЯреНрд╕ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░:

 public class FirstPagePresenter extends PresenterWidget<FirstPagePresenter.MyView> implements FirstPageUiHandlers, PopupEvent.Handler{ public interface MyView extends View, HasUiHandlers<FirstPageUiHandlers> { } //    FirstPagePopupPresenter firstPagePopupPresenter; EventBus eventBus; @Inject public FirstPagePresenter(final EventBus eventBus, final MyView view, FirstPagePopupPresenter firstPagePopupPresenter ) { super(eventBus, view); this.firstPagePopupPresenter = firstPagePopupPresenter; this.eventBus = eventBus; getView().setUiHandlers(this); //    PopupEvent eventBus.addHandler(PopupEvent.getType(), this); } @Override public void onShowFormBtnClicked() { //      showForm(true); } private void showForm(boolean show) { if(show){ addToPopupSlot(firstPagePopupPresenter, true); firstPagePopupPresenter.getView().show(); } else { removeFromPopupSlot(firstPagePopupPresenter); } } @Override public void onPopupEvent(PopupEvent event) { showForm(false); eventBus.fireEvent(new FirstPageEvent(event.getFirstName(), event.getLastName())); } } 


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ FirstPagePopupPresenter FirstPagePopupPresenter рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рд╣реИред (рдХреЛрдб рдиреАрдЪреЗ рд╣реЛрдЧрд╛)ред рдпрд╣ рд╣рдорд╛рд░рд╛ рдлреЙрд░реНрдо рдкреЙрдкрдЕрдк рд╣реИред рдЗрд╕реА рддрд░рд╣, рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рд╕реНрддреЛрддрд╛ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рддреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рд╣реИред

 public class FirstPageView extends ViewWithUiHandlers<FirstPageUiHandlers> implements FirstPagePresenter.MyView { private final Widget widget; @UiField Button showFormBtn; public interface Binder extends UiBinder<Widget, FirstPageView> { } @Inject public FirstPageView(final Binder binder) { widget = binder.createAndBindUi(this); showFormBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { getUiHandlers().onShowFormBtnClicked(); } }); } @Override public Widget asWidget() { return widget; } } 


рджреГрд╢реНрдп рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╡реНрдпреВрд╡рд┐рдердпреВрд╣реИрдВрдбрд▓рд░ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╣рдо рдПрдорд╡реАрдкреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд░рд╕реНрддреЛрддрд╛ рдХреЛ рд╕реАрдзреЗ рджреГрд╢реНрдп (рд╣рдо рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо getUiHandlers () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 public interface FirstPageUiHandlers extends UiHandlers{ void onShowFormBtnClicked(); } 


getUiHandlers () FirstPageUiHandlers рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрдерд┐рдд MyView рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ HasUiHandlers рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ - getView (); SetUiHandlers (рдпрд╣);

рдЕрдЧрд▓рд╛, рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдФрд░ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдХрд╛ рд╕рдВрдЧрдд рджреГрд╢реНрдп:

 public class SecondPagePresenter extends PresenterWidget<SecondPagePresenter.MyView> implements MainPageEvent.Handler { public interface MyView extends View { void showLoremIpsum(); void showFormInfo(String firstName, String lastName); } EventBus eventBus; @Inject public SecondPagePresenter(final EventBus eventBus, final MyView view) { super(eventBus, view); this.eventBus = eventBus; eventBus.addHandler(MainPageEvent.getType(), this); } @Override public void onMainPageEvent(MainPageEvent event) { switch(event.getAction()) { case SHOW_FORM_RESULT: showFormInfoWidget(event.getFirstName(), event.getLastName()); break; case SHOW_LOREM_IPSUM: showLoremIpsumWidget(); break; default: break; } } private void showLoremIpsumWidget() { getView().showLoremIpsum(); } private void showFormInfoWidget(String firstName, String lastName) { getView().showFormInfo( firstName, lastName); } 


 public class SecondPageView extends ViewImpl implements SecondPagePresenter.MyView { private final Widget widget; @UiField FlowPanel contentPanel; public interface Binder extends UiBinder<Widget, SecondPageView> { } @Inject public SecondPageView(final Binder binder) { widget = binder.createAndBindUi(this); } @Override public Widget asWidget() { return widget; } @Override public void showLoremIpsum() { contentPanel.clear(); contentPanel.add(new LoremIpsumWidget()); } @Override public void showFormInfo(String firstName, String lastName) { contentPanel.clear(); contentPanel.add(new FormInfoWidget(firstName, lastName)); } } 


рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рдкрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдирдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдорд╛рдирдХ рдШрдЯрдирд╛рдУрдВ (GwtEvent) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ рдлреЙрд░реНрдо рдХреЗ рд╕рд╛рде рдкреЙрдкрдЕрдк рдХрд░реЗрдВ:

 public class FirstPagePopupPresenter extends PresenterWidget<FirstPagePopupPresenter.MyView> implements PopupUiHandlers { public interface MyView extends PopupView , HasUiHandlers<PopupUiHandlers>{ } EventBus eventBus; @Inject public FirstPagePopupPresenter(final EventBus eventBus, final MyView view) { super(eventBus, view); this.eventBus = eventBus; getView().setUiHandlers(this); } @Override public void onSubmitBtnClicked(String firstName, String lastName) { eventBus.fireEvent(new PopupEvent(firstName, lastName)); } } 


 public class FirstPagePopupView extends PopupViewWithUiHandlers<PopupUiHandlers> implements FirstPagePopupPresenter.MyView { @UiField PopupPanel main; @UiField Button submitBtn; @UiField TextBox firstName, lastName; public interface Binder extends UiBinder<Widget, FirstPagePopupView> { } @Inject public FirstPagePopupView(final EventBus eventBus, final Binder binder) { super(eventBus); binder.createAndBindUi(this); main.setAnimationEnabled(true); main.setModal(true); main.setGlassEnabled(true); submitBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { getUiHandlers().onSubmitBtnClicked(firstName.getValue(), lastName.getValue()); } }); } @Override public Widget asWidget() { return main; } } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЙрдкрдЕрдк рднреА рдПрдХ рдкреНрд░рд╕реНрддреЛрддрд╛ рд╡рд┐рдЬреЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рджреГрд╢реНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреЙрдкрдЕрдк рд╡реНрдпреВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдореБрдЦреНрдп рджреГрд╢реНрдп рдкреИрдирд▓ рдкреЙрдкрдЕрдкрдкрдиреЗрд▓, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╡рд╛рд░рд┐рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╡рд┐рдЧреЗрдЯреНрд╕ рд╕реЗ рдПрдХ рдФрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рдкреЙрдк-рдЕрдк рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд▓реЙрдЯ рдФрд░ рдЗрдВрд╕рд░реНрдЯ рдкреИрдирд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ addToPopupSlot () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ;

рд╕рд╛рде рд╣реА, рд╕рднреА рдмрдВрдбрд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╕реНрддреБрддрд┐ рдкреНрд░рд╕реНрддреБрддрд┐ рдпреВрдмрд┐рдВрджрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рдереАред рдореИрдВ рд╕рдВрдмрдВрдзрд┐рдд * ui.xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╣рд╛рдВ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, GWT рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдкрддреЗ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА ред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдо рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЬрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ:

рдУрд╡рд░рд░рд╛рдЗрдВрдб рдСрдирдмрд╛рдЗрдВрдб () рд╡рд┐рдзрд┐ рдореЗрдВ рдореЗрдирдкреЗрдЬ рдкреЗрд╕реЗрдВрдЯрд░ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╣рдо рддреБрд░рдВрдд рдкрд╣рд▓реЗ рдкреЗрдЬ рдХреЛ рд╕реНрд▓реЙрдЯ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ:

  @Override protected void onBind() { super.onBind(); getView().setInSlot(SLOT_FIRST_PAGE, firstPagePresenter); } 


(рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ onBind (), onUnbind, onReveal (), onReset (), onHide () рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред)

рддрджрдиреБрд╕рд╛рд░, FirstPagePresenter'a рджреГрд╢реНрдп рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рдИрдВ рдУрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЬрдм рд╣рдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо FirstPageUresHandlers рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд FirstPagePresenter рдореЗрдВ onShowFormBtnClicked () рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ

рдХреЙрд▓ рдХрд░реЗрдВ:
  showFormBtn.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { getUiHandlers().onShowFormBtnClicked(); } }); 


FirstPagePresenter 'рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИ:

  addToPopupSlot(firstPagePopupPresenter, true); 


рд╣рдо рд╕реНрд▓реЙрдЯ рдореЗрдВ рдкреЙрдкрдЕрдк рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдкреЙрдкрдЕрдк рдХреЗ рд▓рд┐рдП, рд╕реНрд▓реЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдЬрд┐рд╕рд╕реЗ рдкреЙрдкрдЕрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рд╕реНрд╡рдпрдВ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВред AddToPopupSlot () рд╡рд┐рдзрд┐ рдореЗрдВ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреЙрдкрдЕрдк рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ (рд╡рд┐рдзрд┐ рдореЗрдВ рдХрдИ рдЕрдзрд┐рднрд╛рд░ рд╣реИрдВ рдФрд░ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдорддреМрд░ рдкрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ)ред

рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреЙрдкрдЕрдк рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд╣рд╛рдВ рдХреБрдЫ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдмрдЯрди рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рдЧреЗрдЯрдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЙрдкрдЕрдк рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ () рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддреЛрддрд╛ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд░реНрд╕реНрдЯрдкреЗрдЬреЗрдЬрд╕реЗрдВрдЯрд░ рдХреЛ рдЗрд╡реЗрдВрдЯрдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдЕрдЧрд▓реЗ рдиреЛрдЯ рдореЗрдВ GWT рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ) :

  @Override public void onPopupEvent(PopupEvent event) { showForm(false); eventBus.fireEvent(new FirstPageEvent(event.getFirstName(), event.getLastName())); } 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢реЛрдлреЙрд░реНрдо () рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдкреЙрдкрдЕрдк рдХреЛ рд╕реНрд▓реЙрдЯ рд╕реЗ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:

 removeFromPopupSlot(firstPagePopupPresenter); 


рдлрд┐рд░ рд╣рдо рдПрдХ рдирдИ рдШрдЯрдирд╛ (рдЕрдм рдпрд╣ FirstPageEvent рд╣реИ) рдХреЛ рдЖрдЧреЗ рдлреЗрдВрдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ MainPagePresenter рдЗрд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  @Override public void onFirstPageEvent(FirstPageEvent event) { //       ,         showRightContent(); MainPageEvent mainPageEvent = new MainPageEvent( MainPageEvent.Action.SHOW_FORM_RESULT, event.getFirstName(), event.getLastName()); eventBus.fireEvent(mainPageEvent); } 


рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, MainPagePresenter рд╕реНрд▓реЙрдЯ рд╕реЗ рдкрд╣рд▓рд╛ рдкреГрд╖реНрда рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  public void showRightContent() { removeFromSlot(SLOT_FIRST_PAGE, firstPagePresenter); getView().setInSlot(SLOT_SECOND_PAGE, secondPagePresenter); } 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА MainPageEvent рдЖрдЧреЗ рдордХреНрдЦрд┐рдпреЛрдВред рди рдХреЗрд╡рд▓ рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо, рдмрд▓реНрдХрд┐ рдПрдХреНрд╢рди рднреА, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рдорд╛рд░рд╛ рджреВрд╕рд░рд╛ рдкреЗрдЬрдкреНрд░реЗрд╢рд░, рдСрдирдореИрдиреЗрдЬреЗрдЬ () рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреГрд╖реНрда рдкрд░ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдирд╛ рд╣реИ, рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдЬреЗрдЯ рд╣реИрдВред

  @Override public void onMainPageEvent(MainPageEvent event) { switch(event.getAction()) { case SHOW_FORM_RESULT: showFormInfoWidget(event.getFirstName(), event.getLastName()); break; case SHOW_LOREM_IPSUM: showLoremIpsumWidget(); break; default: break; } } 


рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдпрд╣ рдХреБрдЫ рдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рд╣реИ, рд▓реЗрдХрд┐рди:


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╢рд╛рдпрдж рдирд╛рд░рд╛рдЬ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ - рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреА рдЗрддрдиреА рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреНрдпреЛрдВ? рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛, рдЕрдЧрд▓реЗ рдПрдХ рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░реЗрдЬреЗрдВрдЯрд░реНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдФрд░ рд╡рд╣ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдУрд░ рдЕрдкрдиреА рдЖрдБрдЦреЗрдВ рдШреБрдорд╛рдПрдЧрд╛ред

рдкреБрдирд╢реНрдЪ: рдореИрдВ рдХрдерд╛ рдФрд░ рд╕рдВрднрд╡ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рднреНрд░рдо рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред рдпрд╣ рдореЗрд░реА рдкрд╣рд▓реА рдЖрдИрдЯреА рдкреЛрд╕реНрдЯ рд╣реИред рддрд░реНрдХрдкреВрд░реНрдг рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рд╕рд▓рд╛рд╣ рдХрд╛ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИред

Source: https://habr.com/ru/post/In192262/


All Articles