1 package org.columba.addressbook.gui.action; 19 20 import java.awt.event.ActionEvent ; 21 import java.io.BufferedReader ; 22 import java.io.File ; 23 import java.io.FileReader ; 24 25 import javax.swing.JFileChooser ; 26 27 import org.columba.addressbook.folder.AddressbookFolder; 28 import org.columba.addressbook.gui.frame.AddressbookFrameMediator; 29 import org.columba.addressbook.model.IContactModel; 30 import org.columba.addressbook.parser.VCardParser; 31 import org.columba.addressbook.util.AddressbookResourceLoader; 32 import org.columba.api.gui.frame.IFrameMediator; 33 import org.columba.ristretto.io.CharSequenceSource; 34 import org.columba.ristretto.io.SourceInputStream; 35 36 39 40 public class AddVCardAction extends DefaultTreeAction { 41 public AddVCardAction(IFrameMediator frameController) { 42 super(frameController, AddressbookResourceLoader.getString("menu", 43 "mainframe", "menu_file_addvcard")); 44 45 putValue(SHORT_DESCRIPTION, AddressbookResourceLoader.getString("menu", 47 "mainframe", "menu_file_addvcard").replaceAll("&", "")); 48 } 49 50 53 public void actionPerformed(ActionEvent evt) { 54 AddressbookFrameMediator mediator = (AddressbookFrameMediator) frameMediator; 55 56 AddressbookFolder destinationFolder = (AddressbookFolder) mediator 58 .getTree().getSelectedFolder(); 59 60 JFileChooser fc = new JFileChooser (); 62 fc.setFileSelectionMode(JFileChooser.FILES_ONLY); 63 fc.setMultiSelectionEnabled(true); 64 65 int returnVal = fc.showOpenDialog(frameMediator.getView().getFrame()); 66 67 if (returnVal == JFileChooser.APPROVE_OPTION) { 69 File [] files = fc.getSelectedFiles(); 70 71 for (int i = 0; i < files.length; i++) { 72 try { 73 StringBuffer strbuf = new StringBuffer (); 74 75 BufferedReader in = new BufferedReader (new FileReader ( 77 files[i])); 78 String str; 79 80 while ((str = in.readLine()) != null) { 81 strbuf.append(str + "\n"); 82 } 83 84 in.close(); 85 86 IContactModel[] cards = VCardParser.read(new SourceInputStream( 88 new CharSequenceSource(strbuf.toString()))); 89 90 destinationFolder.add(cards); 92 } catch (Exception ex) { 93 ex.printStackTrace(); 94 } 95 } 96 } 97 98 mediator.getTable().getAddressbookModel().update(); 100 } 101 } | Popular Tags |