blob: 89cbfbadd86a175139e890ee57b2bb2ef32f10dc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.gestures;
import java.util.Arrays;
import org.eclipse.ui.internal.util.Util;
public final class CaptureEvent implements Comparable {
private final static int HASH_FACTOR = 89;
private final static int HASH_INITIAL =
CaptureEvent.class.getName().hashCode();
public static CaptureEvent create(int data, int pen, Point[] points) {
return new CaptureEvent(data, pen, points);
}
private int data;
private int pen;
private Point[] points;
private CaptureEvent(int data, int pen, Point[] points) {
super();
this.data = data;
this.pen = pen;
if (points == null)
throw new NullPointerException();
points = (Point[]) points.clone();
for (int i = 0; i < points.length; i++)
if (points[i] == null)
throw new IllegalArgumentException();
this.points = points;
}
public int compareTo(Object object) {
CaptureEvent castedObject = (CaptureEvent) object;
int compareTo = data - castedObject.data;
if (compareTo == 0) {
compareTo = pen - castedObject.pen;
if (compareTo == 0)
compareTo = Util.compare(points, castedObject.points);
}
return compareTo;
}
public boolean equals(Object object) {
if (!(object instanceof CaptureEvent))
return false;
CaptureEvent castedObject = (CaptureEvent) object;
return data == castedObject.data
&& pen == castedObject.pen
&& Arrays.equals(points, castedObject.points);
}
public int getData() {
return data;
}
public int getPen() {
return pen;
}
public Point[] getPoints() {
return (Point[]) points.clone();
}
public int hashCode() {
int result = HASH_INITIAL;
result = result * HASH_FACTOR + data;
result = result * HASH_FACTOR + pen;
for (int i = 0; i < points.length; i++)
result = result * HASH_FACTOR + points[i].hashCode();
return result;
}
}