1 package org.columba.calendar.ui.action; 19 20 import java.awt.event.ActionEvent ; 21 import java.io.File ; 22 23 import javax.swing.JFileChooser ; 24 import javax.swing.JOptionPane ; 25 26 import org.columba.api.gui.frame.IFrameMediator; 27 import org.columba.calendar.base.api.ICalendarItem; 28 import org.columba.calendar.command.CalendarCommandReference; 29 import org.columba.calendar.command.ExportCalendarCommand; 30 import org.columba.calendar.store.CalendarStoreFactory; 31 import org.columba.calendar.store.api.ICalendarStore; 32 import org.columba.calendar.ui.frame.api.ICalendarMediator; 33 import org.columba.calendar.ui.list.api.CalendarSelectionChangedEvent; 34 import org.columba.calendar.ui.list.api.ICalendarListView; 35 import org.columba.calendar.ui.list.api.ICalendarSelectionChangedListener; 36 import org.columba.core.command.Command; 37 import org.columba.core.command.CommandProcessor; 38 import org.columba.core.gui.action.AbstractColumbaAction; 39 import org.columba.core.gui.frame.FrameManager; 40 41 42 public class ExportCalendarAction extends AbstractColumbaAction implements 43 ICalendarSelectionChangedListener { 44 45 public ExportCalendarAction(IFrameMediator frameMediator) { 46 super(frameMediator, "Export Calendar"); 47 48 setEnabled(false); 49 50 ICalendarMediator m = (ICalendarMediator) getFrameMediator(); 51 ICalendarListView list = m.getListView(); 52 53 list.addSelectionChangedListener(this); 54 } 55 56 public void actionPerformed(ActionEvent e) { 57 ICalendarMediator m = (ICalendarMediator) getFrameMediator(); 58 ICalendarListView list = m.getListView(); 59 60 ICalendarItem calendar = list.getSelected(); 62 63 if (calendar == null) { 64 JOptionPane.showMessageDialog(FrameManager.getInstance() 65 .getActiveFrame(), 66 "No calendar for export selected."); 67 return; 68 } 69 70 JFileChooser fc = new JFileChooser (); 71 fc.setMultiSelectionEnabled(false); 72 fc.setFileSelectionMode(JFileChooser.FILES_ONLY); 73 fc.setFileHidingEnabled(false); 74 75 if (fc.showSaveDialog(frameMediator.getContainer().getFrame()) == JFileChooser.APPROVE_OPTION) { 76 File destFile = fc.getSelectedFile(); 77 78 ICalendarStore store = CalendarStoreFactory.getInstance() 79 .getLocaleStore(); 80 81 Command command = new ExportCalendarCommand( 82 new CalendarCommandReference(store, calendar), destFile); 83 84 CommandProcessor.getInstance().addOp(command); 85 86 87 } 88 89 } 90 91 public void selectionChanged(CalendarSelectionChangedEvent event) { 92 if (event.getSelection() != null) 93 setEnabled(true); 94 else 95 setEnabled(false); 96 97 } 98 99 } 100 | Popular Tags |