@@ -0,0 +1,1251 @@
+package app.lsgui.model.generic;%0A%0Aimport java.util.Arrays;%0Aimport java.util.List;%0A%0Aimport app.lsgui.model.Channel;%0Aimport javafx.beans.Observable;%0Aimport javafx.beans.property.BooleanProperty;%0Aimport javafx.beans.property.SimpleBooleanProperty;%0Aimport javafx.beans.property.SimpleStringProperty;%0Aimport javafx.beans.property.StringProperty;%0Aimport javafx.util.Callback;%0A%0Apublic class GenericChannel implements Channel %7B%0A%0A    private StringProperty nameProperty;%0A    private BooleanProperty onlineProperty;%0A%0A    public GenericChannel(final String name) %7B%0A        this.nameProperty = new SimpleStringProperty();%0A        this.onlineProperty = new SimpleBooleanProperty();%0A        this.nameProperty.setValue(name);%0A        this.onlineProperty.setValue(true);%0A    %7D%0A%0A    @Override%0A    public StringProperty getName() %7B%0A        return nameProperty;%0A    %7D%0A%0A    @Override%0A    public BooleanProperty isOnline() %7B%0A        return onlineProperty;%0A    %7D%0A%0A    @Override%0A    public List%3CString%3E getAvailableQualities() %7B%0A        return Arrays.asList(%22Worst%22, %22Best%22);%0A    %7D%0A%0A    public static Callback%3CChannel, Observable%5B%5D%3E extractor() %7B%0A        return (Channel sm) -%3E new Observable%5B%5D %7B ((GenericChannel) sm).getName(), ((GenericChannel) sm).isOnline() %7D;%0A    %7D%0A%7D%0A

add generic channel class