2010-04-19 9 views
2

Je veux changer les valeurs sur un ComboFieldEditor en fonction d'un autre ComboFieldEditor dans un plugin eclipse. Par exemple. Si l'utilisateur modifie le package, différentes classes doivent être remplies dans la seconde ComboFieldEditor. La classe ComboFieldEditor ne semble pas avoir un moyen de changer les éléments à la volée.Comment modifier le contenu de ComboFieldEditor?

Répondre

3

J'ai créé une classe SmartComboFieldEditor pour me permettre d'obtenir et de définir élégamment la valeur d'un ComboFieldEditor en utilisant le magasin de données de sauvegarde en arrière-plan.

package wat.core.plugin; 

import org.eclipse.jface.preference.ComboFieldEditor; 
import org.eclipse.swt.widgets.Composite; 

public class SmartComboFieldEditor extends ComboFieldEditor { 

    public SmartComboFieldEditor(String name, String labelText, String[][] entryNamesAndValues, Composite parent) { 
     super(name, labelText, entryNamesAndValues, parent); 
    } 

    public String getSelectedValue() 
    { 
     doStore(); 
     return getPreferenceStore().getString(getPreferenceName()); 
    } 

    public void setSelectedValue(String newValue) 
    { 
     getPreferenceStore().setValue(getPreferenceName(), newValue); 
     doLoad(); 
    } 
} 

Ensuite, vous pouvez remplacer les méthodes PropertyChange et performOK comme ceci:

public void propertyChange(PropertyChangeEvent event) { 
    super.propertyChange(event); 
    if (event.getSource() == combo1) 
    { 
    if (combo1.getSelectedValue().equals("Some Value")) 
    { 
     combo2.setSelectedValue("Some Other Value"); 
    } 
    } 
} 
Questions connexes