- java.lang.Object
-
- xyz.cofe.collection.BasicTree<SELF>
-
- Type Parameters:
SELF- SELF тип производный от BasicTree
- All Implemented Interfaces:
GetTreeParent<SELF>,ImTree<SELF>,ImTreeWalk<SELF>,IndexTree<SELF>,Tree<SELF>,TreeNotify<SELF>,UpTree<SELF>
public abstract class BasicTree<SELF extends BasicTree<SELF>> extends Object implements Tree<SELF>, UpTree<SELF>, IndexTree<SELF>
Базовая реализация tree
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface xyz.cofe.collection.ImTreeWalk
ImTreeWalk.Walk<A extends ImTree<? extends A>>
-
-
Field Summary
Fields Modifier and Type Field Description protected List<SELF>childrenListprotected ListenersHelper<TreeEvent.Listener<SELF>,TreeEvent<SELF>>listenersHelperПомощь для работы с подписчикамиprotected intnodesCountprotected SELFparent
-
Constructor Summary
Constructors Constructor Description BasicTree()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AutoCloseableaddTreeListener(boolean weak, TreeEvent.Listener<SELF> ls)Добавляет подписчика на измененияAutoCloseableaddTreeListener(TreeEvent.Listener<SELF> ls)Добавляет подписчика на измененияvoidappend(SELF node)Добавляет дочерний узелvoidappends(Iterable<SELF> nodes)Добавляет дочерние узлыvoidappends(SELF... nodes)Добавляет дочерние узлыprotected voidchanges(int idx, SELF old, SELF cur)Уведомление о изменении списка дочерних узловprotected List<SELF>children()voidclear()Удаляет дочерние узлыbooleancompareAndSetParent(SELF parent, SELF newparent)intcount()Возвращает кол-во дочерних элементовvoiddelete(SELF node)Удаляет дочерние узлыvoiddeletes(Iterable<SELF> nodes)Удаляет дочерние узлыvoiddeletes(SELF... nodes)Удаляет дочерние узлыSELFget(int idx)Возвращает дочерний элемент по его индексуSELFgetNextSibling()Возвращает следующий соседний узелintgetNodesCount()Возвращает кол-во узлов включая себя и всех вложенныхSELFgetParent()Возвращает родитеский узлер текущего узлаSELFgetPreviousSibling()Возвращает предыдущий соседний узелintgetSibIndex()Возвращает индекс узла в списке дочерних узлов по отношению к родителюSet<TreeEvent.Listener<SELF>>getTreeListeners()Возвращает всех одписчиковvoidinsert(int idx, SELF node)Добавляет дочерний узелvoidinserts(int idx, Iterable<SELF> nodes)Добавляет дочерние узлыvoidinserts(int idx, SELF... nodes)Добавляет дочерние узлы<EV extends TreeEvent<SELF>>
AutoCloseablelisten(Class<EV> eventClass, Consumer<EV> listener)Добавляет подписчика на событие определенного типаEterable<SELF>nodes()Возвращает дочерние элементыvoidremove(int index)Удаляет дочерний узелvoidremoveAllTreeListeners()Удалеяет всех подписчиковvoidremoves(int... indexes)Удаляет дочерние узлыvoidremoves(Iterable<Integer> indexes)Удаляет дочерние узлыvoidremoveTreeListener(TreeEvent.Listener<SELF> ls)Удаляет подписчикаvoidset(int idx, SELF node)Указывает/заменяет узлыvoidsetParent(SELF parent)voidsets(int idx, Iterable<SELF> nodes)Указывает/заменяет узлыvoidsets(int idx, SELF... nodes)Указывает/заменяет узлыSELFsibling(int offset)Переходит соседнему узлуvoidtreeNotify(TreeEvent<SELF> event)Уведомляет о изменении дерева-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface xyz.cofe.collection.ImTreeWalk
walk
-
Methods inherited from interface xyz.cofe.collection.IndexTree
deepOffset, getRootOffset
-
-
-
-
Field Detail
-
listenersHelper
protected final ListenersHelper<TreeEvent.Listener<SELF extends BasicTree<SELF>>,TreeEvent<SELF extends BasicTree<SELF>>> listenersHelper
Помощь для работы с подписчиками
-
nodesCount
protected int nodesCount
-
-
Method Detail
-
getParent
public SELF getParent()
Description copied from interface:GetTreeParentВозвращает родитеский узлер текущего узла
-
setParent
public void setParent(SELF parent)
-
compareAndSetParent
public boolean compareAndSetParent(SELF parent, SELF newparent)
- Specified by:
compareAndSetParentin interfaceUpTree<SELF extends BasicTree<SELF>>
-
changes
protected void changes(int idx, SELF old, SELF cur)Уведомление о изменении списка дочерних узлов- Parameters:
idx- индекс дочернего узлаold- старый узелcur- новый узел
-
treeNotify
public void treeNotify(TreeEvent<SELF> event)
Description copied from interface:TreeNotifyУведомляет о изменении дерева- Specified by:
treeNotifyin interfaceIndexTree<SELF extends BasicTree<SELF>>- Specified by:
treeNotifyin interfaceTreeNotify<SELF extends BasicTree<SELF>>- Parameters:
event- событие
-
addTreeListener
public AutoCloseable addTreeListener(TreeEvent.Listener<SELF> ls)
Description copied from interface:TreeNotifyДобавляет подписчика на изменения- Specified by:
addTreeListenerin interfaceTreeNotify<SELF extends BasicTree<SELF>>- Parameters:
ls- подписчик- Returns:
- отписка от уведомлений
-
listen
public <EV extends TreeEvent<SELF>> AutoCloseable listen(Class<EV> eventClass, Consumer<EV> listener)
Description copied from interface:TreeNotifyДобавляет подписчика на событие определенного типа- Specified by:
listenin interfaceTreeNotify<SELF extends BasicTree<SELF>>- Type Parameters:
EV- тип события- Parameters:
eventClass- тип событияlistener- подписчик- Returns:
- отписка от уведомлений
-
addTreeListener
public AutoCloseable addTreeListener(boolean weak, TreeEvent.Listener<SELF> ls)
Description copied from interface:TreeNotifyДобавляет подписчика на изменения- Specified by:
addTreeListenerin interfaceTreeNotify<SELF extends BasicTree<SELF>>- Parameters:
weak- true - добавить подписчика как weak ссылкуls- подписчик- Returns:
- отписка от уведомлений
-
removeTreeListener
public void removeTreeListener(TreeEvent.Listener<SELF> ls)
Description copied from interface:TreeNotifyУдаляет подписчика- Specified by:
removeTreeListenerin interfaceTreeNotify<SELF extends BasicTree<SELF>>- Parameters:
ls- подписчик
-
getTreeListeners
public Set<TreeEvent.Listener<SELF>> getTreeListeners()
Description copied from interface:TreeNotifyВозвращает всех одписчиков- Specified by:
getTreeListenersin interfaceTreeNotify<SELF extends BasicTree<SELF>>- Returns:
- подписчики
-
removeAllTreeListeners
public void removeAllTreeListeners()
Description copied from interface:TreeNotifyУдалеяет всех подписчиков- Specified by:
removeAllTreeListenersin interfaceTreeNotify<SELF extends BasicTree<SELF>>
-
count
public int count()
Возвращает кол-во дочерних элементов
-
getNodesCount
public int getNodesCount()
Возвращает кол-во узлов включая себя и всех вложенных- Specified by:
getNodesCountin interfaceIndexTree<SELF extends BasicTree<SELF>>- Returns:
- кол-во узлов (всегда больше 0)
-
get
public SELF get(int idx)
Возвращает дочерний элемент по его индексу
-
getSibIndex
public int getSibIndex()
Возвращает индекс узла в списке дочерних узлов по отношению к родителю- Specified by:
getSibIndexin interfaceUpTree<SELF extends BasicTree<SELF>>- Returns:
- индекс или -1
-
sibling
public SELF sibling(int offset)
Переходит соседнему узлу
-
getPreviousSibling
public SELF getPreviousSibling()
Возвращает предыдущий соседний узел- Specified by:
getPreviousSiblingin interfaceUpTree<SELF extends BasicTree<SELF>>- Returns:
- Узел или null в случаи достижения края
-
getNextSibling
public SELF getNextSibling()
Возвращает следующий соседний узел- Specified by:
getNextSiblingin interfaceUpTree<SELF extends BasicTree<SELF>>- Returns:
- Узел или null в случаи достижения края
-
append
public void append(SELF node)
Добавляет дочерний узел
-
appends
@SafeVarargs public final void appends(SELF... nodes)
Добавляет дочерние узлы
-
insert
public void insert(int idx, SELF node)Добавляет дочерний узел
-
inserts
@SafeVarargs public final void inserts(int idx, SELF... nodes)
Добавляет дочерние узлы
-
set
public void set(int idx, SELF node)Указывает/заменяет узлы
-
sets
@SafeVarargs public final void sets(int idx, SELF... nodes)
Указывает/заменяет узлы
-
remove
public void remove(int index)
Удаляет дочерний узел
-
removes
public void removes(int... indexes)
Удаляет дочерние узлы
-
delete
public void delete(SELF node)
Удаляет дочерние узлы
-
deletes
@SafeVarargs public final void deletes(SELF... nodes)
Удаляет дочерние узлы
-
-