2008-09-05 14 views
6

मैं एक ग्रहण आरसीपी आवेदन के लिए एक जादूगर लिख रहा हूँ। फ़ाइल पर कुछ प्रसंस्करण करने और कुछ उपयोगकर्ता इनपुट लेने के बाद, मैं उपयोगकर्ता को बदलाव करने के लिए वापस जाने नहीं देना चाहता। इस बिंदु पर उन्हें सिस्टम में किए गए परिवर्तनों को स्वीकार या अस्वीकार करना होगा।क्या आप जेएफएएस विज़ार्ड में बैक बटन अक्षम कर सकते हैं?

मुझे जो प्रतीत नहीं होता है वह एक विधि कॉल है जो मुझे प्रदर्शित करने वाले बटन को ओवरराइड करने देता है या उपयोगकर्ता को बैक बटन हिट करने की क्षमता देता है। मैं यह पसंद करूंगा कि यह वहां न हो या कम से कम अक्षम हो।

क्या किसी को JFace Wizard और WizardPage का उपयोग करके ऐसा करने का कोई तरीका मिला है?

उपयोगिता-वार, क्या मैं विज़ार्ड सम्मेलनों को तोड़ रहा हूं? क्या मुझे समस्या के लिए एक अलग दृष्टिकोण पर विचार करना चाहिए?

उत्तर

11

आप अपने विज़ार्ड पेज कार्यान्वयन में getPreviousPage() विधि से शून्य वापस कर सकते हैं।

3

यूआई परिप्रेक्ष्य से यह बदतर लगता है। यदि वे गलती करते हैं और वापस जाना चाहते हैं और इसे सही करना चाहते हैं तो आप निराश हो जाएंगे और आप उन्हें नहीं जाने देंगे। मुझे लगता है कि इसे रोकने के तरीकों की तलाश करने के बजाए वापस जाने की अनुमति देने के लिए एप्लिकेशन को बदलने के लिए बेहतर होगा।

0

मानक जेएफएएस विज़ार्ड एपीआई का उपयोग करके ऐसा करने का कोई तरीका नहीं है। मेरी टीम ने कस्टम विज़ार्डडियलॉग लिखकर इसे पूरा किया। हमने इसे ग्रहण आरसीपी एप्लिकेशन पर किया है, न कि ग्रहण प्लगइन पर। बैक बटन को अक्षम करना सम्मेलन तोड़ रहा है, लेकिन हमारे व्यापार विश्लेषकों वास्तव में कार्यक्षमता चाहते थे।

6

jodonell के जवाब पर विस्तार:

वापस बटन को अक्षम करने की तुलना में यह होना चाहिए, WizardPage.getPreviousPage के डिफ़ॉल्ट कार्यान्वयन में गैर सहज व्यवहार के कारण कठिन है()। आप setPreviousPage (null) को कॉल कर सकते हैं, और getPreviousPage() अभी भी पिछले पृष्ठ को वापस कर सकते हैं।

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

कुछ और JFace विज़ार्ड युक्तियाँ और चालें के लिए अपने ब्लॉग पोस्ट देखें: आप वापस बटन को निष्क्रिय करने के क्रम में getPreviousPage() के कार्यान्वयन को ओवरराइड करने की जरूरत है