私はMenuBarを使用して、表示パネルをDeckPanelでスワップしようとする初心者です。GWT:MenuBarからDockLayoutPanelへの参照を取得する
- ApplicationUi.java
- ApplicationUi.ui.xml
- ApplicationMenu.java
- ApplicationMenu.ui.xml
は、私は2クラスと2つの関連するUiBinderサンプルメッセージのXMLファイルを持っています
ApplicationUi.javaとUI XMLでは、ルートはDockLayoutPanelにバインドされています。 ApplicationMenuは、DockLayoutPanelのNorthセクションに配置されています。メニューバーのオプションは、センターセクションのDeckPanelに影響します。
ApplicationMenuでは、表示パネルをスワップするためにshowWidget()を呼び出すことができるように、DeckPanelへの参照を取得するにはどうすればよいですか?
また、私はnewbですので、このコードの提案やレビューは大歓迎です。私はGoogleで可能な限りベストを尽くしましたが、探しているものの多くは外に出ていないようです。
(これはReplace GWT DockLayoutPanel Contentsのフォローアップです)。
出典: ApplicationUi.java
import org.jason.datacenter.client.forms.NewRequirementForm;
public class ApplicationUi extends Composite {
private static final Binder binder = GWT.create(Binder.class);
interface Binder extends UiBinder<Widget, ApplicationUi> {
}
@UiField DockLayoutPanel dlp;
@UiField VerticalSplitPanel headerPanel;
@UiField DeckPanel deckPanel;
public ApplicationUi() {
initWidget(binder.createAndBindUi(this));
// add the NewRequirementForm to the deckpanel as index #0
deckPanel.add(new NewRequirementForm());
}
public void switchDeck(int newIndex) {
deckPanel.showWidget(newIndex);
}
}
ApplicationUi.ui.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:style>
.panel {
background-color: ivory;
}
</ui:style>
<g:DockLayoutPanel ui:field="dlp">
<g:north size="800">
<g:VerticalSplitPanel ui:field="headerPanel">
</g:VerticalSplitPanel>
</g:north>
<g:center>
<g:DeckPanel ui:field="deckPanel" />
</g:center>
</g:DockLayoutPanel>
</ui:UiBinder>
ApplicationMenu.java:
public class ApplicationMenu extends Composite {
private static final Binder binder = GWT.create(Binder.class);
interface Binder extends UiBinder<Widget, ApplicationMenu> {
}
@UiField MenuBar applicationMenu;
@UiField MenuItem mitmNewPower;
public ApplicationMenu() {
initWidget(binder.createAndBindUi(this));
mitmNewPower.setCommand(new Command() {
@Override
public void execute() {
RootLayoutPanel rlp = RootLayoutPanel.get();
DockLayoutPanel dlp = (DockLayoutPanel) rlp.getWidget(0);
}
});
}
}
のAp plicationMenu.ui.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:style>
.panel {
background-color: ivory;
}
</ui:style>
<g:MenuBar ui:field="applicationMenu">
<g:MenuItem>
Process
<g:MenuBar>
<g:MenuItem ui:field="mitmNewPower" />
</g:MenuBar>
</g:MenuItem>
</g:MenuBar>
</ui:UiBinder>
GWTを使ってMVPを使っているときに長い答えを書きました。その中のいくつかのアイデアを使って、あなたがしようとしていることを達成するのに役立ちます。 http://stackoverflow.com/questions/2832779/is-there-a-recommended-way-to-use-the-observer-pattern-in-mvp-using-gwt/2832919#2832919 –