1 11 package org.eclipse.debug.internal.ui.launchConfigurations; 12 13 import org.eclipse.core.resources.ResourcesPlugin; 14 import org.eclipse.core.runtime.CoreException; 15 import org.eclipse.debug.core.ILaunchConfiguration; 16 import org.eclipse.debug.core.ILaunchConfigurationType; 17 import org.eclipse.debug.internal.ui.DebugUIPlugin; 18 import org.eclipse.debug.ui.DebugUITools; 19 import org.eclipse.debug.ui.ILaunchGroup; 20 import org.eclipse.jface.viewers.ISelection; 21 import org.eclipse.jface.viewers.IStructuredSelection; 22 import org.eclipse.jface.viewers.TreeViewer; 23 import org.eclipse.jface.viewers.ViewerFilter; 24 import org.eclipse.swt.SWT; 25 import org.eclipse.swt.events.HelpEvent; 26 import org.eclipse.swt.events.HelpListener; 27 import org.eclipse.swt.widgets.Composite; 28 import org.eclipse.ui.PlatformUI; 29 import org.eclipse.ui.dialogs.FilteredTree; 30 import org.eclipse.ui.dialogs.PatternFilter; 31 import org.eclipse.ui.model.WorkbenchViewerComparator; 32 33 37 public final class LaunchConfigurationFilteredTree extends FilteredTree { 38 39 private ILaunchGroup fLaunchGroup = null; 40 private ViewerFilter[] fFilters = null; 41 private int fTreeStyle = -1; 42 private PatternFilter fPatternFilter = null; 43 44 50 public LaunchConfigurationFilteredTree(Composite parent, int treeStyle, PatternFilter filter, ILaunchGroup group, ViewerFilter[] filters) { 51 super(parent, treeStyle, filter); 52 fLaunchGroup = group; 53 fFilters = filters; 54 fPatternFilter = filter; 55 fTreeStyle = treeStyle; 56 } 57 58 61 protected TreeViewer doCreateTreeViewer(Composite cparent, int style) { 62 treeViewer = new LaunchConfigurationViewer(cparent, style); 63 treeViewer.setLabelProvider(DebugUITools.newDebugModelPresentation()); 64 treeViewer.setComparator(new WorkbenchViewerComparator()); 65 treeViewer.setContentProvider(new LaunchConfigurationTreeContentProvider(fLaunchGroup.getMode(), cparent.getShell())); 66 treeViewer.addFilter(new LaunchGroupFilter(fLaunchGroup)); 67 treeViewer.setInput(ResourcesPlugin.getWorkspace().getRoot()); 68 if(fFilters != null) { 69 for (int i = 0; i < fFilters.length; i++) { 70 treeViewer.addFilter(fFilters[i]); 71 } 72 } 73 treeViewer.getControl().addHelpListener(new HelpListener() { 74 public void helpRequested(HelpEvent evt) { 75 handleHelpRequest(evt); 76 } 77 }); 78 return treeViewer; 79 } 80 81 84 protected void createControl(Composite cparent, int treeStyle) { 85 super.createControl(cparent, treeStyle); 86 setBackground(cparent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); 87 } 88 89 93 protected void init(int treeStyle, PatternFilter filter) {} 94 95 98 public void createViewControl() { 99 super.init(fTreeStyle, fPatternFilter); 100 } 101 102 107 protected void handleHelpRequest(HelpEvent evt) { 108 if (getViewer().getTree() != evt.getSource()) { 109 return; 110 } 111 String id = computeContextId(); 112 if (id != null) 113 PlatformUI.getWorkbench().getHelpSystem().displayHelp(id); 114 } 115 116 120 public String computeContextId() { 121 try { 122 ISelection selection = getViewer().getSelection(); 123 if (!selection.isEmpty() && selection instanceof IStructuredSelection ) { 124 IStructuredSelection structuredSelection = (IStructuredSelection) selection; 125 Object firstSelected = structuredSelection.getFirstElement(); 126 ILaunchConfigurationType configType = null; 127 if (firstSelected instanceof ILaunchConfigurationType) { 128 configType = (ILaunchConfigurationType) firstSelected; 129 } 130 else if (firstSelected instanceof ILaunchConfiguration) { 131 configType = ((ILaunchConfiguration) firstSelected).getType(); 132 } 133 if (configType != null) { 134 String helpContextId = LaunchConfigurationPresentationManager.getDefault().getHelpContext(configType, fLaunchGroup.getMode()); 135 if (helpContextId != null) { 136 return helpContextId; 137 } 138 } 139 } 140 } 141 catch (CoreException ce) {DebugUIPlugin.log(ce);} 142 return null; 143 } 144 145 149 public LaunchConfigurationViewer getLaunchConfigurationViewer() { 150 return (LaunchConfigurationViewer) getViewer(); 151 } 152 153 160 protected void updateToolbar(boolean visible) { 161 super.updateToolbar(visible); 162 getLaunchConfigurationViewer().filterChanged(); 164 } 165 166 } 167 | Popular Tags |