See: Description
| Interface | Description |
|---|---|
| MergeNode<T> |
| Class | Description |
|---|---|
| AbstractMergeAddin | Deprecated
replaced by
DynamicMergeAddin |
| AbstractMergeEditor | Deprecated
replaced by
DynamicMergeEditor. |
| BaseMergeAddin | |
| BaseMergeEditor | |
| BaseMergeNode<T> | |
| BaseTextMergeEditor | |
| DynamicMergeAddin | |
| DynamicMergeEditor | |
| MergeContext | |
| MergeController |
Controller class for merge editor commands.
|
| MergeEngine |
Facade/utility class for performing a merge operation and contructing a
CompareModel instance from the result.
|
| MergeURLFileSystemHelper |
Filesystem helper class for the "ide.merge" protocol used by merge node URLs.
|
| MergeUtil |
Utilities class for merge editor consumers / providers.
|
| RestartMergeCommand |
Command class for restarting an editor merge task (losing changes).
|
| SaveMergeCommand |
Command class for saving editor merge results.
|
| TextMergeContributor |
Textual merge compare contributor class, based around a
TextBuffer. |
| TextMergeEditor |
Textual merge editor specialization class.
|
| TextMergeNode |
Code examples
To create and register a merge editor addin:
import java.net.URL;
import oracle.ide.editor.EditorManager;
import oracle.jdeveloper.merge.AbstractMergeAddin;
...
AbstractMergeAddin mergeEditorAddin = new AbstractMergeAddin( AcmeMergeEditor.class ) {
protected boolean isEditorAvailable( URL url ) {
...
}
};
EditorManager.getEditorManager().registerDynamic( mergeEditorAddin );
To deregister and dispose a merge editor addin:
import oracle.ide.editor.EditorManager; import oracle.jdeveloper.merge.AbstractMergeAddin; ... AbstractMergeAddin mergeEditorAddin = ... ... EditorManager.getEditorManager().unregister( mergeEditorAddin ); mergeEditorAddin.closeEditors(); mergeEditorAddin = null;
Implementing a textual merge editor which builds and returns a model:
import java.io.IOException;
import java.net.URL;
import oracle.ide.addin.Context;
import oracle.ide.net.URLFileSystem;
import oracle.javatools.buffer.TextBuffer;
import oracle.javatools.buffer.TextBufferFactory;
import oracle.javatools.compare.algorithm.text.OffsetDifferenceBlock;
import oracle.javatools.compare.algorithm.text.TextCompareContributor;
import oracle.javatools.compare.algorithm.text.TextCompareModel;
import oracle.jdeveloper.merge.TextMergeContributor;
import oracle.jdeveloper.merge.TextMergeNodeContributor;
import oracle.jdeveloper.merge.BaseTextMergeEditor;
import oracle.jdeveloper.merge.TextMergeNode;
...
public class AcmeMergeEditor extends BaseTextMergeEditor {
protected TextCompareModel createTextMergeModel( Context context ) throws IOException {
TextBuffer textBuffer1 = TextBufferFactory.createTextBuffer();
TextBuffer textBuffer2 = TextBufferFactory.createTextBuffer();
TextBuffer textBufferA = TextBufferFactory.createTextBuffer();
...
// Example initialization of a single difference block
OffsetDifferenceBlock differenceBlock = new OffsetDifferenceBlock( OffsetDifferenceBlock.TYPE_CHANGE,
textBuffer1, textBuffer2, textBufferA );
differenceBlock.setFirstStart( 1 );
differenceBlock.setSecondStart( 1 );
differenceBlock.setAncestorStart( 1 );
differenceBlock.setFirstLength( 2 );
differenceBlock.setSecondLength( 3 );
differenceBlock.setAncestorLength( 0 );
URL url = context.getDocument().getURL();
setTextMergeNode( new TextMergeNode( url, textBufferA ) );
TextCompareContributor contributor1 =
new TextMergeContributor( textBuffer1, URLFileSystem.getSuffix( url ), "Source" );
TextCompareContributor contributor2 =
new TextMergeContributor( textBuffer2, URLFileSystem.getSuffix( url ), "Target" );
TextCompareContributor contributorA =
new TextMergeNodeContributor( getTextMergeNode(), "Result of Merge" );
return new TextCompareModel(
contributor1, contributor2, contributorA, new OffsetDifferenceBlock[] { differenceBlock } );
}
}
Implementing a command to make the merge editor of a document visible:
import java.io.IOException;
import oracle.ide.Ide;
import oracle.ide.addin.AbstractCommand;
import oracle.ide.addin.Command;
import oracle.jdeveloper.merge.MergeUtil;
...
public class AcmeMergeCommand extends AbstractCommand {
public static final int CMD_ID = Ide.findOrCreateCmdID( "AcmeMergeCommand" );
public AcmeMergeCommand() {
super( AcmeMergeCommand.CMD_ID );
}
public int doit() throws IOException {
MergeUtil.reopenMergeEditor( getContext().getDocument(), AcmeMergeEditor.class );
return Command.OK;
}
}