Mercurial > hg > Members > shoshi > TreeCMSv1
view src/treecms/proto/edit/type2/EditableNodeAPI.java @ 11:bb802051dab3
added proxy based EditableNodeAPI
author | shoshi |
---|---|
date | Sat, 28 Aug 2010 20:39:41 +0900 |
parents | |
children |
line wrap: on
line source
package treecms.proto.edit.type2; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import treecms.proto.api.NodeAPI; public class EditableNodeAPI implements NodeAPI { private boolean m_flagChanged; private String m_class; private String m_title; private NodeAPI m_orig; private LinkedList<NodeAPI> m_children; public EditableNodeAPI(NodeAPI _orig) { m_orig = _orig; if(m_orig != null){ m_flagChanged = false; }else{ m_flagChanged = true; } m_children = new LinkedList<NodeAPI>(); m_class = ""; m_title = ""; } void _resetFlag() { m_flagChanged = false; } public synchronized boolean setandgetChanged(boolean _flag) { m_flagChanged = m_flagChanged | _flag; return m_flagChanged; } public void setOriginal(NodeAPI _orig) { m_orig = _orig; } public NodeAPI getOriginal() { return m_orig; } @Override public List<NodeAPI> getChildList() { // TODO Auto-generated method stub if(setandgetChanged(false)){ return this.m_children; } return this.m_orig.getChildList(); } @Override public boolean isChild(NodeAPI _child) { // TODO Auto-generated method stub if(setandgetChanged(false)){ return m_children.contains(_child); } return m_orig.getChildList().contains(_child); } @Override public void addChild(NodeAPI _child) { // TODO Auto-generated method stub if(m_children.add(_child)){ setandgetChanged(true); } } @Override public void removeChild(NodeAPI _child) { // TODO Auto-generated method stub if(m_children.remove(_child)){ setandgetChanged(true); } } @Override public void up(NodeAPI _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)); setandgetChanged(true); } } @Override public void down(NodeAPI _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)); m_flagChanged = true; } } @Override public void setClassName(String _class) { // TODO Auto-generated method stub this.m_class = _class; setandgetChanged(true); } @Override public void setTitle(String _title) { // TODO Auto-generated method stub this.m_title = _title; setandgetChanged(true); } @Override public String getClassName() { // TODO Auto-generated method stub if(setandgetChanged(false)){ return this.m_class; } return m_orig.getClassName(); } @Override public String getTitle() { // TODO Auto-generated method stub if(setandgetChanged(false)){ return this.m_title; } return m_orig.getClassName(); } @Override public Iterator<NodeAPI> iterator() { // TODO Auto-generated method stub if(setandgetChanged(false)){ return m_children.iterator(); } return m_orig.iterator(); } }