/*******************************************************************************
 * Copyright (c) 2008, 2009 Wind River Systems 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:
 *     Wind River Systems - initial API and implementation
 *     Patrick Chuong (Texas Instruments) - Improve usability of the breakpoint view (Bug 238956)
 *******************************************************************************/
package org.eclipse.debug.internal.ui.breakpoints.provisional;

import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.model.IBreakpoint;

/**
 * Interface representing a breakpoint category container elements in
 * Breakpoints view. Clients which provide custom content in the
 * Breakpoints view may implement this interface to represent container
 * elements.  This will allow the breakpoints view to properly handle
 * drag-and-drop and copy-paste operations.
 *
 * @since 3.6
 */
public interface IBreakpointContainer {

    /**
     * Returns the breakpoint organizer that this container uses.
     */
    IBreakpointOrganizer getOrganizer();

    /**
     * Returns the breakpoint category that this container is based on.
     * @return
     */
    IAdaptable getCategory();

    /**
     * Returns whether this breakpoint container contains the given breakpoint.
     *
     * @param breakpoint Breakpoint to check
     * @return Returns <code>true</code> if this container contains the
     * given breakpoint.
     */
    boolean contains(IBreakpoint breakpoint);

    /**
     * Returns the array of breakpoints in this container.
     */
    IBreakpoint[] getBreakpoints();
}
