Skip to main content
summaryrefslogblamecommitdiffstats
blob: ff628813cbef837d81fdc93d6dd9e3459549f8ea (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12



                                      
                                          






                                                                      
                                       
                                   
                               
                               
                              


        
                                                                                                    
                                                                                                                                    
                                                                                                               
                                                                                                                                
                                                                                                                                
   


                                                           
                                                                                                                      
                                                                                                                            
                                                                             
                                                        


                                                     
                                                                                                  
                           



                                                                                                  



                                                         
                                                                                                                 


                                                      
                                                         
                                                                                  
                                                       
               

                                                                                                                   
                                                                 
                                                                                                         
                                                           


                                                                                                                    
                                                                 
                                                                                                                 
                                                
               
             
                                                                                                         




                                                               
                                                                                      


                                             





                                                                                                                









                                                                                                               
               
             





                                                                                                                     








                                                                                                               

                                                                
                                                                                                     

                                                      

                                                     
                                                                                                         


                                                                
                                                                                                         
                           



                                                                   
                                                                                                                        
                                                                                   
                                                       

                



































































































                                                                                            






                                                                         
                                                    






                                                                         
                                                    







                                      
                                                                         

                                   
                                           







                                                                                       
                         
               
             































































































                                                                                      
               
             









                                                                                          



                                                           
                                                                                     

                      




                                                                  
                    


                                                                                                                                         
                      




                                                             


                                                                                       

                  
                   


                                                          
               
             

                                                               



                                                                                                  

                 





                                                                                                     
                                       
             





                                                                                            





                                                                                            
               





                                                                                                           







                                                                                                  


                                                                                 


                                                                                 

                














                                                                                                         



                                      


                                                                                           
                                                              




                                                    

                                        





















                                                                                                







                                                                            




















                                                                                                    










                                                                                                                                                





                                                                                               




                                                                  









                                                               












                                                                                               
         
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>

<!--
 Copyright (c) 2012, 2016 Obeo and others.
 All rights reserved. This program and the accompanying materials
 are made available under the terms of the Eclipse Public License v1.0
 which accompanies this distribution, and is available at
 http://www.eclipse.org/legal/epl-v10.html
 
 Contributors:
     Obeo - initial API and implementation
     Stefan Dirix - bugs 456699, 474723
     Michael Borkowski - bug 467191
     Simon Delisle - bug 495753
     Philip Langer - bug 508855
     Martin fleck - bug 512677
-->

<plugin>
   <extension-point id="modelResolvers" name="Model Resolvers" schema="schema/modelResolvers.exsd"/>
   <extension-point id="logicalModelViewHandlers" name="Logical Model View Handlers" schema="schema/logicalModelViewHandlers.exsd"/>
   <extension-point id="modelMinimizers" name="Logical Model Minimizers" schema="schema/modelMinimizers.exsd"/>
   <extension-point id="modelDependencyProvider" name="Model Dependency Provider" schema="schema/modelDependencyProvider.exsd"/>
   <extension-point id="mergeResolutionListener" name="Merge Resolution Listener" schema="schema/mergeResolutionListener.exsd"/>
   
   <extension
         point="org.eclipse.compare.structureMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.EMFCompareStructureMergeViewerCreator"
            extensions="NODE_TYPE__EMF_EOBJECT,NODE_TYPE__EMF_RESOURCE,NODE_TYPE__EMF_RESOURCESET,NODE_TYPE__EMF_COMPARISON"
            id="org.eclipse.emf.compare.ide.ui.internal.structureMergeViewer"
            label="%emf.compare.structure.merge.viewer">
      </viewer>
      <contentTypeBinding
            contentTypeId="org.eclipse.emf.ecore.xmi"
            structureMergeViewerId="org.eclipse.emf.compare.ide.ui.internal.structureMergeViewer">
      </contentTypeBinding>
      <contentTypeBinding
            contentTypeId="org.eclipse.emf.compare.content.type"
            structureMergeViewerId="org.eclipse.emf.compare.ide.ui.internal.structureMergeViewer">
      </contentTypeBinding>
   </extension>
   <extension
         point="org.eclipse.compare.contentMergeViewers">
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.tree.TreeContentMergeViewerCreator"
            extensions=
            "org.eclipse.emf.compare.rcp.ui.eTreeDiff,
            org.eclipse.emf.compare.rcp.ui.eMatch,
            org.eclipse.emf.compare.rcp.ui.eResourceDiff"
            id="org.eclipse.emf.compare.ide.ui.internal.EObjectContentMergeViewer"
            label="%model.compare.containment.feature">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.table.TableContentMergeViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eListDiff"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.EObjectListContentMergeViewer"
            label="%model.compare.non.containment.feature">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.text.EMFCompareTextMergeViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eTextDiff"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.text.EMFCompareTextContentMergeViewer"
            label="%model.compare.text.feature">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.label.LabeledViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eWait,
                        NODE_TYPE__EMF_EOBJECT,
			            NODE_TYPE__EMF_RESOURCE,
			            NODE_TYPE__EMF_RESOURCESET,
			            NODE_TYPE__EMF_COMPARISON"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.WaitViewer"
            label="%emf.compare.wait.viewer">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.label.NoSelectedItemViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eNoSelectedItem"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.NoSelectedItemViewer"
            label="%emf.compare.no.selected.item.viewer">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.label.NoDifferencesViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eNoDiff"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.NoDifferencesViewer"
            label="%emf.compare.no.differences.viewer">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.label.NoVisibleItemViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eNoVisibleItem"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.NoVisibleItemViewer"
            label="%emf.compare.no.visible.item.viewer">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.label.OnlyPseudoConflictsViewerCreator"
            extensions="org.eclipse.emf.compare.rcp.ui.eOnlyPseudoConflicts"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.OnlyPseudoConflictsViewer"
            label="%emf.compare.only.pseudo.conflicts.viewer">
      </viewer>
      <viewer
            class="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.TextFallbackCompareViewerCreator"
            extensions=
            "org.eclipse.emf.compare.rcp.ui.fallbackText,
            org.eclipse.emf.compare.rcp.ui.eTreeDiff,
            org.eclipse.emf.compare.rcp.ui.eMatch,
            org.eclipse.emf.compare.rcp.ui.eResourceDiff,
            org.eclipse.emf.compare.rcp.ui.eListDiff,
            org.eclipse.emf.compare.rcp.ui.eTextDiff,
            org.eclipse.emf.compare.rcp.ui.eNoDiff,
            org.eclipse.emf.compare.rcp.ui.eNoVisibleItem,
            org.eclipse.emf.compare.rcp.ui.eOnlyPseudoConflicts"
            id="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.TextFallbackCompareViewer"
            label="%emf.compare.fallback.textcompare">
      </viewer>
      <contentTypeBinding
            contentTypeId="org.eclipse.emf.ecore.xmi"
            contentMergeViewerId="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.WaitViewer">
      </contentTypeBinding>
      <contentTypeBinding
            contentTypeId="org.eclipse.emf.compare.content.type"
            contentMergeViewerId="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.WaitViewer">
      </contentTypeBinding>
   </extension>
   <extension
         point="org.eclipse.emf.edit.itemProviderAdapterFactories">
      <factory
            class="org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.TreeCompareInputAdapterFactory"
            supportedTypes="org.eclipse.compare.structuremergeviewer.ICompareInput"
            uri="http://www.eclipse.org/emf/2002/Tree">
      </factory>
   </extension>
   <extension
         point="org.eclipse.ui.views">
      <category
            id="org.eclipse.emf.compare.category"
            name="EMF Compare">
      </category>
      <view
            allowMultiple="false"
            category="org.eclipse.emf.compare.category"
            class="org.eclipse.emf.compare.ide.ui.internal.logical.view.LogicalModelView"
            icon="icons/full/eobj16/emfcompare-icon.gif"
            id="org.eclipse.emf.compare.ide.ui.logicalmodel.view"
            name="Logical Model View"
            restorable="true">
      </view>
   </extension>
   <extension
         point="org.eclipse.ui.navigator.viewer">
      <viewer
            viewerId="org.eclipse.emf.compare.ide.ui.logicalmodel.view">
         <popupMenu
               allowsPlatformContributions="true"
               id="org.eclipse.emf.compare.ide.ui.logicalmodel.view#PopupMenu">
            <insertionPoint
                  name="group.open"
                  separator="true">
            </insertionPoint>
            <insertionPoint
                  name="group.openWith">
            </insertionPoint>
            <insertionPoint
                  name="group.show"
                  separator="true">
            </insertionPoint>
            <insertionPoint
                  name="additions"
                  separator="true">
            </insertionPoint>
            <insertionPoint
                  name="group.properties"
                  separator="true">
            </insertionPoint>
         </popupMenu>
         <options>
            <property
                  name="org.eclipse.ui.navigator.hideLinkWithEditorAction"
                  value="true">
            </property>
            <property
                  name="org.eclipse.ui.navigator.hideCollapseAllAction"
                  value="true">
            </property>
            <property
                  name="org.eclipse.ui.navigator.customizeViewDialogHelpContext"
                  value="false">
            </property>
         </options>
      </viewer>
      <viewerActionBinding
            viewerId="org.eclipse.emf.compare.ide.ui.logicalmodel.view">
         <includes>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.OpenActions">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.PropertiesActionProvider">
            </actionExtension>
         </includes>
         <excludes>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.GotoActions">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.PortingActions">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.NewActions">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.WorkManagementActionProvider">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.ResourceMgmtActions">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.UndoRedoActionProvider">
            </actionExtension>
            <actionExtension
                  pattern="org.eclipse.ui.navigator.resources.WorkingSetActions">
            </actionExtension></excludes>
      </viewerActionBinding>
      <viewerContentBinding
            viewerId="org.eclipse.emf.compare.ide.ui.logicalmodel.view">
         <includes>
            <contentExtension
                  pattern="org.eclipse.ui.navigator.resourceContent">
            </contentExtension>
         </includes>
      </viewerContentBinding>
   </extension>
      <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="true"
            locationURI="popup:compareWithMenu?after=compareWithGroup">
         <command
               commandId="org.eclipse.emf.compare.ide.ui.compareInDialog"
               label="%command.each.other.in.dialog"
               style="push">
            <visibleWhen
                  checkEnabled="true">
            </visibleWhen>
         </command>
         <command
               commandId="org.eclipse.emf.compare.ide.ui.compareInEditor"
               label="%command.each.other.in.editor"
               style="push">
            <visibleWhen
                  checkEnabled="true">
            </visibleWhen>
         </command>
      </menuContribution>
      <menuContribution
            allPopups="false"
            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
         <menu
               id="compareWithMenu"
               label="%compare.with.label">
            <separator
                  name="compareWithGroup">
            </separator>
         </menu>
      </menuContribution>
      <menuContribution
            allPopups="false"
            locationURI="toolbar:org.eclipse.emf.compare.structuremergeviewer.toolbar">
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            categoryId="org.eclipse.compare.ui.category.compare"
            id="org.eclipse.emf.compare.ide.ui.compareInDialog"
            name="Compare in Dialog">
      </command>
      <command
            categoryId="org.eclipse.compare.ui.category.compare"
            id="org.eclipse.emf.compare.ide.ui.compareInEditor"
            name="Compare in new Editor">
      </command>
      <command
            id="org.eclipse.team.ui.compareWithEachOther"
            name="Each Other">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.handler.CompareInDialog"
            commandId="org.eclipse.emf.compare.ide.ui.compareInDialog">
         <activeWhen>
            <with
                  variable="selection">
               <and>
                  <iterate
                        ifEmpty="false"
                        operator="and">
                     <instanceof
                           value="org.eclipse.emf.ecore.EObject">
                     </instanceof>
                  </iterate>
                  <or>
                     <count
                           value="2">
                     </count>
                     <count
                           value="3">
                     </count>
                  </or>
               </and>
            </with>
         </activeWhen>
      </handler>
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.handler.CompareInNewEditor"
            commandId="org.eclipse.emf.compare.ide.ui.compareInEditor">
         <activeWhen>
            <with
                  variable="selection">
               <and>
                  <iterate
                        ifEmpty="false"
                        operator="and">
                     <instanceof
                           value="org.eclipse.emf.ecore.EObject">
                     </instanceof>
                  </iterate>
                  <or>
                     <count
                           value="2">
                     </count>
                     <count
                           value="3">
                     </count>
                  </or>
               </and>
            </with>
         </activeWhen>
      </handler>
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.handler.CompareInDialog"
            commandId="org.eclipse.team.ui.compareWithEachOther">
         <activeWhen>
            <with
                  variable="selection">
               <and>
                  <iterate
                        ifEmpty="false"
                        operator="and">
                     <instanceof
                           value="org.eclipse.emf.ecore.EObject">
                     </instanceof>
                  </iterate>
                  <or>
                     <count
                           value="2">
                     </count>
                     <count
                           value="3">
                     </count>
                  </or>
               </and>
            </with>
         </activeWhen>
      </handler>
   </extension>
   <extension
         point="org.eclipse.core.expressions.propertyTesters">
      <propertyTester
            class="org.eclipse.emf.compare.ide.ui.internal.logical.EMFModelResourceTester"
            id="org.eclipse.emf.compare.ide.ui.logical"
            namespace="org.eclipse.emf.compare.ide.ui.logical"
            properties="isModelResource"
            type="org.eclipse.core.resources.IFile">
      </propertyTester>
   </extension>
   <extension
         id="org.eclipse.emf.compare.model.provider"
         name="EMF Compare"
         point="org.eclipse.core.resources.modelProviders">
      <modelProvider
            class="org.eclipse.emf.compare.ide.ui.internal.logical.EMFModelProvider">
      </modelProvider>
      <enablement>
         <or>
            <and>
               <adapt
                     type="org.eclipse.core.resources.IContainer">
               </adapt>
               <test
                     args="org.eclipse.emf.compare.ide.ui, org.eclipse.emf.compare.ide.ui.preference.enableModelResolutionFromContainers"
                     property="org.eclipse.emf.compare.preferenceValueEquals"
                     value="true">
               </test>
            </and>
            <and>
               <adapt
                     type="org.eclipse.core.resources.IFile">
               </adapt>
               <test
                     property="org.eclipse.emf.compare.ide.ui.logical.isModelResource">
               </test>
            </and>
         </or>
      </enablement>
      <extends-model
            id="org.eclipse.core.resources.modelProvider">
      </extends-model>
   </extension>
   <extension
         point="org.eclipse.emf.compare.ide.ui.modelResolvers">
      <resolver
            class="org.eclipse.emf.compare.ide.ui.internal.logical.resolver.ThreadedModelResolver"
            description="%resolver.threadedModelResolver.description"
            label="%resolver.threadedModelResolver.label"
            ranking = "0">
      </resolver>
   </extension>
   <extension
         point="org.eclipse.ui.preferencePages">
      <page
            category="org.eclipse.emf.compare.rcp.ui.preferencePage.global"
            class="org.eclipse.emf.compare.ide.ui.internal.preferences.ModelResolutionPreferencePage"
            id="org.eclipse.emf.compare.ide.ui.preferencepage.resolvers"
            name="Resolution Strategy">
      </page>
      <page
            category="org.eclipse.emf.compare.rcp.ui.preferencePage.global"
            class="org.eclipse.emf.compare.ide.ui.internal.preferences.MergePreferencesPage"
            id="org.eclipse.emf.compare.ide.ui.preferencepage.merge"
            name="Merge">
      </page>
      <page
            category="org.eclipse.emf.compare.rcp.ui.preferencePage.global"
            class="org.eclipse.emf.compare.ide.ui.internal.preferences.EditorPreferencePage"
            id="org.eclipse.emf.compare.ide.ui.preferencepage.editor"
            name="Editor">
      </page>
   </extension>
   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer
            class="org.eclipse.emf.compare.ide.ui.internal.preferences.EMFCompareUIPreferencesInitializer">
      </initializer>
   </extension>
   <extension
         point="org.eclipse.core.runtime.adapters">
      <factory
            adaptableType="org.eclipse.emf.compare.ide.ui.internal.logical.EMFModelProvider"
            class="org.eclipse.emf.compare.ide.ui.internal.logical.EMFLogicalModelAdapterFactory">
         <adapter
               type="org.eclipse.team.core.mapping.IResourceMappingMerger">
         </adapter>
         <adapter
               type="org.eclipse.team.ui.mapping.ISynchronizationCompareAdapter">
         </adapter>
         <adapter
               type="org.eclipse.emf.compare.ide.IAdditiveResourceMappingMerger">
         </adapter>
      </factory>
   </extension>
   <extension
         point="org.eclipse.emf.compare.ide.ui.logicalModelViewHandlers">
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.logical.view.EMFCompareEditorLMVHandler"
            ranking="20">
      </handler>
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.logical.view.EMFReflectiveEditorLMVHandler"
            ranking="10">
      </handler>
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.logical.view.ExplorersViewSelectionLMVHandler"
            ranking="10">
      </handler>
   </extension>
    <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="popup:compareWithMenu?after=compareWithGroup">
         <command
               commandId="org.eclipse.emf.compare.ide.ui.emfComparisonSourceCompareCommand"
               label="%command.each.other.emfComparisonSource"
               style="push">
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeMenuSelection">
                  <iterate
                        ifEmpty="false">
                     <and>
                        <adapt
                              type="org.eclipse.emf.compare.ide.ui.source.IEMFComparisonSource">
                        </adapt>
                        <not>
                           <adapt
                                 type="org.eclipse.core.resources.IResource">
                           </adapt>
                        </not>
                     </and>
                  </iterate>
               </with>
            </visibleWhen>
         </command>
      </menuContribution>
   </extension>
   <extension
         point="org.eclipse.ui.commands">
      <command
            id="org.eclipse.emf.compare.ide.ui.emfComparisonSourceCompareCommand"
            name="Compare EMFComparisonSource">
      </command>
      <command
            id="org.eclipse.emf.compare.ide.ui.selectNextUnresolvedDiff"
            name="SelectNextUnresolvedDiff">
      </command>
      <command
            id="org.eclipse.emf.compare.ide.ui.selectPreviousUnresolvedDiff"
            name="SelectPreviousUnresolvedDiff">
      </command>
   </extension>
   <extension
         point="org.eclipse.ui.handlers">
      <handler
            class="org.eclipse.emf.compare.ide.ui.internal.handler.EMFComparisonSourceActionHandler"
            commandId="org.eclipse.emf.compare.ide.ui.emfComparisonSourceCompareCommand">
         <activeWhen>
            <with
                  variable="activeMenuSelection">
               <or>
                  <count
                        value="2">
                  </count>
                  <count
                        value="3">
                  </count>
               </or>
            </with>
         </activeWhen>
      </handler>
   </extension>
   <extension
         point="org.eclipse.emf.compare.rcp.ui.contentMergeViewerCustomization">
      <treeContentCustomization
            contentProvider="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.tree.provider.TreeMergeViewerItemContentProvider"
            ranking="1">
      </treeContentCustomization>
      <contentCustomization
            mergeViewerItemProvider="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.provider.CompareAccessorMergeViewerItemProvider"
            ranking="1">
      </contentCustomization>
   </extension>
   <extension
         point="org.eclipse.emf.compare.ide.ui.modelMinimizers">
      <modelMinimizer
            class="org.eclipse.emf.compare.ide.ui.internal.logical.IdenticalResourceMinimizer">
      </modelMinimizer>
   </extension>
   <extension
         point="org.eclipse.emf.compare.ide.modelInclusionTester">
      <fileExtensionModelInclusionTester
            fileExtension="ecore">
      </fileExtensionModelInclusionTester>
      <contentTypeModelInclusionTester
            contentType="org.eclipse.emf.ecore">
      </contentTypeModelInclusionTester>
      <contentTypeModelInclusionTester
            contentType="org.eclipse.emf.ecore.xmi">
      </contentTypeModelInclusionTester>
      <contentTypeModelInclusionTester
            contentType="org.eclipse.emf.compare.content.type">
      </contentTypeModelInclusionTester>
   </extension>
   <extension
         point="org.eclipse.ui.bindings">
		<key sequence="M1+M2+ARROW_DOWN"
			commandId="org.eclipse.emf.compare.ide.ui.selectNextUnresolvedDiff"
			schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
			contextId="org.eclipse.compare.compareEditorScope">
		</key>
			<key sequence="M1+M2+ARROW_UP"
			commandId="org.eclipse.emf.compare.ide.ui.selectPreviousUnresolvedDiff"
			schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
			contextId="org.eclipse.compare.compareEditorScope">
		</key>
   </extension>
</plugin>

Back to the top