@@ -0,0 +1,740 @@
+package org.skyve.metadata.view.fluent;%0A%0Aimport org.skyve.impl.metadata.view.widget.bound.input.ChangeableInputWidget;%0A%0Aabstract class FluentChangeableInputWidget%3CT extends FluentChangeableInputWidget%3CT%3E%3E  extends FluentFocusableInputWidget%3CT%3E %7B%0A%09protected FluentChangeableInputWidget() %7B%0A%09%09// nothing to see%0A%09%7D%0A%09%0A%09@SuppressWarnings(%22unchecked%22)%0A%09protected T from(ChangeableInputWidget input) %7B%0A%09%09super.from(input);%0A%09%09input.getChangedActions().forEach(a -%3E addChangeAction(FluentEventAction.from(a)));%0A%09%09return (T) this;%0A%09%7D%0A%0A%09@SuppressWarnings(%22unchecked%22)%0A%09public T addChangeAction(FluentEventAction action) %7B%0A%09%09get().getChangedActions().add(action.get());%0A%09%09return (T) this;%0A%09%7D%0A%0A%09@Override%0A%09public abstract ChangeableInputWidget get();%0A%7D%0A

Add FluentFocusableInputWidget and FluentChangeableInputWidget.