blob: e67ecff95301ad411a200a33a071b51ca6eeab9f [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
package org.eclipse.osbp.ecview.core.databinding.tests;
import static org.junit.Assert.assertEquals;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.BeanProperties;
import org.eclipse.core.databinding.beans.IBeanListProperty;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.osbp.ecview.core.databinding.tests.bean.model.ChildDto;
import org.eclipse.osbp.ecview.core.databinding.tests.bean.model.ParentDto;
import org.junit.Test;
@SuppressWarnings({ "unchecked", "unused" })
public class TestBindBeanListToTarget {
@Test
public void test__2() {
new MyRealm();
ParentDto p = new ParentDto();
ChildDto c1 = new ChildDto();
ChildDto c2 = new ChildDto();
p.addToChildren(c1);
p.addToChildren(c2);
IBeanListProperty prop = BeanProperties.list(ParentDto.class,
"children", ChildDto.class);
IObservableList pObservable = prop.observe(p);
WritableList target = new WritableList();
new DataBindingContext().bindList(target, pObservable);
assertEquals(p.getChildren().size(), target.size());
target.add(new ChildDto());
assertEquals(p.getChildren().size(), target.size());
p.addToChildren(new ChildDto());
assertEquals(p.getChildren().size(), target.size());
p.removeFromChildren(p.getChildren().get(0));
assertEquals(p.getChildren().size(), target.size());
target.remove(p.getChildren().get(0));
assertEquals(p.getChildren().size(), target.size());
}
private static class MyRealm extends Realm {
public MyRealm() {
setDefault(this);
}
@Override
public boolean isCurrent() {
return true;
}
}
private static class Bean {
private List<String> writableList = new WritableList(new ArrayList<>(),
String.class);
public List<String> getWritableList() {
return writableList;
}
public void setWritableList(List<String> writableList) {
this.writableList = writableList;
}
}
private static class BeanPlus {
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
private List<String> writableList = new WritableList(new ArrayList<>(),
String.class);
public List<String> getWritableList() {
return writableList;
}
public void setWritableList(List<String> writableList) {
List<String> old = this.writableList;
this.writableList = writableList;
pcs.firePropertyChange("writableList", old, this.writableList);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
pcs.removePropertyChangeListener(listener);
}
public void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
pcs.addPropertyChangeListener(propertyName, listener);
}
public void removePropertyChangeListener(String propertyName,
PropertyChangeListener listener) {
pcs.removePropertyChangeListener(propertyName, listener);
}
}
}