2009-07-29 14 views
17

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

यदि यह कर सकता है जो मुझे करने की ज़रूरत है, तो मैं उनका उपयोग कैसे करूं? किसी भी सहायता के लिए अग्रिम धन्यवाद।

उत्तर

16

आप मेनू प्रबंधक से मेनू प्राप्त कर सकते हैं और फिर योगदान संशोधित कर सकते हैं। यह स्निपेट दिखाता है कि मेनू प्रबंधक का उपयोग कैसे करें और नामित आइटम को कैसे हटाएं।

आपको उन्हें पुनर्स्थापित करने के लिए हटाए गए आइटम और आइटम इंडेक्स का ट्रैक रखने की आवश्यकता होगी। एकमात्र समस्या यह है कि indexOf विधि दिखाई नहीं दे रही है। इस स्निपेट को एक ही पैकेज में मेनूमैनेजर के रूप में जोड़ने और इसे एक टुकड़े में जोड़ने के लिए एक तरफ है।

IWorkbenchWindow window = Workbench.getInstance().getActiveWorkbenchWindow() 

if(window instanceof WorkbenchWindow) { 
    MenuManager menuManager = ((WorkbenchWindow)window).getMenuManager(); 

    //TODO you may need to remove items from the coolbar as well 
    ICoolBarManager coolBarManager = null; 

    if(((WorkbenchWindow) window).getCoolBarVisible()) { 
     coolBarManager = ((WorkbenchWindow)window).getCoolBarManager2(); 
    } 

    Menu menu = menuManager.getMenu(); 

    //you'll need to find the id for the item 
    String itemId = "menuId"; 
    IContributionItem item = menuManager.find(itemId); 

    // remember position, TODO this is protected 
    int controlIdx = menu.indexOf(mySaveAction.getId()); 

    if (item != null) { 
     // clean old one 
     menuManager.remove(item); 

     // refresh menu gui 
     menuManager.update(); 
    } 
} 
+0

मैं सोच रहा था, क्या यह आईडीई आधारित अनुप्रयोगों के लिए भी संभव है? उदाहरण के लिए, 'प्रोजेक्ट' जैसे ग्रहण के कुछ मेनू को निकालने के लिए। – nbz

2

आरसीपी अनुप्रयोग में मेनू या टूलबार आइटम की दृश्यता को नियंत्रित करने के कई तरीके हैं।

यदि आपके पास प्लग-इन पर नियंत्रण है जो आइटम में प्रश्नों का योगदान करता है, तो menus एक्सटेंशन बिंदु से जुड़े visibleWhen अभिव्यक्ति का उपयोग करने का सबसे आसान तरीका आमतौर पर होता है। यदि आपके पास कुछ आंतरिक स्थिति है जिसे आप देखना चाहते हैं, तो आप propertyTester के साथ अभिव्यक्ति के test तत्व का उपयोग कर सकते हैं।

गतिविधियों का उपयोग करने का एक विकल्प है। ये आपके आवेदन की कई अन्य चीजों को नियंत्रित कर सकते हैं, सोचा कि आपको कुछ अंतर्निहित संवादों को फिर से कार्यान्वित करने की आवश्यकता हो सकती है। कुछ विवरणों के लिए इस ब्लॉग एंट्री "Using activities for user management" देखें।

संबंधित मुद्दे