org.eclipse.ui.ISecondarySaveableSource Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2016 Andrey Loskutov .
*
* 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:
* Andrey Loskutov - initial API and implementation
*******************************************************************************/
package org.eclipse.ui;
import org.eclipse.core.runtime.IAdaptable;
/**
* Interface for parts providing an adapter to {@link ISaveablePart} objects
* created or managed originally by other parts.
*
* In case the same {@link ISaveablePart} object is created originally by a
* "primary" part and shown or edited by multiple parts, the "primary" part
* might want be the only UI element showing the "dirty" state in the UI.
*
* This interface allows "primary" parts define the default behavior for all
* "secondary" parts; and allows "secondary" parts to override this and decide
* how they should behave and how they should be represented in the UI.
*
*
Parts implementing this interface directly are considered to be
* "secondary" parts and define only their own behavior.
* Parts can also provide an adapter to this interface via
* {@link IAdaptable#getAdapter(Class)}. If such part is not implementing this
* interface directly, it can considered as primary "source" part, and can
* define a default behavior for all secondary parts.
*
* Per default, dirty state of "secondary" parts is ignored by the framework.
*
* @since 3.109
*/
public interface ISecondarySaveableSource {
/**
* Whether the dirty state changes should be supported by the framework if
* the part directly implements {@link ISecondarySaveableSource}.
*
* If the part providing the adapter is not implementing
* {@link ISecondarySaveableSource}, return value defines the default
* behavior of "secondary" parts connected to this part.
*
* @return default implementation returns {@code false}
*/
default boolean isDirtyStateSupported() {
return false;
}
}