Back
/ボタンを備えたナビゲーションパネルがありForward
ます (機能は重要ではありません。GWT ページの内外でパネルを交換することに頭を悩ませたいだけです)
ナビゲーション ボタン パネル
public class NavigationButtonsPanel extends HTMLPanel
{
private Button btnA = new Button("Go back");
private Button btnB = new Button("Go forward");
public NavigationButtonsPanel( )
{
super("Navigation Panel");
add(btnA);
add(btnB);
}
public void setBackHandler( ClickHandler handler )
{
btnA.addClickHandler(handler);
}
public void setForwardHandler( ClickHandler handler )
{
btnB.addClickHandler(handler);
}
}
次に、これを使用する 3 つの基本パネル AB と C があります。ABC から BA に戻るナビゲーションは問題なく動作します。ここで、ユーザーがパネル B に移動する前に何かを変更する様子をシミュレートします。この場合は、PanelB のラベルです。私の最終的なアプリは明らかにこれよりも複雑になりますが、これはアプリがどのように機能するかの典型的なものでしょうか. 同じパネルまたは別のパネルでのユーザー インタラクションによってパネル内のいくつかのフィールドを変更したり、新しいパネルをロードしたり、さらにインタラクションを行ったり、別のパネルにロードしたりしますか? 特定のパネルへのパスが 1 つだけになるように、非常に明確に定義されたナビゲーション パスをユーザーに使用してもらいたいだけです。
パネルA
public class PanelA extends HTMLPanel
{
private static PanelA panel;
private PanelA()
{
super("Panel A");
final RootPanel rootPanel = RootPanel.get();
NavigationButtonsPanel btnPanel = new NavigationButtonsPanel();
btnPanel.setForwardHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
PanelB.setMessageFromPreviousPage("Message set in Panel AAAAA");
rootPanel.add( PanelB.getInstance() );
}
});
add( btnPanel );
}
public static PanelA getInstance()
{
if (panel == null)
{
panel = new PanelA();
}
return panel;
}
}
パネルB
public class PanelB extends HTMLPanel
{
private static PanelB panel;
private static String messageFromPreviousPage;
private PanelB()
{
super("Panel B");
final RootPanel rootPanel = RootPanel.get();
Label messageLabel = new Label(messageFromPreviousPage);
NavigationButtonsPanel btnPanel = new NavigationButtonsPanel();
btnPanel.setBackHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
rootPanel.add( PanelA.getInstance() );
}
});
btnPanel.setForwardHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
rootPanel.add( PanelC.getInstance() );
}
});
add( btnPanel );
add(messageLabel);
}
public static PanelB getInstance()
{
if (panel == null)
{
panel = new PanelB();
}
return panel;
}
public static void setMessageFromPreviousPage(
String message)
{
messageFromPreviousPage = message;
}
}
パネルC
public class PanelC extends HTMLPanel
{
private static PanelC panel;
private PanelC()
{
super("Panel C");
final RootPanel rootPanel = RootPanel.get();
NavigationButtonsPanel btnPanel = new NavigationButtonsPanel();
btnPanel.setBackHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
rootPanel.clear();
PanelB.setMessageFromPreviousPage("Message set in Panel CCCCCC");
rootPanel.add( PanelB.getInstance() );
}
});
add( btnPanel );
}
public static PanelC getInstance()
{
if (panel == null)
{
panel = new PanelC();
}
return panel;
}
}