Você pode desativar o botão Voltar em um assistente JFace?
Pergunta
Estou escrevendo um assistente para um aplicativo Eclipse RCP.Depois de fazer algum processamento em um arquivo e receber algumas informações do usuário, não quero permitir que o usuário volte para fazer alterações.Neste ponto, eles devem aceitar ou rejeitar as alterações que estão prestes a fazer no sistema.
O que não consigo encontrar é uma chamada de método que me permita substituir os botões exibidos ou a capacidade do usuário de pressionar o botão Voltar.Eu preferiria que não estivesse lá ou pelo menos estivesse desativado.
Alguém encontrou uma maneira de fazer isso usando o Assistente JFace e Página do Assistente?
Em termos de usabilidade, estou quebrando as convenções do assistente?Devo considerar uma abordagem diferente para o problema?
Solução
Você pode retornar nulo do método getPreviousPage() na implementação da página do assistente.
Outras dicas
Expandindo a resposta de Jodonell:
Desativar o botão Voltar é mais difícil do que deveria, devido ao comportamento não intuitivo na implementação padrão de WizardPage.getPreviousPage().Você pode chamar setPreviousPage( null ) e getPreviousPage() ainda retornará a página anterior.Você precisa substituir a implementação de getPreviousPage() para desativar o botão Voltar:
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();
}
}
Veja minha postagem no blog para mais algumas dicas e truques do assistente JFace:
http://nsawadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html
Do ponto de vista da interface do usuário, isso parece bastante ruim.Seus usuários ficarão frustrados se cometerem um erro e quiserem voltar e corrigi-lo e você não permitir.Acho que seria muito melhor alterar o aplicativo para permitir o retrocesso, em vez de procurar formas de evitá-lo.
Não há como fazer isso usando APIs padrão do assistente JFace.Minha equipe conseguiu isso escrevendo um WizardDialog personalizado.Fizemos isso em um aplicativo Eclipse RCP e não em um plugin Eclipse.Desativar o botão Voltar é quebrar as convenções, mas nossos analistas de negócios realmente queriam a funcionalidade.