package edu.usc.cssl.tacit.common.ui.outputdata; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; public class TableLayoutData { private Composite sectionClient; private CheckboxTreeViewer treeViewer; public Tree getTree(){ return this.treeViewer.getTree(); } public List<String> getSelectedItems(TreeItem tree) { Map<String, TreeItem> subfolders = Collections.synchronizedMap(new LinkedHashMap<String, TreeItem>()); //LinkedHashMap - helps to iterate the key in which it is inserted ArrayList<String> selectedItems = new ArrayList<String>(); TreeItem[] children = tree.getItems(); for(TreeItem ti : children) { if(null != ti.getData()) { String filename = ti.getData().toString(); if(ti.getChecked()) { if(!(new File(filename).isDirectory())) { selectedItems.add(filename); } else { subfolders.put(new File(filename).getAbsolutePath(), ti); } } } } return processSubfolders(subfolders, selectedItems); } public List<String> processSubfolders(Map<String, TreeItem> subfolders, ArrayList<String> selectedItems) { Iterator<Entry<String, TreeItem>> iterator = subfolders.entrySet().iterator(); while(iterator.hasNext()) { Entry<String, TreeItem> entry = iterator.next(); TreeItem[] children = entry.getValue().getItems(); for(TreeItem ti : children) { if(null != ti.getData()) { String filename = ti.getData().toString(); if(ti.getChecked()) { if(!(new File(filename).isDirectory())) { selectedItems.add(filename); } else subfolders.put(new File(filename).getAbsolutePath(), ti); } } } } return selectedItems; } public List<String> getSelectedFiles() { Object[] checkedElements = treeViewer.getCheckedElements(); List<String> files = new ArrayList<String>(); for (int i = 0; i < checkedElements.length; i++) { files.add(checkedElements[i].toString()); } return files; } public void setTreeViewer(CheckboxTreeViewer treeViewer) { this.treeViewer = (treeViewer); } /** * @return the sectionClient */ public Composite getSectionClient() { return sectionClient; } /** * @param sectionClient * the sectionClient to set */ public void setSectionClient(Composite sectionClient) { this.sectionClient = sectionClient; } }