2013-05-24 8 views
0

J'ai une vue avec un viewer de table et un autre avec un widget de texte. Lorsque je sélectionne quelque chose dans la visionneuse de table, le texte sélectionné est affiché dans le widget de texte et je peux modifier ce texte. Comment puis-je mettre à jour la visionneuse de table avec le texte du widget de texte lors de l'édition?Comment synchroniser les changements dans Eclipse RCP?

+0

Je suis sûr que tableViewer vous permettra d'ajouter un gestionnaire d'événement onSelect. Enregistrez votre gestionnaire d'événements et inspectez l'événement pour obtenir le texte de l'arbre. Définissez-le dans la zone de texte – sanbhat

+0

Je peux définir le texte dans la zone de texte. Mais après cela, si je change le texte dans la zone de texte, j'ai besoin de mettre à jour le texte dans la table pour montrer celui de la zone de texte. – user641595

Répondre

0

Vous avez juste besoin d'écouter SWT.Verify dans la Text et mettre à jour les TableViewer données en conséquence:

public static void main(String[] args) 
{ 
    final Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new FillLayout()); 
    shell.setText("StackOverflow"); 

    final Text text = new Text(shell, SWT.BORDER); 

    text.addListener(SWT.Verify, new Listener() 
    { 
     @Override 
     public void handleEvent(Event e) 
     { 
      String oldString = text.getText(); 
      String newString = oldString.substring(0, e.start) + e.text + oldString.substring(e.end); 

      /* SET STRING TO TABLEVIEWER DATA HERE */ 

      System.out.println(newString); 
     } 
    }); 

    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 

Sinon, si vous voulez juste de mettre à jour la table lorsque l'utilisateur fait modifier le texte, écoutez SWT.FocusOut sur le Text à la place.

Questions connexes