blob: d911a08b201df2b37ac4ad2309a04cb33a877332 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2012 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.team.ui.history;
import org.eclipse.compare.ITypedElement;
import org.eclipse.core.resources.IFile;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.internal.ui.history.EditionHistoryPage;
import org.eclipse.ui.part.Page;
/**
* A history page source that can create history pages for a sub-element of a file.
* @since 3.3
*/
public abstract class ElementLocalHistoryPageSource extends HistoryPageSource {
/**
* Return the previous edition from the local history of the given element located in the given
* file. A <code>null</code> is returned if a previous edition could not be found.
* @param file the file containing the element
* @param element the element
* @return the previous edition of the element from the local history or <code>null</code>
* @throws TeamException if an error occurs
*/
public static ITypedElement getPreviousEdition(IFile file, Object element) throws TeamException {
return EditionHistoryPage.getPreviousState(file, element);
}
/**
* Create an instance of the page source.
*/
public ElementLocalHistoryPageSource() {
super();
}
@Override
public final boolean canShowHistoryFor(Object object) {
return getFile(object) != null;
}
@Override
public final Page createPage(Object object) {
return new EditionHistoryPage(getFile(object), object);
}
/**
* Return the file that contains the given element of <code>null</code>
* if this page source can not show history for the given element.
* @param element the element
* @return the file that contains the given element of <code>null</code>
*/
protected abstract IFile getFile(Object element);
/**
* Return the file that contains the given element of <code>null</code> if this page source can
* not show history for the given element.
*
* @param element the element
* @return the file that contains the given element of <code>null</code>
* @noreference This method is not intended to be referenced by clients.
*/
final public IFile internalGetFile(Object element) {
return getFile(element);
}
}