view src/treecms/proto/simple/SimpleNode.java @ 36:9663c816e370

commit.
author suika6039
date Mon, 27 Dec 2010 21:08:43 +0900
parents c0a0fa870e6e
children 78e9b96ef04a
line wrap: on
line source

package treecms.proto.simple;

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

class SimpleNode implements Node
{
	private LinkedList<Node> m_children;
	
	private NodeID m_id;
	private String m_title,m_class;
	private Hashtable<String,String> m_attrs;
	
	SimpleNode(NodeID _id)
	{
		m_children = new LinkedList<Node>();
		
		m_id = _id;
		m_title = "";
		m_class = "";
		
		m_attrs = new Hashtable<String,String>();
		
		SimpleNodeTable.getInstance().put(m_id.toString(),this);
	}
	
	@Override
	public List<Node> getChildren()
	{
		// return unmodifiable list<node>
		return Collections.unmodifiableList(m_children);
	}

	@Override
	public boolean isChild(Node _child)
	{
		return m_children.contains(_child);
	}

	@Override
	public Node addChild(Node _child)
	{
		if(m_children.contains(_child)){
			m_children.add(_child);
			return null;
		}
		return null;
	}

	@Override
	public boolean removeChild(Node _child)
	{
		return m_children.remove(_child);
	}

	@Override
	public Iterator<Node> iterator()
	{
		// return unmodifiable iterator
		return m_children.iterator();
	}
	
	@Override
	public NodeID getID()
	{
		return this.m_id;
	}

	@Override
	public void addChildren(List<Node> _children)
	{
		if(m_children.containsAll(_children)){
			m_children.addAll(_children);
		}
	}


	@Override
	public Node cloneNode()
	{
		SimpleNode clone = new SimpleNode(m_id.update());
		clone.setTitle(getTitle());
		clone.setClassName(getClassName());
		clone.addChildren(m_children);
		return clone;
	}

	@Override
	public String getTitle()
	{
		return m_title;
	}

	@Override
	public void setTitle(String _title)
	{
		m_title = _title;
	}

	@Override
	public String getClassName()
	{
		return m_class;
	}

	@Override
	public void setClassName(String _class)
	{
		m_class = _class;
	}

	@Override
	public void down(Node _child)
	{
		int index = m_children.indexOf(_child);
		if(index != 0){
			m_children.remove(_child);
			m_children.add(index,_child);
		}
	}

	@Override
	public void replace(Node _target, Node _newChild)
	{
		int index = m_children.indexOf(_target);
		if(index != 0){
			m_children.remove(_target);
			m_children.add(index,_newChild);
		}
	}

	@Override
	public void up(Node _child)
	{
		int index = m_children.indexOf(_child);
		if(index != 0){
			m_children.remove(_child);
			m_children.add(index,_child);
		}
	}
	
	public String toString()
	{
		return getTitle()+"["+getID().toString()+"]";
	}

	@Override
	public void clearChildren()
	{
		m_children.clear();
	}

	@Override
	public String getAttribute(String _attr)
	{
		return m_attrs.get(_attr);
	}

	@Override
	public void setAttribute(String _attr, String _value)
	{
		m_attrs.put(_attr,_value);
	}
	
	@Override
	public Node createNode()
	{
		return SimpleBrowser.getSingleton().createNode();
	}
}