1 package org.columba.calendar.ui.tagging; 2 3 import java.net.URI ; 4 import java.net.URISyntaxException ; 5 import java.util.Collection ; 6 import java.util.Iterator ; 7 8 import org.columba.api.gui.frame.IFrameMediator; 9 import org.columba.calendar.base.api.IActivity; 10 import org.columba.calendar.resourceloader.ResourceLoader; 11 import org.columba.calendar.ui.calendar.api.ActivitySelectionChangedEvent; 12 import org.columba.calendar.ui.calendar.api.IActivitySelectionChangedListener; 13 import org.columba.calendar.ui.frame.CalendarFrameMediator; 14 import org.columba.core.association.AssociationStore; 15 import org.columba.core.association.api.IAssociation; 16 import org.columba.core.gui.tagging.TaggingMenu; 17 import org.columba.core.tagging.TagManager; 18 import org.columba.core.tagging.api.ITag; 19 20 public class TagCalendarMenu extends TaggingMenu implements 21 IActivitySelectionChangedListener { 22 23 final static private String SERVICE_ID = "tagging"; 24 25 private String calendarId; 26 27 30 public TagCalendarMenu(IFrameMediator frameMediator) { 31 super(frameMediator, ResourceLoader.getString("tagging", 32 "calendar_tag_message"), "menu_tag_message"); 33 34 ((CalendarFrameMediator) frameMediator).getCalendarView() 35 .addSelectionChangedListener(this); 36 37 } 38 39 public void selectionChanged(ActivitySelectionChangedEvent object) { 40 if (object.getSelection() != null && object.getSelection().length > 0) { 41 setEnabled(true); 42 removeAll(); 43 createSubMenu(); 44 } else 45 setEnabled(false); 46 } 47 48 @Override 49 protected void assignTag(String tagId) { 50 IActivity activity = ((CalendarFrameMediator) getFrameMediator()) 51 .getCalendarView().getSelectedActivity(); 52 String calendarId = activity.getCalendarId(); 53 String activityId = activity.getId(); 54 55 AssociationStore.getInstance().addAssociation(SERVICE_ID, tagId, 56 createURI(calendarId, activityId).toString()); 57 58 } 59 60 @Override 61 protected boolean isTagged(ITag tag) { 62 IActivity activity = ((CalendarFrameMediator) getFrameMediator()) 63 .getCalendarView().getSelectedActivity(); 64 if (activity == null) 65 return false; 66 67 String calendarId = activity.getCalendarId(); 68 String activityId = activity.getId(); 69 70 boolean tagged = checkAssocation(calendarId, activityId, tag); 71 return tagged; 72 } 73 74 @Override 75 protected void removeAllTags() { 76 IActivity activity = ((CalendarFrameMediator) getFrameMediator()) 77 .getCalendarView().getSelectedActivity(); 78 String calendarId = activity.getCalendarId(); 79 String activityId = activity.getId(); 80 81 for (Iterator <ITag> iter = TagManager.getInstance().getAllTags(); iter 82 .hasNext();) { 83 ITag tag = iter.next(); 84 85 AssociationStore.getInstance().removeAssociation(SERVICE_ID, 86 tag.getId(), createURI(calendarId, activityId).toString()); 87 88 } 89 } 90 91 @Override 92 protected void removeTag(String tagId) { 93 IActivity activity = ((CalendarFrameMediator) getFrameMediator()) 94 .getCalendarView().getSelectedActivity(); 95 String calendarId = activity.getCalendarId(); 96 String activityId = activity.getId(); 97 98 AssociationStore.getInstance().removeAssociation(SERVICE_ID, tagId, 99 createURI(calendarId, activityId).toString()); 100 101 } 102 103 public static URI createURI(String folderId, Object contactId) { 105 URI uri = null; 106 try { 107 uri = new URI ("columba://org.columba.calendar/" + folderId + "/" 108 + contactId); 109 } catch (URISyntaxException e) { 110 e.printStackTrace(); 111 } 112 return uri; 113 } 114 115 private boolean checkAssocation(String folderId, String eventId, ITag tag) { 117 URI uri = createURI(folderId, eventId); 118 if (AssociationStore.getInstance() == null) 119 System.out.println("ASSOCIATION STORE IS NULL!"); 120 if (uri == null) 121 System.out.println("URI IS NULL!"); 122 123 Collection <IAssociation> c = AssociationStore.getInstance() 124 .getAllAssociations(uri.toString()); 125 126 for (IAssociation as : c) { 127 if (as.getServiceId().equals(SERVICE_ID) 128 && (as.getMetaDataId() != null) 129 && (as.getMetaDataId().equals(tag.getId()))) { 130 return true; 131 } 132 } 133 return false; 134 } 135 136 } 137 | Popular Tags |