LICENSE CHANGED TO MIT
[nikiroo-utils.git] / src / jexer / event / TCommandEvent.java
1 /*
2 * Jexer - Java Text User Interface
3 *
4 * The MIT License (MIT)
5 *
6 * Copyright (C) 2016 Kevin Lamonte
7 *
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:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
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.
25 *
26 * @author Kevin Lamonte [kevin.lamonte@gmail.com]
27 * @version 1
28 */
29 package jexer.event;
30
31 import jexer.TCommand;
32
33 /**
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.
37 */
38 public final class TCommandEvent extends TInputEvent {
39
40 /**
41 * Command dispatched.
42 */
43 private TCommand cmd;
44
45 /**
46 * Get TCommand.
47 *
48 * @return the TCommand
49 */
50 public TCommand getCmd() {
51 return cmd;
52 }
53
54 /**
55 * Public contructor.
56 *
57 * @param cmd the TCommand dispatched
58 */
59 public TCommandEvent(final TCommand cmd) {
60 this.cmd = cmd;
61 }
62
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
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
102 /**
103 * Make human-readable description of this TCommandEvent.
104 *
105 * @return displayable String
106 */
107 @Override
108 public String toString() {
109 return String.format("CommandEvent: %s", cmd.toString());
110 }
111 }