1 package org.columba.calendar.ui.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.api.gui.frame.IFrameMediator; 9 import org.columba.calendar.ui.frame.CalendarFrameMediator; 10 import org.columba.core.association.AssociationStore; 11 import org.columba.core.gui.tagging.TagList; 12 import org.columba.core.tagging.api.ITag; 13 14 import com.miginfocom.calendar.activity.Activity; 15 import com.miginfocom.calendar.activity.ActivityDepository; 16 import com.miginfocom.calendar.category.Category; 17 import com.miginfocom.calendar.category.CategoryDepository; 18 import com.miginfocom.util.MigUtil; 19 20 public class CalendarTagList extends TagList { 21 22 private static final java.util.logging.Logger LOG = java.util.logging.Logger 23 .getLogger("org.columba.calendar.ui.tagging"); 25 public static final String PROP_FILTERED = "filterRow"; 26 27 private IFrameMediator frameMediator; 28 29 public CalendarTagList(IFrameMediator frameMediator) { 30 super(); 31 32 this.frameMediator = frameMediator; 33 34 addListSelectionListener(new MyListSelectionListener()); 35 } 36 37 class MyListSelectionListener implements ListSelectionListener { 38 MyListSelectionListener() { 39 } 40 41 public void valueChanged(ListSelectionEvent event) { 42 if (event.getValueIsAdjusting()) { 44 return; 45 } 46 47 ITag result = (ITag) getSelectedValue(); 48 49 53 Collection <String > messageList = AssociationStore.getInstance() 54 .getAssociatedItems("tagging", result.getId()); 55 for (String id : messageList) { 56 57 String s = id.toString(); 60 61 int activityIndex = s.lastIndexOf('/'); 63 String activityId = s.substring(activityIndex + 1, s.length()); 64 int folderIndex = s.lastIndexOf('/', activityIndex - 1); 65 String folderId = s.substring(folderIndex + 1, activityIndex); 66 int componentIndex = s.lastIndexOf('/', folderIndex - 1); 67 String componentId = s.substring(componentIndex + 1, 68 folderIndex); 69 70 if (componentId.equals("org.columba.calendar")) { 72 Activity act = ActivityDepository.getInstance() 74 .getActivity(activityId); 75 act.addCategoryID("tag_" + result.getId(), MigUtil.BIG_INT); 77 } 78 } 79 80 84 clearAllTagCategories(); 86 87 Category category = retrieveTagCategory(result.getId()); 89 if (category == null) { 90 System.out.println("add: " + result.getId()); 91 category = CategoryDepository.getRoot().addSubCategory( 93 "tag_" + result.getId(), result.getName()); 94 } 95 96 category.setProperty(Category.PROP_IS_HIDDEN, Boolean 98 .valueOf(false), Boolean.TRUE); 99 System.out.println("tag: " + category.getId().toString()); 100 101 ((CalendarFrameMediator) frameMediator).getCalendarView() 103 .recreateFilterRows(); 104 105 } 106 } 107 108 private Category retrieveTagCategory(String tagId) { 109 Collection <Category> c = CategoryDepository.getRoot().getChildrenDeep(); 110 for (Category category : c) { 111 String categoryId = (String ) category.getId(); 112 if (categoryId.equals("tag_" + tagId)) 113 return category; 114 } 115 116 return null; 117 } 118 119 private void clearAllTagCategories() { 120 CategoryDepository.getRoot().setPropertyDeep(Category.PROP_IS_HIDDEN, Boolean 121 .valueOf(true), Boolean.TRUE); 122 } 123 } | Popular Tags |