-/**
+/*
* Jexer - Java Text User Interface
*
- * Version: $Id$
- *
- * Author: Kevin Lamonte, <a href="mailto:kevin.lamonte@gmail.com">kevin.lamonte@gmail.com</a>
- *
* License: LGPLv3 or later
*
- * Copyright: This module is licensed under the GNU Lesser General
- * Public License Version 3. Please see the file "COPYING" in this
- * directory for more information about the GNU Lesser General Public
- * License Version 3.
+ * This module is licensed under the GNU Lesser General Public License
+ * Version 3. Please see the file "COPYING" in this directory for more
+ * information about the GNU Lesser General Public License Version 3.
*
* Copyright (C) 2015 Kevin Lamonte
*
* http://www.gnu.org/licenses/, or write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
+ *
+ * @author Kevin Lamonte [kevin.lamonte@gmail.com]
+ * @version 1
*/
package jexer.event;
import jexer.TCommand;
/**
- * This class encapsulates a user command event.
+ * This class encapsulates a user command event. User commands can be
+ * generated by menu actions, keyboard accelerators, and other UI elements.
+ * Commands can operate on both the application and individual widgets.
*/
-public class TCommandEvent extends TInputEvent {
+public final class TCommandEvent extends TInputEvent {
/**
- * Command dispatched
+ * Command dispatched.
*/
- public TCommand cmd;
+ private TCommand cmd;
/**
- * Public contructor
+ * Get TCommand.
+ *
+ * @return the TCommand
+ */
+ public TCommand getCmd() {
+ return cmd;
+ }
+
+ /**
+ * Public contructor.
*
* @param cmd the TCommand dispatched
*/
- public TCommandEvent(TCommand cmd) {
- this.cmd = cmd;
+ public TCommandEvent(final TCommand cmd) {
+ this.cmd = cmd;
}
/**
- * Make human-readable description of this event
+ * Comparison check. All fields must match to return true.
+ *
+ * @param rhs another TCommandEvent or TCommand instance
+ * @return true if all fields are equal
+ */
+ @Override
+ public boolean equals(final Object rhs) {
+ if (!(rhs instanceof TCommandEvent)
+ && !(rhs instanceof TCommand)
+ ) {
+ return false;
+ }
+
+ if (rhs instanceof TCommandEvent) {
+ TCommandEvent that = (TCommandEvent) rhs;
+ return (cmd.equals(that.cmd)
+ && (getTime().equals(that.getTime())));
+ }
+
+ TCommand that = (TCommand) rhs;
+ return (cmd.equals(that));
+ }
+
+ /**
+ * Hashcode uses all fields in equals().
+ *
+ * @return the hash
+ */
+ @Override
+ public int hashCode() {
+ int A = 13;
+ int B = 23;
+ int hash = A;
+ hash = (B * hash) + getTime().hashCode();
+ hash = (B * hash) + cmd.hashCode();
+ return hash;
+ }
+
+ /**
+ * Make human-readable description of this TCommandEvent.
+ *
+ * @return displayable String
*/
@Override
public String toString() {
- return String.format("CommandEvent: %s", cmd.toString());
+ return String.format("CommandEvent: %s", cmd.toString());
}
}
-