私はginライブラリに問題があります。私はそれをプロジェクトに組み込む方法を理解していません。プロジェクトは非常にシンプルです(私はジンを理解するために作ったが、まだそれを取得しないでください)このプロジェクトはジンライブラリを使用する必要がありますプロジェクトに注入セクションを追加する
私たちはボタンとチェックボックスで最初のページがあります。チェックボックスの値がtrueの場合、ボタンを押すことができます。これにより、2番目のページに新しいボタンを追加できます。あなたは私がこの例を完成するのを手助けすることができますか? RootView、IRootView、RootPresenterを含むルートパッケージを追加します。 RootViewにPage1とPage2が含まれていなければなりません。 RootPresenterに何を追加する必要がありますか?どのウィジェットがRootViewの両方のページを含むべきですか? Page1とPage2をRootViewに挿入する方法は?
誰でも助けてもらえますか?いくつかのコードを手伝っていただければ幸いです。
Page1の
@Presenter(view = Page1View.class)
public class Page1Presenter extends BasePresenter<IPage1View, AppEventBus> implements IPage1View.IPage1Presenter{
@Override
public void bind() {
view.getCheckBox().setValue(true);
view.getAddButton().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
eventBus.addNewButton();
}
});
view.getCheckBox().addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(ValueChangeEvent<Boolean> event) {
if(event.getValue()){
eventBus.enableMOM();
}
else {
eventBus.disableMOM();
}
}
});
}
public void onStart(){
RootPanel.get("page1").add(view);
}
public void onEnableMOM(){
view.getAddButton().setEnabled(true);
}
public void onDisabledMOM(){
view.getAddButton().setEnabled(false);
}}
Page1View
public class Page1View extends ReverseCompositeView<IPage1View.IPage1Presenter> implements IPage1View{
private Button addButton;
private CheckBox checkBox;
Page1View(){
SimplePanel mainPanel = new SimplePanel();
DecoratorPanel backgroundPanel = new DecoratorPanel();
addButton = new Button("Add new button");
checkBox = new CheckBox("Enable adding new buttons");
VerticalPanel content = new VerticalPanel();
content.setSize("400px","400px");
content.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
content.add(addButton);
content.add(checkBox);
backgroundPanel.add(content);
mainPanel.add(backgroundPanel);
}
@Override
public Button getAddButton() {
return addButton;
}
@Override
public CheckBox getCheckBox() {
return checkBox;
}
}
ほぼ同じもののためのPage1
public interface IPage1View extends IsWidget {
public Button getAddButton();
public CheckBox getCheckBox();
public interface IPage1Presenter{}
}
プレゼンターのインターフェイスを持ちますページ2。私はそれを投稿しない場所を保存するために。
EventBus
@Events(startView = Page1.class)
public interface AppEventBus extends EventBus {
@Start
@Event(handlers = {Page1Presenter.class, Page2Presenter.class, Page3Presenter.class, Page4Presenter.class})
public void start();
@Event(handlers = {Page1Presenter.class}, activate = Page2Presenter.class)
public void enableMOM();
@Event(handlers = {Page1Presenter.class}, deactivate = Page2Presenter.class)
public void disableMOM();
@Event(handlers = Page2Presenter.class)
public void addNewButton();
@Event(handlers = Page2Presenter.class)
public void deleteSomeButton(Button killerButton);
@Event(handlers = Page3Presenter.class)
public void getData();
@Event(handlers = Page4Presenter.class)
public void addNewPoint();
}
、ルートパッケージ要素はページ1と同じ構造を持っているが、彼らは空にしてください。私はどのコードにそれらを含めるべきかを知らない。
gin + mvp4gの使用経験がある人は誰でも手伝ってもらえますか?
UPDT: 私は自分自身でこれをやろうとしているが、それでもそこにエラー( 私は何をしています:。。私はUiBinderサンプルメッセージでRooViewを作っ
public interface IRootView extends IsWidget{
interface IRootPresenter{}
}
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<g:HTMLPanel>
<g:SimplePanel ui:field="page1">
</g:SimplePanel>
<g:SimplePanel ui:field="page2">
</g:SimplePanel>
</g:HTMLPanel>
</ui:UiBinder>
これらのパネル私はページ1とページ2を含むべきです(私は想像しています)。 しかし、私はそれらを注入しようとしています - タイプにエラーがあります。
public class RootView extends ReverseCompositeView<IRootView.IRootPresenter>
implements IRootView {
@UiField
SimplePanel page1, page2;
@Inject
public RootView(Page1View page1, Page2View page2){
//how to add them ?
}
interface RootViewUiBinder extends UiBinder<Widget, RootView> {
}
private static RootViewUiBinder ourUiBinder = GWT.create(RootViewUiBinder.class);
public RootView() {
initWidget(ourUiBinder.createAndBindUi(this));
}
}
RootPresenter
@Presenter(view = RootView.class)
public class RootPresenter extends BasePresenter<IRootView, AppEventBus> implements IRootView.IRootPresenter{
public void onStart(){
}
}
答えのためのThx。私のプロジェクトのどのクラスがプロバイダになるのですか? – Andrew
どのクラスに注入しますか? –
私たちはここでそれについて議論することもできます:https://gitter.im/mvp4g/mvp4g –