1 /** 2 * Copyright (C) 2007 Joern Krueger surething@users.sourceforge.net 3 * 4 * This program is free software; you can redistribute 5 * it and/or modify it under the terms of the GNU General 6 * Public License version 2 as published by the Free Software 7 * Foundation. 8 * 9 * This program is distributed in the hope that it will be 10 * useful, but WITHOUT ANY WARRANTY; without even the implied 11 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 12 * PURPOSE. See the GNU General Public License for more 13 * details. 14 * 15 * You should have received a copy of the GNU General Public 16 * License along with this program; if not, write to the 17 * Free Software Foundation, Inc., 59 Temple Place, 18 * Suite 330, Boston, MA 02111-1307 USA 19 * 20 */ 21 package de.surething.lda.ui; 22 23 import java.awt.event.ActionEvent; 24 import java.awt.event.ActionListener; 25 import java.awt.event.MouseAdapter; 26 import java.awt.event.MouseEvent; 27 28 import javax.swing.JLabel; 29 import javax.swing.JMenuItem; 30 import javax.swing.JPopupMenu; 31 32 import de.surething.lda.actions.ActionTask; 33 import de.surething.lda.actions.MailActionSettings; 34 import de.surething.lda.locations.Location; 35 import de.surething.lda.locations.LocationSettings; 36 import de.surething.lda.resources.Messages; 37 import de.surethingies.properties.ParameterFactory; 38 import de.surethingies.properties.ui.PropertyEditor; 39 40 public class MainWindowControl implements ActionListener { 41 42 private MainWindow mainWindow; 43 44 private Adapter adapter; 45 46 public MainWindowControl(MainWindow mainWindow) { 47 this.mainWindow = mainWindow; 48 this.adapter = new Adapter(this); 49 } 50 51 public Adapter getAdapter() { 52 return adapter; 53 } 54 55 public void actionPerformed(ActionEvent e) { 56 if (e.getActionCommand().equals(Action.EXIT.toString())) { 57 mainWindow.shutdown(); 58 59 } else if (e.getActionCommand().equals(Action.EXECUTE.toString())) { 60 mainWindow.sleep(true); 61 Thread t = new Thread() { 62 @Override 63 public void run() { 64 actionExecute(mainWindow.getSelectedLocation(), mainWindow.getSelectedAction()); 65 mainWindow.sleep(false); 66 mainWindow.shutdown(); 67 } 68 }; 69 t.start(); 70 71 } else if (e.getActionCommand().equals(Action.ABOUT.toString())) { 72 new AboutDialog(mainWindow, Messages.getString("AboutDialog.Text")); 73 74 } else { 75 mainWindow.sleep(false); 76 throw new RuntimeException("Unknown Action" + e.getActionCommand()); 77 } 78 } 79 80 private void actionExecute(Location location, ActionTask action) { 81 action.execute(mainWindow, location); 82 } 83 84 public enum Action { 85 ABOUT(Messages.getString("MainMenu.About")), EXIT(Messages.getString("MainMenu.Exit")), EXECUTE(Messages 86 .getString("MainMenu.Execute")), CONFIG_LOCATIONS(Messages.getString("MainMenu.ConfigLocations")), CONFIG_ACTIONS( 87 Messages.getString("MainMenu.ConfigActions")); 88 89 private String label; 90 91 private Action(String label) { 92 this.label = label; 93 } 94 95 public String getLabel() { 96 return label; 97 } 98 } 99 100 private class Adapter extends MouseAdapter { 101 102 private JPopupMenu popup; 103 104 private Adapter(MainWindowControl control) { 105 JMenuItem about = new JMenuItem(Messages.getString("MainMenu.About")); 106 about.setActionCommand(Action.ABOUT.toString()); 107 about.addActionListener(control); 108 109 JMenuItem exit = new JMenuItem(Messages.getString("MainMenu.Exit")); 110 exit.setActionCommand(Action.EXIT.toString()); 111 exit.addActionListener(control); 112 113 popup = new JPopupMenu(); 114 popup.add(about); 115 popup.add(exit); 116 } 117 118 @SuppressWarnings("unchecked") 119 @Override 120 public void mouseClicked(MouseEvent e) { 121 if (e.getButton() == MouseEvent.BUTTON1 && e.getSource() instanceof JLabel) { 122 String action = ((JLabel) e.getSource()).getName(); 123 124 if (action.equals(Action.CONFIG_LOCATIONS.toString())) { 125 Location selectedLocation = (Location) mainWindow.locations.getSelectedItem(); 126 127 new PropertyEditor( 128 mainWindow, 129 Action.CONFIG_LOCATIONS.getLabel(), 130 ParameterFactory.instance().get( 131 LocationSettings.GROUP, selectedLocation.getIdentifier())); 132 133 } else if (action.equals(Action.CONFIG_ACTIONS.toString())) { 134 ActionTask selectedAction = (ActionTask) mainWindow.actions.getSelectedItem(); 135 136 new PropertyEditor( 137 mainWindow, 138 Action.CONFIG_ACTIONS.getLabel(), 139 ParameterFactory.instance().get( 140 MailActionSettings.GROUP, selectedAction.getIdentifier())); 141 142 } 143 } 144 } 145 146 @Override 147 public void mousePressed(MouseEvent e) { 148 if (e.isPopupTrigger()) { 149 popup.show(e.getComponent(), e.getX(), e.getY()); 150 } 151 } 152 } 153 }