Tengo que hacer una clase abstracta que herede de ApplicationWindow (PantallaAbstracta.java), y también una clase que herede de esta clase (PantallaGeneral.java). Lo que ocurre es que los componentes que defino en la clase madre, no pueden ser modificados o seleccionados mediante el WindowBuilder en la clase hija. La clase hija solamente recibe el Composite parent de la clase madre, y no los puedo usar. Lo que quiero hacer es que tomando una clase como template, pueda generar otras similares, con la opción de agregar columnas o componentes de tipo formulario en un composite, pero que todas tengan los mismos botones, y que cada boton ejecute a el mismo metodo sobreescrito en cada pantalla hija.

Los metodos que tengo definidos son los siguientes (clase madre):

Código PHP:

import org
.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;

import com.presentacion.grupos.CompositeBotones;
import com.presentacion.grupos.CompositeTabla;

public abstract class 
PantallaAbstracta extends ApplicationWindow {

    public 
int alto;
    public 
int ancho;
    public 
Composite container;
    public 
Shell shell;
    private 
CompositeTabla compositeTabla;
    private 
CompositeTabla compositeTabla_1;
    private 
CompositeBotones compositeBotones;
    
    public 
PantallaAbstracta() {
        
super(null);
      }
    
    protected 
Control createContents(Composite parent) {
        
container = new Composite(parentSWT.NORMAL);
        
container.setLayout(new GridLayout(1false));
        {
            
compositeTabla_1 = new CompositeTabla(containerSWT.NONE);
        }
        {
            
compositeBotones = new CompositeBotones(containerSWT.NONE);
        }

La solución completa para el hilo: aquí.



        return 
container;
    }

    
    public 
Composite getContainer() {
        return 
container;
    }
    
    public 
CompositeTabla getCompositeTabla() {
        return 
compositeTabla;
    }

    
    public abstract 
void mModificar ();
    
    public abstract 
void mCancelar ();
    
    public abstract 
void mAceptar ();
    
    
    
//Métodos de estado de pantalla
    
    
public abstract void mEstadoInicial ();
    
    public abstract 
void mEstadoSeleccionado ();
    
    public abstract 
void mEstadoModificar ();
    
    public abstract 
void mEstadoAceptarCancelar ();
    
    
//Métodos de refresh
    
    
public abstract void mRefresh ();


El código de la clase hija es el siguiente:

Código PHP:

package com
.ixe.manejador.presentacion.pantallas;

import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;

import com.presentacion.superclase.PantallaAbstracta;

public class 
PantallaGeneral extends PantallaAbstracta{

    private 
int width 800;
    private 
int height 600;
    private 
Composite container;
    private static 
Shell shell;
    
    
/**
     * Método constructor
     * @param parentShell shell padre
     */
    
public PantallaGeneral() {
        
super();
    }
    
    protected 
Control createContents(Composite parent) {        
        return 
super.createContents(parent);
    }
    

    @
Override
    
public void mAceptar() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mCancelar() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mEstadoAceptarCancelar() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mEstadoInicial() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mEstadoModificar() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mEstadoSeleccionado() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mModificar() {
        
// TODO Auto-generated method stub
        
    
}

    @
Override
    
public void mRefresh() {
        
// TODO Auto-generated method stub
        
    
}

Ojalá me puedan ayudar. Todo cambia cuando extiendo de la clase Shell, pero al usar ApplicationWindow no funciona
No sé si en este caso necesite declarar algunos métodos que me falten...

Gracias de antemano.