view src/treecms/proto/simple/SimpleNode.java @ 30:8d733b98c5de

added Node API setLinkedNode,getLinkedNode for create link to other node. but not implemented yet.
author Shoshi TAMAKI
date Wed, 10 Nov 2010 00:36:51 +0900
parents 64359341c04a
children ff4d4704e5d7
line wrap: on
line source

package treecms.proto.simple;

import java.util.Iterator;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import treecms.proto.api.Node;
import treecms.proto.api.NodeID;
import treecms.proto.id.IncrementalNodeID;

public class SimpleNode implements Node
{
	private LinkedList<Node> m_children;
	
	private NodeID m_id;
	private String m_title,m_class;
	
	public SimpleNode()
	{
		m_children = new LinkedList<Node>();
		
		m_id = new IncrementalNodeID();
		m_title = "";
		m_class = "";
	}
	
	private SimpleNode(NodeID _id)
	{
		m_children = new LinkedList<Node>();
		
		m_id = _id;
		m_title = "";
		m_class = "";
	}
	
	@Override
	public List<Node> getChildren()
	{
		// TODO Auto-generated method stub
		// return unmodifiable list<node>
		return Collections.unmodifiableList(m_children);
	}

	@Override
	public boolean isChild(Node _child)
	{
		// TODO Auto-generated method stub
		return m_children.contains(_child);
	}

	@Override
	public Node addChild(Node _child)
	{
		// TODO Auto-generated method stub
		if(m_children.contains(_child)){
			throw new IllegalArgumentException("the node already contains "+_child.getTitle()+":"+_child.getID());
		}
		m_children.add(_child);
		return _child;
	}

	@Override
	public boolean removeChild(Node _child)
	{
		// TODO Auto-generated method stub
		return m_children.remove(_child);
	}

	@Override
	public void up(Node _child)
	{
		// TODO Auto-generated method stub
		int curPos = m_children.indexOf(_child);
		if(curPos - 1 > 0){
			m_children.add(curPos - 1,m_children.remove(curPos));
		}
	}

	@Override
	public void down(Node _child)
	{
		// TODO Auto-generated method stub
		int curPos = m_children.indexOf(_child);
		if(curPos + 1 < m_children.size()){
			m_children.add(curPos + 1,m_children.remove(curPos));
		}
	}

	@Override
	public Iterator<Node> iterator()
	{
		// TODO Auto-generated method stub
		// return unmodifiable iterator
		return Collections.unmodifiableList(m_children).iterator();
	}
	
	@Override
	public NodeID getID()
	{
		return this.m_id;
	}

	public void addChildren(List<Node> _children)
	{
		// TODO Auto-generated method stub
		this.m_children.addAll(_children);
	}


	@Override
	public Node cloneNode()
	{
		// TODO Auto-generated method stub
		SimpleNode clone = new SimpleNode(m_id.update());
		clone.setTitle(getTitle());
		clone.setClassName(getClassName());
		clone.addChildren(m_children);
		return clone;
	}

	@Override
	public String getTitle()
	{
		// TODO Auto-generated method stub
		return m_title;
	}

	@Override
	public void setTitle(String _title)
	{
		// TODO Auto-generated method stub
		m_title = _title;
	}

	@Override
	public String getClassName()
	{
		// TODO Auto-generated method stub
		return m_class;
	}

	@Override
	public void setClassName(String _class)
	{
		// TODO Auto-generated method stub
		m_class = _class;
	}

	@Override
	public Node getLinkedNode() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setLinkedNode(Node node) {
		// TODO Auto-generated method stub
		
	}
}