package LinGUIne.parts.advanced.projects; import java.util.LinkedList; import LinGUIne.model.Result; /** * Represents the currently selected nodes of the ProjectExplorer tree. * * @author Kyle Mullins */ public class ProjectExplorerNodeSelection { private LinkedList<ProjectNode> projectNodes; private LinkedList<GroupNode> groupNodes; private LinkedList<ProjectDataNode> projectDataNodes; /** * Creates a new empty selection of nodes. */ public ProjectExplorerNodeSelection(){ projectNodes = new LinkedList<ProjectNode>(); groupNodes = new LinkedList<GroupNode>(); projectDataNodes = new LinkedList<ProjectDataNode>(); } /** * Adds the given ProjectExplorerNode to the selection. * * @param node The node to be added to the selection. */ public void addSelectedNode(ProjectExplorerNode node){ if(node instanceof ProjectNode){ projectNodes.add((ProjectNode)node); } else if(node instanceof GroupNode){ groupNodes.add((GroupNode)node); } else if(node instanceof ProjectDataNode){ projectDataNodes.add((ProjectDataNode)node); } } /** * Returns the total number of nodes that are selected. */ public int getSelectionCount(){ return projectNodes.size() + groupNodes.size() + projectDataNodes.size(); } /** * Returns a list of all selected ProjectNodes. */ public LinkedList<ProjectNode> getSelectedProjectNodes(){ return projectNodes; } /** * Returns a list of all selected GroupNodes. */ public LinkedList<GroupNode> getSelectedGroupNodes(){ return groupNodes; } /** * Returns a list of all selected ProjectDataNodes. */ public LinkedList<ProjectDataNode> getAllSelectedDataNodes(){ return projectDataNodes; } /** * Returns a list of just the selected ProjectDataNodes representing * original data. */ public LinkedList<ProjectDataNode> getSelectedOriginalDataNodes(){ LinkedList<ProjectDataNode> selectedDataNodes = new LinkedList<ProjectDataNode>(); for(ProjectDataNode node: projectDataNodes){ if(!(node.getNodeData() instanceof Result)){ selectedDataNodes.add(node); } } return selectedDataNodes; } /** * Returns a list of just the selection ProjectDataNodes representing * Results. * * @return */ public LinkedList<ProjectDataNode> getSelectedResultNodes(){ LinkedList<ProjectDataNode> selectedDataNodes = new LinkedList<ProjectDataNode>(); for(ProjectDataNode node: projectDataNodes){ if(node.getNodeData() instanceof Result){ selectedDataNodes.add(node); } } return selectedDataNodes; } /** * Clears the selection. */ public void clearNodeSelection(){ projectNodes.clear(); groupNodes.clear(); projectDataNodes.clear(); } }