|
Eclipse Platform Release 3.0 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.compare.CompareEditorInput
A compare operation which can present its results in a special editor. Running the compare operation and presentating the results in a compare editor are combined in one class because it allows a client to keep the implementation all in one place while separating it from the innards of a specific UI implementation of compare/merge.
A CompareEditorInput defines methods for the following sequence steps:
The prepareInput method should contain the code of the compare operation. It is executed under control of a progress monitor and can be canceled. If the result of the compare is not empty, that is if there are differences that needs to be presented, the ICompareEditorInput should hold onto them and return them with the getCompareResult method. If the value returned from getCompareResult is not null a compare editor is opened on the ICompareEditorInput with title and title image initialized by the corresponding methods of the ICompareEditorInput.
Creation of the editor's SWT controls is delegated to the createContents method. Here the SWT controls must be created and initialized with the result of the compare operation.
If merging is allowed, the modification state of the compared constituents must be tracked and the dirty state returned from method isSaveNeeded. The value true triggers a subsequent call to save where the modified resources can be saved.
The most important part of this implementation is the setup of the compare/merge UI. The UI uses a simple browser metaphor to present compare results. The top half of the layout shows the structural compare results (e.g. added, deleted, and changed files), the bottom half the content compare results (e.g. textual differences between two files). A selection in the top pane is fed to the bottom pane. If a content viewer is registered for the type of the selected object, this viewer is installed in the pane. In addition if a structure viewer is registered for the selection type the top pane is split horizontally to make room for another pane and the structure viewer is installed in it. When comparing Java files this second structure viewer would show the structural differences within a Java file, e.g. added, deleted or changed methods and fields.
Subclasses provide custom setups, e.g. for a Catchup/Release operation by passing a subclass of CompareConfiguration and by implementing the prepareInput method. If a subclass cannot use the DiffTreeViewer which is installed by default in the top left pane, method createDiffViewer can be overridden.
Field Summary | |
static String | DIRTY_STATE
The name of the "dirty" property (value "DIRTY_STATE"). |
Constructor Summary | |
CompareEditorInput(CompareConfiguration configuration)
Creates a CompareEditorInput which is initialized with the given compare configuration. |
Method Summary | |
void | addPropertyChangeListener(IPropertyChangeListener listener)
Adds a listener for property changes to this notifier. |
void | contributeToToolBar(ToolBarManager toolBarManager)
Adds standard actions to the given ToolBarManager. |
Control | createContents(Composite parent)
Create the SWT controls that are used to display the result of the compare operation. |
Viewer | createDiffViewer(Composite parent)
Factory method for creating a differences viewer for the top left pane. |
Control | createOutlineContents(Composite parent,
int direction)
|
boolean | exists()
Returns false to indicate that this input should not appear in the "File Most Recently Used" menu. |
Viewer | findContentViewer(Viewer oldViewer,
ICompareInput input,
Composite parent)
Implements the dynamic viewer switching for content viewers. |
Viewer | findStructureViewer(Viewer oldViewer,
ICompareInput input,
Composite parent)
Implements the dynamic viewer switching for structure viewers. |
Object | getAdapter(Class adapter)
Returns an object which is an instance of the given class associated with this object. |
CompareConfiguration | getCompareConfiguration()
Returns the configuration object for the viewers within the compare editor. |
Object | getCompareResult()
Returns the compare result computed by the most recent call to the run method. |
ImageDescriptor | getImageDescriptor()
Returns the image descriptor for this input. |
String | getMessage()
|
String | getName()
Returns the name of this editor input for display purposes. |
IPersistableElement | getPersistable()
Returns null since this editor cannot be persisted. |
String | getTitle()
Returns the title which will be used in the compare editor's title bar. |
Image | getTitleImage()
Returns the title image which will be used in the compare editor's title bar. |
String | getToolTipText()
Returns the tool tip text for this editor input. |
boolean | isSaveNeeded()
Returns true if there are unsaved changes. |
protected abstract Object | prepareInput(IProgressMonitor monitor)
Runs the compare operation and returns the compare result. |
void | removePropertyChangeListener(IPropertyChangeListener listener)
Removes the given content change listener from this notifier. |
void | run(IProgressMonitor monitor)
Runs the compare operation and stores the compare result. |
void | save(IProgressMonitor pm)
Deprecated. Override method saveChanges instead. |
void | saveChanges(IProgressMonitor pm)
Save any unsaved changes. |
void | setDirty(boolean dirty)
Sets the dirty state of this input to the given value and sends out a PropertyChangeEvent if the new value differs from the old value. |
void | setFocus()
Asks this input to take focus within its container (editor). |
protected void | setMessage(String message)
|
void | setTitle(String title)
Sets the title which will be used when presenting the compare result. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final String DIRTY_STATE
Constructor Detail |
public CompareEditorInput(CompareConfiguration configuration)
Method Detail |
public Object getAdapter(Class adapter)
public ImageDescriptor getImageDescriptor()
public String getToolTipText()
public String getName()
For instance, when the input is from a file, the return value would ordinarily be just the file name.
public IPersistableElement getPersistable()
public boolean exists()
protected void setMessage(String message)
public String getMessage()
public String getTitle()
public void setTitle(String title)
public Image getTitleImage()
public CompareConfiguration getCompareConfiguration()
public void contributeToToolBar(ToolBarManager toolBarManager)
Subclasses may override to add their own actions.
public void run(IProgressMonitor monitor) throws InterruptedException, InvocationTargetException
protected abstract Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
Note: this method is typically called in a modal context thread which doesn't have a Display assigned. Implementors of this method shouldn't therefore allocated any SWT resources in this method.
public Object getCompareResult()
public Control createContents(Composite parent)
Subclasses may override if they need to change the layout or wiring between panes.
public Control createOutlineContents(Composite parent, int direction)
public void setFocus()
Clients should not call this method but they may override if they implement a different layout with different visual components. Clients are free to call the inherited method.
public Viewer createDiffViewer(Composite parent)
Subclasses may override if they need a different viewer.
public Viewer findStructureViewer(Viewer oldViewer, ICompareInput input, Composite parent)
This implementation forwards the request to CompareUI.findStructureViewer.
Subclasses may override to implement a different strategy.
public Viewer findContentViewer(Viewer oldViewer, ICompareInput input, Composite parent)
This implementation forwards the request to CompareUI.findContentViewer.
Subclasses may override to implement a different strategy.
public boolean isSaveNeeded()
public void setDirty(boolean dirty)
public void addPropertyChangeListener(IPropertyChangeListener listener)
public void removePropertyChangeListener(IPropertyChangeListener listener)
public void save(IProgressMonitor pm)
public void saveChanges(IProgressMonitor pm) throws CoreException
|
Eclipse Platform Release 3.0 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Guidelines for using Eclipse APIs.
Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.