/* * MultiPropertiesPanel.java * * Created on den 18 september 2001, 14:11 */ package ip1.u9; import javax.mail.internet.*; import javax.mail.*; import ip1.u7.b.*; import javax.swing.*; /**e-postredigerarens headerdel: hanterar avsändare, mottagare och ämesrad visuellt. * * @author Henrik Johansson, DS80 * @version ht2001 */ public class MultiPropertiesPanel extends javax.swing.JPanel implements ExtendedPropertiesPanel { private ServerInfo serverInfo; /** Skapar en ny MultiPropertiesPanel. Med hjälp av denna visuella komponent kan användaren * fylla i uppgifter om mottagare, ämne och eventuellt avsändare (om denna info saknas i * kontot. * *@param serverInfo Om serverInfo innehåller info om avsändaren kommer avsändardelen göras osynlig. */ public MultiPropertiesPanel(ServerInfo serverInfo) { this.serverInfo = serverInfo; initComponents(); if(! serverInfo.getEmailAddress().equals("")) fromPanel.setVisible(false); } public InternetAddress[] getMultiTO() { if(to.getModel().getSize() != 0) { try { InternetAddress[] adr = new InternetAddress[to.getModel().getSize()]; for(int i = 0; i < to.getModel().getSize(); i++) adr[i] = new InternetAddress((String) to.getModel().getElementAt(i)); return adr; } catch(AddressException e) { e.printStackTrace(); } } return null; } public String getServer() { return serverInfo.getServer(); } public InternetAddress getFrom() { try { if(serverInfo.getEmailAddress().equals("")) return new InternetAddress(from.getText()); else if(serverInfo.getName().equals("")) return new InternetAddress(serverInfo.getEmailAddress()); else return new InternetAddress(serverInfo.getEmailAddress(), serverInfo.getName()); } catch(AddressException e) { e.printStackTrace(); } catch(java.io.UnsupportedEncodingException e) { System.err.println(e.getMessage()); } return null; } /** Ränsar ifyllda värden */ public void clearPanel() { ((DefaultComboBoxModel) to.getModel()).removeAllElements(); ((DefaultComboBoxModel) cc.getModel()).removeAllElements(); ((DefaultComboBoxModel) bcc.getModel()).removeAllElements(); subject.setText(""); } public InternetAddress getTO() { if(to.getModel().getSize() != 0) { try { return new InternetAddress((String) to.getModel().getElementAt(0)); } catch(AddressException e) { e.printStackTrace(); } } return null; } public InternetAddress[] getCC() { if(cc.getModel().getSize() != 0) { try { InternetAddress[] adr = new InternetAddress[cc.getModel().getSize()]; for(int i = 0; i < cc.getModel().getSize(); i++) adr[i] = new InternetAddress((String) cc.getModel().getElementAt(i)); return adr; } catch(AddressException e) { e.printStackTrace(); } } return null; } public InternetAddress[] getBCC() { if(bcc.getModel().getSize() != 0) { try { InternetAddress[] adr = new InternetAddress[bcc.getModel().getSize()]; for(int i = 0; i < bcc.getModel().getSize(); i++) adr[i] = new InternetAddress((String) bcc.getModel().getElementAt(i)); return adr; } catch(AddressException e) { e.printStackTrace(); } } return null; } public String getSubject() { return subject.getText(); } public void setSubject(String subject) { this.subject.setText(subject); } /** Sätter flera primära mottagare. Heter setMultiTo för att det inte skall bli konflikt med * tidigare definition av setTo i uppgift 7a, där endast en mottagare kunnde förekomma */ public void setMultiTO(javax.mail.Address[] toAddr) { for(int i = 0; i < toAddr.length; i++) { to.addItem(toAddr[i].toString()); } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); to = new javax.swing.JComboBox(); cc = new javax.swing.JComboBox(); bcc = new javax.swing.JComboBox(); subject = new javax.swing.JTextField(); fromPanel = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); from = new javax.swing.JTextField(); setLayout(new java.awt.GridBagLayout()); java.awt.GridBagConstraints gridBagConstraints1; jLabel1.setText("TO:"); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 1; gridBagConstraints1.insets = new java.awt.Insets(5, 5, 0, 0); gridBagConstraints1.anchor = java.awt.GridBagConstraints.EAST; add(jLabel1, gridBagConstraints1); jLabel2.setText("CC:"); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 2; gridBagConstraints1.insets = new java.awt.Insets(0, 5, 0, 0); gridBagConstraints1.anchor = java.awt.GridBagConstraints.EAST; add(jLabel2, gridBagConstraints1); jLabel3.setText("BCC:"); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 3; gridBagConstraints1.insets = new java.awt.Insets(0, 5, 0, 0); gridBagConstraints1.anchor = java.awt.GridBagConstraints.EAST; add(jLabel3, gridBagConstraints1); jLabel4.setText("\u00c4mne:"); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 4; gridBagConstraints1.insets = new java.awt.Insets(15, 5, 0, 0); gridBagConstraints1.anchor = java.awt.GridBagConstraints.EAST; add(jLabel4, gridBagConstraints1); to.setEditable(true); to.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { toActionPerformed(evt); } }); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 1; gridBagConstraints1.gridy = 1; gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints1.insets = new java.awt.Insets(5, 5, 0, 5); gridBagConstraints1.weightx = 1.0; add(to, gridBagConstraints1); cc.setEditable(true); cc.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ccActionPerformed(evt); } }); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 1; gridBagConstraints1.gridy = 2; gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints1.insets = new java.awt.Insets(2, 5, 0, 5); gridBagConstraints1.weightx = 1.0; add(cc, gridBagConstraints1); bcc.setEditable(true); bcc.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bccActionPerformed(evt); } }); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 1; gridBagConstraints1.gridy = 3; gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints1.insets = new java.awt.Insets(2, 5, 0, 5); gridBagConstraints1.weightx = 1.0; add(bcc, gridBagConstraints1); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 1; gridBagConstraints1.gridy = 4; gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints1.insets = new java.awt.Insets(15, 5, 0, 5); gridBagConstraints1.weightx = 1.0; add(subject, gridBagConstraints1); fromPanel.setLayout(new java.awt.GridBagLayout()); java.awt.GridBagConstraints gridBagConstraints2; jLabel5.setText(" Fr\u00e5n:"); gridBagConstraints2 = new java.awt.GridBagConstraints(); gridBagConstraints2.insets = new java.awt.Insets(5, 5, 5, 0); gridBagConstraints2.anchor = java.awt.GridBagConstraints.EAST; fromPanel.add(jLabel5, gridBagConstraints2); gridBagConstraints2 = new java.awt.GridBagConstraints(); gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints2.insets = new java.awt.Insets(5, 5, 5, 5); gridBagConstraints2.weightx = 1.0; fromPanel.add(from, gridBagConstraints2); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridwidth = 2; gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; add(fromPanel, gridBagConstraints1); }//GEN-END:initComponents // lägger endast till mottagare som inte förekommer tidigare och vars adress innehåller @ private void bccActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bccActionPerformed String address = (String) bcc.getSelectedItem(); boolean present = isInList(address, (DefaultComboBoxModel) bcc.getModel()); if(! present && address.length() != 0 && address.indexOf('@') != -1) { ((DefaultComboBoxModel) bcc.getModel()).addElement(address); bcc.setSelectedIndex(-1); } }//GEN-LAST:event_bccActionPerformed // lägger endast till mottagare som inte förekommer tidigare och vars adress innehåller @ private void ccActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ccActionPerformed String address = (String) cc.getSelectedItem(); boolean present = isInList(address, (DefaultComboBoxModel) cc.getModel()); if(! present && address.length() != 0 && address.indexOf('@') != -1) { ((DefaultComboBoxModel) cc.getModel()).addElement(address); cc.setSelectedIndex(-1); } }//GEN-LAST:event_ccActionPerformed // lägger endast till mottagare som inte förekommer tidigare och vars adress innehåller @ private void toActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_toActionPerformed String address = (String) to.getSelectedItem(); boolean present = isInList(address, (DefaultComboBoxModel) to.getModel()); if(! present && address.length() != 0 && address.indexOf('@') != -1) { ((DefaultComboBoxModel) to.getModel()).addElement(address); to.setSelectedIndex(-1); } }//GEN-LAST:event_toActionPerformed // kollar om en mottagare (tested) redan finns i en mottagarlista (model) private boolean isInList(String tested, DefaultComboBoxModel model) { for(int i = 0; i < model.getSize(); i++) if(tested.equals(model.getElementAt(i).toString())) return true; return false; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JComboBox to; private javax.swing.JComboBox cc; private javax.swing.JComboBox bcc; private javax.swing.JTextField subject; private javax.swing.JPanel fromPanel; private javax.swing.JLabel jLabel5; private javax.swing.JTextField from; // End of variables declaration//GEN-END:variables }