/******************************************************************************* * Copyright (c) 2000, 2015 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.jdt.internal.debug.ui; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.jdt.core.IMember; import org.eclipse.jdt.debug.core.IJavaBreakpoint; import org.eclipse.jdt.debug.core.IJavaLineBreakpoint; import org.eclipse.jdt.debug.core.IJavaPatternBreakpoint; import org.eclipse.jdt.debug.core.IJavaStratumLineBreakpoint; import org.eclipse.jdt.debug.core.IJavaTargetPatternBreakpoint; import org.eclipse.jdt.ui.JavaElementLabelProvider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.model.IWorkbenchAdapter; /** * Adapter factory for java breakpoints. */ @SuppressWarnings("unchecked") public class JavaBreakpointWorkbenchAdapterFactory implements IAdapterFactory { @Override public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) { if (adapterType != IWorkbenchAdapter.class || !(adaptableObject instanceof IJavaBreakpoint)) { return null; } return (T) new IWorkbenchAdapter() { private JavaElementLabelProvider fJavaLabelProvider; @Override public Object[] getChildren(Object o) { return null; } @Override public ImageDescriptor getImageDescriptor(Object object) { return null; } /** * Returns a label for breakpoints that doesn't include information * which the user can edit. This assures that this label can be used * in situations where the user is changing values (like the title bar * of the property dialog). */ @Override public String getLabel(Object o) { if (!(o instanceof IJavaBreakpoint)) { return null; } IJavaBreakpoint breakpoint = (IJavaBreakpoint) o; StringBuffer label = new StringBuffer(); try { String type= breakpoint.getTypeName(); if (type != null) { label.append(type); } } catch (CoreException e) { JDIDebugUIPlugin.log(e); } if (breakpoint instanceof IJavaPatternBreakpoint) { try { label.append(((IJavaPatternBreakpoint) breakpoint).getSourceName()); } catch (CoreException e) { JDIDebugUIPlugin.log(e); } } else if (breakpoint instanceof IJavaTargetPatternBreakpoint) { try { label.append(((IJavaTargetPatternBreakpoint) breakpoint).getSourceName()); } catch (CoreException e) { JDIDebugUIPlugin.log(e); } } else if (breakpoint instanceof IJavaStratumLineBreakpoint) { try { label.append(((IJavaStratumLineBreakpoint) breakpoint).getSourceName()); } catch (CoreException e) { JDIDebugUIPlugin.log(e); } } if (breakpoint instanceof IJavaLineBreakpoint) { IJavaLineBreakpoint lineBreakpoint= ((IJavaLineBreakpoint) breakpoint); try { int lineNumber= lineBreakpoint.getLineNumber(); if (lineNumber != -1) { label.append(DebugUIMessages.JavaBreakpointWorkbenchAdapterFactory_1); label.append(lineNumber); label.append(']'); } } catch (CoreException e) { JDIDebugUIPlugin.log(e); } try { IMember member= BreakpointUtils.getMember(lineBreakpoint); if (member != null) { label.append(" - "); //$NON-NLS-1$ label.append(getJavaLabelProvider().getText(member)); } } catch (CoreException e) { JDIDebugUIPlugin.log(e); } } return label.toString(); } @Override public Object getParent(Object o) { return null; } protected JavaElementLabelProvider getJavaLabelProvider() { if (fJavaLabelProvider == null) { fJavaLabelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); } return fJavaLabelProvider; } }; } @Override public Class<?>[] getAdapterList() { return new Class[] { IWorkbenchAdapter.class }; } }