blob: 2f75e9163b311077f20d44ca3853c9247f931d3a [file] [log] [blame]
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
package org.eclipse.compare.contentmergeviewer;
import org.eclipse.swt.graphics.Image;
import org.eclipse.jface.viewers.IContentProvider;
/**
* A content provider that mediates between a <code>ContentMergeViewer</code>'s model
* and the viewer itself.
* <p>
* Clients may implement this interface.
* </p>
*
* @see ContentMergeViewer
*/
public interface IMergeViewerContentProvider extends IContentProvider {
//---- ancestor side
/**
* Returns the label for the ancestor side of a <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the label for the ancestor side of a <code>ContentMergeViewer</code>
*/
String getAncestorLabel(Object input);
/**
* Returns an optional image for the ancestor side of a <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the image for the ancestor side of a <code>ContentMergeViewer</code>,
* or <code>null</code> if none
*/
Image getAncestorImage(Object input);
/**
* Returns the contents for the ancestor side of a <code>ContentMergeViewer</code>.
* The interpretation of the returned object depends on the concrete <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the content for the ancestor side of a <code>ContentMergeViewer</code>,
* or <code>null</code> if none
*/
Object getAncestorContent(Object input);
/**
* Returns whether the ancestor side of the given input element should be shown.
*
* @return <code>true</code> if the ancestor side of the given input element should be shown
*/
boolean showAncestor(Object input);
//---- left side
/**
* Returns the label for the left side of a <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the label for the left side of a <code>ContentMergeViewer</code>
*/
String getLeftLabel(Object input);
/**
* Returns an optional image for the left side of a <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the image for the left side of a <code>ContentMergeViewer</code>,
* or <code>null</code> if none
*/
Image getLeftImage(Object input);
/**
* Returns the contents for the left side of a <code>ContentMergeViewer</code>.
* The interpretation of the returned object depends on the concrete <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the content for the left side of a <code>ContentMergeViewer</code>,
* or <code>null</code> if none
*/
Object getLeftContent(Object input);
/**
* Returns whether the left side is editable.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return <code>true</code> if the left side of a <code>ContentMergeViewer</code> is editable
*/
boolean isLeftEditable(Object input);
/**
* Saves new contents for the left side of the <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @param bytes the new contents to save for the left side
*/
void saveLeftContent(Object input, byte[] bytes);
//---- right side
/**
* Returns the label for the right side of a <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the label for the right side of a <code>ContentMergeViewer</code>
*/
String getRightLabel(Object input);
/**
* Returns an optional image for the right side of a <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the image for the right side of a <code>ContentMergeViewer</code>,
* or <code>null</code> if none
*/
Image getRightImage(Object input);
/**
* Returns the contents for the right side of a <code>ContentMergeViewer</code>.
* The interpretation of the returned object depends on the concrete <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return the content for the right side of a <code>ContentMergeViewer</code>,
* or <code>null</code> if none
*/
Object getRightContent(Object input);
/**
* Returns whether the right side is editable.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @return <code>true</code> if the right side of a <code>ContentMergeViewer</code> is editable
*/
boolean isRightEditable(Object input);
/**
* Saves new contents for the right side of the <code>ContentMergeViewer</code>.
*
* @param input the input object of the <code>ContentMergeViewer</code>
* @param bytes the new contents to save for the right side
*/
void saveRightContent(Object input, byte[] bytes);
}