package org.safehaus.penrose.studio.federation.nis.domain; import org.safehaus.penrose.studio.tree.Node; import org.safehaus.penrose.studio.*; import org.safehaus.penrose.studio.dialog.ErrorDialog; import org.safehaus.penrose.studio.server.Server; import org.safehaus.penrose.studio.federation.nis.ownership.NISOwnershipNode; import org.safehaus.penrose.studio.federation.nis.linking.NISLinkingNode; import org.safehaus.penrose.studio.federation.nis.synchronization.NISSynchronizationNode; import org.safehaus.penrose.federation.NISRepositoryClient; import org.safehaus.penrose.studio.federation.nis.wizard.EditNISDomainWizard; import org.safehaus.penrose.federation.FederationRepositoryConfig; import org.safehaus.penrose.federation.FederationClient; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Action; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.window.Window; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.IWorkbenchPage; /** * @author Endi S. Dewata */ public class NISDomainNode extends Node { Server server; FederationClient federationClient; NISRepositoryClient nisFederationClient; FederationRepositoryConfig repositoryConfig; public NISDomainNode(String name, Node parent) { super(name, PenroseStudio.getImage(PenroseImage.FOLDER), null, parent); } public void init() throws Exception { NISSynchronizationNode synchronizationNode = new NISSynchronizationNode( "Synchronization", this ); synchronizationNode.setServer(server); synchronizationNode.setNisFederationClient(nisFederationClient); synchronizationNode.setRepositoryConfig(repositoryConfig); addChild(synchronizationNode); NISLinkingNode linkingNode = new NISLinkingNode( "Identity Linking", this ); linkingNode.setServer(server); linkingNode.setNisFederationClient(nisFederationClient); linkingNode.setRepositoryConfig(repositoryConfig); addChild(linkingNode); NISOwnershipNode ownershipNode = new NISOwnershipNode( "Ownership Alignment", this ); ownershipNode.setServer(server); ownershipNode.setNisFederationClient(nisFederationClient); ownershipNode.setRepositoryConfig(repositoryConfig); ownershipNode.init(); addChild(ownershipNode); } 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("Edit") { public void run() { try { edit(); } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); } } }); } public void open() throws Exception { NISDomainEditorInput ei = new NISDomainEditorInput(); ei.setServer(server); ei.setFederationClient(federationClient); ei.setNisFederationClient(nisFederationClient); ei.setRepositoryConfig(repositoryConfig); IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); IWorkbenchPage page = window.getActivePage(); page.openEditor(ei, NISDomainEditor.class.getName()); } public void edit() throws Exception { EditNISDomainWizard wizard = new EditNISDomainWizard(repositoryConfig); IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); WizardDialog dialog = new WizardDialog(window.getShell(), wizard); dialog.setPageSize(600, 300); int rc = dialog.open(); if (rc == Window.CANCEL) return; federationClient.updateRepository(repositoryConfig); federationClient.store(); } public FederationRepositoryConfig getRepositoryConfig() { return repositoryConfig; } public void setRepositoryConfig(FederationRepositoryConfig repositoryConfig) { this.repositoryConfig = repositoryConfig; } public Server getServer() { return server; } public void setServer(Server server) { this.server = server; } public NISRepositoryClient getNisFederationClient() { return nisFederationClient; } public void setNisFederationClient(NISRepositoryClient nisFederationClient) { this.nisFederationClient = nisFederationClient; } public FederationClient getFederationClient() { return federationClient; } public void setFederationClient(FederationClient federationClient) { this.federationClient = federationClient; } }