Problema com eventos e JFrame

Boa tarde pessoal,

estou com o seguinte problema:

eu criei o seguinte código:

[code]public class ObserverPropertyDescriptor extends PropertyDescriptor {

private int result;
 
public ObserverPropertyDescriptor(Object object,
		IItemPropertyDescriptor itemPropertyDescriptor) {
	super(object, itemPropertyDescriptor);
}

@Override
public CellEditor createPropertyEditor(Composite parent) {
	return new ExtendedDialogCellEditor(parent, getLabelProvider()) {
		@Override
		protected Object openDialogBox(Control cellEditorWindow) {
			// Dialog creation
			
			result = 0;
			
			final ObserverDialog frame = new ObserverDialog();
			frame.setVisible(true);
			frame.addWindowListener(new WindowAdapter() {  
			    public void windowDeactivated(WindowEvent evt) { 
			      if(frame.getClose() == 1){
			    	 result = 1;
			      }
			    	
			    }  
			    
			}); 

			
			// Open the dialog and retrieve the user selection
			//labelProvider.dispose();
			return result == 1 ? frame.getObsProperties();
		}
	};
}

}[/code]

É um property descriptor de um editor GMF que não vem ao caso aqui. Minha dúvida é a seguinte:
Eu preciso retornar frame.getObsProperties(); caso o result == 1 retornar essa string, mas eu preciso
mudar o result caso o usuário aperte um botão OK na interface frame, botão esse que fecha a janela e ai
o evento que eu coloquei no frame é ativado e muda o result. Porém pelo que percebi as linhas de código
são executadas independentes do evento. Quando o usuário fechar o frame, o retorno já foi efetuado.

Quero saber se tem como eu esperar o evento acontecer para poder retornar e assim eu teria os valores
corretos. Se tiver algum jeito do JFrame retornar algum valor ao ser fechado, também daria certo.

Se puderem ajudar, agradeço !

Galera, vi que com o JDialog eu posso deixar a classe modal.
Isso pausou a execução do programa. Porém tem um problema, eu preciso
abrir janelas nesse JDialog que está modal e como ele está modal não me deixa
clicar nas janelas que abro.

Alguma ideia de como resolver?