package org.safehaus.penrose.studio.federation.ldap.linking;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.safehaus.penrose.federation.LDAPRepositoryClient;
import org.safehaus.penrose.federation.FederationRepositoryConfig;
import org.safehaus.penrose.federation.FederationClient;
import org.safehaus.penrose.studio.PenroseImage;
import org.safehaus.penrose.studio.PenroseStudio;
import org.safehaus.penrose.studio.dialog.ErrorDialog;
import org.safehaus.penrose.studio.server.Server;
import org.safehaus.penrose.studio.federation.linking.editor.IdentityLinkingEditor;
import org.safehaus.penrose.studio.federation.linking.editor.IdentityLinkingEditorInput;
import org.safehaus.penrose.studio.tree.Node;
/**
* @author Endi S. Dewata
*/
public class LDAPLinkingNode extends Node {
Server server;
LDAPRepositoryClient ldapFederationClient;
FederationRepositoryConfig repositoryConfig;
public LDAPLinkingNode(String name, Node parent) {
super(name, PenroseStudio.getImage(PenroseImage.OBJECT), null, parent);
}
public void showMenu(IMenuManager manager) throws Exception {
manager.add(new Action("Open") {
public void run() {
try {
open();
} catch (Exception e) {
log.error(e.getMessage(), e);
ErrorDialog.open(e);
}
}
});
}
public void open() throws Exception {
FederationClient federationClient = ldapFederationClient.getFederationClient();
IdentityLinkingEditorInput ei = new IdentityLinkingEditorInput();
ei.setServer(server);
ei.setRepository(repositoryConfig);
ei.setSourcePartition(federationClient.getFederationDomain()+"_"+ repositoryConfig.getName());
ei.setTargetPartition(federationClient.getFederationDomain());
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IWorkbenchPage page = window.getActivePage();
page.openEditor(ei, IdentityLinkingEditor.class.getName());
}
public LDAPRepositoryClient getLdapFederationClient() {
return ldapFederationClient;
}
public void setLdapFederationClient(LDAPRepositoryClient ldapFederationClient) {
this.ldapFederationClient = ldapFederationClient;
}
public Server getServer() {
return server;
}
public void setServer(Server server) {
this.server = server;
}
public FederationRepositoryConfig getRepositoryConfig() {
return repositoryConfig;
}
public void setRepositoryConfig(FederationRepositoryConfig repositoryConfig) {
this.repositoryConfig = repositoryConfig;
}
}