blob: ac72a8faca2070aa09f45ffa405765b98e16e574 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2007 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.dltk.ui.text.folding;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.ui.texteditor.ITextEditor;
/**
* Contributors to the <code>org.eclipse.dltk.ui.foldingStructureProvider</code>
* extension point must specify an implementation of this interface which will
* create and maintain
* {@link org.eclipse.jface.text.source.projection.ProjectionAnnotation} objects
* that define folded regions in the
* {@link org.eclipse.jface.text.source.projection.ProjectionViewer}.
* <p>
* Clients may implement this interface.
* </p>
*/
public interface IFoldingStructureProvider {
/**
* Installs this structure provider on the given editor and viewer.
* Implementations should listen to the projection events generated by
* <code>viewer</code> and enable / disable generation of projection
* structure accordingly.
*
* @param editor
* the editor that this provider works on
* @param viewer
* the projection viewer that displays the annotations created by
* this structure provider
*/
public abstract void install(ITextEditor editor, ProjectionViewer viewer,
IPreferenceStore store);
/**
* Uninstalls this structure provider. Any references to editors or viewers
* should be cleared.
*/
public abstract void uninstall();
/**
* Initializes the structure provided by the receiver.
*/
public abstract void initialize();
/**
* Initializes the structure provided by the receiver. If
* <code>isReinit</code> is true, the structure will be reinitialized.
*
* @param isReinit
* <code>true</code> if a reinitialization is required,
* <code>false</code> otherwise.
*/
public abstract void initialize(boolean isReinit);
}