* 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.
*
* @return the TCommand
*/
- public final TCommand getCmd() {
+ public TCommand getCmd() {
return cmd;
}
this.cmd = cmd;
}
+ /**
+ * 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 final String toString() {
+ public String toString() {
return String.format("CommandEvent: %s", cmd.toString());
}
}