package org.safehaus.penrose.studio.federation.ldap; import org.apache.log4j.Logger; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.Separator; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.window.Window; import org.safehaus.penrose.studio.PenroseImage; import org.safehaus.penrose.studio.PenroseStudio; import org.safehaus.penrose.studio.dialog.ErrorDialog; import org.safehaus.penrose.studio.action.RefreshAction; import org.safehaus.penrose.studio.server.Server; import org.safehaus.penrose.federation.LDAPRepositoryClient; import org.safehaus.penrose.federation.*; import org.safehaus.penrose.studio.federation.ldap.editor.LDAPEditor; import org.safehaus.penrose.studio.federation.ldap.editor.LDAPEditorInput; import org.safehaus.penrose.studio.federation.ldap.repository.LDAPRepositoryNode; import org.safehaus.penrose.studio.federation.ldap.wizard.AddLDAPRepositoryWizard; import org.safehaus.penrose.studio.tree.Node; /** * @author Endi S. Dewata */ public class LDAPNode extends Node { Logger log = Logger.getLogger(getClass()); Server server; FederationClient federationClient; public LDAPNode(String name, Node parent) throws Exception { super(name, PenroseStudio.getImage(PenroseImage.FOLDER), null, parent); } public void init() throws Exception { update(); } public void update() throws Exception { log.debug("LDAP repositories:"); for (FederationRepositoryConfig repositoryConfig : federationClient.getRepositories("LDAP")) { String repositoryName = repositoryConfig.getName(); log.debug(" - "+repositoryName); LDAPRepositoryClient ldapFederationClient = new LDAPRepositoryClient(federationClient, repositoryName); LDAPRepositoryNode node = new LDAPRepositoryNode(repositoryConfig.getName(), this); node.setServer(server); node.setFederationClient(federationClient); node.setLdapFederationClient(ldapFederationClient); node.setRepositoryConfig(repositoryConfig); node.init(); addChild(node); } } public void refresh() throws Exception { removeChildren(); update(); } 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); } } }); manager.add(new Action("New LDAP Repository...") { public void run() { try { addLDAPRepository(); } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); } } }); manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); manager.add(new RefreshAction(this)); } public void open() throws Exception { LDAPEditorInput ei = new LDAPEditorInput(); ei.setServer(server); ei.setFederationClient(federationClient); IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IWorkbenchPage page = window.getActivePage(); page.openEditor(ei, LDAPEditor.class.getName()); } public void addLDAPRepository() throws Exception { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); AddLDAPRepositoryWizard wizard = new AddLDAPRepositoryWizard(); wizard.setServer(server); WizardDialog dialog = new WizardDialog(window.getShell(), wizard); dialog.setPageSize(600, 300); int rc = dialog.open(); if (rc == Window.CANCEL) return; FederationRepositoryConfig repository = wizard.getRepository(); federationClient.addRepository(repository); federationClient.store(); } public Server getServer() { return server; } public void setServer(Server server) { this.server = server; } public FederationClient getFederationClient() { return federationClient; } public void setFederationClient(FederationClient federationClient) { this.federationClient = federationClient; } }