Как да скрия менютата по подразбиране в RCP?

Нов съм в разработването на Plug на Eclipse RCP.

Бях написал един плъгин със собствена перспектива и добавих специфични за перспективата менюта в него.

Въпросът ми е как да скрия менютата по подразбиране, предоставени в Eclipse, като Edit, Navigated, Search, Project?

Опитах с използване на '‹ extension point="org.eclipse.core.expressions.definitions" >' и поставяне на моето специфично условие за изглед, в рамките на приноса на менюто.

Всяка помощ се оценява.

С Най-Добри Пожелания,

Мандар Пхатак.


person Mandy    schedule 11.12.2012    source източник


Отговори (2)


Имате нужда от дейности. Пример от настоящия ми проект:

<extension
     point="org.eclipse.ui.activities">
  <activity
        id="arm.activity.disabled"
        name="%arm.activity.disabled.name">
     <enabledWhen>
        <with
              variable="selection">
           <count
                 value="-1">
           </count>
        </with>
     </enabledWhen>
  </activity>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        pattern="org\.eclipse\.m2e\..*">
  </activityPatternBinding>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        pattern="org\.eclipse\.search\..*">
  </activityPatternBinding>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        pattern="org\.eclipse\.team\..*">
  </activityPatternBinding>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        pattern="org\.eclipse\.compare.*">
  </activityPatternBinding>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        pattern="org\.eclipse\.help\.ui\.PrefPageHelp.*">
  </activityPatternBinding>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        isEqualityPattern="true"
        pattern="org.eclipse.ui.ide/org.eclipse.ui.preferencePages.Workspace">
  </activityPatternBinding>
  <activityPatternBinding
        activityId="arm.activity.disabled"
        isEqualityPattern="true"
        pattern="org.eclipse.ui.ide/org.eclipse.ui.preferencePages.Perspectives">
  </activityPatternBinding>
</extension>
person Alexey Romanov    schedule 12.12.2012
comment
Здравей @Alexey, частично работи при мен, но все още не мога да скрия всички менюта. Например не мога да скрия търсенето-›Дистанционно, но мога да скрия всички останали. Освен това за някои менюта шпионирането на приставките не показваше „идентификатор на дефиниция на активно действие“, вместо това показваше някакво име на клас. Можем ли да намерим имената на командите в този случай? - person Mandy; 12.12.2012
comment
Да, намирането на правилните идентификатори понякога е проблем. Можете да зададете опции за проследяване, когато стартирате приложението си (вижте eclipsesource.com/blogs/2009/07/08/), но не си спомням дали има опция за проследяване на отваряне на менюта. - person Alexey Romanov; 12.12.2012
comment
какъв е моделът за контекстното меню за преименуване в Project Explorer? когато щракнете с десния бутон върху проект и се появи меню, искам да деактивирам менюто за преименуване от този списък - person wearybands; 13.06.2019
comment
@wearybands Не знам, може да искате да зададете това като отделен въпрос. - person Alexey Romanov; 13.06.2019

Един подход е във вашето rcp приложение да имате клас, който разширява ActionBarAdvisor и в конструктора на класа можете да направите нещо подобно, например да премахнете менюто за редактиране

configurer.getMenuManager().remove(IWorkbenchActionConstants.M_EDIT);

Всички обичайни менюта на Eclipse, като edit, ще имат константа, дефинирана в класа по-горе, направете това за менютата, които искате да премахнете от вашето приложение.

Това е само един подход, сигурен съм, че може да има и други, но се надявам, че това ще ви помогне.

person Duncan Krebs    schedule 11.12.2012
comment
Благодаря за милия отговор. Но за менютата бях използвал plug-in.xml. И така, има ли друг начин, по който мога да скрия менютата (за предпочитане с помощта на plug-in.xml). Опитах с кода по-горе, но моят клас Application прилага IApplication, така че не знам как моят ActionBarAdvisor ще се извика. - person Mandy; 12.12.2012
comment
Едно предложение би било да създадете нов проект за плъгин, изберете опцията, че той ще направи UI принос, след това изберете създаване на rcp приложение, след това изберете един от шаблоните и ще видите основната структура на RCP приложение. Може да греша, но ако имате IApplication, трябва да имате клас, който разширява ActionBarAdvisor. Създаването на rcp примерни приложения е добра отправна точка, след това опитайте да използвате кода, който поставих по-горе, и вижте дали можете да накарате менюто за редактиране да не се показва. - person Duncan Krebs; 12.12.2012