2016-07-21 12 views
0

ショートバージョン:Vaadinは、実行中のアプリケーションでさまざまなビュー/レイアウト/コンポーネントに対して異なるテーマを使用できますか?Java/Vaadin - 個々のビューに異なるテーマを使用する

より長いバージョン:私は、Viewを拡張するクラスが提供され、特定のコンテナに追加される非常に基本的な機能/「モジュール性」を達成しようとしています。それは特定のクラスを見つけるためにここに表示された方法を使用して、現在 "ok"で動作します。https://stackoverflow.com/a/60775/3560336しかし、このビューでは、アプリケーションのメインUIで使用されるテーマが使用されます。このビュー(またはCustomComponentなどの他のもの)が別のテーマを使用できるようにする方法はありますか?

答えて

1

私の知る限り、テーマは実行時に切り替えることができます(下記のサンプルコードを参照してください)が、グローバル/ UIレベルで設定されています。ビューが完全に変更され、メニューバーのように変更してはならない共通のセクションがない場合は、これが有効です。

Javaクラス:

myButton.addStyleName("red-border"); 

public class MyUI extends UI { 
    @Override 
    protected void init(VaadinRequest request) { 
     VerticalLayout content = new VerticalLayout(); 
     content.setSizeFull(); 
     setContent(content); 

     content.addComponent(new TextField()); 
     content.addComponent(new Button("Switch theme", e -> { 
      if (getTheme().equals("mytheme1")) { 
       setTheme("mytheme2"); 
      } else { 
       setTheme("mytheme1"); 
      } 
     })); 
    } 
} 

Vaadin theme switching

そうでない場合は、テーマエンジンは、あなたのさまざまなコンポーネントのための(あるいはデフォルトを上書き)とaddStyleName()を使用してそれらを適用define your own stylesにあなたを可能に

テーマ設定:

@mixin mytheme1 { 
    @include valo; 
    // Insert your own theme rules here 

    .red-border { 
    // custom style added with addStyleName() 
    border: 1px red solid; 
    } 

    .v-button { 
    // global override of default v-button rule 
    background-color: green; 
    } 
} 

Button styling