/******************************************************************************* * Copyright (c) 2000, 2006 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.ui; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.jface.util.IPropertyChangeListener; /** * A breakpoint organizer is used to categorize breakpoints and provides change * notification when categorization has changed. Categories are represented as * arbitrary adaptable objects. For example, projects could be used to * categorize breakpoints. Images and labels for categories are generated via * workbench adapters. *

* Organizers may optionally support breakpoint recategorization. *

*

* Following is example plug-in XML for contributing a breakpoint organizer. *

* *
 * <extension point="org.eclipse.debug.ui.breakpointOrganizers">
 * 	<breakpointOrganizer
 * 		class="com.example.BreakpointOrganizer"
 *      id="com.example.BreakpointOrganizer"
 *      label="Example Organizer"
 *      icon="icons/full/obj16/example_org.png"/>
 * </extension>
 * 
* * The attributes are specified as follows: * *

* Clients contributing a breakpoint organizer are intended to implement this * interface. *

* * @since 3.1 */ public interface IBreakpointOrganizerDelegate { /** * Change event id when a category's breakpoints have changed. * The oldValue of the PropertyChangeEvent will be the * category that has changed, and the source of the event will the the * breakpoint organizer. Breakpoints in the category will be * recategorized when this event is fired. * * @see IPropertyChangeListener */ String P_CATEGORY_CHANGED = DebugUIPlugin.getUniqueIdentifier() + ".P_CATEGORY_CHANGED"; //$NON-NLS-1$ /** * Returns objects representing the categories of the specified * breakpoint or null if this organizer cannot classify * the breakpoint. Categories must return true when sent * the message equals(Object) with an equivalent category * as an argument. * * @param breakpoint breakpoint to classify * @return categories of the given breakpoint or null */ IAdaptable[] getCategories(IBreakpoint breakpoint); /** * Adds the specified listener. Has no effect if an identical listener is * already registered. * * @param listener listener to add */ void addPropertyChangeListener(IPropertyChangeListener listener); /** * Removes the specified listener. Has no effect if an identical listener * is not already registered. * * @param listener listener to remove */ void removePropertyChangeListener(IPropertyChangeListener listener); /** * Adds the specified breakpoint to the given category. Only called * if canAdd(...) returns true for the given * breakpoint and category. * * @param breakpoint breakpoint to recategorize * @param category the breakpoint's new category */ void addBreakpoint(IBreakpoint breakpoint, IAdaptable category); /** * Removes the specified breakpoint from the given category. Only * called if canRemove(...) returns true for * the given breakpoint and category. * * @param breakpoint breakpoint to recategorize * @param category the category the breakpoint is remove from */ void removeBreakpoint(IBreakpoint breakpoint, IAdaptable category); /** * Returns whether the given breakpoint can be categorized in the * specified category. * * @param breakpoint breakpoint to recatogorize * @param category the category to add the breakpoint to * @return whether the given breakpoint can be categorized in the * specified category */ boolean canAdd(IBreakpoint breakpoint, IAdaptable category); /** * Returns whether the given breakpoint can be removed from the given * category. * * @param breakpoint breakpoint to recategorize * @param category the category to remove the breakpoint from * @return whether the given breakpoint can be removed from the given * category */ boolean canRemove(IBreakpoint breakpoint, IAdaptable category); /** * Returns all categories managed by this organizer, or null. * When null is returned, the breakpoints view only displays * categories that contain breakpoints. When a collection of categories * is returned the breakpoints will display all of the categories, some of * which may be empty. * * @return all categories managed by this organizer, or null */ IAdaptable[] getCategories(); /** * Disposes this breakpoint organizer. */ void dispose(); }