تغيير عناصر القائمة برمجياً من البرنامج المساعد Eclipse
-
05-07-2019 - |
سؤال
أود أن أكون قادرًا على إزالة عناصر القائمة تمامًا عند بدء تشغيل تطبيق 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
.
البديل هو استخدام الأنشطة.يمكنها التحكم في العديد من الأشياء الأخرى في تطبيقك، معتقدًا أنك قد تحتاج إلى إعادة تنفيذ بعض مربعات الحوار المضمنة.انظر هذا الإدخال للمدونة "استخدام الأنشطة لإدارة المستخدم" لبعض التفاصيل.