Problème de table dans une vue SWT

Résolu
Vlatiss Messages postés 62 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 22 septembre 2009 - 10 juil. 2009 à 15:10
Vlatiss Messages postés 62 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 22 septembre 2009 - 20 juil. 2009 à 09:06
Salut à tous.
J'ai un soucis avec du SWT.
J'ai deux vues, dans chacune d'entre elle se trouve un tableau. Je souhaite, lorsque je clique sur un élément du tableau un, afficher le détail dans le tableau de l'autre vue.
J'ai mis un ISelectionProvider sur la vue qui émet et ISelectionListener sur la vue qui reçoit. J'ai une classe de perspective qui regroupe ces deux vues ainsi qu'un fichier xml avec les perspectives et les vues.
Si vous pouvez me dire ce qui cloche. Pour l'instant ,après analyse, je constate que je récupére bien l'info de la table qui m'intéresse, mais je crois qu'il y a blocage quand je fais le set Selection.

Morceau de code de la vue qui envoie l'info:

protected void createContent(final Composite parent) {
        GridLayout layout = new GridLayout(1, false);
        parent.setLayout(layout);
int tableStyle = SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL
                | SWT.FULL_SELECTION | SWT.HIDE_SELECTION | SWT.VIRTUAL;
        table = new Table(parent, tableStyle);
        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));

        table.setLinesVisible(true);
        table.setHeaderVisible(true);

        TableColumn idColumn = new TableColumn(table, SWT.NONE);
        idColumn.setText("Id");
        idColumn.setWidth(50);
        getSite().setSelectionProvider(this);
        table.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                int id = Integer.parseInt(table.getItem(
                        table.getSelectionIndex()).getText());
                MonObjet Objet = getObjet( id);
                setSelection(new StructuredSelection(objet));
            }
        });
}
public void addSelectionChangedListener(ISelectionChangedListener listener) {
        listenerList.add(listener);
    }

    public ISelection getSelection() {
        return selection;
    }

    public void removeSelectionChangedListener(
            ISelectionChangedListener listener) {
        listenerList.remove(listener);
    }
public void setSelection(ISelection selection) {
        this.selection = selection;
       
        Object[] listeners = listenerList.getListeners();
        SelectionChangedEvent event = new SelectionChangedEvent(this, selection);
        for (int i =0;i< listeners.length; i++) {
            ((ISelectionChangedListener) listeners[i]).selectionChanged(event);
        }
    }

Morceau de code de la vue qui reçoit:
protected void createContent(final Composite parent) {

        GridLayout layout = new GridLayout(1, false);
        parent.setLayout(layout);
        getSite().getPage().addSelectionListener(this); 
        int tableStyle = SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL
        | SWT.FULL_SELECTION | SWT.HIDE_SELECTION | SWT.VIRTUAL;
        detailsTable = new Table(parent, tableStyle);
        detailsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
        detailsTable.setLinesVisible(true);
        detailsTable.setHeaderVisible(true);
   
        TableColumn recipientColumn = new TableColumn(detailsTable, SWT.NONE);
        recipientColumn.setText("Name");
        recipientColumn.setWidth(120);
}
   
     public void selectionChanged(IWorkbenchPart part, ISelection selection) { 
           if (part instanceof TableView) { 

               MonObjet objet= (MonObjet) selection;
               TableItem row = new TableItem(detailsTable, SWT.NONE);
               row.setText(new String[] {objet.getName()});
           }
     }

Merci

1 réponse

Vlatiss Messages postés 62 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 22 septembre 2009
20 juil. 2009 à 09:06
Problème résolu, il s'agissait d'une méthode qui ne fonctionnait pas correctement mais comme il y a pas d'affichage complet d'erreur avec le SWT j'ai eu du mal à la trouver.
3
Rejoignez-nous