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(parent, SWT.NORMAL);
container.setLayout(new GridLayout(1, false));
{
compositeTabla_1 = new CompositeTabla(container, SWT.NONE);
}
{
compositeBotones = new CompositeBotones(container, SWT.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:
Ojalá me puedan ayudar. Todo cambia cuando extiendo de la clase Shell, pero al usar ApplicationWindow no funcionaCó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
}
}
No sé si en este caso necesite declarar algunos métodos que me falten...
Gracias de antemano.




Citar
Marcadores