Hello,
i´m just trying to do my first view wrapper for b4j using the new beta with the new CustomviewDesignerProperties.
I´m facing some problems.
1. I can not figure out on what i need to do in this wrapper to add a listener to get notified when the user change the state of the Toggle.
I tried using the mouseclick event but the event i defined did not fire.
2. From principle it works but the view do have an - for me unexpected - border. I guess it has something to do with the Style of the view.
3. Additional i got the following logoutput when running my example
The java code i am using is
Any tips or hints on what i am doing wrong are highly appreciated
i´m just trying to do my first view wrapper for b4j using the new beta with the new CustomviewDesignerProperties.
I´m facing some problems.
1. I can not figure out on what i need to do in this wrapper to add a listener to get notified when the user change the state of the Toggle.
I tried using the mouseclick event but the event i defined did not fire.
2. From principle it works but the view do have an - for me unexpected - border. I guess it has something to do with the Style of the view.

3. Additional i got the following logoutput when running my example
Program started.
Jan 24, 2016 10:44:51 AM com.sun.javafx.css.StyleConverterImpl getInstance
SEVERE: StyleConverterImpl : converter Class is null for : com.sun.javafx.scene.layout.region.CornerRadiiConverter
Jan 24, 2016 10:44:51 AM com.sun.javafx.css.StyleConverterImpl readBinary
SEVERE: could not deserialize com.sun.javafx.scene.layout.region.CornerRadiiConverter
could not deserialize com.sun.javafx.scene.layout.region.CornerRadiiConverter
The java code i am using is
B4X:
package anywheresoftware.b4j.objects;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import org.controlsfx.control.ToggleSwitch;
import org.controlsfx.control.BreadCrumbBar.BreadCrumbActionEvent;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.BA.Author;
import anywheresoftware.b4a.BA.DependsOn;
import anywheresoftware.b4a.BA.DesignerProperties;
import anywheresoftware.b4a.BA.Events;
import anywheresoftware.b4a.BA.Hide;
import anywheresoftware.b4a.BA.Property;
import anywheresoftware.b4a.BA.ShortName;
import anywheresoftware.b4a.BA.Version;
import anywheresoftware.b4a.objects.collections.Map;
import anywheresoftware.b4j.objects.CustomViewWrapper.DesignerCustomView;
import anywheresoftware.b4j.objects.LabelWrapper;
import anywheresoftware.b4j.objects.NodeWrapper.ControlWrapper;
import anywheresoftware.b4j.objects.PaneWrapper;
import anywheresoftware.b4j.objects.PaneWrapper.ConcretePaneWrapper;
@Version(1.00f)
@ShortName("ToggleSwitch")
@Author(value = "DonManfred (wrapper)")
//@Permissions(values={"android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE"})
@Events(values={"selectedChanged(selected As boolean)"})
@DependsOn(values={"controlsfx-8"})
@DesignerProperties(values={
@Property(key="Selected", displayName="Checked", fieldType="boolean", defaultValue="false"),
@Property(key="WrapText", displayName="Wrap Text", fieldType="boolean", defaultValue="false"),
@Property(key="Text", displayName="Text", fieldType="String", defaultValue="",description="default Text"),
@Property(key="Style", displayName="Style", fieldType="String", defaultValue="toggle-switch",description="Style")
})
public class ToggleSwitchWrapper extends ControlWrapper<ToggleSwitch> implements DesignerCustomView{
@Override
public void DesignerCreateView(final ConcretePaneWrapper base, LabelWrapper label,
Map args) {
base.AddNode(getObject(), 0, 0, base.getWidth(), base.getHeight());
getObject().setWrapText((Boolean)args.Get("WrapText"));
getObject().setSelected((Boolean)args.Get("Selected"));
getObject().setStyle((String)args.Get("Style"));
new PaneWrapper.ResizeEventManager(base.getObject(), null, new Runnable() {
@Override
public void run() {
SetLayoutAnimated(0, 0, 0, base.getWidth(), base.getHeight());
}
});
}
@Hide
@Override
public void _initialize(BA ba, Object arg1, String EventName) {
innerInitialize(ba, EventName.toLowerCase(BA.cul), false);
}
@Override
@Hide
public void innerInitialize(final BA ba, final String eventName, boolean keepOldObject) {
if (!keepOldObject)
setObject(new ToggleSwitch());
super.innerInitialize(ba, eventName, true);
//if (ba.subExists(eventName + "_selectedchanged")) {
getObject().setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
ba.raiseEventFromUI(getObject(), eventName + "_selectedchanged", getObject().isSelected());
//event.consume();
}
});
//}
}
/**
* Gets or sets the default label text value.
*/
public String getText() {
return getObject().getText();
}
public void setText(String s) {
getObject().setText(s);
}
public boolean getSelected() {
return getObject().isSelected();
}
public void setSelected(boolean selected) {
getObject().setSelected(selected);
}
public Boolean isWrapText() {
return getObject().isWrapText();
}
public void setWrapText(boolean wrap) {
getObject().setWrapText(wrap);
}
public void setLayoutX(double x) {
getObject().setLayoutX(x);;
}
public void setLayoutY(double x) {
getObject().setLayoutY(x);;
}
public void setStyleClass(String styleClass) {
getObject().getStyleClass().setAll("toggle-switch");
}
}
Any tips or hints on what i am doing wrong are highly appreciated