package org.safehaus.penrose.studio.federation.ldap.repository; import org.apache.log4j.Logger; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormPage; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.safehaus.penrose.studio.dialog.ErrorDialog; import org.safehaus.penrose.federation.LDAPRepositoryClient; import org.safehaus.penrose.federation.LDAPRepository; import org.safehaus.penrose.federation.FederationRepositoryConfig; import org.safehaus.penrose.federation.FederationClient; import org.safehaus.penrose.studio.federation.ldap.wizard.EditLDAPRepositoryWizard; import org.safehaus.penrose.studio.server.Server; /** * @author Endi S. Dewata */ public class LDAPRepositorySettingsPage extends FormPage { Logger log = Logger.getLogger(getClass()); FormToolkit toolkit; Label urlText; Label suffixText; Label bindDnText; Label bindPasswordText; Server server; FederationClient federationClient; LDAPRepositoryClient ldapFederationClient; FederationRepositoryConfig repositoryConfig; public LDAPRepositorySettingsPage(FormEditor editor) { super(editor, "SETTINGS", " Settings "); } public void createFormContent(IManagedForm managedForm) { toolkit = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); form.setText("Settings"); Composite body = form.getBody(); body.setLayout(new GridLayout()); Section settingsSection = toolkit.createSection(body, Section.TITLE_BAR | Section.EXPANDED); settingsSection.setText("LDAP Repository"); settingsSection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Control settingsControl = createSettingsControl(settingsSection); settingsSection.setClient(settingsControl); refresh(); } public Composite createSettingsControl(Composite parent) { Composite composite = toolkit.createComposite(parent); GridLayout layout = new GridLayout(2, false); layout.marginWidth = 0; composite.setLayout(layout); Composite leftPanel = createSettingsLeftPanel(composite); leftPanel.setLayoutData(new GridData(GridData.FILL_BOTH)); Composite rightPanel = createSettingsRightPanel(composite); rightPanel.setLayoutData(new GridData(GridData.FILL_VERTICAL)); return composite; } public Composite createSettingsLeftPanel(Composite parent) { Composite composite = toolkit.createComposite(parent); GridLayout layout = new GridLayout(2, false); layout.marginWidth = 0; composite.setLayout(layout); Label urlLabel = toolkit.createLabel(composite, "Servers:"); urlLabel.setLayoutData(new GridData()); GridData gd = new GridData(); gd.widthHint = 100; urlLabel.setLayoutData(gd); urlText = toolkit.createLabel(composite, ""); urlText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label suffixLabel = toolkit.createLabel(composite, "Suffix:"); suffixLabel.setLayoutData(new GridData()); suffixText = toolkit.createLabel(composite, ""); suffixText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label bindDnLabel = toolkit.createLabel(composite, "Bind DN:"); bindDnLabel.setLayoutData(new GridData()); bindDnText = toolkit.createLabel(composite, ""); bindDnText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label bindPasswordLabel = toolkit.createLabel(composite, "Password:"); bindPasswordLabel.setLayoutData(new GridData()); bindPasswordText = toolkit.createLabel(composite, ""); bindPasswordText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); return composite; } public Composite createSettingsRightPanel(Composite parent) { Composite composite = toolkit.createComposite(parent); composite.setLayout(new GridLayout()); Button editButton = new Button(composite, SWT.PUSH); editButton.setText("Edit"); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.widthHint = 100; editButton.setLayoutData(gd); editButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { try { EditLDAPRepositoryWizard wizard = new EditLDAPRepositoryWizard(repositoryConfig); wizard.setServer(server); 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(); refresh(); } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); } } }); return composite; } public void refresh() { try { String url = repositoryConfig.getParameter(LDAPRepository.URL); urlText.setText(url == null ? "" : url); String suffix = repositoryConfig.getParameter(LDAPRepository.SUFFIX); suffixText.setText(suffix == null ? "" : suffix); String bindDn = repositoryConfig.getParameter(LDAPRepository.USER); bindDnText.setText(bindDn == null ? "" : bindDn); String bindPassword = repositoryConfig.getParameter(LDAPRepository.PASSWORD); bindPasswordText.setText(bindPassword == null ? "" : "*****"); } catch (Exception e) { log.error(e.getMessage(), e); ErrorDialog.open(e); } } public FederationClient getFederationClient() { return federationClient; } public void setFederationClient(FederationClient federationClient) { this.federationClient = federationClient; } public Server getServer() { return server; } public void setServer(Server server) { this.server = server; } public LDAPRepositoryClient getLdapFederationClient() { return ldapFederationClient; } public void setLdapFederationClient(LDAPRepositoryClient ldapFederationClient) { this.ldapFederationClient = ldapFederationClient; } public FederationRepositoryConfig getRepositoryConfig() { return repositoryConfig; } public void setRepositoryConfig(FederationRepositoryConfig repositoryConfig) { this.repositoryConfig = repositoryConfig; } }