تغيير عناصر القائمة برمجياً من البرنامج المساعد Eclipse

StackOverflow https://stackoverflow.com/questions/1202197

سؤال

أود أن أكون قادرًا على إزالة عناصر القائمة تمامًا عند بدء تشغيل تطبيق Eclipse plugin الخاص بي.ما أريد فعله هو أن أتمكن من إضافة عناصر القائمة هذه لاحقًا اعتمادًا على منطق العمل بناءً على تصرفات المستخدم.هل هناك طريقة للقيام بذلك؟لقد فكرت في استخدام المساهمات، لكني أشعر أنها لن تكون بالضبط ما أريده.

لو أنه يستطيع أفعل ما أريد أن أفعله، كيف يمكنني استخدامها؟شكرا مقدما لأي مساعدة.

هل كانت مفيدة؟

المحلول

ويمكنك الحصول على قائمة من MenuManager ثم قم بتعديل المساهمات. يظهر هذا المقتطف كيفية الوصول إلى مدير القائمة وإزالة عنصر مسمى.

وستحتاج لتعقب العناصر إزالتها ومؤشرات البند لاستعادتها. المشكلة الوحيدة هي أن طريقة indexOf غير مرئية. إضافة هذا المقتطف إلى نوع في نفس الحزمة كما MenuManager وإضافته إلى جزء هو أحد السبل جولة ذلك.

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

نصائح أخرى

هناك عدد من الطرق للتحكم في رؤية عناصر القائمة أو شريط الأدوات في تطبيق RCP.

إذا كان لديك القدرة على التحكم في المكون الإضافي الذي يساهم بالعنصر (العناصر) المعني، فإن الطريقة الأسهل عادة هي استخدام visibleWhen التعبير المرتبط menus نقطة التمديد.إذا كان لديك بعض الحالة الداخلية التي تريد التحقق منها، فيمكنك استخدام test عنصر التعبير مع أ propertyTester.

البديل هو استخدام الأنشطة.يمكنها التحكم في العديد من الأشياء الأخرى في تطبيقك، معتقدًا أنك قد تحتاج إلى إعادة تنفيذ بعض مربعات الحوار المضمنة.انظر هذا الإدخال للمدونة "استخدام الأنشطة لإدارة المستخدم" لبعض التفاصيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top