J'ai eu le meme pb et j'ai trouvé une solution qui va peut etre t'aider
il faut creer 2 classes et une interface:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
import java.util.ArrayList;
import org.eclipse.jface.viewers.SelectionChangedEvent;
public class GestionnaireEvenement {
static ArrayList listeners;
static ArrayList listenersFocus;
public GestionnaireEvenement(){
//plug = new Plugin();
}
public void addValuesListener(testValuesListner aL)
{
if(aL==null)return;
if(listeners==null)listeners=new ArrayList();
if(listeners.contains(aL))return;
listeners.add(aL);
}
public void removeValuesListener(testValuesListner aL)
{
if(aL==null)return;
if(listeners==null)return;
listeners.remove(aL);
}
public void notifyValuesChange(SelectionChangedEvent aEvent)
{
if(listeners==null)return;
int size = listeners.size();
for(int i=0;i<size;i++)
{
((testValuesListner)listeners.get(i)).ValuesChanged(aEvent);
}
}
//focus
public void addValuesListenerFocus(testValuesListner aL)
{
if(aL==null)return;
if(listenersFocus==null)listenersFocus=new ArrayList();
if(listenersFocus.contains(aL))return;
listenersFocus.add(aL);
}
public void removeValuesListenerFocus(testValuesListner aL)
{
if(aL==null)return;
if(listenersFocus==null)return;
listenersFocus.remove(aL);
}
public void notifyValuesChangeFocus(String aEvent)
{
if(listenersFocus==null)return;
int size = listenersFocus.size();
for(int i=0;i<size;i++)
{
((testValuesListner)listenersFocus.get(i)).ValuesChangedFocus(aEvent);
}
}
//ffocus
};
public class testValuesEvent {
public int[] values;
public testValuesEvent(int[] aV){values=aV;}
}
import org.eclipse.jface.viewers.SelectionChangedEvent;
public interface testValuesListner {
void ValuesChanged(SelectionChangedEvent evt);
void ValuesChangedFocus(String evt);
} |
avec ça il te suffit de placer dans ton code la ou tu veux que ton evenement soit déclencher:
1 2 3 4 5
|
public void setFocus() {
GestionnaireEvenement t = new GestionnaireEvenement();
t.notifyValuesChangeFocus((String)editingDomain.getResourceSet().toString());
} |
par exemple dans mon cas des que le focus est activé
et dans la vue qui va agir grace a l'evenement
public class IOView extends ViewPart implements testValuesListner{
tu doit rajouter le implements dans ta vue
et dans le constructeur de la vue
1 2 3 4 5 6 7
|
public void createPartControl(Composite parent) {
GestionnaireEvenement plug = new GestionnaireEvenement();
plug.addValuesListener(this);
plug.addValuesListenerFocus(this); |
et tu doit redefinir les methodes
void ValuesChanged(SelectionChangedEvent evt);
void ValuesChangedFocus(String evt);
dans ta vue.
voila en esperant que ça t'aidera.
Partager