diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationViewer.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationViewer.java | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationViewer.java deleted file mode 100644 index dd4eba627..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/launchConfigurations/LaunchConfigurationViewer.java +++ /dev/null @@ -1,275 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.launchConfigurations; - -import java.util.ArrayList; -import java.util.Iterator; - -import org.eclipse.debug.core.ILaunchConfiguration; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TreePath; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.swt.widgets.Widget; - -/** - * This class allow the notion of the viewer to be abstracted from the launch configuration view, as well as allowing the over-riding of - * selection preservation when filtering/deletion occurs - * @since 3.3 - */ -public class LaunchConfigurationViewer extends TreeViewer { - - private int fTotalCount = 0; - private LaunchConfigurationView fView = null; - - /** - * Constructor - * @param tree the tree to create the viewer on - */ - public LaunchConfigurationViewer(Tree tree) { - super(tree); - } - - /** - * Constructor - * @param parent - * @param style - */ - public LaunchConfigurationViewer(Composite parent, int style) { - this(new Tree(parent, style)); - } - - /** - * @see org.eclipse.jface.viewers.StructuredViewer#preservingSelection(java.lang.Runnable) - */ - protected void preservingSelection(Runnable updateCode) { - IStructuredSelection selection = (IStructuredSelection) getSelection(); - if(!selection.isEmpty()) { - int[] indices = collectIndices(selection.getFirstElement()); - updateCode.run(); - ArrayList set = new ArrayList(); - Object o = null; - for(Iterator iter = selection.iterator(); iter.hasNext();) { - o = iter.next(); - if(o instanceof ILaunchConfiguration) { - if(!((ILaunchConfiguration)o).exists()) { - continue; - } - } - if(internalGetWidgetToSelect(o) != null) { - if(!set.contains(o)) { - set.add(o); - } - } - } - if(set.isEmpty()) { - //make a new selection based on the first item in the structured selection - Tree tree = getTree(); - if(tree.getItemCount() > 0) { - int index = selectIndex(tree.getItemCount(), indices[0]); - if(index > -1) { - TreeItem pitem = null; - if(indices[0] > tree.getItemCount()-1) { - pitem = tree.getItem(tree.getItemCount()-1); - } - else { - pitem = tree.getItem(indices[0]); - } - if(pitem != null) { - o = pitem.getData(); - if(indices[1] > -1) { - index = selectIndex(pitem.getItemCount(), indices[1]); - if(index > -1) { - ILaunchConfiguration config = null; - for(int i = index; i > -1; i--) { - config = (ILaunchConfiguration) pitem.getItem(i).getData(); - if(config != null && config.exists()) { - o = config; - break; - } - } - } - else { - if(pitem.getItemCount() > 0) { - o = pitem.getItem((indices[1]-1 > -1 ? indices[1]-1 : 0)).getData(); - if(o == null) { - o = pitem.getData(); - } - } - } - } - } - } - if(!set.contains(o)) { - set.add(o); - } - } - } - setSelection(new StructuredSelection(set), true); - } - else { - super.preservingSelection(updateCode); - } - getTree().getHorizontalBar().setSelection(0); - } - - /** - * Covers the case of an outlier indice - * @param count the count to compare the index to - * @param index the index to compare against the count - * @return the adjusted index in the event index is an outlier, or -1 if it falls within the 'count' range - */ - private int selectIndex(int count, int index) { - if(index < count) { - return index; - } - if(index > count-1) { - return count-1; - } - if(index < 0) { - return 0; - } - return -1; - } - - /** - * Returns the total count of all of the children that <i>could</i> be visible at - * the time the input was set to the viewer - * @return the total number of elements - */ - protected int getTotalChildCount() { - return fTotalCount; - } - - /** - * @see org.eclipse.jface.viewers.AbstractTreeViewer#remove(java.lang.Object) - */ - public void remove(Object elementsOrTreePaths) { - super.remove(elementsOrTreePaths); - fTotalCount--; - } - - /** - * @see org.eclipse.jface.viewers.TreeViewer#internalAdd(org.eclipse.swt.widgets.Widget, java.lang.Object, java.lang.Object[]) - */ - protected void internalAdd(Widget widget, Object parentElement, Object[] childElements) { - super.internalAdd(widget, parentElement, childElements); - fTotalCount++; - } - - /** - * @see org.eclipse.jface.viewers.AbstractTreeViewer#inputChanged(java.lang.Object, java.lang.Object) - */ - protected void inputChanged(Object input, Object oldInput) { - super.inputChanged(input, oldInput); - //calc the total number of items that could be visible in the view - LaunchConfigurationTreeContentProvider cp = (LaunchConfigurationTreeContentProvider) getContentProvider(); - Object[] types = cp.getElements(null); - LaunchGroupFilter filter = new LaunchGroupFilter(((LaunchConfigurationsDialog)LaunchConfigurationsDialog.getCurrentlyVisibleLaunchConfigurationDialog()).getLaunchGroup()); - ILaunchConfiguration[] configs = null; - for(int i = 0; i < types.length; i++) { - if(filter.select(this, types[i], null)) { - fTotalCount++; - configs = (ILaunchConfiguration[]) cp.getChildren(types[i]); - for(int j = 0; j < configs.length; j++) { - if(LaunchConfigurationManager.isVisible(configs[j])) { - fTotalCount++; - } - } - } - } - } - - /** - * returns the number of children that are remaining in the view. - * Note that this method will force the loading of all children - * @return the count of all children in the viewer - * - * @since 3.3 - */ - protected int getNonFilteredChildCount() { - int count = 0; - getTree().setRedraw(false); - TreeItem[] items = getTree().getItems(); - count += items.length; - boolean expanded = false; - TreeItem item = null; - for(int i = 0; i < items.length; i++) { - item = items[i]; - expanded = item.getExpanded(); - setExpandedState(item.getData(), true); - count += item.getItems().length; - item.setExpanded(expanded); - } - getTree().setRedraw(true); - return count; - } - - /** - * Collects the indices of the child and parent items for the specified element - * @param object the element to collect indices for - * @return an array of indices for the specified element - */ - private int[] collectIndices(Object object) { - int[] indices = {-1, -1}; - if(object != null) { - TreeItem item = (TreeItem) findItem(object); - if(item != null) { - TreePath path = getTreePathFromItem(item); - item = (TreeItem) findItem(path.getFirstSegment()); - if(item != null) { - indices[0] = getTree().indexOf(item); - if(path.getSegmentCount() == 2) { - indices[1] = indexOf(item.getItems(), path.getLastSegment()); - } - } - } - } - return indices; - } - - /** - * Finds the index of the specified object in the given array of tree items - * @param items the items to search for the specified object - * @param object the object to find the index of - * @return the index of the specified object in the listing of tree items, or -1 if not found - */ - private int indexOf(TreeItem[] items, Object object) { - if(object != null) { - for(int i = 0; i < items.length; i++) { - if(object.equals(items[i].getData())) { - return i; - } - } - } - return -1; - } - - /** - * The filter changed due to text typing - update the filter count - */ - protected void filterChanged() { - if (fView != null) { - fView.updateFilterLabel(); - } - - } - - /** - * @param launchConfigurationView - */ - protected void setLaunchConfigurationView(LaunchConfigurationView launchConfigurationView) { - fView = launchConfigurationView; - } -} |