import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class TestLayout { private static Composite comp; private static Text textLieu; private static Text textMat; private static Composite viewcomposite; private static Composite container; private static StackLayout layout; private static Composite pagecontrol; private static Shell shell; private static int page; public static void main(String[] args) { Display display = new Display (); shell = new Shell (display); shell.setLayout(new FillLayout()); createContainer(shell); shell.pack (); shell.open (); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); } private static void createContainer(Composite parent) { viewcomposite = new Composite (parent, SWT.NONE); viewcomposite.setLayout(new GridLayout()); container = new Composite(viewcomposite, SWT.NONE); layout = new StackLayout(); container.setLayout(layout); Button button = new Button(viewcomposite,SWT.PUSH); button.setText("Show page"); button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { showPage(); } public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } }); } private static void showPage() { createControl(container); layout.topControl=comp; // ici on peut faire au lieu de shell.layout(true,true) viewcomposite.layout(true,true); //shell.layout(true,true); shell.pack(); } public static void createControl(Composite parent) { page++; comp = new Composite(parent, SWT.NONE); // attention créer un nouveal comp et perd la référence du précédent GridLayout layout = new GridLayout(); comp.setLayout(layout); layout.numColumns = 3; layout.marginLeft = 300; Label labelTitre = new Label(comp,SWT.NONE); labelTitre.setText("Sélection du lieu de l'affaire et des matrices de test (page "+page+")"); labelTitre.setFont(new Font(null,"Arial",14,0)); GridData titreGD = new GridData(GridData.FILL_HORIZONTAL); titreGD.horizontalSpan = 3; titreGD.heightHint = 70; labelTitre.setLayoutData(titreGD); Label labelLieu = new Label(comp, SWT.NONE); labelLieu.setText("Lieu de l'affaire : "); labelLieu.setFont(new Font(null,"Arial",10,0)); labelLieu.setToolTipText("Indiquer le dossier racine de l'affaire"); textLieu = new Text(comp, SWT.BORDER); textLieu.setText("Chemin de l'affaire"); textLieu.setFont(new Font(null,"Arial",10,0)); textLieu.setEditable(false); GridData affaireGD = new GridData(GridData.CENTER); affaireGD.widthHint = 300; textLieu.setLayoutData(affaireGD); Button btnLieuAffaire = new Button(comp, SWT.NONE); btnLieuAffaire.setText("..."); //btnLieuAffaire.addSelectionListener(new AffaireSelectionListenerW(parametrageControllerWPageOne)); Label labelMat = new Label(comp, SWT.NONE); labelMat.setText("Lieu des matrices de test : "); //labelMat.setFont(new Font(null,"Arial",10,0)); labelMat.setToolTipText("Indiquer le dossier racine des matrices de test"); textMat = new Text(comp, SWT.BORDER); textMat.setText("Chemin des matrices de test"); textMat.setFont(new Font(null,"Arial",10,0)); textMat.setEditable(false); affaireGD.widthHint = 300; textMat.setLayoutData(affaireGD); Button btnLieuMat = new Button(comp, SWT.NONE); btnLieuMat.setText("..."); //btnLieuMat.addSelectionListener(new MatSelectionListenerW(parametrageControllerWPageOne)); // Required to avoid an error in the system //setControl(comp); //setPageComplete(false); pagecontrol = comp; } }