Aggiunta di elementi a una barra degli strumenti in modo dinamico

È possibile aggiungere dinamicamente controlli personalizzati, quali coolitem o coolbar alla barra degli strumenti principale e abilitarli o disabilitarli dinamicamente utilizzando l'API estensione dinamica Eclipse.

Prima di completare le operazioni di seguito, è necessario eseguire quelle definite in Completamento dei controlli personalizzati della barra degli strumenti principale in modo dinamico.
Per aggiungere dinamicamente elementi barra degli strumenti alla barra degli strumenti principale, procedere come segue:
  1. Chiamare il metodo addContribution dell'interfaccia org.eclipse.core.runtime.IExtensionRegistry fornita dall'API estensione dinamica Eclipse nel plugin org.eclipse.equinox.registry per aggiungere un'estensione in modo dinamico.
    Ad esempio, il codice di seguito aggiunge un controllo a discesa relativo ai caratteri personalizzati alla barra degli strumenti principale:
    public void addFontFaceDropdownControl() {
    StringBuffer sb = new StringBuffer();
    	sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    	sb.append("<plugin>");
    	sb.append("<extension point=\"com.ibm.rcp.platform.controlSets\"");
    	sb.append("    id=\"com.ibm.app.toolbar.controlsets\">");
    	sb.append("<controlSet ");
    	sb.append("    visible=\"true\"");
    	sb.append("    id=\"com.ibm.app.toolbar.controlset\">");
    	sb.append("<control");
    	sb.append("    id=\"sample.FontFaceDropdownControlContribution\"");
    	sb.append("    toolbarPath=\"ToolSetId/SampleToolGroup\"");
    	sb.append("    class=\"sample.FontFaceDropdownControlContribution\"/>");
    	sb.append("</controlSet>");
    	sb.append("</extension>");
    	sb.append("</plugin>");
    	try {
    addExtension(sb.toString());
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    	}
    }
    
    void addExtension(String xmlsrc) throws UnsupportedEncodingException {
    // use Eclipse Dynamic Extension API
    IExtensionRegistry reg = RegistryFactory.getRegistry();
    Object key = ((ExtensionRegistry)reg).getTemporaryUserToken();
    Bundle bundle = Activator.getDefault().getBundle();
    IContributor contributor = 
         ContributorFactoryOSGi.createContributor(bundle);
    ByteArrayInputStream is = 
         new ByteArrayInputStream(xmlsrc.getBytes("UTF-8"));
    reg.addContribution(is, contributor, false, null, null, key);
    }
    Nota: vedere il javadoc dell'API Eclipse per org.eclipse.core.runtime.IExtensionRegistry#addContribution per ulteriori informazioni sul metodo addContribution.
  2. Chiamare il metodo removeExtension dell'interfaccia org.eclipse.core.runtime.IExtensionRegistry per rimuovere il controllo personalizzato dalla barra degli strumenti.
    Ad esempio, i seguenti metodi rimuovono il controllo a discesa relativo ai caratteri personalizzati dalla barra degli strumenti:
    public void removeFontFaceDropdownControl()() {
    // specify extension point and extension id
    	removeExtension("com.ibm.rcp.platform.controlSets", 
        "com.ibm.app.toolbar.controlsets");
    }
    
    void removeExtension(String extensionPointId, String extensionId) {
    // use Eclipse Dynamic Extension API
    IExtensionRegistry reg = RegistryFactory.getRegistry();
    Object token = ((ExtensionRegistry)reg).getTemporaryUserToken();
    IExtension extension = 
          reg.getExtension(extensionPointId, extensionId);
    reg.removeExtension(extension, token);
    }
    Nota: vedere il javadoc dell'API Eclipse per org.eclipse.core.runtime.IExtensionRegistry#removeExtension per ulteriori informazioni sul metodo removeExtension.

Clausole di utilizzo |
(C) Copyright IBM Corporation 2004, 2006. Tutti i diritti riservati.
Questo centro informazioni è supportato dalla tecnologia Eclipse. ( http://www.eclipse.org )