void setList(@Nullable final ObservableList<T> newList) { if (list != null) list.removeOnListChangedCallback(callback); list = newList; if (list != null) { list.addOnListChangedCallback(callback); callback.onChanged(list); } else { container.removeAllViews(); } }
@Override public void onChanged(final ObservableList<PeerProxy> sender) { @Nullable final PeerProxy peerProxy = weakPeerProxy.get(); if (peerProxy == null) { sender.removeOnListChangedCallback(this); return; } peerProxy.setTotalPeers(sender.size()); }
public void unbind() { if (owner == null) return; final InterfaceProxy interfaze = owner.getInterface(); final ObservableList<PeerProxy> peers = owner.getPeers(); if (interfaceDnsListener != null) interfaze.removeOnPropertyChangedCallback(interfaceDnsListener); if (peerListListener != null) peers.removeOnListChangedCallback(peerListListener); peers.remove(this); setInterfaceDns(""); setTotalPeers(0); owner = null; }
public void bind(final ConfigProxy owner) { final InterfaceProxy interfaze = owner.getInterface(); final ObservableList<PeerProxy> peers = owner.getPeers(); if (interfaceDnsListener == null) interfaceDnsListener = new InterfaceDnsListener(this); interfaze.addOnPropertyChangedCallback(interfaceDnsListener); setInterfaceDns(interfaze.getDnsServers()); if (peerListListener == null) peerListListener = new PeerListListener(this); peers.addOnListChangedCallback(peerListListener); setTotalPeers(peers.size()); this.owner = owner; }
@Override public void onItemRangeInserted(final ObservableList<T> sender, final int positionStart, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { for (int i = positionStart; i < positionStart + itemCount; ++i) listener.container.addView(listener.getView(i, null)); } else { sender.removeOnListChangedCallback(this); } }
public InterfaceProxy(final Interface other) { addresses = Attribute.join(other.getAddresses()); final List<String> dnsServerStrings = StreamSupport.stream(other.getDnsServers()) .map(InetAddress::getHostAddress) .collect(Collectors.toUnmodifiableList()); dnsServers = Attribute.join(dnsServerStrings); excludedApplications.addAll(other.getExcludedApplications()); listenPort = other.getListenPort().map(String::valueOf).orElse(""); mtu = other.getMtu().map(String::valueOf).orElse(""); final KeyPair keyPair = other.getKeyPair(); privateKey = keyPair.getPrivateKey().toBase64(); publicKey = keyPair.getPublicKey().toBase64(); }
public PeerProxy addPeer() { final PeerProxy proxy = new PeerProxy(); peers.add(proxy); proxy.bind(this); return proxy; }
private View getView(final int position, @Nullable final View convertView) { ViewDataBinding binding = convertView != null ? DataBindingUtil.getBinding(convertView) : null; if (binding == null) { binding = DataBindingUtil.inflate(layoutInflater, layoutId, container, false); } Objects.requireNonNull(list, "Trying to get a view while list is still null"); binding.setVariable(BR.collection, list); binding.setVariable(BR.item, list.get(position)); binding.executePendingBindings(); return binding.getRoot(); }
public Interface resolve() throws BadConfigException { final Interface.Builder builder = new Interface.Builder(); if (!addresses.isEmpty()) builder.parseAddresses(addresses); if (!dnsServers.isEmpty()) builder.parseDnsServers(dnsServers); if (!excludedApplications.isEmpty()) builder.excludeApplications(excludedApplications); if (!listenPort.isEmpty()) builder.parseListenPort(listenPort); if (!mtu.isEmpty()) builder.parseMtu(mtu); if (!privateKey.isEmpty()) builder.parsePrivateKey(privateKey); return builder.build(); }
@Override public void onItemRangeRemoved(final ObservableList<T> sender, final int positionStart, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { listener.container.removeViews(positionStart, itemCount); } else { sender.removeOnListChangedCallback(this); } } }
public ConfigProxy(final Config other) { interfaze = new InterfaceProxy(other.getInterface()); for (final Peer peer : other.getPeers()) { final PeerProxy proxy = new PeerProxy(peer); peers.add(proxy); proxy.bind(this); } }
@Override public void onExcludedAppsSelected(final List<String> excludedApps) { Objects.requireNonNull(binding, "Tried to set excluded apps while no view was loaded"); final ObservableList<String> excludedApplications = binding.getConfig().getInterface().getExcludedApplications(); excludedApplications.clear(); excludedApplications.addAll(excludedApps); }
@Override public void onChanged(final ObservableList<T> sender) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { // TODO: recycle views listener.container.removeAllViews(); for (int i = 0; i < sender.size(); ++i) listener.container.addView(listener.getView(i, null)); } else { sender.removeOnListChangedCallback(this); } }
@Override public void onChanged(final ObservableList<E> sender) { final ObservableKeyedRecyclerViewAdapter adapter = weakAdapter.get(); if (adapter != null) adapter.notifyDataSetChanged(); else sender.removeOnListChangedCallback(this); }
@Override public void onItemRangeChanged(final ObservableList<T> sender, final int positionStart, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { for (int i = positionStart; i < positionStart + itemCount; ++i) { final View child = listener.container.getChildAt(i); listener.container.removeViewAt(i); listener.container.addView(listener.getView(i, child)); } } else { sender.removeOnListChangedCallback(this); } }
@Override public void onItemRangeMoved(final ObservableList<T> sender, final int fromPosition, final int toPosition, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { final View[] views = new View[itemCount]; for (int i = 0; i < itemCount; ++i) views[i] = listener.container.getChildAt(fromPosition + i); listener.container.removeViews(fromPosition, itemCount); for (int i = 0; i < itemCount; ++i) listener.container.addView(views[i], toPosition + i); } else { sender.removeOnListChangedCallback(this); } }