2012-02-24 11 views
1

私はVaadinフレームワークを使ってアプリケーションを開発しています。アプリケーションは、ユーザがメニュー項目をクリックしたときに、アプリケーションがこのメインブラウザウィンドウのコンテンツ後Vaadin複数のブラウザのウィンドウ/タブ

public class RunReportCommand extends AbstractMenuAction { 
@Override 
public void execute() throws MenuException { 
    Window = .... // create window here 
    openWindow(window); 
} 
protected void openWindow(Window window) { 
    application.getMainWindow().open(new ExternalResource(window.getURL())); 
    application.setMainWindow(window); 
} 

}

ようAbstractMenuCommandクラスの子孫を実行し、メインメニューを有する必要なウィンドウに置き換えています。多くの時間を過ごした後、私は、このソリューションに来た:あな​​たはVaadinウィンドウとブラウザウィンドウの内容を置き換えたい場合は、必ず

application.getMainWindow().open(new ExternalResource(window.getURL())); 
    application.setMainWindow(window); 

を行う必要があります最近、私は、アプリケーションに機能を追加する新しいタスクを得た:ユーザーが能力を持っている必要があります私はvaadin(とwindow.openはメインウィンドウのみで動作します)でもメインウィンドウは1つしかありませんが、ユーザはdiffirentなブラウザのタブでたくさんのdiffウィンドウを持つことができます。メイン・ウィンドウではないブラウザ・タブのメニュー項目では、ウィンドウ・コンテンツの再ロードは機能しません。

答えて

3

2011年、私はVaadin開発チームのメンバーと、同じVaadin 6アプリの複数のWebブラウザウィンドウまたはタブの問題について話しました。彼らは強くを推奨します。彼らはそれが可能である間、そうすることは多くの努力を必要とし、厄介でエラーを起こしやすい傾向があると言いました。

代わりに、Vaadin TabSheetを単一のブラウザウィンドウ/タブ内で使用することを提案しました。

TabSheetは非常に動的なので、必要に応じてタブを追加したり削除したりすることができます。パフォーマンスは私の経験では驚くほど速いです。最前面のタブのコンテンツのみが実際にユーザーのブラウザウィンドウに表示されることに注意してください。他のタブのコンテンツはサーバ上のメモリにありますが、ウェブブラウザ/クライアントにとっては負担になりません。タブは単語の折り返しができず、幅が広くなる傾向がありますが、タブシートは自動的に表示するタブの数が多すぎます。

Vaadin 7の初期開発が進行中です。彼らは7日に窓口管理の問題を検討すると約束していましたが、現在の作業についてはわかりません。

1

Vaadin7のリリースまで、あなたはNavigator7は、マルチブラウザのタブnavigatonすることができます(found here

アドオンNavigator7で見ることができます。 (ブラウザタブのクリックは、このブラウザタブにのみ影響します)

私たちのアプリケーションではそれを使い、それはうまく動作します。

よろしくお願いいたします。

関連する問題