KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > calendar > ui > action > CopyActivityMenu


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.calendar.ui.action;
19
20 import java.awt.event.ActionEvent JavaDoc;
21 import java.awt.event.ActionListener JavaDoc;
22 import java.util.Enumeration JavaDoc;
23 import java.util.Hashtable JavaDoc;
24
25 import javax.swing.JMenuItem JavaDoc;
26
27 import org.columba.api.gui.frame.IFrameMediator;
28 import org.columba.calendar.base.api.IActivity;
29 import org.columba.calendar.base.api.ICalendarItem;
30 import org.columba.calendar.command.CalendarCommandReference;
31 import org.columba.calendar.command.CopyEventCommand;
32 import org.columba.calendar.config.Config;
33 import org.columba.calendar.config.api.ICalendarList;
34 import org.columba.calendar.store.CalendarStoreFactory;
35 import org.columba.calendar.store.api.ICalendarStore;
36 import org.columba.calendar.ui.calendar.api.ActivitySelectionChangedEvent;
37 import org.columba.calendar.ui.calendar.api.IActivitySelectionChangedListener;
38 import org.columba.calendar.ui.frame.api.ICalendarMediator;
39 import org.columba.core.command.Command;
40 import org.columba.core.command.CommandProcessor;
41 import org.columba.core.gui.menu.IMenu;
42
43 /**
44  * CopyActivityMenu class
45  * @author fdietz
46  *
47  */

48 public class CopyActivityMenu extends IMenu implements
49         IActivitySelectionChangedListener {
50
51     /**
52      * serialVersionUID
53      */

54     private static final long serialVersionUID = 7014530206628904351L;
55
56     private Hashtable JavaDoc<String JavaDoc, JMenuItem JavaDoc> table = new Hashtable JavaDoc<String JavaDoc, JMenuItem JavaDoc>();
57
58     /**
59      * CopyActivityMenu parameterized constructor
60      * @param controller
61      */

62     public CopyActivityMenu(IFrameMediator controller) {
63         super(controller, "Copy", "CopyActivity");
64
65         ICalendarList list = Config.getInstance().getCalendarList();
66         Enumeration JavaDoc<ICalendarItem> e = list.getElements();
67         while (e.hasMoreElements()) {
68             final ICalendarItem calendarItem = e.nextElement();
69             JMenuItem JavaDoc item = new JMenuItem JavaDoc(calendarItem.getId());
70             table.put(calendarItem.getId(), item);
71
72             item.addActionListener(new ActionListener JavaDoc() {
73                 public void actionPerformed(ActionEvent JavaDoc e) {
74                     ICalendarMediator m = (ICalendarMediator) getFrameMediator();
75
76                     IActivity activity = m.getCalendarView()
77                             .getSelectedActivity();
78
79                     // copy activity
80
ICalendarStore store = CalendarStoreFactory.getInstance()
81                             .getLocaleStore();
82
83                     Command command = new CopyEventCommand(
84                             new CalendarCommandReference(store, calendarItem,
85                                     activity));
86
87                     CommandProcessor.getInstance().addOp(command);
88                 }
89             });
90
91             add(item);
92         }
93
94         ICalendarMediator m = (ICalendarMediator) getFrameMediator();
95         m.getCalendarView().addSelectionChangedListener(this);
96     }
97
98     /* (non-Javadoc)
99      * @see org.columba.calendar.ui.calendar.api.IActivitySelectionChangedListener#selectionChanged(org.columba.calendar.ui.calendar.api.ActivitySelectionChangedEvent)
100      */

101     public void selectionChanged(ActivitySelectionChangedEvent event) {
102         if (event.getSelection().length == 0)
103             setEnabled(false);
104         else {
105             setEnabled(true);
106
107             // enable all menuitems
108
Enumeration JavaDoc<JMenuItem JavaDoc> e = table.elements();
109             while (e.hasMoreElements()) {
110                 JMenuItem JavaDoc m = e.nextElement();
111                 m.setEnabled(true);
112             }
113
114             // retrieve selected activity
115
IActivity activity = event.getSelection()[0];
116             // activity belongs to calendar id ?
117
String JavaDoc calendarId = activity.getCalendarId();
118
119             // disable this calendar's id
120
JMenuItem JavaDoc menuItem = table.get(calendarId);
121             menuItem.setEnabled(false);
122         }
123     }
124 }
125
Popular Tags