| <?xml version='1.0' encoding='utf-8' ?> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
| <title>How to open compare dialog</title> |
| <style type="text/css"> |
| .tip {border: 1px solid #090;background-color: #dfd;margin: 20px;padding: 0px 6px 0px 6px;} |
| .note {border: 1px solid #F0C000;background-color: #FFFFCE;margin: 20px;padding: 0px 6px 0px 6px;} |
| .info {border: 1px solid #3c78b5;background-color: #D8E4F1;margin: 20px;padding: 0px 6px 0px 6px;} |
| .warning {border: 1px solid #c00;background-color: #fcc;margin: 20px;padding: 0px 6px 0px 6px;} |
| .panel {border: 1px solid #ccc;background-color: #FFFFCE;margin: 10px;padding: 0px 6px 0px 6px;} |
| </style> |
| <link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/> |
| <link type="text/css" rel="stylesheet" href="../resources/custom.css"/> |
| </head> |
| <body> |
| <h1 id="EMF_Compare_.E2.80.94__How_To_Open_Compare_Dialog">EMF Compare — How To Open Compare Dialog</h1> |
| <p>Version 3.1.0.201506080946</p> |
| <div class="toc"> |
| <h3 class="toc-title">Table of Contents</h3> |
| <ol style="list-style: none"> |
| <li> |
| <a href="#Preparing_the_input">Preparing the input</a> |
| </li> |
| <li> |
| <a href="#Preparing_the_configuration">Preparing the configuration</a> |
| <ol style="list-style: none"> |
| <li> |
| <a href="#ComparisonEditorInput">ComparisonEditorInput</a> |
| </li> |
| <li> |
| <a href="#ComparisonScopeEditorInput">ComparisonScopeEditorInput</a> |
| </li> |
| </ol> |
| </li> |
| <li> |
| <a href="#Opening_the_compare_UI">Opening the compare UI</a> |
| </li> |
| <li> |
| <a href="#End-to-end_examples">End-to-end examples</a> |
| <ol style="list-style: none"> |
| <li> |
| <a href="#With_pre-computed_comparison">With pre-computed comparison</a> |
| </li> |
| <li> |
| <a href="#With_a_comparison_scope">With a comparison scope</a> |
| </li> |
| </ol> |
| </li> |
| </ol> |
| </div> |
| <p>This is only valid since release 2.1M4. </p> |
| <p>In this page you will learn how to open a dialog displaying the result of a comparison. </p> |
| <h2 id="Preparing_the_input">Preparing the input</h2> |
| <p>The first thing to do is to choose an EMF Compare sub-implementation of the class of |
| <a href="http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcompare%2FCompareEditorInput.html">CompareEditorInput</a>. |
| </p> |
| <p>Two implementations are provided: </p> |
| <ul> |
| <li> |
| <i>ComparisonEditorInput</i>, that should be use when you want to display a pre-computed Comparison (the results of EMFCompare). |
| </li> |
| <li> |
| <i>ComparisonScopeEditorInput</i>, that should be use when you want to open the compare editor or dialog and to let it perform the comparison. |
| </li> |
| </ul> |
| <p>Both are available from the |
| <b>org.eclipse.emf.compare.ide.ui</b> plug-in, in the package |
| <b>org.eclipse.emf.compare.ide.ui.internal.editor</b>. This is still provisional API so we may break it any time. |
| </p> |
| <h2 id="Preparing_the_configuration">Preparing the configuration</h2> |
| <p>When instantiating an EMF Compare specific implementation of CompareEditorInput, you have to give it at least three paramaters:</p> |
| <ul> |
| <li>a |
| <a href="http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcompare%2FCompareConfiguration.html">CompareConfiguration</a>. This is a standard CompareConfiguration (no specific implementation needed) so you just instantiated it like this: |
| </li> |
| </ul> |
| <pre class="source-java">CompareConfiguration configuration = new CompareConfiguration(); |
| |
| </pre> |
| <ul> |
| <li>an EMFCompareEditingDomain. It is not an implementation of |
| <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/edit/domain/EditingDomain.html">EditingDomain</a> from EMF. It shares similar concepts (it has a command stack, it can create some commands) but is much simpler. You can create it through the factory method: |
| </li> |
| </ul> |
| <pre class="source-java">// ancestor may be null |
| ICompareEditingDomain editingDomain = EMFCompareEditingDomain.create(left, right, ancestor); |
| |
| </pre> |
| <p>You can even give your own command(s) stack(s) if you need to know about executed merge commands. </p> |
| <ul> |
| <li>An |
| <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/common/notify/AdapterFactory.html">AdapterFactory</a> used by the framework to adapt EObjects to be nicely displayed. Most of the time, a |
| <a href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.5.0/org/eclipse/emf/edit/provider/ComposedAdapterFactory.html">ComposedAdapterFactory</a> with the global registry is sufficient as created in the example below: |
| </li> |
| </ul> |
| <pre class="source-java">AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); |
| |
| </pre> |
| <p>Depending on the choosen sub-implementation of CompareEditorInput, you may need to provide additional parameters.</p> |
| <h3 id="ComparisonEditorInput">ComparisonEditorInput</h3> |
| <p>You must provide a Comparison object, the result of the comparison computation of EMFCompare.</p> |
| <pre class="source-java">EMFCompare comparator = EMFCompare.builder().build(); |
| Comparison comparison = comparator.compare(EMFCompare.createDefaultScope(left, right, ancestor)); |
| |
| </pre> |
| <h3 id="ComparisonScopeEditorInput">ComparisonScopeEditorInput</h3> |
| <p>You must provide the comparator (instance of EMFCompare) and the scope of the comparison.</p> |
| <pre class="source-java">EMFCompare comparator = EMFCompare.builder().build(); |
| IComparisonScope scope = EMFCompare.createDefaultScope(left, right, ancestor); |
| |
| </pre> |
| <h2 id="Opening_the_compare_UI">Opening the compare UI</h2> |
| <p>Then, you can call the black magic method from Eclipse Compare framework. You have two choices. You may either open the compare UI wihtin a modal dialog or within an editor. Just call one of the two following methods: </p> |
| <ul> |
| <li> |
| <a href="http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcompare%2FCompareUI.html&anchor=openCompareEditorOnPage(org.eclipse.compare.CompareEditorInput,%20org.eclipse.ui.IWorkbenchPage)">CompareUI.openCompareEditorOnPage(CompareEditorInput, IWorkbenchPage)</a>, to open an editor. |
| </li> |
| <li> |
| <a href="http://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/compare/CompareUI.html#openCompareDialog(org.eclipse.compare.CompareEditorInput)">CompareUI.openCompareDialog(CompareEditorInput)</a>, to open a modal dialog. |
| </li> |
| </ul> |
| <h2 id="End-to-end_examples">End-to-end examples</h2> |
| <h3 id="With_pre-computed_comparison">With pre-computed comparison</h3> |
| <pre class="source-java">public void compare(Notifier left, Notifier right, Notifier ancestor) { |
| EMFCompare comparator = EMFCompare.builder().build(); |
| Comparison comparison = comparator.compare(EMFCompare.createDefaultScope(left, right, ancestor)); |
| |
| ICompareEditingDomain editingDomain = EMFCompareEditingDomain.create(left, right, ancestor); |
| AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); |
| CompareEditorInput input = new ComparisonEditorInput(new CompareConfiguration(), comparison, editingDomain, adapterFactory); |
| |
| CompareUI.openCompareDialog(input); // or CompareUI.openCompareEditor(input); |
| } |
| |
| </pre> |
| <h3 id="With_a_comparison_scope">With a comparison scope</h3> |
| <pre class="source-java">public void compare(Notifier left, Notifier right, Notifier ancestor) { |
| EMFCompare comparator = EMFCompare.builder().build(); |
| IComparisonScope scope = EMFCompare.createDefaultScope(left, right, ancestor)); |
| |
| ICompareEditingDomain editingDomain = EMFCompareEditingDomain.create(left, right, ancestor); |
| AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); |
| CompareEditorInput input = new ComparisonScopeEditorInput(new CompareConfiguration(), |
| editingDomain, adapterFactory, comparator, scope); |
| |
| CompareUI.openCompareDialog(input); // or CompareUI.openCompareEditor(input); |
| } |
| |
| </pre> |
| <p>Part of |
| <a href="../index.html">EMF Compare Documentation</a> |
| </p> |
| <p>Version 3.1.0.201506080946</p> |
| </body> |
| </html> |