CustomComponentソースからわかるように
class CustomComponent(override val p: com.vaadin.ui.CustomComponent with
CustomComponentMixin = new com.vaadin.ui.CustomComponent with
CustomComponentMixin
) extends AbstractComponent(p) {
... inner code
}
対応するvaadinコンポーネントをcontructor引数p
(通常は「peer」を表す)として渡します。
つまり、scaladinコンポーネントは、元のコンポーネントのラッパーです。
ピアコンポーネントの動作をオーバーライドするには、ラッパーコンストラクターに渡すときにオーバーライドする必要があります。
ここにはさまざまな選択肢があります
匿名サブクラス付き
class CostPlanImport(override val p: com.vaadin.ui.CustomComponent with CustomComponentMixin =
new com.vaadin.ui.CustomComponent {
def attach() {
//your code here
} with CustomComponentMixin
) extends CustomComponent(p)
特徴を持って
trait AttachBehavior {
self: com.vaadin.ui.Component =>
def attach() {
//your reusable code here
}
}
class CostPlanImport(override val p: com.vaadin.ui.CustomComponent with CustomComponentMixin =
new com.vaadin.ui.CustomComponent
with CustomComponentMixin
with AttachBehavior
) extends CustomComponent(p)
CustomComponent
サブクラス付き
[表示されていませんが、前の2つの例を組み合わせたものです]
注:コード例はテストされていません
アップデート
「ラッパーコンポーネント」コンストラクターからピアのメソッドにパラメーターを渡す必要がある場合は、次のことができます。
class CostPlanImport(
name: String,
cost: Double,
) extends CustomComponent( p =
new com.vaadin.ui.CustomComponent {
def attach() {
//your code here
//with "name" & "cost" visible
} with CustomComponentMixin
)