From 873bffd9483e217a66407a280401d7b9f18414c7 Mon Sep 17 00:00:00 2001
From: Muhammad Naderi
Date: Wed, 18 Nov 2015 09:37:17 +0330
Subject: [PATCH 01/22] Create styles.xml
to support rtl, foreach left property should be a start one, and foreach right property should be an End one
---
app/src/main/res/values-v17/styles.xml | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 app/src/main/res/values-v17/styles.xml
diff --git a/app/src/main/res/values-v17/styles.xml b/app/src/main/res/values-v17/styles.xml
new file mode 100644
index 0000000..b672c61
--- /dev/null
+++ b/app/src/main/res/values-v17/styles.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
From a18ac4d8e806eb1956e9b8dcbe5df9910a1dc5fd Mon Sep 17 00:00:00 2001
From: vturcan
Date: Thu, 30 Jun 2016 10:52:35 +0300
Subject: [PATCH 02/22] Implement missing features autoScroll,
autoScrollToSelection, autoScrollToExpandedNode, toggle selections, toggle
expansions, some getters
---
.../b/atv/holder/SimpleViewHolder.java | 0
.../com/unnamed/b/atv/model/TreeNode.java | 26 ++++
.../unnamed/b/atv/view/AndroidTreeView.java | 134 +++++++++++++++---
.../b/atv/view/TreeNodeWrapperView.java | 0
.../unnamed/b/atv/view/TwoDScrollView.java | 10 +-
5 files changed, 146 insertions(+), 24 deletions(-)
mode change 100644 => 100755 library/src/main/java/com/unnamed/b/atv/holder/SimpleViewHolder.java
mode change 100644 => 100755 library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
mode change 100644 => 100755 library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
mode change 100644 => 100755 library/src/main/java/com/unnamed/b/atv/view/TreeNodeWrapperView.java
mode change 100644 => 100755 library/src/main/java/com/unnamed/b/atv/view/TwoDScrollView.java
diff --git a/library/src/main/java/com/unnamed/b/atv/holder/SimpleViewHolder.java b/library/src/main/java/com/unnamed/b/atv/holder/SimpleViewHolder.java
old mode 100644
new mode 100755
diff --git a/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java b/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
old mode 100644
new mode 100755
index dbf33f8..394ffac
--- a/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
+++ b/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
@@ -1,6 +1,7 @@
package com.unnamed.b.atv.model;
import android.content.Context;
+import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -97,6 +98,10 @@ public boolean isLeaf() {
return size() == 0;
}
+ public boolean isBranch() {
+ return size() > 0;
+ }
+
public Object getValue() {
return mValue;
}
@@ -112,6 +117,9 @@ public TreeNode setExpanded(boolean expanded) {
public void setSelected(boolean selected) {
mSelected = selected;
+ if(mViewHolder != null) {
+ mViewHolder.toggleSelection(mSelected);
+ }
}
public boolean isSelected() {
@@ -191,6 +199,18 @@ public BaseNodeViewHolder getViewHolder() {
return mViewHolder;
}
+ public boolean isInitialized() {
+ return mViewHolder != null ? mViewHolder.isInitialized() : false;
+ }
+
+ public View getView() {
+ return mViewHolder != null ? mViewHolder.getView() : null;
+ }
+
+ public Boolean hasView() {
+ return getView() != null;
+ }
+
public boolean isFirstChild() {
if (!isRoot()) {
List parentChildren = mParent.children;
@@ -225,9 +245,11 @@ public static abstract class BaseNodeViewHolder {
private View mView;
protected int containerStyle;
protected Context context;
+ protected LayoutInflater layoutInflater;
public BaseNodeViewHolder(Context context) {
this.context = context;
+ this.layoutInflater = LayoutInflater.from(context);
}
public View getView() {
@@ -280,5 +302,9 @@ public void toggle(boolean active) {
public void toggleSelectionMode(boolean editModeEnabled) {
// empty
}
+
+ public void toggleSelection(boolean isSelected) {
+
+ }
}
}
diff --git a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
old mode 100644
new mode 100755
index 222a43a..77dcb35
--- a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
+++ b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
@@ -5,6 +5,7 @@
import android.view.ContextThemeWrapper;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.LinearLayout;
@@ -26,8 +27,8 @@
public class AndroidTreeView {
private static final String NODES_PATH_SEPARATOR = ";";
- protected TreeNode mRoot;
- private Context mContext;
+ protected Context mContext;
+ private TreeNode mRoot;
private boolean applyForRoot;
private int containerStyle = 0;
private Class extends TreeNode.BaseNodeViewHolder> defaultViewHolderClass = SimpleViewHolder.class;
@@ -36,7 +37,12 @@ public class AndroidTreeView {
private boolean mSelectionModeEnabled;
private boolean mUseDefaultAnimation = false;
private boolean use2dScroll = false;
- private boolean enableAutoToggle = true;
+ private boolean enableExpansionAutoToggle = true;
+ private boolean enableSelectionsAutoToggle = true;
+ private ViewGroup mRootView;
+ private TreeNode currentSelectedLeaf;
+ private boolean autoScrollToExpandedNode = true;
+ private boolean autoScrollToSelectedLeafs = false;
public AndroidTreeView(Context context) {
mContext = context;
@@ -51,6 +57,14 @@ public AndroidTreeView(Context context, TreeNode root) {
mContext = context;
}
+ public void setAutoScrollToSelectedLeafs(boolean autoScrollToSelectedLeafs) {
+ this.autoScrollToSelectedLeafs = autoScrollToSelectedLeafs;
+ }
+
+ public void setAutoScrollToExpandedNode(boolean autoScrollToExpandedNode) {
+ this.autoScrollToExpandedNode = autoScrollToExpandedNode;
+ }
+
public void setDefaultAnimation(boolean defaultAnimation) {
this.mUseDefaultAnimation = defaultAnimation;
}
@@ -72,12 +86,16 @@ public boolean is2dScrollEnabled() {
return use2dScroll;
}
- public void setUseAutoToggle(boolean enableAutoToggle) {
- this.enableAutoToggle = enableAutoToggle;
+ public void setExpansionAutoToggle(boolean enableAutoToggle) {
+ this.enableExpansionAutoToggle = enableAutoToggle;
}
- public boolean isAutoToggleEnabled() {
- return enableAutoToggle;
+ public boolean isExpansionAutoToggleEnabled() {
+ return enableExpansionAutoToggle;
+ }
+
+ public void setLeafSelectionAutoToggle(boolean enableSelectionsAutoToggle) {
+ this.enableSelectionsAutoToggle = enableSelectionsAutoToggle;
}
public void setDefaultViewHolder(Class extends TreeNode.BaseNodeViewHolder> viewHolder) {
@@ -104,12 +122,11 @@ public void collapseAll() {
public View getView(int style) {
- final ViewGroup view;
if (style > 0) {
ContextThemeWrapper newContext = new ContextThemeWrapper(mContext, style);
- view = use2dScroll ? new TwoDScrollView(newContext) : new ScrollView(newContext);
+ mRootView = use2dScroll ? new TwoDScrollView(newContext) : new ScrollView(newContext);
} else {
- view = use2dScroll ? new TwoDScrollView(mContext) : new ScrollView(mContext);
+ mRootView = use2dScroll ? new TwoDScrollView(mContext) : new ScrollView(mContext);
}
Context containerContext = mContext;
@@ -120,7 +137,7 @@ public View getView(int style) {
viewTreeItems.setId(R.id.tree_items);
viewTreeItems.setOrientation(LinearLayout.VERTICAL);
- view.addView(viewTreeItems);
+ mRootView.addView(viewTreeItems);
mRoot.setViewHolder(new TreeNode.BaseNodeViewHolder(mContext) {
@Override
@@ -135,7 +152,7 @@ public ViewGroup getNodeItemsView() {
});
expandNode(mRoot, false);
- return view;
+ return mRootView;
}
public View getView() {
@@ -150,12 +167,15 @@ public void expandLevel(int level) {
}
private void expandLevel(TreeNode node, int level) {
+ boolean lastAutoScrollEnabled = autoScrollToExpandedNode;
+ autoScrollToExpandedNode = false;
if (node.getLevel() <= level) {
expandNode(node, false);
}
for (TreeNode n : node.getChildren()) {
expandLevel(n, level);
}
+ autoScrollToExpandedNode = lastAutoScrollEnabled;
}
public void expandNode(TreeNode node) {
@@ -203,13 +223,21 @@ private void getSaveState(TreeNode root, StringBuilder sBuilder) {
}
}
- public void toggleNode(TreeNode node) {
+ public void toggleNodeExpansion(TreeNode node) {
if (node.isExpanded()) {
collapseNode(node, false);
} else {
expandNode(node, false);
}
+ }
+ private void toggleLeafSelection(TreeNode node) {
+ if (node.isLeaf()) {
+ if (currentSelectedLeaf != null) {
+ selectNode(currentSelectedLeaf, false);
+ }
+ selectNode(node, !node.isSelected());
+ }
}
private void collapseNode(TreeNode node, final boolean includeSubnodes) {
@@ -251,6 +279,62 @@ private void expandNode(final TreeNode node, boolean includeSubnodes) {
parentViewHolder.getNodeItemsView().setVisibility(View.VISIBLE);
}
+ if (node != mRoot) {
+ if ((node.isLeaf() && autoScrollToSelectedLeafs) ||
+ (node.isBranch() && autoScrollToExpandedNode)) {
+ scrollToNode(node);
+ }
+ }
+
+ }
+
+ public void expandNodeIncludingParents(TreeNode node, boolean autoScroll) {
+ List parents = getParents(node);
+ for (TreeNode parentNode : parents) {
+ boolean lastAutoScrollEnabled = autoScrollToExpandedNode;
+ autoScrollToExpandedNode = false;
+ expandNode(parentNode);
+ autoScrollToExpandedNode = lastAutoScrollEnabled;
+ }
+ if (autoScroll) {
+ scrollToNode(node);
+ }
+ }
+
+ private List getParents(TreeNode node) {
+ List parents = new ArrayList<>();
+ TreeNode parent = node;
+ while (parent != mRoot) {
+ parents.add(0, parent);
+ parent = parent.getParent();
+ }
+ return parents;
+ }
+
+ public void scrollToNode(final TreeNode node) {
+ if (node.isInitialized()) {
+ if(node.getView().getHeight() == 0) {
+ node.getView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ node.getView().getViewTreeObserver().removeGlobalOnLayoutListener(this);
+ scrollToNode(node);
+ }
+ });
+ return;
+ }
+ int yToScroll = ((int) node.getView().getY());
+ ViewGroup parent = ((ViewGroup) node.getView().getParent());
+ while (parent != mRootView) {
+ yToScroll += parent.getY();
+ parent = ((ViewGroup) parent.getParent());
+ }
+ if (mRootView instanceof TwoDScrollView) {
+ ((TwoDScrollView) mRootView).smoothScrollTo(0, yToScroll);
+ } else if (mRootView instanceof ScrollView) {
+ ((ScrollView) mRootView).smoothScrollTo(0, yToScroll);
+ }
+ }
}
private void addNode(ViewGroup container, final TreeNode n) {
@@ -264,28 +348,24 @@ private void addNode(ViewGroup container, final TreeNode n) {
nodeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ toggleAll(n);
if (n.getClickListener() != null) {
n.getClickListener().onClick(n, n.getValue());
} else if (nodeClickListener != null) {
nodeClickListener.onClick(n, n.getValue());
}
- if (enableAutoToggle) {
- toggleNode(n);
- }
}
});
nodeView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
+ toggleAll(n);
if (n.getLongClickListener() != null) {
return n.getLongClickListener().onLongClick(n, n.getValue());
} else if (nodeLongClickListener != null) {
return nodeLongClickListener.onLongClick(n, n.getValue());
}
- if (enableAutoToggle) {
- toggleNode(n);
- }
return false;
}
});
@@ -294,6 +374,15 @@ public boolean onLongClick(View view) {
//------------------------------------------------------------
// Selection methods
+ public void toggleAll(TreeNode node) {
+ if (enableExpansionAutoToggle) {
+ toggleNodeExpansion(node);
+ }
+ if (enableSelectionsAutoToggle) {
+ toggleLeafSelection(node);
+ }
+ }
+
public void setSelectionModeEnabled(boolean selectionModeEnabled) {
if (!selectionModeEnabled) {
// TODO fix double iteration over tree
@@ -370,6 +459,13 @@ private void makeAllSelection(boolean selected, boolean skipCollapsed) {
public void selectNode(TreeNode node, boolean selected) {
if (mSelectionModeEnabled) {
+ if (node.isLeaf()) {
+ if (selected) {
+ currentSelectedLeaf = node;
+ } else if (node == currentSelectedLeaf) {
+ currentSelectedLeaf = null;
+ }
+ }
node.setSelected(selected);
toogleSelectionForNode(node, true);
}
diff --git a/library/src/main/java/com/unnamed/b/atv/view/TreeNodeWrapperView.java b/library/src/main/java/com/unnamed/b/atv/view/TreeNodeWrapperView.java
old mode 100644
new mode 100755
diff --git a/library/src/main/java/com/unnamed/b/atv/view/TwoDScrollView.java b/library/src/main/java/com/unnamed/b/atv/view/TwoDScrollView.java
old mode 100644
new mode 100755
index 298e060..ef638c1
--- a/library/src/main/java/com/unnamed/b/atv/view/TwoDScrollView.java
+++ b/library/src/main/java/com/unnamed/b/atv/view/TwoDScrollView.java
@@ -567,9 +567,9 @@ private View findFocusableViewInBounds(boolean topFocus, int top, int bottom, bo
* component is a good candidate for focus, this scrollview reclaims the
* focus.
*
- * @param direction the scroll direction: {@link android.view.View#FOCUS_UP}
+ * @param direction the scroll direction: {@link View#FOCUS_UP}
* to go the top of the view or
- * {@link android.view.View#FOCUS_DOWN} to go the bottom
+ * {@link View#FOCUS_DOWN} to go the bottom
* @return true if the key event is consumed by this method, false otherwise
*/
public boolean fullScroll(int direction, boolean horizontal) {
@@ -610,9 +610,9 @@ public boolean fullScroll(int direction, boolean horizontal) {
* to a component visible in this area. If no component can be focused in
* the new visible area, the focus is reclaimed by this scrollview.
*
- * @param direction the scroll direction: {@link android.view.View#FOCUS_UP}
+ * @param direction the scroll direction: {@link View#FOCUS_UP}
* to go upward
- * {@link android.view.View#FOCUS_DOWN} to downward
+ * {@link View#FOCUS_DOWN} to downward
* @param top the top offset of the new area to be made visible
* @param bottom the bottom offset of the new area to be made visible
* @return true if the key event is consumed by this method, false otherwise
@@ -945,7 +945,7 @@ public void requestChildFocus(View child, View focused) {
* When looking for focus in children of a scroll view, need to be a little
* more careful not to give focus to something that is scrolled off screen.
*
- * This is more expensive than the default {@link android.view.ViewGroup}
+ * This is more expensive than the default {@link ViewGroup}
* implementation, otherwise this behavior might have been made the default.
*/
@Override
From b1f324fdb22d35b501de2f0720b3871cfc956556 Mon Sep 17 00:00:00 2001
From: vturcan
Date: Thu, 30 Jun 2016 11:29:27 +0300
Subject: [PATCH 03/22] Implement missing features sample
---
.../b/atv/sample/activity/MainActivity.java | 2 +
.../TwoDScrollingArrowExpandFragment.java | 2 +-
.../TwoDScrollingArrowExpandNodeFragment.java | 88 +++++++++++++++++++
.../ArrowExpandSelectableHeaderHolder.java | 2 +-
4 files changed, 92 insertions(+), 2 deletions(-)
create mode 100644 app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandNodeFragment.java
diff --git a/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java b/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java
index f74bea2..c62558e 100644
--- a/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java
+++ b/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java
@@ -14,6 +14,7 @@
import com.unnamed.b.atv.sample.fragment.FolderStructureFragment;
import com.unnamed.b.atv.sample.fragment.SelectableTreeFragment;
import com.unnamed.b.atv.sample.fragment.TwoDScrollingArrowExpandFragment;
+import com.unnamed.b.atv.sample.fragment.TwoDScrollingArrowExpandNodeFragment;
import com.unnamed.b.atv.sample.fragment.TwoDScrollingFragment;
import java.util.ArrayList;
@@ -36,6 +37,7 @@ protected void onCreate(Bundle savedInstanceState) {
listItems.put("Selectable Nodes", SelectableTreeFragment.class);
listItems.put("2d scrolling", TwoDScrollingFragment.class);
listItems.put("Expand with arrow only", TwoDScrollingArrowExpandFragment.class);
+ listItems.put("Expand with arrow one node only", TwoDScrollingArrowExpandNodeFragment.class);
final List list = new ArrayList(listItems.keySet());
diff --git a/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandFragment.java b/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandFragment.java
index bc64194..14a4264 100644
--- a/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandFragment.java
+++ b/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandFragment.java
@@ -46,7 +46,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
tView.setDefaultNodeClickListener(TwoDScrollingArrowExpandFragment.this);
tView.setDefaultViewHolder(ArrowExpandSelectableHeaderHolder.class);
containerView.addView(tView.getView());
- tView.setUseAutoToggle(false);
+ tView.setExpansionAutoToggle(false);
tView.expandAll();
diff --git a/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandNodeFragment.java b/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandNodeFragment.java
new file mode 100644
index 0000000..fccb279
--- /dev/null
+++ b/app/src/main/java/com/unnamed/b/atv/sample/fragment/TwoDScrollingArrowExpandNodeFragment.java
@@ -0,0 +1,88 @@
+package com.unnamed.b.atv.sample.fragment;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import com.unnamed.b.atv.model.TreeNode;
+import com.unnamed.b.atv.sample.R;
+import com.unnamed.b.atv.sample.holder.ArrowExpandSelectableHeaderHolder;
+import com.unnamed.b.atv.sample.holder.IconTreeItemHolder;
+import com.unnamed.b.atv.view.AndroidTreeView;
+
+/**
+ * Created by Bogdan Melnychuk on 2/12/15 modified by Szigeti Peter 2/2/16.
+ */
+public class TwoDScrollingArrowExpandNodeFragment extends Fragment implements TreeNode.TreeNodeClickListener{
+ private static final String NAME = "Very long name for folder";
+ private AndroidTreeView tView;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_selectable_nodes, null, false);
+ rootView.findViewById(R.id.status).setVisibility(View.GONE);
+ ViewGroup containerView = (ViewGroup) rootView.findViewById(R.id.container);
+
+ TreeNode root = TreeNode.root();
+
+ TreeNode s1 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "Folder with very long name ")).setViewHolder(
+ new ArrowExpandSelectableHeaderHolder(getActivity()));
+ TreeNode s2 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "Another folder with very long name")).setViewHolder(
+ new ArrowExpandSelectableHeaderHolder(getActivity()));
+
+ fillFolder(s1);
+ TreeNode nodeToExpand = fillFolder(s2);
+
+ root.addChildren(s1, s2);
+
+ tView = new AndroidTreeView(getActivity(), root);
+ tView.setDefaultAnimation(true);
+ tView.setUse2dScroll(true);
+ tView.setDefaultContainerStyle(R.style.TreeNodeStyleCustom);
+ tView.setDefaultNodeClickListener(TwoDScrollingArrowExpandNodeFragment.this);
+ tView.setDefaultViewHolder(ArrowExpandSelectableHeaderHolder.class);
+ containerView.addView(tView.getView());
+
+ tView.setAutoScrollToExpandedNode(true);
+ tView.setAutoScrollToSelectedLeafs(true);
+ tView.setLeafSelectionAutoToggle(true);
+
+ tView.expandNode(s1);
+ tView.expandNodeIncludingParents(nodeToExpand, true);
+
+ if (savedInstanceState != null) {
+ String state = savedInstanceState.getString("tState");
+ if (!TextUtils.isEmpty(state)) {
+ tView.restoreState(state);
+ }
+ }
+ return rootView;
+ }
+
+ private TreeNode fillFolder(TreeNode folder) {
+ TreeNode currentNode = folder;
+ TreeNode file = null;
+ for (int i = 0; i < 6; i++) {
+ file = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, NAME + " " + i));
+ currentNode.addChild(file);
+ currentNode = file;
+ }
+ return file;
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putString("tState", tView.getSaveState());
+ }
+
+ @Override
+ public void onClick(TreeNode node, Object value) {
+ Toast toast = Toast.makeText(getActivity(), ((IconTreeItemHolder.IconTreeItem)value).text, Toast.LENGTH_SHORT);
+ toast.show();
+ }
+}
diff --git a/app/src/main/java/com/unnamed/b/atv/sample/holder/ArrowExpandSelectableHeaderHolder.java b/app/src/main/java/com/unnamed/b/atv/sample/holder/ArrowExpandSelectableHeaderHolder.java
index c58d084..841ab35 100644
--- a/app/src/main/java/com/unnamed/b/atv/sample/holder/ArrowExpandSelectableHeaderHolder.java
+++ b/app/src/main/java/com/unnamed/b/atv/sample/holder/ArrowExpandSelectableHeaderHolder.java
@@ -42,7 +42,7 @@ public View createNodeView(final TreeNode node, IconTreeItemHolder.IconTreeItem
arrowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- tView.toggleNode(node);
+ tView.toggleNodeExpansion(node);
}
});
From 1404f41f14494170ba006cb6fa0e5e4a67595c0e Mon Sep 17 00:00:00 2001
From: Valerii Turcan
Date: Thu, 30 Jun 2016 11:36:08 +0300
Subject: [PATCH 04/22] Update readme
Add missing features to description
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index 89074e2..c3c389f 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,8 @@ Tree view implementation for android
+ 3. Save state after rotation
+ 4. Selection mode for nodes
+ 5. Dynamic add/remove node
++ 6. Auto scroll to selected leaf
++ 7. Auto scroll to expanded node
### Known Limitations
+ For Android 4.0 (+/- nearest version) if you have too deep view hierarchy and with tree its easily possible, your app may crash
From 3ae922deab714285f24ceeefbf52ec98b946525a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 14:17:55 +0100
Subject: [PATCH 05/22] Switch to newest Print-PlugIn
---
app/build.gradle | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/build.gradle b/app/build.gradle
index 6d144bb..e4e1a3d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -21,6 +21,6 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
- compile 'com.github.johnkil.print:print:1.2.2'
+ compile 'com.github.johnkil.print:print:1.3.1'
compile project(':library')
}
From c989b0c48259f0a2dfccb56d67ffb7430a959487 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 14:20:00 +0100
Subject: [PATCH 06/22] Switch to newest gradle wrapper and plugin version
---
build.gradle | 3 ++-
gradle/wrapper/gradle-wrapper.properties | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/build.gradle b/build.gradle
index ebf706b..5275ca9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,9 +3,10 @@
buildscript {
repositories {
jcenter()
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.0.0'
+ classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 0c71e76..7db30d9 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip
From 8011020b0160db01898e33e3ad7d66d4d5ed0371 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 14:24:35 +0100
Subject: [PATCH 07/22] Target SDK 27 (Android 8)
---
gradle.properties | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gradle.properties b/gradle.properties
index ddb8205..6bcdf2c 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -22,9 +22,9 @@ VERSION_CODE=11
ANDROID_BUILD_MIN_SDK_VERSION=11
-ANDROID_BUILD_TARGET_SDK_VERSION=21
-ANDROID_BUILD_SDK_VERSION=21
-ANDROID_BUILD_TOOLS_VERSION=21.1.2
+ANDROID_BUILD_TARGET_SDK_VERSION=27
+ANDROID_BUILD_SDK_VERSION=27
+ANDROID_BUILD_TOOLS_VERSION=27.0.1
GROUP=com.github.bmelnychuk
POM_DESCRIPTION=Tree View implementation for android
From dc7cfa6e4625bd540534f10d9b2d2574ab60ba78 Mon Sep 17 00:00:00 2001
From: Nehchal Jindal
Date: Mon, 18 Sep 2017 17:44:47 +0530
Subject: [PATCH 08/22] added capability to add new node at any position (not
just last)
(cherry picked from commit 322b8e087e865772d84261ffac66bddc2cd73f05 from https://github.com/nehchal/AndroidTreeView)
---
.../com/unnamed/b/atv/model/TreeNode.java | 17 +++++++++
.../unnamed/b/atv/view/AndroidTreeView.java | 35 ++++++++++++++++---
2 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java b/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
index 394ffac..41a6285 100755
--- a/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
+++ b/library/src/main/java/com/unnamed/b/atv/model/TreeNode.java
@@ -54,6 +54,23 @@ public TreeNode addChild(TreeNode childNode) {
return this;
}
+ /**
+ * Adds a child node at give position
+ * @param childNode
+ * @param position Fist position is 0. If -1, child is inserted at the end
+ * @return
+ */
+ public TreeNode addChild(TreeNode childNode, int position) {
+ childNode.mParent = this;
+ childNode.mId = generateId();
+
+ if(position == -1 || position > children.size())
+ position = childNode.size();
+
+ children.add(position, childNode);
+ return this;
+ }
+
public TreeNode addChildren(TreeNode... nodes) {
for (TreeNode n : nodes) {
addChild(n);
diff --git a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
index 77dcb35..afb8f48 100755
--- a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
+++ b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
@@ -266,7 +266,7 @@ private void expandNode(final TreeNode node, boolean includeSubnodes) {
parentViewHolder.toggle(true);
for (final TreeNode n : node.getChildren()) {
- addNode(parentViewHolder.getNodeItemsView(), n);
+ addNode(parentViewHolder.getNodeItemsView(), n, -1);
if (n.isExpanded() || includeSubnodes) {
expandNode(n, includeSubnodes);
@@ -337,10 +337,20 @@ public void onGlobalLayout() {
}
}
- private void addNode(ViewGroup container, final TreeNode n) {
+ /**
+ * Add the view corresponding to TreeNode to the View Group
+ * @param container
+ * @param n
+ */
+ private void addNode(ViewGroup container, final TreeNode n, int index) {
final TreeNode.BaseNodeViewHolder viewHolder = getViewHolderForNode(n);
final View nodeView = viewHolder.getView();
- container.addView(nodeView);
+
+ if(index == -1)
+ container.addView(nodeView);
+ else
+ container.addView(nodeView, index);
+
if (mSelectionModeEnabled) {
viewHolder.toggleSelectionMode(mSelectionModeEnabled);
}
@@ -563,11 +573,26 @@ public boolean willChangeBounds() {
//-----------------------------------------------------------------
//Add / Remove
+ /**
+ * Add the node in the end
+ * @param parent
+ * @param nodeToAdd
+ */
public void addNode(TreeNode parent, final TreeNode nodeToAdd) {
- parent.addChild(nodeToAdd);
+ addNode(parent, nodeToAdd, -1);
+ }
+
+ /**
+ * Adds the node at given position
+ * @param parent
+ * @param nodeToAdd
+ * @param position if -1, node is add in the last
+ */
+ public void addNode(TreeNode parent, final TreeNode nodeToAdd, int position) {
+ parent.addChild(nodeToAdd, position);
if (parent.isExpanded()) {
final TreeNode.BaseNodeViewHolder parentViewHolder = getViewHolderForNode(parent);
- addNode(parentViewHolder.getNodeItemsView(), nodeToAdd);
+ addNode(parentViewHolder.getNodeItemsView(), nodeToAdd, position);
}
}
From 5fb3b74ab21fe38ba303444f40476a668745eaa9 Mon Sep 17 00:00:00 2001
From: Laokoon
Date: Wed, 21 Sep 2016 22:43:15 +0200
Subject: [PATCH 09/22] fixed bug where fast collapsing and expanding would not
work without defaultAnimation true
(cherry picked from commit 0eaaf0d3d210f569dd69e115bdaeb70b3c350d4b)
---
.../src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
index afb8f48..ea736b3 100755
--- a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
+++ b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
@@ -277,6 +277,9 @@ private void expandNode(final TreeNode node, boolean includeSubnodes) {
expand(parentViewHolder.getNodeItemsView());
} else {
parentViewHolder.getNodeItemsView().setVisibility(View.VISIBLE);
+ parentViewHolder.getNodeItemsView().getLayoutParams().height =
+ LinearLayout.LayoutParams.WRAP_CONTENT;
+ parentViewHolder.getNodeItemsView().requestLayout();
}
if (node != mRoot) {
From 42c39288909c283394b42e73b420fcdb3907ba59 Mon Sep 17 00:00:00 2001
From: Niwin Santhosh
Date: Fri, 26 Aug 2016 12:36:20 +0530
Subject: [PATCH 10/22] Update collapseNode() in AndroidTreeView.java
Added a "includeSubnodes" parameter in collapseNode function (public method). It would be useful for people who want to collapse a node as well as all of it's subnodes
(cherry picked from commit 407ac14822e697e14e3570beb03e29cd70c2c291)
---
.../src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
index ea736b3..6087834 100755
--- a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
+++ b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
@@ -182,8 +182,8 @@ public void expandNode(TreeNode node) {
expandNode(node, false);
}
- public void collapseNode(TreeNode node) {
- collapseNode(node, false);
+ public void collapseNode(TreeNode node, Boolean includeSubnodes) {
+ collapseNode(node, includeSubnodes);
}
public String getSaveState() {
From 0b37daada4594954a39fcf25a064a7b14b29122c Mon Sep 17 00:00:00 2001
From: Niwin Santhosh
Date: Fri, 26 Aug 2016 15:16:05 +0530
Subject: [PATCH 11/22] Added includeSubnodes param to collapseNode method
(cherry picked from commit 58b0d07e408626447a3a4b2bc89f89993a04d225 from https://github.com/vajro/AndroidTreeView)
Added includeSubnodes param to collapseNode method
(cherry picked from commit 68cc01267551e6e806c9ec4c20bea3c515a6baa6)
---
.../main/java/com/unnamed/b/atv/view/AndroidTreeView.java | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
index 6087834..a11b365 100755
--- a/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
+++ b/library/src/main/java/com/unnamed/b/atv/view/AndroidTreeView.java
@@ -182,8 +182,12 @@ public void expandNode(TreeNode node) {
expandNode(node, false);
}
- public void collapseNode(TreeNode node, Boolean includeSubnodes) {
- collapseNode(node, includeSubnodes);
+ public void collapseNodeWithSubnodes(TreeNode node) {
+ collapseNode(node, true);
+ }
+
+ public void collapseNode(TreeNode node) {
+ collapseNode(node, false);
}
public String getSaveState() {
From 8438b2966edd371a2f249dc47b5227704a2388a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:20:34 +0100
Subject: [PATCH 12/22] Switch to Android support library 27 (minimum SDK is
now 14)
---
app/build.gradle | 2 +-
.../com/unnamed/b/atv/sample/activity/MainActivity.java | 4 ++--
.../b/atv/sample/activity/SingleFragmentActivity.java | 4 ++--
build.gradle | 1 +
gradle.properties | 6 +++---
library/build.gradle | 2 +-
6 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index e4e1a3d..c1395fc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -20,7 +20,7 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:21.0.3'
+ compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.github.johnkil.print:print:1.3.1'
compile project(':library')
}
diff --git a/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java b/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java
index c62558e..f83bfd4 100644
--- a/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java
+++ b/app/src/main/java/com/unnamed/b/atv/sample/activity/MainActivity.java
@@ -3,7 +3,7 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
@@ -22,7 +22,7 @@
import java.util.List;
-public class MainActivity extends ActionBarActivity {
+public class MainActivity extends AppCompatActivity {
@Override
diff --git a/app/src/main/java/com/unnamed/b/atv/sample/activity/SingleFragmentActivity.java b/app/src/main/java/com/unnamed/b/atv/sample/activity/SingleFragmentActivity.java
index c28f65b..fed41db 100644
--- a/app/src/main/java/com/unnamed/b/atv/sample/activity/SingleFragmentActivity.java
+++ b/app/src/main/java/com/unnamed/b/atv/sample/activity/SingleFragmentActivity.java
@@ -2,14 +2,14 @@
import android.app.Fragment;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
import com.unnamed.b.atv.sample.R;
/**
* Created by Bogdan Melnychuk on 2/12/15.
*/
-public class SingleFragmentActivity extends ActionBarActivity {
+public class SingleFragmentActivity extends AppCompatActivity {
public final static String FRAGMENT_PARAM = "fragment";
@Override
diff --git a/build.gradle b/build.gradle
index 5275ca9..9716401 100644
--- a/build.gradle
+++ b/build.gradle
@@ -23,6 +23,7 @@ allprojects {
repositories {
jcenter()
+ google()
}
}
diff --git a/gradle.properties b/gradle.properties
index 6bcdf2c..765496e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -17,11 +17,11 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
-VERSION_NAME=1.2.9
-VERSION_CODE=11
+VERSION_NAME=1.3.0
+VERSION_CODE=12
-ANDROID_BUILD_MIN_SDK_VERSION=11
+ANDROID_BUILD_MIN_SDK_VERSION=14
ANDROID_BUILD_TARGET_SDK_VERSION=27
ANDROID_BUILD_SDK_VERSION=27
ANDROID_BUILD_TOOLS_VERSION=27.0.1
diff --git a/library/build.gradle b/library/build.gradle
index 92ecb9f..ee1b633 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -19,7 +19,7 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:appcompat-v7:21.0.3'
+ compile 'com.android.support:appcompat-v7:27.0.2'
}
apply from: '../maven_push.gradle'
From 58563e72e92dd54e8d634431c232b5b5ba92bc5d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:38:54 +0100
Subject: [PATCH 13/22] Add information about fork and how to include fork into
build.gradle
---
README.md | 37 +++++++++++++++++++++++++++++--------
1 file changed, 29 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index c3c389f..77c73b0 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,27 @@
AndroidTreeView
====================
+[]
+(https://jitpack.io/#jleuser/AndroidTreeView)
+
+This is a fork of the original [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView) library provided by [Bogdan Melnychuk](https://github.com/bmelnychuk).
+
+Compared to the original library, some of the pull requests to the original library have been merged into this version.
+
+This fork can be used in your build files thanks to jitpack.io. You have to add these lines in your `build.gradle` file:
+
+ ```java
+ repositories {
+ maven { url "https://jitpack.io" }
+ }
+
+ dependencies {
+ compile 'com.github.jleuser:AndroidTreeView:1.4.0'
+ }
+ ```
+
+## Original readme
+
### Recent changes
@@ -43,7 +64,7 @@ Tree view implementation for android
### Integration
-**1)** Add library as a dependency to your project
+**1)** Add library as a dependency to your project
```compile 'com.github.bmelnychuk:atv:1.2.+'```
@@ -62,10 +83,10 @@ Create and add your nodes (use your custom object as constructor param)
```
**3)** Add tree view to layout
-```java
+```java
AndroidTreeView tView = new AndroidTreeView(getActivity(), root);
containerView.addView(tView.getView());
-```
+```
The simplest but not styled tree is ready. Now you can see ```parent``` node as root of your tree
**4)** Custom view for nodes
@@ -80,7 +101,7 @@ public class MyHolder extends TreeNode.BaseNodeViewHolder {
final View view = inflater.inflate(R.layout.layout_profile_node, null, false);
TextView tvValue = (TextView) view.findViewById(R.id.node_value);
tvValue.setText(value.text);
-
+
return view;
}
...
@@ -91,14 +112,14 @@ public class MyHolder extends TreeNode.BaseNodeViewHolder {
}
```
-**5)** Connect view holder with node
-```java
+**5)** Connect view holder with node
+```java
IconTreeItem nodeItem = new IconTreeItem();
TreeNode child1 = new TreeNode(nodeItem).setViewHolder(new MyHolder(mContext));
```
-**6)** Consider using
-```java
+**6)** Consider using
+```java
TreeNode.setClickListener(TreeNodeClickListener listener);
AndroidTreeView.setDefaultViewHolder
AndroidTreeView.setDefaultNodeClickListener
From 499ee25bea9f2c7b8c4438bddb9ebad7d69a629c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:45:55 +0100
Subject: [PATCH 14/22] Try to correct jitpack.io badge
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 77c73b0..aea856e 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,7 @@
AndroidTreeView
====================
-[]
-(https://jitpack.io/#jleuser/AndroidTreeView)
+(])[https://jitpack.io/#jleuser/AndroidTreeView]
This is a fork of the original [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView) library provided by [Bogdan Melnychuk](https://github.com/bmelnychuk).
From 16e921af8539a3ee7a9b84e7b28358436e7bdd50 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:46:44 +0100
Subject: [PATCH 15/22] Try to correct jitpack.io badge
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index aea856e..73bb1b3 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
AndroidTreeView
====================
-(])[https://jitpack.io/#jleuser/AndroidTreeView]
+(https://jitpack.io/v/jleuser/AndroidTreeView.svg)[https://jitpack.io/#jleuser/AndroidTreeView]
This is a fork of the original [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView) library provided by [Bogdan Melnychuk](https://github.com/bmelnychuk).
From 09ef92c88caee6109288d04dc6e03a102f4a66fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:47:46 +0100
Subject: [PATCH 16/22] Try to correct jitpack.io badge
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 73bb1b3..5540e2f 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
AndroidTreeView
====================
-(https://jitpack.io/v/jleuser/AndroidTreeView.svg)[https://jitpack.io/#jleuser/AndroidTreeView]
+[]]
+(https://jitpack.io/#jleuser/AndroidTreeView)
This is a fork of the original [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView) library provided by [Bogdan Melnychuk](https://github.com/bmelnychuk).
From 86ac9ae8d805fa1905be280d4e7930b67373dfec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:48:39 +0100
Subject: [PATCH 17/22] Try to correct jitpack.io badge
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5540e2f..77c73b0 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
AndroidTreeView
====================
-[]]
+[]
(https://jitpack.io/#jleuser/AndroidTreeView)
This is a fork of the original [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView) library provided by [Bogdan Melnychuk](https://github.com/bmelnychuk).
From 869696556425bf51459031ca8c667531d893954a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:49:34 +0100
Subject: [PATCH 18/22] Try to correct jitpack.io badge
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 77c73b0..97d88c4 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,7 @@
AndroidTreeView
====================
-[]
-(https://jitpack.io/#jleuser/AndroidTreeView)
+[](https://jitpack.io/#jleuser/AndroidTreeView)
This is a fork of the original [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView) library provided by [Bogdan Melnychuk](https://github.com/bmelnychuk).
From 3de7ad61ad7c7a3019a0db3f1e50519299913559 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Sun, 3 Dec 2017 16:57:41 +0100
Subject: [PATCH 19/22] Fix link to gradle dependency
---
README.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 97d88c4..a04f183 100644
--- a/README.md
+++ b/README.md
@@ -10,13 +10,13 @@ Compared to the original library, some of the pull requests to the original libr
This fork can be used in your build files thanks to jitpack.io. You have to add these lines in your `build.gradle` file:
```java
- repositories {
- maven { url "https://jitpack.io" }
- }
+repositories {
+ maven { url "https://jitpack.io" }
+}
- dependencies {
- compile 'com.github.jleuser:AndroidTreeView:1.4.0'
- }
+dependencies {
+ implementation 'com.github.jleuser:AndroidTreeView:v1.4.0'
+}
```
## Original readme
From 6e98c2ab9eb8006c769b35120cde41a619212457 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Tue, 5 Dec 2017 22:00:39 +0100
Subject: [PATCH 20/22] #3 Initial changelog. Not yet complete
---
CHANGELOG.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 100 insertions(+)
create mode 100644 CHANGELOG.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..23f6341
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,100 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+
+
+## [Unreleased]
+### Added
+
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+### Security
+
+
+## [v1.4.0] - 2017-12-03
+First version after fork of original AndroidTreeView.
+
+**Changes TBD**
+
+
+## [v1.3.x] - Not released
+Version was not released as only used in a different fork of AndroidTreeView.
+
+----
+
+> The following releases are a best guess of the history of the original AndroidTreeView. Because there are no tags in the repository, the dates of the releases might be a couple of days off (because sometimes it is not clear whether a release was actually defined when the version code was changed or whether additional changes were part of the version)
+
+## [v1.2.9] - 2016-05-03
+Latest released version of original AndroidTreeView before fork.
+
+*no code changes*
+
+
+## [v1.2.8] - 2016-04-25
+### Added
+* Allow deactivating auto-toggling mode of tree nodes
+
+### Changed
+* Expose some fields of AndroidTreeView-class to subclasses
+
+
+## [v1.2.7] - 2015-11-05
+### Changed
+* Removed allowBackup in library, see bmelnychuk/AndroidTreeView#38
+
+
+## [v1.2.6] - 2015-09-24
+### Added
+* Added click and long click listener
+
+### Changed
+* Node IDs get generated differently
+
+
+## [v1.2.5] - 2015-06-02
+### Added
+* 2D scrolling mode
+ *Keep in mind this comes with few limitations: you won't be able not place views on right side like alignParentRight. Everything should be align left. Is not enabled by default*
+* Background of selected items coupled to ```?android:attr/selectableItemBackground```
+
+
+## [v1.2.4] - 2015-04-11
+### Fixed
+* Different padding issues: bmelnychuk/AndroidTreeView#1, bmelnychuk/AndroidTreeView#11 [Padding issues](https://github.com/bmelnychuk/AndroidTreeView/issues/1), [Padding left on android < 5.0](https://github.com/bmelnychuk/AndroidTreeView/issues/11)
+
+
+## [v1.2.3] - 2015-03-21
+### Fixed
+* [Restore state issue](https://github.com/bmelnychuk/AndroidTreeView/issues/7)
+
+
+## [v1.2.2] - 2015-03-13
+### Added
+* Animation for expand and collapse
+
+
+## [v1.2.1] - 2015-02-19
+### Fixed
+* Fire listener before collapsing/expanding
+
+
+## [v1.2.0] - 2015-02-18
+### Added
+* Dynamic addition/removal of tree nodes
+
+
+## [v1.1.0] - 2015-02-16
+### Added
+* Selection mode for nodes
+
+
+## [v1.0.0] - 2015-02-14
+Initial version
From 2a4185c4d82258e4836da5f91f950161fabc0640 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Tue, 5 Dec 2017 22:10:00 +0100
Subject: [PATCH 21/22] #3 Add links to version diffs
---
CHANGELOG.md | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 23f6341..cf3f77a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -96,5 +96,20 @@ Latest released version of original AndroidTreeView before fork.
* Selection mode for nodes
-## [v1.0.0] - 2015-02-14
+## v1.0.0 - 2015-02-14
Initial version
+
+
+[Unreleased]: https://github.com/jleuser/AndroidTreeView/compare/v1.4.0...HEAD
+[v1.4.0]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.9...v1.4.0
+[v1.2.9]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.8...v1.2.9
+[v1.2.8]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.7...v1.2.8
+[v1.2.7]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.6...v1.2.7
+[v1.2.6]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.5...v1.2.6
+[v1.2.5]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.4...v1.2.5
+[v1.2.4]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.3...v1.2.4
+[v1.2.3]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.2...v1.2.3
+[v1.2.2]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.1...v1.2.2
+[v1.2.1]: https://github.com/jleuser/AndroidTreeView/compare/v1.2.0...v1.2.1
+[v1.2.0]: https://github.com/jleuser/AndroidTreeView/compare/v1.1.0...v1.2.0
+[v1.1.0]: https://github.com/jleuser/AndroidTreeView/compare/v1.0.0...v1.1.0
From d71c545628d0363a5085714c96bb7d0415049be3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Leuser?=
<34209741+jleuser@users.noreply.github.com>
Date: Tue, 5 Dec 2017 22:58:18 +0100
Subject: [PATCH 22/22] #3 Remove links which do not work
---
CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf3f77a..63fd154 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -68,7 +68,7 @@ Latest released version of original AndroidTreeView before fork.
## [v1.2.4] - 2015-04-11
### Fixed
-* Different padding issues: bmelnychuk/AndroidTreeView#1, bmelnychuk/AndroidTreeView#11 [Padding issues](https://github.com/bmelnychuk/AndroidTreeView/issues/1), [Padding left on android < 5.0](https://github.com/bmelnychuk/AndroidTreeView/issues/11)
+* Different padding issues: [Padding issues](https://github.com/bmelnychuk/AndroidTreeView/issues/1), [Padding left on android < 5.0](https://github.com/bmelnychuk/AndroidTreeView/issues/11)
## [v1.2.3] - 2015-03-21