New Plug-in Project
Project Name: test.contributing
Add Dependencies
// -- META-INF/MANIFEST.MF --
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Contributing
Bundle-SymbolicName: test.contributing;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: test.contributing.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.ui.ide,
org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Add Extensions
// -- plugin.xml --
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension point="org.eclipse.ui.startup">
<startup class="test.contributing.Startup">
</startup>
</extension>
</plugin>
Add Java Class
// -- /src/test/contributing/Startup.java --
package test.contributing;
import java.io.InputStream;
import org.eclipse.core.internal.registry.ExtensionRegistry;
import org.eclipse.core.runtime.ContributorFactoryOSGi;
import org.eclipse.core.runtime.IContributor;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.RegistryFactory;
import org.eclipse.ui.IStartup;
import org.osgi.framework.Bundle;
public class Startup implements IStartup {
@Override public void earlyStartup() {
try {
// use Eclipse Dynamic Extension API
IExtensionRegistry reg = RegistryFactory.getRegistry();
Object key = ((ExtensionRegistry) reg).getTemporaryUserToken();
Bundle bundle = Activator.getDefault().getBundle();
IContributor contributor = ContributorFactoryOSGi
.createContributor(bundle);
InputStream is = Startup.class.getResourceAsStream("dynamically.xml");
try {
reg.addContribution(is, contributor, false, null, null, key);
} finally {
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Add dynamic extension file
// -- src/test/contributing/dynamically.xml --
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.actionSets"
id="test.contributing.dynamically.actionSets">
<actionSet
id="test.contributing.dynamically.actionSet"
label="Dynamically"
visible="true">
<menu
id="test.contributing.dynamically.menu"
label="Dynamically">
<separator
name="test.contributing.dynamically.separator">
</separator>
</menu>
<action
id="test.contributing.dynamically.action"
label="Open Local File"
class="org.eclipse.ui.internal.ide.actions.OpenLocalFileAction"
toolbarPath="test.contributing.dynamically.separator">
</action>
</actionSet>
</extension>
</plugin>
沒有留言:
張貼留言