Fix bounds check
[nikiroo-utils.git] / src / jexer / event / TCommandEvent.java
CommitLineData
daa4106c 1/*
df8de03f
KL
2 * Jexer - Java Text User Interface
3 *
e16dda65 4 * The MIT License (MIT)
df8de03f 5 *
a2018e99 6 * Copyright (C) 2017 Kevin Lamonte
df8de03f 7 *
e16dda65
KL
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
df8de03f 14 *
e16dda65
KL
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
df8de03f 17 *
e16dda65
KL
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 * DEALINGS IN THE SOFTWARE.
7b5261bc
KL
25 *
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
27 * @version 1
df8de03f
KL
28 */
29package jexer.event;
30
31import jexer.TCommand;
32
33/**
7b5261bc
KL
34 * This class encapsulates a user command event. User commands can be
35 * generated by menu actions, keyboard accelerators, and other UI elements.
36 * Commands can operate on both the application and individual widgets.
df8de03f 37 */
b299e69c 38public final class TCommandEvent extends TInputEvent {
df8de03f
KL
39
40 /**
7b5261bc
KL
41 * Command dispatched.
42 */
43 private TCommand cmd;
44
45 /**
46 * Get TCommand.
47 *
48 * @return the TCommand
df8de03f 49 */
b299e69c 50 public TCommand getCmd() {
7b5261bc
KL
51 return cmd;
52 }
df8de03f
KL
53
54 /**
7b5261bc 55 * Public contructor.
df8de03f
KL
56 *
57 * @param cmd the TCommand dispatched
58 */
7b5261bc
KL
59 public TCommandEvent(final TCommand cmd) {
60 this.cmd = cmd;
df8de03f
KL
61 }
62
d4a29741
KL
63 /**
64 * Comparison check. All fields must match to return true.
65 *
66 * @param rhs another TCommandEvent or TCommand instance
67 * @return true if all fields are equal
68 */
69 @Override
70 public boolean equals(final Object rhs) {
71 if (!(rhs instanceof TCommandEvent)
72 && !(rhs instanceof TCommand)
73 ) {
74 return false;
75 }
76
77 if (rhs instanceof TCommandEvent) {
78 TCommandEvent that = (TCommandEvent) rhs;
79 return (cmd.equals(that.cmd)
80 && (getTime().equals(that.getTime())));
81 }
82
83 TCommand that = (TCommand) rhs;
84 return (cmd.equals(that));
85 }
86
e826b451
KL
87 /**
88 * Hashcode uses all fields in equals().
89 *
90 * @return the hash
91 */
92 @Override
93 public int hashCode() {
94 int A = 13;
95 int B = 23;
96 int hash = A;
97 hash = (B * hash) + getTime().hashCode();
98 hash = (B * hash) + cmd.hashCode();
99 return hash;
100 }
101
df8de03f 102 /**
7b5261bc
KL
103 * Make human-readable description of this TCommandEvent.
104 *
105 * @return displayable String
df8de03f
KL
106 */
107 @Override
b299e69c 108 public String toString() {
7b5261bc 109 return String.format("CommandEvent: %s", cmd.toString());
df8de03f
KL
110 }
111}