1 package org.columba.addressbook.gui.tagging; 2 3 import java.util.Collection ; 4 5 import javax.swing.event.ListSelectionEvent ; 6 import javax.swing.event.ListSelectionListener ; 7 8 import org.columba.addressbook.folder.IContactStorage; 9 import org.columba.addressbook.folder.virtual.VirtualFolder; 10 import org.columba.addressbook.gui.frame.AddressbookFrameMediator; 11 import org.columba.addressbook.gui.tree.AddressbookTreeModel; 12 import org.columba.api.gui.frame.IFrameMediator; 13 import org.columba.core.association.AssociationStore; 14 import org.columba.core.gui.tagging.TagList; 15 import org.columba.core.tagging.api.ITag; 16 17 public class ContactTagList extends TagList { 18 19 private static final java.util.logging.Logger LOG = java.util.logging.Logger 20 .getLogger("org.columba.addressbook.action"); 22 private IFrameMediator frameMediator; 23 24 public ContactTagList(IFrameMediator frameMediator) { 25 super(); 26 27 this.frameMediator = frameMediator; 28 29 addListSelectionListener(new MyListSelectionListener()); 30 } 31 32 class MyListSelectionListener implements ListSelectionListener { 33 MyListSelectionListener() { 34 } 35 36 public void valueChanged(ListSelectionEvent event) { 37 if (event.getValueIsAdjusting()) { 39 return; 40 } 41 42 VirtualFolder virtualFolder = new VirtualFolder(); 43 ITag result = (ITag) getSelectedValue(); 44 Collection <String > messageList = AssociationStore.getInstance() 46 .getAssociatedItems("tagging", result.getId()); 47 for (String id : messageList) { 48 49 String s = id.toString(); 52 53 int contactIndex = s.lastIndexOf('/'); 55 String contactId = s.substring(contactIndex + 1, s.length()); 56 int folderIndex = s.lastIndexOf('/', contactIndex - 1); 57 String folderId = s.substring(folderIndex + 1, contactIndex); 58 int componentIndex = s.lastIndexOf('/', folderIndex - 1); 59 String componentId = s.substring(componentIndex + 1, 60 folderIndex); 61 62 if (componentId.equals("org.columba.contact")) { 64 IContactStorage parentStore = (IContactStorage) AddressbookTreeModel 65 .getInstance().getFolder(folderId); 66 if (parentStore == null) { 67 LOG.severe("can't find contact store for \""+folderId+"\""); 68 continue; 69 } 70 virtualFolder.add(parentStore, contactId); 71 } 72 } 73 74 ((AddressbookFrameMediator)frameMediator).getTree().setSelectedFolder(virtualFolder); 76 } 77 } 78 79 } 80 | Popular Tags |