2008-09-05 15 views
6

Eclipse RCP uygulaması için bir sihirbaz yazıyorum. Bir dosya üzerinde bazı işlemler yaptıktan ve bazı kullanıcı girişlerini aldıktan sonra, kullanıcının değişiklik yapmak için geri dönmesine izin vermek istemiyorum. Bu noktada, sisteme yapacakları değişiklikleri kabul etmeli veya reddetmeliler.JFace sihirbazında geri düğmesini devre dışı bırakabilir misiniz?

Neyi göremediğim, görüntülenen düğmeleri veya kullanıcının geri düğmesine basabilme özelliğini geçersiz kılmamı sağlayan bir yöntem çağrısıdır. Orada olmamayı ya da en azından engelli olmayı tercih ederim.

JFace Wizard ve WizardPage kullanarak bunu yapmanın bir yolu var mı?

Kullanılabilirlik, sihirbaz kurallarına aykırı mıyım? Soruna farklı bir yaklaşım düşünmeli miyim?

cevap

11

Sihirbaz sayfanızın uygulamasında getPreviousPage() yönteminden null döndürebilirsiniz.

3

UI perspektifinden bu oldukça kötü görünüyor. Kullanıcılarınız bir hata yaparlarsa geri dönüp düzeltmek isterlerse hayal kırıklığına uğrayacaklar ve onlara izin vermeyeceksiniz. Uygulamayı değiştirmenin yollarını aramaktan ziyade geri dönüşü sağlamak için değiştirmenin daha iyi olacağını düşünüyorum.

0

Standart JFace sihirbaz API'lerini kullanarak bunu yapmanın bir yolu yoktur. Ekibim, özel bir WizardDialog yazarak bunu başardı. Bir Eclipse RCP uygulamasında bunu yaptık ve bir tutulma eklentisinde değil. Geri düğmesini devre dışı bırakmak kongre kırıyor, ancak iş analistleri gerçekten işlevselliği istiyordu. jodonell cevabı üzerine genişletilmesi

6

: olması gerekenden daha

geri düğmesine devre dışı bırakılması nedeniyle WizardPage.getPreviousPage varsayılan uygulanmasında olmayan sezgisel davranışına, daha zordur(). SetPreviousPage (null) öğesini çağırabilir ve getPreviousPage() yine de önceki sayfayı döndürür.

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

:

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(); 
    } 
} 

birkaç JFace sihirbazı ipucu için benim blog yazısı bakınız: Geri düğmesini devre dışı bırakmak için getPreviousPage() uygulanmasını geçersiz kılmak gerekir

İlgili konular