package com.idega.block.mailinglist.presentation; import java.io.IOException; import java.sql.SQLException; import javax.mail.Folder; import javax.mail.MessagingException; import com.idega.block.mailinglist.business.EmailServiceHandler; import com.idega.block.mailinglist.business.EmailServices; import com.idega.block.mailinglist.business.MailingListBusiness; import com.idega.block.mailinglist.data.EmailLetterData; import com.idega.block.mailinglist.data.Mailinglist; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.presentation.Table; /** * Title: idegaWeb Classes * Description: * Copyright: Copyright (c) 2001 * Company: idega * @author <a href="bjarni@idega.is">Bjarni Viljhalmsson</a> * @version 1.0 */ public class EmailProgramWholePresentation extends Block { Table wholeTable = new Table(2,2); private static int currentOpenWindow; private static int currentOpenLetterID; private boolean usesProperties = false; private int chosenProperty = 0; public EmailProgramWholePresentation() { // System.err.println("!!! EmailProgramWholePresentation is built"); } public void eventController(IWContext modinfo) throws SQLException{ //Maybe it�s better to do an for-loop here and use the numbers to do a switch instead of if-sentances //MailingListBusiness.addInboxData("rend mig i roven", "blablaablabal", "bjv@stones.com", "gimmi@mofo.com", "addsfaafCC"); //Edit chosen mailinglist if ((modinfo.isParameterSet(EmailProgramSideTable.mailinglistSettingsButtonName)) /*|| (modinfo.isParameterSet(submitAndRemoveParameter))*/){ System.err.println("Edit Mailinglist"); currentOpenWindow = 1; } //Your Email Settings else if (modinfo.isParameterSet(EmailProgramTopTable.settingsButtonName)){ System.err.println("settingsButtonName"); currentOpenWindow = 2; } //New Mailinglist else if (modinfo.isParameterSet(EmailProgramTopTable.newMailinglistButtonName)){ System.err.println("newMailinglistButtonName"); currentOpenWindow = 3; } //Some setting applied. else if (modinfo.isParameterSet(AccountSettingsTable.OKButtonName)){ //System.err.println("modinfo.getParameter(mailinglistDropDownMenuName) = "+modinfo.getParameter(mailinglistDropDownMenuName)); //edit chosen mailinglist switch (currentOpenWindow) { //this mailinglist case 1: MailingListBusiness.updateMailinglistBusiness(modinfo, modinfo.getParameter(AccountSettingsTable.nameInputName), modinfo.getParameter(AccountSettingsTable.emailInputName), modinfo.getParameter(AccountSettingsTable.pop3HostInputName)); break; //this users settings case 2: break; //a new mailinglist case 3: MailingListBusiness.addMailinglistBusiness(modinfo, modinfo.getParameter(AccountSettingsTable.nameInputName), modinfo.getParameter(AccountSettingsTable.emailInputName), modinfo.getParameter(AccountSettingsTable.pop3HostInputName)); break; } } //View Drafts else if (modinfo.isParameterSet(EmailProgramSideTable.draftsButtonName)){ currentOpenWindow = 4; } //View Sent else if (modinfo.isParameterSet(EmailProgramSideTable.sentButtonName)){ currentOpenWindow = 5; } //View Inbox else if (modinfo.isParameterSet(EmailProgramSideTable.inboxButtonName)){ currentOpenWindow = 6; } //Delete Drafts/Inbox/Sent else if (modinfo.isParameterSet(EmailProgramListLetterTable.deleteButtonName)){ String[] checkedBoxes; checkedBoxes = modinfo.getParameterValues(EmailProgramListLetterTable.checkBoxName); if (currentOpenWindow == 6) { try { EmailServiceHandler.removeMessages(modinfo, checkedBoxes); } catch (MessagingException ex) { } } else {MailingListBusiness.removeEmailLetterDataBusiness(modinfo, checkedBoxes);} } //Start empty new letter else if (modinfo.isParameterSet(EmailProgramSideTable.newLetterButtonName)){ currentOpenWindow = 7; currentOpenLetterID = -1; } //Start empty new letter on mailinglist else if (modinfo.isParameterSet(EmailProgramSideTable.newLetterOnMailinglistButtonName)){ currentOpenWindow = 8; currentOpenLetterID = -1; } //View letters in Inbox else if (modinfo.isParameterSet(EmailProgramListLetterTable.viewInboxLetterLinkParameterName)){ System.err.println("modinfo.getParameter(EmailProgramListLetterTable.viewInboxLetterLinkParameterName) = "+modinfo.getParameter(EmailProgramListLetterTable.viewInboxLetterLinkParameterName) ); currentOpenLetterID = Integer.parseInt(modinfo.getParameter(EmailProgramListLetterTable.viewInboxLetterLinkParameterName)); currentOpenWindow = 9; } //View letters in Sent/Drafts else if (modinfo.isParameterSet(EmailProgramListLetterTable.viewMyLetterLinkParameterName)){ currentOpenLetterID = Integer.parseInt(modinfo.getParameter(EmailProgramListLetterTable.viewMyLetterLinkParameterName)); currentOpenWindow = 10; } //Send letter else if (modinfo.isParameterSet(EmailProgramViewTable.sendLetterButtonName)){ // System.err.println(" modinfo.getParameter(subjectInputName) = "+ modinfo.getParameter(subjectInputName) ); // System.err.println(" modinfo.getParameter(letterTextAreaName) = "+ modinfo.getParameter(letterTextAreaName) ); // System.err.println(" Boolean.TRUE = "+ Boolean.TRUE); // System.err.println(" modinfo.getParameter(adressInputName) = "+ modinfo.getParameter(adressInputName) ); currentOpenLetterID = MailingListBusiness.addEmailLetterDataBusiness(modinfo); EmailLetterData letter = ((com.idega.block.mailinglist.data.EmailLetterDataHome)com.idega.data.IDOLookup.getHomeLegacy(EmailLetterData.class)).findByPrimaryKeyLegacy(currentOpenLetterID); try { EmailServices.sendServices( letter); } catch (Exception ex) { } currentOpenWindow = 10; } //Save letter else if (modinfo.isParameterSet(EmailProgramViewTable.saveLetterButtonName)){ if (currentOpenLetterID != -1) { EmailLetterData letter = ((com.idega.block.mailinglist.data.EmailLetterDataHome)com.idega.data.IDOLookup.getHomeLegacy(EmailLetterData.class)).findByPrimaryKeyLegacy(currentOpenLetterID); if (letter.getHasSent()) { currentOpenLetterID = -1; } System.out.println("!!!! SAVE letter.getHasSent() = " +letter.getHasSent()+" 1 STIG"); } currentOpenLetterID = MailingListBusiness.addEmailLetterDataBusiness( modinfo.getParameter(EmailProgramViewTable.subjectInputName), modinfo.getParameter(EmailProgramViewTable.letterTextAreaName), Boolean.FALSE , modinfo.getParameter(EmailProgramViewTable.addressInputName), "a", //modinfo.getParameter(adressFromInputName), modinfo.getParameter(EmailProgramViewTable.CCInputName), currentOpenLetterID); currentOpenWindow = 10; } //Reply letter else if (modinfo.isParameterSet(EmailProgramViewTable.replyLetterButtonName)){ currentOpenWindow = 11; } //Forward letter else if (modinfo.isParameterSet(EmailProgramViewTable.forwardLetterButtonName)){ currentOpenWindow = 12; } /* else if (first==0){ currentOpenWindow=13; first=1; } */ //System.out.println("OKButtonName ="+ modinfo.isParameterSet(OKButtonName)); System.out.println("!!!!!!!CURRENT OPEN WINDOW = "+ String.valueOf(currentOpenWindow)); /*System.err.println("modinfo.getParameter(EmailProgramListLetterTable.viewInboxLetterLinkParameterName) = " +modinfo.getParameter(EmailProgramListLetterTable.viewInboxLetterLinkParameterName));*/ windowChooser(modinfo, currentOpenWindow); } //Why do I need modinfo in case 1!!!!??? public void windowChooser(IWContext modinfo, int windowChooser) throws SQLException{ switch (windowChooser) { case 1:{ MailinglistSettingsTable settingsTable = new MailinglistSettingsTable(); String chosenMailinglistId; chosenMailinglistId = modinfo.getParameter(EmailProgramSideTable.mailinglistDropDownMenuName); if (chosenMailinglistId != null) { Mailinglist chosenMailinglist = ((com.idega.block.mailinglist.data.MailinglistHome)com.idega.data.IDOLookup.getHomeLegacy(Mailinglist.class)).findByPrimaryKeyLegacy(Integer.parseInt(chosenMailinglistId)); settingsTable.setMailingListSettings(chosenMailinglist); } add(settingsTable); } break; case 2:{ UserSettingsTable settingsTable = new UserSettingsTable(); settingsTable.setUser(modinfo); add(settingsTable); } break; case 3:{ MailinglistSettingsTable settingsTable = new MailinglistSettingsTable(); add(settingsTable); } break; case 4:{ EmailProgramListLetterTable emailProgramListLetterTable = new EmailProgramListLetterTable(); emailProgramListLetterTable.setShowDrafts(modinfo); add(emailProgramListLetterTable); } break; case 5:{ EmailProgramListLetterTable emailProgramListLetterTable = new EmailProgramListLetterTable(); emailProgramListLetterTable.setShowSentLetters(modinfo); add(emailProgramListLetterTable); } break; case 6:{ EmailProgramListLetterTable emailProgramListLetterTable = new EmailProgramListLetterTable(); try { emailProgramListLetterTable.setShowInboxLetters(modinfo); } catch (MessagingException ex) {} add(emailProgramListLetterTable); } break; case 7:{ EmailProgramViewTable emailProgramViewTable = new EmailProgramViewTable(); emailProgramViewTable.setClearNewLetter(); //even though the methood is empty this could simplify possible changes add(emailProgramViewTable); } break; case 8:{ EmailProgramViewTable emailProgramViewTable = new EmailProgramViewTable(); emailProgramViewTable.setNewLetterOnChosenEmails(modinfo); add(emailProgramViewTable); } break; case 9:{ EmailProgramViewTable emailProgramViewTable = new EmailProgramViewTable(); try { Folder inbox = EmailServiceHandler.getInbox(modinfo); try {emailProgramViewTable.setViewInboxLetter(inbox.getMessage(currentOpenLetterID));} catch (IOException ex) {} } catch (MessagingException ex) {} add(emailProgramViewTable); } break; case 10:{ EmailProgramViewTable emailProgramViewTable = new EmailProgramViewTable(); //Fails maybe because of deletion of the linkParameter??? EmailLetterData letter = ((com.idega.block.mailinglist.data.EmailLetterDataHome)com.idega.data.IDOLookup.getHomeLegacy(EmailLetterData.class)).findByPrimaryKeyLegacy(currentOpenLetterID); emailProgramViewTable.setViewDraftLetter(letter); add(emailProgramViewTable); } break; case 11:{ EmailProgramViewTable emailProgramViewTable = new EmailProgramViewTable(); /** @todo FORWARD*/ //InboxData letter = new InboxData(currentOpenLetterID); //emailProgramViewTable.setForwardLetterView(letter); currentOpenWindow = 10; add(emailProgramViewTable); } break; case 12:{ EmailProgramViewTable emailProgramViewTable = new EmailProgramViewTable(); /** @todo REPLY*/ //InboxData letter = new InboxData(currentOpenLetterID); //emailProgramViewTable.setReplyLetterView(letter); currentOpenWindow = 10; add(emailProgramViewTable); } break; case 13:{ EmailProgramStartScreen emailProgramStartScreen = new EmailProgramStartScreen(); currentOpenWindow = 13; add(emailProgramStartScreen); } break; } } public void setProperty(String propertyName, String[] propertyValues){ this.usesProperties = true; if (propertyName.equalsIgnoreCase("windowPart")) { if ((propertyValues.length == 1) && (propertyValues[0].equalsIgnoreCase("sideMenu"))) { this.chosenProperty = 1; } else if ((propertyValues.length == 1) && (propertyValues[0].equalsIgnoreCase("topMenu"))) { this.chosenProperty = 2; } else if ((propertyValues.length == 1) && (propertyValues[0].equalsIgnoreCase("viewWindow"))) { this.chosenProperty = 3; } } } public void setProperty(String propertyName, String propertyValue){ this.usesProperties = true; // System.err.println("!!! propertyName = "+propertyName); if (propertyName.equalsIgnoreCase("windowPart")) { if (propertyValue.equalsIgnoreCase("sideMenu")) { this.chosenProperty = 1; } else if (propertyValue.equalsIgnoreCase("topMenu")) { this.chosenProperty = 2; } else if (propertyValue.equalsIgnoreCase("viewWindow")) { this.chosenProperty = 3; } } } public void setSideMenu(IWContext modinfo) throws SQLException{ EmailProgramSideTable sideTablePart = new EmailProgramSideTable(); sideTablePart.setSelectionBox(modinfo); sideTablePart.setShowNumberOfLetters(modinfo); add(sideTablePart); } public void setTopMenu(){ EmailProgramTopTable topTablePart = new EmailProgramTopTable(); add(topTablePart); } public void setViewWindow(IWContext modinfo) throws SQLException{ eventController(modinfo); } public void main(IWContext modinfo) throws SQLException{ if (this.usesProperties) { if (this.chosenProperty == 1) { setSideMenu(modinfo); } else if (this.chosenProperty == 2) { setTopMenu(); } else if (this.chosenProperty == 3) { setViewWindow(modinfo); } } else{ setSideMenu(modinfo); setViewWindow(modinfo); setTopMenu(); } } }