Bonjour,

Je souhaiterais me développer un classe composite qui affiche un bouton pour lancer une tache, puis que le bouton se remplace par une barre de progression pendant la tache en cour, pour au final redevenir un bouton.

Actuellement, j'ai deux soucis. Comment fait ton pour inverser les composants en live ?
En swing, la chose était simple. En le supprimant du contener parent et en ajoutant le nouveau.

Le deuxième soucis, est que la progressbar ne veux pas changer de taille !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
public class CompositeButtonState extends Composite{
 
	private Button			buttonState = null;
	private ProgressBar		progressState = null;
 
	private int				state = -1;
 
	public CompositeButtonState(Composite parent, int style) {
		super(parent, style);
 
		GridLayout grid = new GridLayout();
		grid.numColumns = 1;
		this.setLayout(grid);
		this.setBackground(new Color(null, 0, 255, 255));
 
		buttonState = new Button(this, SWT.PUSH);
		buttonState.setSize(50, 50);
 
		progressState = new ProgressBar(this, SWT.SMOOTH);
		progressState.setMaximum(0);
		progressState.setMaximum(100);
		progressState.setSize(50, 50);
 
		this.setState(0, 0);
	}
 
	public void addSelectionListener(SelectionListener listener){
		buttonState.addSelectionListener(listener);
	}
 
	public int getState() {
		return state;
	}
 
	public void setState(int state, int progress){
		if(this.state != state){
			switch(state){
			case 0 : //wait start
				buttonState.setImage(Activator.getDefault().getImageRegistry().get(Activator.ICON_WAIT_START));
				buttonState.setText("");
				buttonState.setVisible(true);
				buttonState.setSize(50,50);
				progressState.setVisible(false);
				this.layout();
				break;
			case 1 : // progress
				buttonState.setVisible(false);
				progressState.setVisible(true);
				progressState.setSize(50,50);
				this.layout();
				break;
			case 2 : // abort
				break;
			case 3 : // finished
				buttonState.setImage(Activator.getDefault().getImageRegistry().get(Activator.ICON_FINISHED));
				buttonState.setVisible(true);
				progressState.setVisible(false);
				break;
			}
			this.state = state;
		}
 
		if(this.state == 1){
			progressState.setSelection(progress);
		}
	}
}


merci d'avance.
Croc