Class ContentMergeViewer
- All Implemented Interfaces:
- IFlushable,- IFlushable2,- IPropertyChangeNotifier,- IInputProvider,- IInputSelectionProvider,- ISelectionProvider
- Direct Known Subclasses:
- ImageMergeViewer,- TextMergeViewer
 ContentMergeViewer
 
- implements the overall layout and defines hooks so that subclasses can easily provide an implementation for a specific content type,
- implements the UI for making the areas resizable,
- has an action for controlling whether the ancestor area is visible or not,
- has actions for copying one side of the input to the other side,
- tracks the dirty state of the left and right sides and send out notification on state changes.
 A ContentMergeViewer accesses its model by means of a content
 provider which must implement the IMergeViewerContentProvider
 interface.
 
 Clients may wish to use the standard concrete subclass
 TextMergeViewer, or define their own subclass.
 
- See Also:
- 
Field SummaryFields inherited from class org.eclipse.jface.viewers.ViewerWIDGET_DATA_KEY
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedContentMergeViewer(int style, ResourceBundle bundle, CompareConfiguration cc) Creates a new content merge viewer and initializes with a resource bundle and a configuration.
- 
Method SummaryModifier and TypeMethodDescriptionvoidAdds a listener for property changes to this notifier.protected final ControlbuildControl(Composite parent) Builds the SWT controls for the three areas of a compare/merge viewer.protected abstract voidcopy(boolean leftToRight) Copies the content of one side to the other side.protected ControlcreateCenterControl(Composite parent) Create the control that divides the left and right sides of the merge viewer.protected abstract voidcreateControls(Composite composite) Creates the SWT controls for the ancestor, left, and right content areas of this compare viewer.protected voidcreateToolItems(ToolBarManager toolBarManager) Contributes items to the givenToolBarManager.protected booleanThis method is called from theViewermethodinputChangedto save any unsaved changes of the old input.final voidflush(IProgressMonitor monitor) Flush any modifications made in the viewer into the compare input.protected voidflushContent(Object input, IProgressMonitor monitor) Flushes the modified content back to input elements via the content provider.voidflushLeft(IProgressMonitor monitor) voidflushRight(IProgressMonitor monitor) protected ControlReturn the center control that divides the left and right sides of the merge viewer.protected intReturn the desired width of the center control.protected CompareConfigurationReturns the compare configuration of this viewer.protected abstract byte[]getContents(boolean left) Returns the byte contents of the left or right side.Returns the primary control associated with this viewer.protected ResourceBundleReturns the resource bundle of this viewer.TheContentMergeViewerimplementation of thisViewermethod returns the empty selection.getTitle()Returns the viewer's name.protected IToolBarManagergetToolBarManager(Composite parent) Returns the toolbar manager for this viewer.protected voidHandle a change to the given input reported from anICompareInputChangeListener.protected voidhandleDispose(DisposeEvent event) Called on the viewer disposal.protected voidCallback that is invoked when a property in the compare configuration (getCompareConfiguration()changes.protected abstract voidhandleResizeAncestor(int x, int y, int width, int height) Lays out the ancestor area of the compare viewer.protected abstract voidhandleResizeLeftRight(int x, int y, int leftWidth, int centerWidth, int rightWidth, int height) Lays out the left and right areas of the compare viewer.protected booleanCallback that is invoked when the control of this merge viewer is given focus.protected voidhookControl(Control control) Adds event listener hooks to the given control.protected final voidinputChanged(Object input, Object oldInput) Internal hook method called when the input to this viewer is initially set or subsequently changed.booleanbooleanprotected booleanReturn whether the ancestor pane is visible or not.protected booleanReturn the dirty state of the left side of this viewer.protected booleanIf the inputs are mirrored, this asks the right model value.protected booleanReturn the dirty state of the right side of this viewer.protected booleanIf the inputs are mirrored, this asks the left model value.protected booleanReturn whether the input is a three-way comparison.voidrefresh()Refreshes this viewer completely with information freshly obtained from this viewer's model.voidRemoves the given content change listener from this notifier.voidsave(IProgressMonitor monitor) Deprecated.voidsetConfirmSave(boolean enable) Controls whetherdoSave(Object, Object)asks for confirmation before saving the old input withsaveContent(Object).voidsetContentProvider(IContentProvider contentProvider) TheContentMergeViewerimplementation of thisContentViewermethod checks to ensure that the content provider is anIMergeViewerContentProvider.protected voidsetLeftDirty(boolean dirty) Sets the dirty state of the left side of this viewer.protected voidsetRightDirty(boolean dirty) Sets the dirty state of the right side of this viewer.voidsetSelection(ISelection selection, boolean reveal) TheContentMergeViewerimplementation of thisViewermethod does nothing.protected abstract voidupdateContent(Object ancestor, Object left, Object right) Initializes the controls of the three content areas with the given input objects.protected voidUpdates the headers of the three areas by querying the content provider for a name and image for the three sides of the input object.protected voidUpdates the enabled state of the toolbar items.Methods inherited from class org.eclipse.jface.viewers.ContentViewergetContentProvider, getInput, getLabelProvider, handleLabelProviderChanged, labelProviderChanged, setInput, setLabelProviderMethods inherited from class org.eclipse.jface.viewers.VieweraddHelpListener, addSelectionChangedListener, fireHelpRequested, fireSelectionChanged, getData, handleHelpRequest, removeHelpListener, removeSelectionChangedListener, scrollDown, scrollUp, setData, setSelection
- 
Constructor Details- 
ContentMergeViewerCreates a new content merge viewer and initializes with a resource bundle and a configuration.- Parameters:
- style- SWT style bits
- bundle- the resource bundle
- cc- the configuration object
 
 
- 
- 
Method Details- 
getTitleReturns the viewer's name.- Returns:
- the viewer's name
 
- 
createControlsCreates the SWT controls for the ancestor, left, and right content areas of this compare viewer. Implementations typically hold onto the controls so that they can be initialized with the input objects in methodupdateContent.- Parameters:
- composite- the container for the three areas
 
- 
handleResizeAncestorprotected abstract void handleResizeAncestor(int x, int y, int width, int height) Lays out the ancestor area of the compare viewer. It is called whenever the viewer is resized or when the sashes between the areas are moved to adjust the size of the areas.- Parameters:
- x- the horizontal position of the ancestor area within its container
- y- the vertical position of the ancestor area within its container
- width- the width of the ancestor area
- height- the height of the ancestor area
 
- 
handleResizeLeftRightprotected abstract void handleResizeLeftRight(int x, int y, int leftWidth, int centerWidth, int rightWidth, int height) Lays out the left and right areas of the compare viewer. It is called whenever the viewer is resized or when the sashes between the areas are moved to adjust the size of the areas.- Parameters:
- x- the horizontal position of the left area within its container
- y- the vertical position of the left and right area within its container
- leftWidth- the width of the left area
- centerWidth- the width of the gap between the left and right areas
- rightWidth- the width of the right area
- height- the height of the left and right areas
 
- 
createToolItemsContributes items to the givenToolBarManager. It is called when this viewer is installed in its container and if the container has aToolBarManager. TheContentMergeViewerimplementation of this method does nothing. Subclasses may reimplement.- Parameters:
- toolBarManager- the toolbar manager to contribute to
 
- 
updateContentInitializes the controls of the three content areas with the given input objects.- Parameters:
- ancestor- the input for the ancestor area
- left- the input for the left area
- right- the input for the right area
 
- 
copyprotected abstract void copy(boolean leftToRight) Copies the content of one side to the other side. Called from the (internal) actions for copying the sides of the viewer's input object.- Parameters:
- leftToRight- if- true, the left side is copied to the right side; if- false, the right side is copied to the left side
 
- 
getContentsprotected abstract byte[] getContents(boolean left) Returns the byte contents of the left or right side. If the viewer has no editable contentnullcan be returned.- Parameters:
- left- if- true, the byte contents of the left area is returned; if- false, the byte contents of the right area
- Returns:
- the content as an array of bytes, or null
 
- 
getResourceBundleReturns the resource bundle of this viewer.- Returns:
- the resource bundle
 
- 
getCompareConfigurationReturns the compare configuration of this viewer.- Returns:
- the compare configuration, never null
 
- 
setContentProviderTheContentMergeViewerimplementation of thisContentViewermethod checks to ensure that the content provider is anIMergeViewerContentProvider.- Overrides:
- setContentProviderin class- ContentViewer
- Parameters:
- contentProvider- the content provider to set. Must implement IMergeViewerContentProvider.
- See Also:
 
- 
getSelectionTheContentMergeViewerimplementation of thisViewermethod returns the empty selection. Subclasses may override.- Specified by:
- getSelectionin interface- ISelectionProvider
- Specified by:
- getSelectionin class- Viewer
- Returns:
- empty selection.
 
- 
setSelectionTheContentMergeViewerimplementation of thisViewermethod does nothing. Subclasses may reimplement.- Specified by:
- setSelectionin class- Viewer
- Parameters:
- selection- the new selection
- reveal-- trueif the selection is to be made visible, and- falseotherwise
- See Also:
 
- 
handlePropertyChangeEventCallback that is invoked when a property in the compare configuration (getCompareConfiguration()changes.- Parameters:
- event- the property change event
- Since:
- 3.3
 
- 
isThreeWayprotected boolean isThreeWay()Return whether the input is a three-way comparison.- Returns:
- whether the input is a three-way comparison
- Since:
- 3.3
 
- 
inputChangedInternal hook method called when the input to this viewer is initially set or subsequently changed.The ContentMergeViewerimplementation of thisViewermethod tries to save the old input by callingdoSave(...)and then callsinternalRefresh(...).- Overrides:
- inputChangedin class- Viewer
- Parameters:
- input- the new input of this viewer, or- nullif there is no new input
- oldInput- the old input element, or- nullif there was previously no input
 
- 
doSaveThis method is called from theViewermethodinputChangedto save any unsaved changes of the old input.The Clients can override this method and are free to decide whether they want to call the inherited method.ContentMergeViewerimplementation of this method callssaveContent(...). If confirmation has been turned on withsetConfirmSave(true), a confirmation alert is posted before saving.- Parameters:
- newInput- the new input of this viewer, or- nullif there is no new input
- oldInput- the old input element, or- nullif there was previously no input
- Returns:
- trueif saving was successful, or if the user didn't want to save (by pressing 'NO' in the confirmation dialog).
- Since:
- 2.0
 
- 
setConfirmSavepublic void setConfirmSave(boolean enable) Controls whetherdoSave(Object, Object)asks for confirmation before saving the old input withsaveContent(Object).- Parameters:
- enable- a value of- trueenables confirmation
- Since:
- 2.0
 
- 
refreshpublic void refresh()Description copied from class:ViewerRefreshes this viewer completely with information freshly obtained from this viewer's model.
- 
hookControlDescription copied from class:ContentViewerAdds event listener hooks to the given control.All subclasses must call this method when their control is first established. The ContentViewerimplementation of this method hooks dispose events for the given control. Subclasses may override if they need to add other control hooks; however,super.hookControlmust be invoked.- Overrides:
- hookControlin class- ContentViewer
- Parameters:
- control- the control
 
- 
buildControlBuilds the SWT controls for the three areas of a compare/merge viewer.Calls the hooks createControlsandcreateToolItemsto let subclasses build the specific content areas and to add items to an enclosing toolbar.This method must only be called in the constructor of subclasses. - Parameters:
- parent- the parent control
- Returns:
- the new control
 
- 
getToolBarManagerReturns the toolbar manager for this viewer. Subclasses may extend this method and use either the toolbar manager provided by the inherited method by calling super.getToolBarManager(parent) or provide an alternate toolbar manager.- Parameters:
- parent- a- Compositeor- null
- Returns:
- a IToolBarManager
- Since:
- 3.4
 
- 
handleSetFocusprotected boolean handleSetFocus()Callback that is invoked when the control of this merge viewer is given focus. This method should returntrueif a particular widget was given focus and false otherwise. By default,falseis returned. Subclasses may override.- Returns:
- whether particular widget was given focus
- Since:
- 3.3
 
- 
getCenterWidthprotected int getCenterWidth()Return the desired width of the center control. This width is used to calculate the values used to layout the ancestor, left and right sides.- Returns:
- the desired width of the center control
- Since:
- 3.3
- See Also:
 
- 
isAncestorVisibleprotected boolean isAncestorVisible()Return whether the ancestor pane is visible or not.- Returns:
- whether the ancestor pane is visible or not
- Since:
- 3.3
 
- 
createCenterControlCreate the control that divides the left and right sides of the merge viewer.- Parameters:
- parent- the parent composite
- Returns:
- the center control
- Since:
- 3.3
 
- 
getCenterControlReturn the center control that divides the left and right sides of the merge viewer. This method returns the control that was created by callingcreateCenterControl(Composite).- Returns:
- the center control
- Since:
- 3.3
- See Also:
 
- 
getControlDescription copied from class:ViewerReturns the primary control associated with this viewer.- Specified by:
- getControlin class- Viewer
- Returns:
- the SWT control which displays this viewer's content
 
- 
handleDisposeCalled on the viewer disposal. Unregisters from the compare configuration. Clients may extend if they have to do additional cleanup.- Overrides:
- handleDisposein class- ContentViewer
- Parameters:
- event- a dispose event
- See Also:
 
- 
updateToolItemsprotected void updateToolItems()Updates the enabled state of the toolbar items.This method is called whenever the state of the items needs updating. Subclasses may extend this method, although this is generally not required. 
- 
updateHeaderprotected void updateHeader()Updates the headers of the three areas by querying the content provider for a name and image for the three sides of the input object.This method is called whenever the header must be updated. Subclasses may extend this method, although this is generally not required. 
- 
addPropertyChangeListenerDescription copied from interface:IPropertyChangeNotifierAdds a listener for property changes to this notifier. Has no effect if an identical listener is already registered.- Specified by:
- addPropertyChangeListenerin interface- IPropertyChangeNotifier
- Parameters:
- listener- a property change listener
 
- 
removePropertyChangeListenerDescription copied from interface:IPropertyChangeNotifierRemoves the given content change listener from this notifier. Has no effect if the identical listener is not registered.- Specified by:
- removePropertyChangeListenerin interface- IPropertyChangeNotifier
- Parameters:
- listener- a property change listener
 
- 
setLeftDirtyprotected void setLeftDirty(boolean dirty) Sets the dirty state of the left side of this viewer. If the new value differs from the old all registered listener are notified with aPropertyChangeEventwith the property nameCompareEditorInput.DIRTY_STATE.- Parameters:
- dirty- the state of the left side dirty flag
 
- 
setRightDirtyprotected void setRightDirty(boolean dirty) Sets the dirty state of the right side of this viewer. If the new value differs from the old all registered listener are notified with aPropertyChangeEventwith the property nameCompareEditorInput.DIRTY_STATE.- Parameters:
- dirty- the state of the right side dirty flag
 
- 
saveDeprecated.Method from the old internalISavableinterface Save the viewers's content. Note: this method is for internal use only. Clients should not call this method.- Parameters:
- monitor- a progress monitor
- Throws:
- CoreException- not thrown anymore
 
- 
flushFlush any modifications made in the viewer into the compare input. This method callsflushContent(Object, IProgressMonitor)with the compare input of the viewer as the first parameter.- Specified by:
- flushin interface- IFlushable
- Parameters:
- monitor- a progress monitor
- Since:
- 3.3
- See Also:
 
- 
flushContentFlushes the modified content back to input elements via the content provider. The provided input may be the current input of the viewer or it may be the previous input (i.e. this method may be called to flush modified content during an input change).- Parameters:
- input- the compare input
- monitor- a progress monitor or- nullif the method was call from a place where a progress monitor was not available.
- Since:
- 3.3
 
- 
flushLeft- Specified by:
- flushLeftin interface- IFlushable2
- Parameters:
- monitor- The progress monitor to report progress.
- Restriction:
- This method is not intended to be referenced by clients.
 
- 
flushRight- Specified by:
- flushRightin interface- IFlushable2
- Parameters:
- monitor- The progress monitor to report progress.
- Restriction:
- This method is not intended to be referenced by clients.
 
- 
isRightDirtyprotected boolean isRightDirty()Return the dirty state of the right side of this viewer.- Returns:
- the dirty state of the right side of this viewer
- Since:
- 3.3
 
- 
internalIsRightDirtypublic boolean internalIsRightDirty()- Returns:
- the dirty state of the right side of this viewer
- Since:
- 3.7
- Restriction:
- This method is not intended to be referenced by clients.
 
- 
isLeftDirtyprotected boolean isLeftDirty()Return the dirty state of the left side of this viewer.- Returns:
- the dirty state of the left side of this viewer
- Since:
- 3.3
 
- 
internalIsLeftDirtypublic boolean internalIsLeftDirty()- Returns:
- the dirty state of the left side of this viewer
- Since:
- 3.7
- Restriction:
- This method is not intended to be referenced by clients.
 
- 
handleCompareInputChangeprotected void handleCompareInputChange()Handle a change to the given input reported from anICompareInputChangeListener. This class registers a listener with its input and reports any change events through this method. By default, this method prompts for any unsaved changes and then refreshes the viewer. Subclasses may override.- Since:
- 3.3
 
- 
isLeftEditableprotected boolean isLeftEditable()If the inputs are mirrored, this asks the right model value.- Returns:
- true if the left viewer is editable
- Since:
- 3.7
 
- 
isRightEditableprotected boolean isRightEditable()If the inputs are mirrored, this asks the left model value.- Returns:
- true if the right viewer is editable
- Since:
- 3.7
 
 
- 
IFlushable.flush(IProgressMonitor).