/******************************************************************************* * Copyright (c) 2016 Björn Michael 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: * Björn Michael <b.michael@gmx.de> - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.ui.filters; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jdt.core.IMember; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.ITypeRoot; /** * Filters out members of {@link java.lang.Object}. * * @author Björn Michael * @since 3.13 */ public class JavaLangObjectMembersFilter extends ViewerFilter { private static final String JAVA_LANG_OBJECT_CLASS_NAME= Object.class.getName(); @Override public boolean select(final Viewer viewer, final Object parentElement, final Object element) { if (parentElement instanceof IType) { if (JAVA_LANG_OBJECT_CLASS_NAME.equals(((IType) parentElement).getFullyQualifiedName())) { return true; // java.lang.Object itself is shown; don't filter it out } } if (parentElement instanceof ITypeRoot) { IType primaryType= ((ITypeRoot) parentElement).findPrimaryType(); if (primaryType != null && JAVA_LANG_OBJECT_CLASS_NAME.equals(primaryType.getFullyQualifiedName())) { return true; // top-level type is java.lang.Object itself; don't filter it out } } if (element instanceof IMember) { IType declaringType= ((IMember) element).getDeclaringType(); if (declaringType != null) { String fullyQualifiedName= declaringType.getFullyQualifiedName(); if (JAVA_LANG_OBJECT_CLASS_NAME.equals(fullyQualifiedName)) { return false; } } } return true; } }