Improvvisamente ho "Esegui" e "Cerca" nella barra dei menu della mia applicazione RCP. C'è comunque da rimuoverli?Esegui e cerca nella barra dei menu RCP
risposta
primo luogo, verificare this thread (e l'articolo "Contributing Actions to the Eclipse Workbench" utilizzato in this thread):
Il trucco era "
check the launcher config
" - anche dopo una completamente nuova installazione di Eclipse 3.1.1, con precisione nient'altro nel mio WS tranne i miei plugin, i fastidiosi menu extra e il fastidioso errore "modifica ultima posizione" erano ancora presenti.Poi sono andato alla configurazione launcher come lei ha suggerito, che aveva un sacco di cruft (creati automagicamente da Eclipse) - così ho deselezionato tutti, selezionato i miei plugin, e cliccato su "
Add Required
"; scappando dal WS con quello - fantastico!
Vedi anche bug 115998
rimuovere la funzione "piattaforma" risolve tutto in su - una semplice correzione che era molto difficile da trovare!
Detto questo, in generale, per nascondere alcuni contributi di azione si può provare, come in this thread a:
1/nascondere il menu/coolbar definito da ActionSet Extension Point.
IWorkbenchPage.hideActionSet(actionSetId)
IWorkbenchPage.hideActionSet("org.eclipse.search.menu");
2/Hide suo menu:
MenuManager mbManager = ((ApplicationWindow)page.getWorkbenchWindow()).getMenuBarManager();
for (int i=0; i<mbManager.getItems().length; i++){
IContributionItem item=mbManager.getItems()[i];
if (item.getId().equals("org.eclipse.search.menu")){
item.setVisible(false);
}
}
Oppure si può provare this thread, di nasconderlo per qualsiasi punto di vista attraverso un PerspectiveListener
:
I ids di azione che ho avuto da sfogliare i miei plugin eclipse dipendenti .. alla ricerca di
ActionSets
package ch.post.pf.gui.prototyp.sesam.pstonline;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveListener;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
public class ActionWiper implements IStartup, IPerspectiveListener {
private static final String[] ACTIONS_2_WIPE = new String[] {
"org.eclipse.search.searchActionSet",
"org.eclipse.ui.edit.text.actionSet.presentation",
"org.eclipse.ui.edit.text.actionSet.openExternalFile",
"org.eclipse.ui.edit.text.actionSet.annotationNavigation",
"org.eclipse.ui.edit.text.actionSet.navigation",
"org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo",
"org.eclipse.update.ui.softwareUpdates" };
public void earlyStartup() {
IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
.getWorkbenchWindows();
for (int i = 0; i < windows.length; i++) {
IWorkbenchPage page = windows[i].getActivePage();
if (page != null) {
wipeActions(page);
}
windows[i].addPerspectiveListener(this);
}
}
private void wipeActions(IWorkbenchPage page) {
for (int i = 0; i < ACTIONS_2_WIPE.length; i++) {
wipeAction(page, ACTIONS_2_WIPE[i]);
}
}
private void wipeAction(final IWorkbenchPage page, final String actionsetId) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
page.hideActionSet(actionsetId);
}
});
}
public void perspectiveActivated(IWorkbenchPage page,
IPerspectiveDescriptor perspective) {
wipeActions(page);
}
public void perspectiveChanged(IWorkbenchPage page,
IPerspectiveDescriptor perspective, String changeId) {
}
}
e rimuovere le preferenze:
Con la
PreferenceManager
ho avuto anche eliminare le preferenze indesiderati .. :)
Se lePREFERENCES_2_WIPE
stringhe devono essere gli ID delle principali categorie che si desidera ottenere buttare via. Come il "org.eclipse.ui.preferencePages.Workbench" -> si presenta come General
PreferenceManager pm = PlatformUI.getWorkbench().getPreferenceManager();
for (int i = 0; i < PREFERENCES_2_WIPE.length; i++) {
pm.remove(PREFERENCES_2_WIPE[i]);
}
Per me questo ha funzionato (spero che vi aiuta):
<extension
point="org.eclipse.ui.activities">
<activity
id="someid.remove"
name="RemoveSearchMenu">
<enabledWhen>
<with
variable="activePartId">
<equals
value="someidr.RemoveSearchMenu1">
</equals>
</with></enabledWhen>
</activity>
<activityPatternBinding
activityId="someid.remove"
pattern="org.eclipse.search.*">
</activityPatternBinding>
Grazie mille. È risultato che tutto quello che dovevo fare era selezionare i "plug-in richiesti" nella mia scheda plug-in delle configurazioni di esecuzione. –