package com.eas.grid.columns.header;
import java.util.ArrayList;
import java.util.List;
import com.eas.grid.GridColumn;
import com.eas.ui.PublishedColor;
import com.eas.ui.PublishedFont;
import com.google.gwt.user.cellview.client.Header;
public class HeaderNode<T> {
protected GridColumn<T, ?> column;
protected HeaderNode<T> parent;
protected List<HeaderNode<T>> children = new ArrayList<>();
protected PublishedColor background;
protected PublishedColor foreground;
protected PublishedFont font;
protected Header<String> header;
protected int leavesCount;
protected int depthRemainder;
public HeaderNode() {
super();
}
public HeaderNode(Header<String> aHeader) {
super();
header = aHeader;
}
public HeaderNode<T> lightCopy() {
HeaderNode<T> copied = new HeaderNode<T>();
copied.setColumn(column);
copied.setHeader(header);
copied.setBackground(background);
copied.setForeground(foreground);
copied.setFont(font);
return copied;
}
public PublishedColor getBackground() {
return background;
}
public void setBackground(PublishedColor aValue) {
background = aValue;
}
public PublishedColor getForeground() {
return foreground;
}
public void setForeground(PublishedColor aValue) {
foreground = aValue;
}
public PublishedFont getFont() {
return font;
}
public void setFont(PublishedFont aValue) {
font = aValue;
}
public GridColumn<T, ?> getColumn() {
return column;
}
public void setColumn(GridColumn<T, ?> aValue) {
column = aValue;
}
public HeaderNode<T> getParent() {
return parent;
}
public void setParent(HeaderNode<T> aParent) {
parent = aParent;
}
public List<HeaderNode<T>> getChildren() {
return children;
}
public Header<String> getHeader() {
return header;
}
public void setHeader(Header<String> aHeader) {
header = aHeader;
}
public boolean removeColumnNode(HeaderNode<T> aNode) {
if (children != null) {
return children.remove(aNode);
}else
return false;
}
public void addColumnNode(HeaderNode<T> aNode) {
if (children == null) {
children = new ArrayList<>();
}
if (!children.contains(aNode)) {
children.add(aNode);
aNode.setParent(this);
}
}
public void insertColumnNode(int atIndex, HeaderNode<T> aNode) {
if (children == null) {
children = new ArrayList<>();
}
if (!children.contains(aNode) && atIndex >= 0 && atIndex <= children.size()) {
children.add(atIndex, aNode);
aNode.setParent(this);
}
}
public int getDepthRemainder() {
return depthRemainder;
}
public int getLeavesCount() {
return leavesCount;
}
public boolean isLeaf() {
return children.isEmpty();
}
}