// Module : $RCSfile: EventTypeFactory.java,v $ // Version : $Revision: 0.0 $ $Author: pharms $ $Date: 21.08.2012 $ // Project : quest-plugin-mfc // Creation : 2012 by pharms // Copyright : Patrick Harms, 2012 package de.ugoe.cs.quest.plugin.mfc.eventcore; import java.util.Map; import de.ugoe.cs.quest.eventcore.IEventType; import de.ugoe.cs.quest.eventcore.gui.KeyPressed; import de.ugoe.cs.quest.eventcore.gui.KeyReleased; import de.ugoe.cs.quest.eventcore.gui.KeyboardFocusChange; import de.ugoe.cs.quest.eventcore.gui.MouseButtonInteraction; import de.ugoe.cs.quest.eventcore.gui.MouseClick; import de.ugoe.cs.quest.eventcore.gui.ValueSelection; import de.ugoe.cs.tasktree.keyboardmaps.VirtualKey; /** *

* TODO comment *

* * @version $Revision: $ $Date: 21.08.2012$ * @author 2012, last modified by $Author: pharms$ */ public class MFCEventTypeFactory { /** *

* the instance of the singleton *

*/ private static MFCEventTypeFactory instance = new MFCEventTypeFactory(); /** *

* TODO: comment *

* */ private MFCEventTypeFactory() { // prevent external instantiation } /** *

* TODO: comment *

* * @return */ public static MFCEventTypeFactory getInstance() { return instance; } /** *

* TODO: comment *

* * @param currentRuleName * @return */ public IEventType getEventType(String eventName, Map messageParameters) { if ("LeftClickButton".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickListBox".equals(eventName)) { return new ValueSelection(getSelectedValue(messageParameters)); } else if ("TabChange".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickCommand".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickSysCommand".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("NCLeftClickSysCommand".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickMenuItemCmd".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("HScroll_TrackBar".equals(eventName)) { return new ValueSelection(getSelectedValue(messageParameters)); } else if ("VScroll_TrackBar".equals(eventName)) { return new ValueSelection(getSelectedValue(messageParameters)); } else if ("HScroll_ScrollBar".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("VScroll_ScrollBar".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("VScrollNC".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickSetFocus".equals(eventName)) { return new KeyboardFocusChange(); } else if ("LeftClickChangeFocus".equals(eventName)) { return new KeyboardFocusChange(); } else if ("KeyDown".equals(eventName)) { return new KeyPressed(getKey(messageParameters)); } else if ("KeyUp".equals(eventName)) { return new KeyReleased(getKey(messageParameters)); } else if ("SysKeyDown".equals(eventName)) { return new KeyPressed(getKey(messageParameters)); } else if ("SysKeyUp".equals(eventName)) { return new KeyReleased(getKey(messageParameters)); } else if ("LeftClickCoordinates".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("NCLeftClickCoordinates".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("NCLeftClickCoordinates2".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickCoordinatesTargetChanged".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else if ("LeftClickCoordinatesTargetChanged2".equals(eventName)) { return new MouseClick(MouseButtonInteraction.Button.LEFT); } else { throw new IllegalArgumentException("unknown event name: " + eventName); } } /** * @param message * @return */ private VirtualKey getKey(Map messageParameters) { String value = null; if (messageParameters != null) { value = messageParameters.get("key"); } if (value == null) { throw new IllegalArgumentException ("no parameter \"key\" provided for key event. Please correct the event " + "generation rules"); } return WindowsVirtualKey.parseVirtualKey(value).getKey(); } /** *

* TODO: comment *

* * @param messageParameters * @return */ private int getSelectedValue(Map messageParameters) { String value = null; if (messageParameters != null) { value = messageParameters.get("scrollPos"); } if (value == null) { throw new IllegalArgumentException ("no parameter \"scrollPos\" provided for scroll event. Please correct the event " + "generation rules"); } return Integer.parseInt(value); } }