// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/remote/RemoteFolder.java
// public interface RemoteFolder {
//     /**
//      * @return The folder's name without any path information.
//      */
//     String getName();
// 
//     /**
//      * @return The full path of the folder.
//      */
//     String getPath();
// 
//     /**
//      * @return The name of the parent without any path information.
//      */
//     String getParentName();
// 
//     /**
//      * @return The full path of the folder's parent.
//      */
//     String getParentPath();
// 
//     /**
//      * @return True if this is not a root folder.
//      */
//     boolean hasParent();
// }
// 
// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/remote/RemoteFolderImpl.java
// public class RemoteFolderImpl implements RemoteFolder {
//     protected String mPath;
//     protected String mName;
//     protected String mParentPath;
//     protected String mParentName;
// 
//     public RemoteFolderImpl(String path) {
//         mPath = path;
//         mName = Path.fileName(path);
//         mParentPath = Path.parentPath(path);
//         mParentName = Path.fileName(mParentPath);
//     }
// 
//     public RemoteFolderImpl(String path, String name, String parentPath, String parentName) {
//         mPath = path;
//         mName = name;
//         mParentPath = parentPath;
//         mParentName = parentName;
//     }
// 
//     @Override
//     public String getName() {
//         return mName;
//     }
// 
//     @Override
//     public String getParentName() {
//         return mParentName;
//     }
// 
//     @Override
//     public String getPath() {
//         return mPath;
//     }
// 
//     @Override
//     public String getParentPath() {
//         return mParentPath;
//     }
// 
//     @Override
//     public boolean hasParent() {
//         return !Strings.isBlank(getParentPath());
//     }
// 
//     @Override
//     public String toString() {
//         return getName();
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (o instanceof RemoteFolder) {
//             return getPath().equalsIgnoreCase(((RemoteFolder) o).getPath());
//         }
// 
//         return false;
//     }
// 
//     @Override
//     public int hashCode() {
//         return getPath().hashCode();
//     }
// 
// }
// 
// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/util/Tree.java
// public class Tree<E> {
//     private Tree<E> parent = null;
//     private List<Tree<E>> children = null;
//     private E data;
// 
//     public Tree(E data) {
//         this.data = data;
//     }
// 
//     public Tree(Tree<E> parent, E data) {
//         this.parent = parent;
//         this.data = data;
//     }
// 
//     public Tree<E> addChild(Tree<E> child) {
//         if (children == null) {
//             children = new ArrayList<Tree<E>>();
//         }
// 
//         children.add(child);
//         child.parent = this;
// 
//         return child;
//     }
// 
//     public Tree<E> addChild(E data) {
//         Tree<E> child = new Tree<E>(data);
// 
//         return addChild(child);
//     }
// 
//     public E getData() {
//         return data;
//     }
// 
//     public Tree<E> getParent() {
//         return parent;
//     }
// 
//     public boolean isLoaded() {
//         return children != null;
//     }
// 
//     public void setLoaded() {
//         if (children == null) {
//             children = new ArrayList<Tree<E>>();
//         }
//     }
// 
//     public List<Tree<E>> getChildren() {
//         return children;
//     }
// 
//     public boolean contains(Tree<E> child) {
//         if (children == null) {
//             return false;
//         }
// 
//         return children.contains(child);
//     }
// 
//     public boolean contains(E data) {
//         if (children == null) {
//             return false;
//         }
// 
//         for (Tree<E> child : children) {
//             if (child.getData().equals(data)) {
//                 return true;
//             }
//         }
// 
//         return false;
//     }
// 
//     public Tree<E> getChild(int position) {
//         return children.get(position);
//     }
// }


import java.io.File;
import java.util.Collections;
import java.util.List;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import com.todotxt.todotxttouch.remote.RemoteFolder;
import com.todotxt.todotxttouch.remote.RemoteFolderImpl;
import com.todotxt.todotxttouch.util.Tree;
            for (Tree<RemoteFolder> child : tree.getChildren()) {
                Tree<RemoteFolder> res = findFolderInTree(child, path);

                if (res != null) {
                    return res;
                }
            }
        }

        return null;
    }

    private void upToParent() {
        if (mCurrentSelection.getParent() != null) {
            selectFolder(mCurrentSelection.getParent());

            return;
        }

        // FIXME: Remove this.
        RemoteFolder parent = new RemoteFolderImpl(null, null, null, null);
        mRootFolder = new Tree<RemoteFolder>(parent);
        selectFolder(mRootFolder);
    }

    private void addNew(String path) {
        Tree<RemoteFolder> tree = findFolderInTree(mCurrentSelection, path);

        if (tree == null) {
            // FIXME: Remove this.
// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/remote/RemoteFolder.java
// public interface RemoteFolder {
//     /**
//      * @return The folder's name without any path information.
//      */
//     String getName();
// 
//     /**
//      * @return The full path of the folder.
//      */
//     String getPath();
// 
//     /**
//      * @return The name of the parent without any path information.
//      */
//     String getParentName();
// 
//     /**
//      * @return The full path of the folder's parent.
//      */
//     String getParentPath();
// 
//     /**
//      * @return True if this is not a root folder.
//      */
//     boolean hasParent();
// }
// 
// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/remote/RemoteFolderImpl.java
// public class RemoteFolderImpl implements RemoteFolder {
//     protected String mPath;
//     protected String mName;
//     protected String mParentPath;
//     protected String mParentName;
// 
//     public RemoteFolderImpl(String path) {
//         mPath = path;
//         mName = Path.fileName(path);
//         mParentPath = Path.parentPath(path);
//         mParentName = Path.fileName(mParentPath);
//     }
// 
//     public RemoteFolderImpl(String path, String name, String parentPath, String parentName) {
//         mPath = path;
//         mName = name;
//         mParentPath = parentPath;
//         mParentName = parentName;
//     }
// 
//     @Override
//     public String getName() {
//         return mName;
//     }
// 
//     @Override
//     public String getParentName() {
//         return mParentName;
//     }
// 
//     @Override
//     public String getPath() {
//         return mPath;
//     }
// 
//     @Override
//     public String getParentPath() {
//         return mParentPath;
//     }
// 
//     @Override
//     public boolean hasParent() {
//         return !Strings.isBlank(getParentPath());
//     }
// 
//     @Override
//     public String toString() {
//         return getName();
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (o instanceof RemoteFolder) {
//             return getPath().equalsIgnoreCase(((RemoteFolder) o).getPath());
//         }
// 
//         return false;
//     }
// 
//     @Override
//     public int hashCode() {
//         return getPath().hashCode();
//     }
// 
// }
// 
// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/util/Tree.java
// public class Tree<E> {
//     private Tree<E> parent = null;
//     private List<Tree<E>> children = null;
//     private E data;
// 
//     public Tree(E data) {
//         this.data = data;
//     }
// 
//     public Tree(Tree<E> parent, E data) {
//         this.parent = parent;
//         this.data = data;
//     }
// 
//     public Tree<E> addChild(Tree<E> child) {
//         if (children == null) {
//             children = new ArrayList<Tree<E>>();
//         }
// 
//         children.add(child);
//         child.parent = this;
// 
//         return child;
//     }
// 
//     public Tree<E> addChild(E data) {
//         Tree<E> child = new Tree<E>(data);
// 
//         return addChild(child);
//     }
// 
//     public E getData() {
//         return data;
//     }
// 
//     public Tree<E> getParent() {
//         return parent;
//     }
// 
//     public boolean isLoaded() {
//         return children != null;
//     }
// 
//     public void setLoaded() {
//         if (children == null) {
//             children = new ArrayList<Tree<E>>();
//         }
//     }
// 
//     public List<Tree<E>> getChildren() {
//         return children;
//     }
// 
//     public boolean contains(Tree<E> child) {
//         if (children == null) {
//             return false;
//         }
// 
//         return children.contains(child);
//     }
// 
//     public boolean contains(E data) {
//         if (children == null) {
//             return false;
//         }
// 
//         for (Tree<E> child : children) {
//             if (child.getData().equals(data)) {
//                 return true;
//             }
//         }
// 
//         return false;
//     }
// 
//     public Tree<E> getChild(int position) {
//         return children.get(position);
//     }
// }


// Path: todoTxtTouch/src/main/java/com/todotxt/todotxttouch/TodoLocationPreference.java
import java.io.File;
import java.util.Collections;
import java.util.List;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import com.todotxt.todotxttouch.remote.RemoteFolder;
import com.todotxt.todotxttouch.remote.RemoteFolderImpl;
import com.todotxt.todotxttouch.util.Tree;

            for (Tree<RemoteFolder> child : tree.getChildren()) {
                Tree<RemoteFolder> res = findFolderInTree(child, path);

                if (res != null) {
                    return res;
                }
            }
        }

        return null;
    }

    private void upToParent() {
        if (mCurrentSelection.getParent() != null) {
            selectFolder(mCurrentSelection.getParent());

            return;
        }

        // FIXME: Remove this.
        RemoteFolder parent = new RemoteFolderImpl(null, null, null, null);
        mRootFolder = new Tree<RemoteFolder>(parent);
        selectFolder(mRootFolder);
    }

    private void addNew(String path) {
        Tree<RemoteFolder> tree = findFolderInTree(mCurrentSelection, path);

        if (tree == null) {
            // FIXME: Remove this.
            RemoteFolder folder = new RemoteFolderImpl(null, null, null, null);