Sto iniziando a conoscere le SWT e ho un problemino con queste nuove librerie.
Ho un main che chiama una classe che disegna una finestra (crea un oggetto display ed uno shell).
Da questa home creo diversi oggetti a seconda delle operazioni che devo fare (es: inserire nuovo prodotto in DB, eseguire ricerca prodotti, ecc...).
Il problema è che ogni widget swt che voglio disegnare richiede come parametro un Device.
Es:
codice:
Text text = new Text (Shell, 0);
dove shell è il device nel quale disegno la edit box di testo.
Purtroppo nella classe chiamata dal main, dove istanzio ad esempio un TEXT, non viene visto l'object shell dichiarato nella classe home.
Non va bene passarglielo come parametro al costruttore e con la clausola static non funziona.
Non credo sia giusto istanziare oggetti display e shell in ogni classe.
Qual è la soluzione?

Posto il codice delle due classi e l'errore che mi dà Eclipse:

codice:
package provaProdotti;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;


public class Home {
	
	
	static Display d;
	static Shell s;
    
    Home() {
	d = new Display();
    s = new Shell(d);
    s.setSize(250, 250);
    s.setText("Home");
    s.open();
    
    new GestioneProdotti();
    
    while (!s.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
	
	
}	
	


public static void main(String[] argv) {
    new Home();
  }
}


package provaProdotti;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Label;

public class GestioneProdotti {

	
	
	
	
	GestioneProdotti() {
	
	
	titolo = new Label(s, SWT.CENTER); // s cannot be resolved to a variable!!!
    titolo.setText("Gestione dei prodotti");
    Font newFont = new Font(d, "arial", 14, 1); 
    titolo.setFont(newFont);
    titolo.pack();	
	                    
	                    } 
	
}