Hallo,
Gibt es ne Möglichkeit programmiertechnisch abzufragen ob ein Plugin das "optional" ist, installiert wurde? Und wenn ja, Daten davon auslesen?
Bsp:
PluginA kann bestimmte Regeln erstellen und bearbeiten.
PluginB hat unter anderem einen Satz Regeln gespeichert.
ist B nun nicht installiert, soll man ganz normal seine Regeln erstellen können
ist B aber installiert, soll man die dort gespeicherten Regeln verwenden können.
Ich habe bereits mal 2 Plugins gebaut, "Email" soll von "hello" einfach den BooleanWert "doesExist=true" abfragen
Plugin EMAIL:
Manifest von Email:
Plugin hello:
Manifest hello:
Eclipse zeigt mir keine Fehler an, bis zur Compilierung...
Gibt es ne Möglichkeit programmiertechnisch abzufragen ob ein Plugin das "optional" ist, installiert wurde? Und wenn ja, Daten davon auslesen?
Bsp:
PluginA kann bestimmte Regeln erstellen und bearbeiten.
PluginB hat unter anderem einen Satz Regeln gespeichert.
ist B nun nicht installiert, soll man ganz normal seine Regeln erstellen können
ist B aber installiert, soll man die dort gespeicherten Regeln verwenden können.
Ich habe bereits mal 2 Plugins gebaut, "Email" soll von "hello" einfach den BooleanWert "doesExist=true" abfragen
Plugin EMAIL:
package email;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.IWorkbenchWindow;
import hello.actions.SampleAction;
public class MessagePopupAction extends Action {
private final IWorkbenchWindow window;
public String info = "iniString";
MessagePopupAction(String text, IWorkbenchWindow window) {
super(text);
this.window = window;
// The id is used to refer to the action in a menu or toolbar
setId(ICommandIds.CMD_OPEN_MESSAGE);
// Associate the action with a pre-defined command, to allow key bindings.
setActionDefinitionId(ICommandIds.CMD_OPEN_MESSAGE);
setImageDescriptor(email.Activator.getImageDescriptor("/icons/sample3.gif"));
if (SampleAction.isDoesExist()) {
info = "Plugin da!";
} else {
info = "kein Plugin";
}
}
public void run() {
// check if Plug-in is installed
MessageDialog.openInformation(window.getShell(), "Status", info);
}
}
Manifest von Email:
Manifest-Version: 1.0
Eclipse-BuddyPolicy: registered
Bundle-ManifestVersion: 2
Bundle-Name: Email Plug-in
Bundle-SymbolicName: Email;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: email.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Eclipse-LazyStart: true
Import-Package: hello.actions;resolution:=optional
Plugin hello:
package hello.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.jface.dialogs.MessageDialog;
public class SampleAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
public static boolean doesExist = true;
/**
* The constructor.
*/
public SampleAction() {
}
public void run(IAction action) {
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
this.window = window;
}
public static boolean isDoesExist() {
return doesExist;
}
}
Manifest hello:
Manifest-Version: 1.0
Eclipse-RegisterBuddy: Email
Bundle-ManifestVersion: 2
Bundle-Name: Hello Plug-in
Bundle-SymbolicName: hello; singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: hello.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Eclipse-LazyStart: true
Export-Package: hello.actions, hello
Eclipse zeigt mir keine Fehler an, bis zur Compilierung...
Exception in thread "Thread-3" java.lang.NoClassDefFoundError: hello.actions.SampleAction
at email.MessagePopupAction.<init>(MessagePopupAction.java:23)
at email.ApplicationActionBarAdvisor.makeActions(ApplicationActionBarAdvisor.java:60)
at org.eclipse.ui.application.ActionBarAdvisor.fillActionBars(ActionBarAdvisor.java:147)
at org.eclipse.ui.internal.WorkbenchWindow.fillActionBars(WorkbenchWindow.java:3294)
at org.eclipse.ui.internal.WorkbenchWindow.<init>(WorkbenchWindow.java:380)
Zuletzt bearbeitet: