/** * */ package org.javabuilders.swing.handler.event; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import java.awt.event.WindowListener; import java.awt.event.WindowStateListener; import javax.swing.JFrame; import org.javabuilders.BuildProcess; import org.javabuilders.Node; import org.javabuilders.Values; import org.javabuilders.event.ObjectMethod; import org.javabuilders.util.BuilderUtils; /** * Handles JFrame window events/listeners * @author Jacek Furmankiewicz * */ public class JFrameWindowListenerHandler extends WindowListenerHandler { private static final JFrameWindowListenerHandler singleton = new JFrameWindowListenerHandler(); /** * @return Singleton */ public static JFrameWindowListenerHandler getInstance() {return singleton;} /** * Constructor */ private JFrameWindowListenerHandler() { super(); } /* (non-Javadoc) * @see org.javabuilders.swing.handler.event.WindowListenerHandler#createListeners(org.javabuilders.Node, org.javabuilders.BuildProcess, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values, org.javabuilders.Values) */ @SuppressWarnings("unchecked") @Override protected void createListeners(final Node node, final BuildProcess process, final Values<String, ObjectMethod> stateValues, final Values<String, ObjectMethod> windowFocusValues, final Values<String, ObjectMethod> windowFocusLostValues, final Values<String, ObjectMethod> windowActivatedValues, final Values<String, ObjectMethod> windowClosedValues, final Values<String, ObjectMethod> windowClosingValues, final Values<String, ObjectMethod> windowDeactivatedValues, final Values<String, ObjectMethod> windowDeiconifiedValues, final Values<String, ObjectMethod> windowIconifiedValues, final Values<String, ObjectMethod> windowOpenedValues) { final JFrame control = (JFrame)node.getMainObject(); if (stateValues != null) { control.addWindowStateListener(new WindowStateListener() { public void windowStateChanged(WindowEvent e) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, stateValues.values(), e); } }); } //window focus if (BuilderUtils.isListenerNeeded(windowFocusValues, windowFocusLostValues)) { control.addWindowFocusListener(new WindowFocusListener() { public void windowGainedFocus(WindowEvent e) { if (windowFocusValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowFocusValues.values(), e); } } public void windowLostFocus(WindowEvent e) { if (windowFocusLostValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowFocusLostValues.values(), e); } } }); } //windows listener if (BuilderUtils.isListenerNeeded(windowActivatedValues, windowClosedValues, windowClosingValues, windowDeactivatedValues, windowDeiconifiedValues, windowIconifiedValues, windowOpenedValues)) { control.addWindowListener(new WindowListener() { public void windowActivated(WindowEvent e) { if (windowActivatedValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowActivatedValues.values(), e); } } public void windowClosed(WindowEvent e) { if (windowClosedValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowClosedValues.values(), e); } } public void windowClosing(WindowEvent e) { if (windowClosingValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowClosingValues.values(), e); } } public void windowDeactivated(WindowEvent e) { if (windowDeactivatedValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowDeactivatedValues.values(), e); } } public void windowDeiconified(WindowEvent e) { if (windowDeiconifiedValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowDeiconifiedValues.values(), e); } } public void windowIconified(WindowEvent e) { if (windowIconifiedValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowIconifiedValues.values(), e); } } public void windowOpened(WindowEvent e) { if (windowOpenedValues != null) { BuilderUtils.invokeCallerEventMethods(process.getBuildResult(), control, windowOpenedValues.values(), e); } } }); } } /* (non-Javadoc) * @see org.javabuilders.swing.handler.event.WindowListenerHandler#getApplicableClass() */ @Override public Class<?> getApplicableClass() { return JFrame.class; } }