/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.activiti.explorer.ui.profile; import java.util.HashMap; import java.util.Map; import org.activiti.explorer.ExplorerApp; import org.activiti.explorer.I18nManager; import org.activiti.explorer.Messages; import org.activiti.explorer.ui.Images; import org.activiti.explorer.ui.custom.TabbedSelectionWindow; import org.activiti.explorer.ui.event.SubmitEvent; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.CheckBox; import com.vaadin.ui.Embedded; import com.vaadin.ui.Form; import com.vaadin.ui.PasswordField; import com.vaadin.ui.TextField; /** * @author Joram Barrez */ public class AccountSelectionPopup extends TabbedSelectionWindow { private static final long serialVersionUID = 1L; protected I18nManager i18nManager; protected Form imapForm; protected ClickListener imapClickListener; protected Form alfrescoForm; protected ClickListener alfrescoClickListener; public AccountSelectionPopup(String title) { super(title); // builds up UI setWidth(600, UNITS_PIXELS); setHeight(400, UNITS_PIXELS); this.i18nManager = ExplorerApp.get().getI18nManager(); // TODO: components are eager loaded. For performance they should be lazy loaded (eg through factory) // Imap initImapComponent(); String imap = i18nManager.getMessage(Messages.PROFILE_ACCOUNT_IMAP); addSelectionItem(new Embedded(null, Images.IMAP), imap, imapForm, imapClickListener); // Alfresco initAlfrescoComponent(); addSelectionItem(new Embedded(null, Images.ALFRESCO), i18nManager.getMessage(Messages.PROFILE_ACCOUNT_ALFRESCO), alfrescoForm, alfrescoClickListener); selectionTable.select(imap); } protected void initImapComponent() { imapForm = new Form(); imapForm.setDescription(i18nManager.getMessage(Messages.IMAP_DESCRIPTION)); final TextField imapServer = new TextField(i18nManager.getMessage(Messages.IMAP_SERVER)); imapForm.getLayout().addComponent(imapServer); final TextField imapPort = new TextField(i18nManager.getMessage(Messages.IMAP_PORT)); imapPort.setWidth(30, UNITS_PIXELS); imapPort.setValue(143); // Default imap port (non-ssl) imapForm.getLayout().addComponent(imapPort); final CheckBox useSSL = new CheckBox(i18nManager.getMessage(Messages.IMAP_SSL)); useSSL.setValue(false); useSSL.setImmediate(true); imapForm.getLayout().addComponent(useSSL); useSSL.addListener(new ValueChangeListener() { public void valueChange(ValueChangeEvent event) { imapPort.setValue( ((Boolean) useSSL.getValue()) ? 993 : 143); } }); final TextField imapUserName = new TextField(i18nManager.getMessage(Messages.IMAP_USERNAME)); imapForm.getLayout().addComponent(imapUserName); final PasswordField imapPassword = new PasswordField(i18nManager.getMessage(Messages.IMAP_PASSWORD)); imapForm.getLayout().addComponent(imapPassword); // Matching listener imapClickListener = new ClickListener() { public void buttonClick(ClickEvent event) { Map<String, Object> accountDetails = createAccountDetails( "imap", imapUserName.getValue().toString(), imapPassword.getValue().toString(), "server", imapServer.getValue().toString(), "port", imapPort.getValue().toString(), "ssl", imapPort.getValue().toString() ); fireEvent(new SubmitEvent(AccountSelectionPopup.this, SubmitEvent.SUBMITTED, accountDetails)); } }; } protected void initAlfrescoComponent() { alfrescoForm = new Form(); alfrescoForm.setDescription(i18nManager.getMessage(Messages.ALFRESCO_DESCRIPTION)); final TextField alfrescoServer = new TextField(i18nManager.getMessage(Messages.ALFRESCO_SERVER)); alfrescoForm.getLayout().addComponent(alfrescoServer); final TextField alfrescoUserName = new TextField(i18nManager.getMessage(Messages.ALFRESCO_USERNAME)); alfrescoForm.getLayout().addComponent(alfrescoUserName); final PasswordField alfrescoPassword = new PasswordField(i18nManager.getMessage(Messages.ALFRESCO_PASSWORD)); alfrescoForm.getLayout().addComponent(alfrescoPassword); // Matching listener alfrescoClickListener = new ClickListener() { public void buttonClick(ClickEvent event) { Map<String, Object> accountDetails = createAccountDetails( "alfresco", alfrescoUserName.getValue().toString(), alfrescoPassword.getValue().toString(), "server", alfrescoServer.getValue().toString() ); fireEvent(new SubmitEvent(AccountSelectionPopup.this, SubmitEvent.SUBMITTED, accountDetails)); } }; } protected Map<String, Object> createAccountDetails(String acountName, String userName, String password, String ... additionalDetails) { Map<String, Object> accountDetails = new HashMap<String, Object>(); accountDetails.put("accountName", acountName); accountDetails.put("userName", userName); accountDetails.put("password", password); if (additionalDetails != null && additionalDetails.length > 0) { Map<String, String> additional = new HashMap<String, String>(); for (int i=0; i<additionalDetails.length; i+=2) { additional.put(additionalDetails[i], additionalDetails[i+1]); } accountDetails.put("additional", additional); } return accountDetails; } }