2010-03-23 22 views
4

Dans mon plugin eclipse j'ai le code suivant:Comment identifier la source d'un événement de sélection de texte provenant d'un CompareEditorInput dans eclipse?

public class MyHandler extends AbstractHandler { 
    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 
     ISelection sel = HandlerUtil 
      .getActiveWorkbenchWindowChecked(event) 
      .getSelectionService() 
      .getSelection(); 

     if(sel instanceof TextSelection) { 
      IEditorPart activeEditor = PlatformUI 
        .getWorkbench() 
        .getActiveWorkbenchWindow() 
        .getActivePage() 
        .getActiveEditor(); 
      IEditorInput editorInput = activeEditor.getEditorInput(); 

      if(editorInput instanceof CompareEditorInput) { 
       // here are two possible sources of the text selection, the 
       // left or the right side of the compare editor. 

       // How can I find out, which side it is from? 
      } 
     } 
     return null; 
    } 
} 

Ici, je suis gestion d'un événement de sélection de texte provenant d'un CompareEditorInput, à savoir le résultat de la comparaison de deux révisions à distance d'un fichier avec subclipse.

Maintenant je veux gérer la sélection de texte correctement. Pour cela, je dois savoir s'il sélectionne du texte dans l'éditeur de gauche ou dans l'éditeur de droite.

Comment puis-je savoir?

EDIT 2010-04-10:

L'instance concrète de CompareEditorInput est org.tigris.subversion.subclipse.ui.compare.SVNCompareEditorInput.

Répondre

1

La question est: org.eclipse.compare.CompareEditorInput (qui ont son java sources here) est une classe abstraite qui n'a pas toujours « gauche » ou « droite » volet:

/** 
* 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. 
*/ 

La question est: ce que vous savez exactement type d'implémentation de cet objet CompareEditorInput?

i.e.: Il est intéressant de voir comment les classes concrètes face à la sélection:
Le org.eclipse.compare.internal.ResourceCompareInput par exemple traite org.eclipse.jface.viewers.IStructuredSelection, et est livré avec un utility function to get left and right IResource based on the selection.