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.IconTreeItemHolder; import com.unnamed.b.atv.sample.holder.ProfileHolder; import com.unnamed.b.atv.sample.holder.SelectableHeaderHolder; import com.unnamed.b.atv.sample.holder.SelectableItemHolder; import com.unnamed.b.atv.view.AndroidTreeView; /** * Created by Bogdan Melnychuk on 2/12/15. */ public class SelectableTreeFragment extends Fragment { private AndroidTreeView tView; private boolean selectionModeEnabled = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_selectable_nodes, null, false); ViewGroup containerView = (ViewGroup) rootView.findViewById(R.id.container); View selectionModeButton = rootView.findViewById(R.id.btn_toggleSelection); selectionModeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectionModeEnabled = !selectionModeEnabled; tView.setSelectionModeEnabled(selectionModeEnabled); } }); View selectAllBtn = rootView.findViewById(R.id.btn_selectAll); selectAllBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!selectionModeEnabled) { Toast.makeText(getActivity(), "Enable selection mode first", Toast.LENGTH_SHORT).show(); } tView.selectAll(true); } }); View deselectAll = rootView.findViewById(R.id.btn_deselectAll); deselectAll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!selectionModeEnabled) { Toast.makeText(getActivity(), "Enable selection mode first", Toast.LENGTH_SHORT).show(); } tView.deselectAll(); } }); View check = rootView.findViewById(R.id.btn_checkSelection); check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!selectionModeEnabled) { Toast.makeText(getActivity(), "Enable selection mode first", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(), tView.getSelected().size() + " selected", Toast.LENGTH_SHORT).show(); } } }); TreeNode root = TreeNode.root(); TreeNode s1 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_sd_storage, "Storage1")).setViewHolder(new ProfileHolder(getActivity())); TreeNode s2 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_sd_storage, "Storage2")).setViewHolder(new ProfileHolder(getActivity())); s1.setSelectable(false); s2.setSelectable(false); TreeNode folder1 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "Folder 1")).setViewHolder(new SelectableHeaderHolder(getActivity())); TreeNode folder2 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "Folder 2")).setViewHolder(new SelectableHeaderHolder(getActivity())); TreeNode folder3 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, "Folder 3")).setViewHolder(new SelectableHeaderHolder(getActivity())); fillFolder(folder1); fillFolder(folder2); fillFolder(folder3); s1.addChildren(folder1, folder2); s2.addChildren(folder3); root.addChildren(s1, s2); tView = new AndroidTreeView(getActivity(), root); tView.setDefaultAnimation(true); containerView.addView(tView.getView()); if (savedInstanceState != null) { String state = savedInstanceState.getString("tState"); if (!TextUtils.isEmpty(state)) { tView.restoreState(state); } } return rootView; } private void fillFolder(TreeNode folder) { TreeNode file1 = new TreeNode("File1").setViewHolder(new SelectableItemHolder(getActivity())); TreeNode file2 = new TreeNode("File2").setViewHolder(new SelectableItemHolder(getActivity())); TreeNode file3 = new TreeNode("File3").setViewHolder(new SelectableItemHolder(getActivity())); folder.addChildren(file1, file2, file3); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("tState", tView.getSaveState()); } }