Bug 44393 [Viewers] + shown in front of methods even if local types filter is on (different behaviour in outliner, members view and package explorer)
Test pass M4 - load JUnit - add an anonymous type to Assert#Assert - enable local type filter in Outliner observe: there is a plus in front of Assert which goes away when clicking on it. This might be JFace related but I would prefer that the plus is removed when the filter is switched on. - close Outliner - open Outliner observe: there isn't any plus sign in front of Assert - open Java Browsing perspective - enable local type filter in members view - select Assert class in Types view observe: the constructor Assert has a plus sign in front which goes away when clicking on it. - switch to another class - switch back to Assert observe: the constructor again has a plus sign in front. This is really annoying. The members view should at least behave like the outliner. - switch to package explorer - expand Assert - toggle local type filter observe: plus sign is added and removed correctly.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaOutlinePage.java
import org.eclipse.jdt.ui.actions.MemberFilterActionGroup;
import org.eclipse.jdt.ui.actions.OpenViewActionGroup;
import org.eclipse.jdt.ui.actions.RefactorActionGroup;
/**
 * The content outline page of the Java editor. The viewer implements a proprietary
 * update mechanism based on Java model deltas. It does not react on domain changes.
 * It is specified to show the content of ICompilationUnits and IClassFiles.
 * Publishes its context menu under <code>JavaPlugin.getDefault().getPluginId() + ".outline"</code>.
 */
public class JavaOutlinePage extends Page implements IContentOutlinePage, IAdaptable , IPostSelectionProvider {
			static Object[] NO_CHILDREN= new Object[0];
   
			/**
			 * The element change listener of the java outline viewer.
			 * @see IElementChangedListener
			 */
			class ElementChangedListener implements IElementChangedListener {
				
				public void elementChanged(final ElementChangedEvent e) {
					
					if (getControl() == null)
						return;
						
					Display d= getControl().getDisplay();
					if (d != null) {
						d.asyncExec(new Runnable() {
							public void run() {
								ICompilationUnit cu= (ICompilationUnit) fInput;
								IJavaElement base= cu;
								if (fTopLevelTypeOnly) {