/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.bearsoft.gui.grid.tree;
import com.bearsoft.gui.grid.data.TreedModel;
import com.bearsoft.gui.grid.events.data.ElementsDataChangedEvent;
import com.bearsoft.gui.grid.events.data.ElementsAddedEvent;
import com.bearsoft.gui.grid.events.data.ElementsRemovedEvent;
import com.bearsoft.gui.grid.events.data.TreedModelListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Test;
/**
*
* @author Gala
*/
public class FacadeBaseTest {
protected class TreeItem {
public TreeItem() {
super();
}
public TreeItem(String aData1, String aData2, String aData3) {
this();
data1 = aData1;
data2 = aData2;
data3 = aData3;
}
protected String data1;
protected String data2;
protected String data3;
protected TreeItem parent;
protected List<TreeItem> children = new ArrayList<>();
}
protected List<TreeItem> tree = new ArrayList<>();
protected int firstLevelCount = 200;
protected int secondLevelCount = 30;
protected int thirdLevelCount = 6;
protected class TestTreedModel implements TreedModel<TreeItem> {
protected Set<TreedModelListener<TreeItem>> listeners = new HashSet<>();
public TreeItem getParentOf(TreeItem anElement) {
return anElement.parent;
}
public List<TreeItem> getChildrenOf(TreeItem anElement) {
if (anElement == null) {
return tree;
} else {
return anElement.children;
}
}
public boolean isLeaf(TreeItem anElement) {
return anElement.children.isEmpty();
}
public int getColumnCount() {
return 3;
}
public Class getColumnClass(int aColIndex) {
return Object.class;
}
public String getColumnName(int aColIndex) {
return String.format("Sample data column %d", aColIndex);
}
public Object getValue(TreeItem anElement, int aColIndex) {
switch (aColIndex) {
case 0:
return anElement.data1;
case 1:
return anElement.data2;
case 2:
return anElement.data3;
}
return null;
}
public void setValue(TreeItem anElement, int aColIndex, Object aValue) {
switch (aColIndex) {
case 0:
anElement.data1 = (String) aValue;
break;
case 1:
anElement.data2 = (String) aValue;
break;
case 2:
anElement.data3 = (String) aValue;
break;
}
fireCellsChanged(anElement, aColIndex, false);
}
public void remove(TreeItem anElement) {
if (anElement.parent != null) {
anElement.parent.children.remove(anElement);
} else {
tree.remove(anElement);
}
ArrayList list = new ArrayList();
list.add(anElement);
fireElementsRemoved(list, false);
}
public void add(TreeItem aParent, TreeItem anElement, int aIndex) {
if (aParent != null) {
anElement.parent = aParent;
aParent.children.add(aIndex, anElement);
} else {
tree.add(aIndex, anElement);
}
ArrayList list = new ArrayList();
list.add(anElement);
fireElementsAdded(list, false);
}
public void add(TreeItem aParent, TreeItem anElement1, int aIndex1, TreeItem anElement2, int aIndex2, TreeItem anElement3, int aIndex3) {
if (aParent != null) {
anElement1.parent = aParent;
aParent.children.add(aIndex1, anElement1);
aParent.children.add(aIndex2, anElement2);
aParent.children.add(aIndex3, anElement3);
} else {
tree.add(aIndex1, anElement1);
tree.add(aIndex2, anElement2);
tree.add(aIndex3, anElement3);
}
ArrayList list = new ArrayList();
list.add(anElement1);
list.add(anElement2);
list.add(anElement3);
fireElementsAdded(list, false);
}
public void fireCellsChanged(TreeItem anElement, int aColIndex, boolean aAjusting) {
ElementsDataChangedEvent event = new ElementsDataChangedEvent(Collections.singletonList(anElement), aColIndex, aAjusting);
for (TreedModelListener<TreeItem> l : listeners) {
l.elementsDataChanged(event);
}
}
public void fireElementsAdded(List<TreeItem> anElements, boolean aAjusting) {
ElementsAddedEvent event = new ElementsAddedEvent(anElements, aAjusting);
for (TreedModelListener<TreeItem> l : listeners) {
l.elementsAdded(event);
}
}
public void fireElementsRemoved(List<TreeItem> anElements, boolean aAjusting) {
ElementsRemovedEvent event = new ElementsRemovedEvent(anElements, aAjusting);
for (TreedModelListener<TreeItem> l : listeners) {
l.elementsRemoved(event);
}
}
public void addTreedModelListener(TreedModelListener<TreeItem> aListener) {
listeners.add(aListener);
}
public void removeTreedModelListener(TreedModelListener<TreeItem> aListener) {
listeners.remove(aListener);
}
}
protected void initTree() {
tree.clear();
for (int i = 0; i < firstLevelCount; i++) {
TreeItem item = new TreeItem();
item.data1 = "item" + String.valueOf(i + 1);
item.data2 = "col1; " + item.data1;
item.data3 = "col2; " + item.data1;
tree.add(item);
for (int j = 0; j < secondLevelCount; j++) {
TreeItem child = new TreeItem();
child.data1 = " child" + String.valueOf(j + 1);
child.data2 = "col1; " + item.data1;
child.data3 = "col2; " + item.data1;
child.parent = item;
item.children.add(child);
for (int k = 0; k < thirdLevelCount; k++) {
TreeItem child1 = new TreeItem();
child1.data1 = " grandchild" + String.valueOf(k + 1);
child1.data2 = "col1; " + item.data1;
child1.data3 = "col2; " + item.data1;
child.children.add(child1);
child1.parent = child;
}
}
}
}
@Test
public void dummyTest() {
}
}