2008-09-05 7 views
6

Estoy escribiendo un asistente para una aplicación Eclipse RCP. Después de hacer algunos procesamientos en un archivo y tomar algunas entradas del usuario, no quiero permitir que el usuario regrese a hacer cambios. En este punto, deben aceptar o rechazar los cambios que están a punto de hacer en el sistema.¿Puedes deshabilitar el botón Atrás en un asistente JFace?

Lo que no puedo encontrar es una llamada a método que me permite anular los botones que se muestran o la capacidad del usuario para presionar el botón Atrás. Prefiero que no esté allí o al menos esté deshabilitado.

¿Alguien ha encontrado la manera de hacerlo usando JFace Wizard y WizardPage?

Usabilidad, ¿estoy rompiendo las convenciones de los magos? ¿Debo considerar un enfoque diferente al problema?

Respuesta

11

Puede devolver nulo desde el método getPreviousPage() en la implementación de su página de asistente.

3

Desde la perspectiva de la interfaz de usuario, esto parece bastante malo. Sus usuarios se sentirán frustrados si cometen un error y quieren regresar y corregirlo, y usted no los permite. Creo que sería mucho mejor cambiar la aplicación para permitir el regreso en lugar de buscar formas de prevenirla.

0

No hay forma de hacerlo con las API de asistente de JFace estándar. Mi equipo logró esto escribiendo un WizardDialog personalizado. Hicimos esto en una aplicación Eclipse RCP y no en un plugin de eclipse. Desactivar el botón Atrás está rompiendo la convención, pero nuestros analistas de negocios realmente querían la funcionalidad.

6

Ampliando la respuesta de jodonell:

La desactivación del botón de retroceso es más difícil de lo que debería ser, debido al comportamiento no intuitivo en la implementación predeterminada de WizardPage.getPreviousPage(). Puede llamar a setPreviousPage (null) y getPreviousPage() aún devuelve la página anterior. Necesita anular la implementación de getPreviousPage() con el fin de desactivar el botón de retroceso:

public abstract class MyWizardPage extends WizardPage { 
    private boolean backButtonEnabled = true; 

    public void setBackButtonEnabled(boolean enabled) { 
     backButtonEnabled = enabled; 
     getContainer().updateButtons(); 
    } 

    @Override 
    public IWizardPage getPreviousPage() { 
     if (!backButtonEnabled) { 
      return null; 
     } 
     return super.getPreviousPage(); 
    } 
} 

Ver mi blog durante unos consejos del mago Más JFace y trucos:

http://nsawadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html

Cuestiones relacionadas