KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > calendar > ui > tagging > TagCalendarMenu


1 package org.columba.calendar.ui.tagging;
2
3 import java.net.URI JavaDoc;
4 import java.net.URISyntaxException JavaDoc;
5 import java.util.Collection JavaDoc;
6 import java.util.Iterator JavaDoc;
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 JavaDoc SERVICE_ID = "tagging";
24
25     private String JavaDoc calendarId;
26
27     /**
28      * @param frameMediator
29      */

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 JavaDoc
49     protected void assignTag(String JavaDoc tagId) {
50         IActivity activity = ((CalendarFrameMediator) getFrameMediator())
51                 .getCalendarView().getSelectedActivity();
52         String JavaDoc calendarId = activity.getCalendarId();
53         String JavaDoc activityId = activity.getId();
54
55         AssociationStore.getInstance().addAssociation(SERVICE_ID, tagId,
56                 createURI(calendarId, activityId).toString());
57
58     }
59
60     @Override JavaDoc
61     protected boolean isTagged(ITag tag) {
62         IActivity activity = ((CalendarFrameMediator) getFrameMediator())
63                 .getCalendarView().getSelectedActivity();
64         if (activity == null)
65             return false;
66
67         String JavaDoc calendarId = activity.getCalendarId();
68         String JavaDoc activityId = activity.getId();
69
70         boolean tagged = checkAssocation(calendarId, activityId, tag);
71         return tagged;
72     }
73
74     @Override JavaDoc
75     protected void removeAllTags() {
76         IActivity activity = ((CalendarFrameMediator) getFrameMediator())
77                 .getCalendarView().getSelectedActivity();
78         String JavaDoc calendarId = activity.getCalendarId();
79         String JavaDoc activityId = activity.getId();
80
81         for (Iterator JavaDoc<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 JavaDoc
92     protected void removeTag(String JavaDoc tagId) {
93         IActivity activity = ((CalendarFrameMediator) getFrameMediator())
94                 .getCalendarView().getSelectedActivity();
95         String JavaDoc calendarId = activity.getCalendarId();
96         String JavaDoc activityId = activity.getId();
97
98         AssociationStore.getInstance().removeAssociation(SERVICE_ID, tagId,
99                 createURI(calendarId, activityId).toString());
100
101     }
102
103     // create URI representing the contact
104
public static URI JavaDoc createURI(String JavaDoc folderId, Object JavaDoc contactId) {
105         URI JavaDoc uri = null;
106         try {
107             uri = new URI JavaDoc("columba://org.columba.calendar/" + folderId + "/"
108                     + contactId);
109         } catch (URISyntaxException JavaDoc e) {
110             e.printStackTrace();
111         }
112         return uri;
113     }
114
115     // check if calendar item is tagged
116
private boolean checkAssocation(String JavaDoc folderId, String JavaDoc eventId, ITag tag) {
117         URI JavaDoc 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 JavaDoc<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