/*
* Copyright 2000-2016 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.shared;
import java.io.Serializable;
/**
* Helper class to store and transfer mouse event details.
*/
public class MouseEventDetails implements Serializable {
/**
* @deprecated use {@link MouseButton#LEFT} instead.
*/
@Deprecated
public static final MouseButton BUTTON_LEFT = MouseButton.LEFT;
/**
* @deprecated use {@link MouseButton#MIDDLE} instead.
*/
@Deprecated
public static final MouseButton BUTTON_MIDDLE = MouseButton.MIDDLE;
/**
* @deprecated use {@link MouseButton#RIGHT} instead.
*/
@Deprecated
public static final MouseButton BUTTON_RIGHT = MouseButton.RIGHT;
/**
* Constants for mouse buttons.
*
* @author Vaadin Ltd
* @version @VERSION@
* @since 7.0
*
*/
public enum MouseButton {
LEFT("left"), RIGHT("right"), MIDDLE("middle");
private String name;
private MouseButton(String name) {
this.name = name;
}
/**
* Returns a human readable text representing the button
*
* @return
*/
public String getName() {
return name;
}
}
private static final char DELIM = ',';
// From com.google.gwt.user.client.Event
private static final int ONDBLCLICK = 0x00002;
private MouseButton button;
private int clientX;
private int clientY;
private boolean altKey;
private boolean ctrlKey;
private boolean metaKey;
private boolean shiftKey;
private int type;
private int relativeX = -1;
private int relativeY = -1;
public MouseButton getButton() {
return button;
}
public int getClientX() {
return clientX;
}
public int getClientY() {
return clientY;
}
public boolean isAltKey() {
return altKey;
}
public boolean isCtrlKey() {
return ctrlKey;
}
public boolean isMetaKey() {
return metaKey;
}
public boolean isShiftKey() {
return shiftKey;
}
public int getRelativeX() {
return relativeX;
}
public int getRelativeY() {
return relativeY;
}
public void setButton(MouseButton button) {
this.button = button;
}
public void setClientX(int clientX) {
this.clientX = clientX;
}
public void setClientY(int clientY) {
this.clientY = clientY;
}
public void setAltKey(boolean altKey) {
this.altKey = altKey;
}
public void setCtrlKey(boolean ctrlKey) {
this.ctrlKey = ctrlKey;
}
public void setMetaKey(boolean metaKey) {
this.metaKey = metaKey;
}
public void setShiftKey(boolean shiftKey) {
this.shiftKey = shiftKey;
}
public void setType(int type) {
this.type = type;
}
public void setRelativeX(int relativeX) {
this.relativeX = relativeX;
}
public void setRelativeY(int relativeY) {
this.relativeY = relativeY;
}
public MouseEventDetails() {
}
@Override
public String toString() {
return serialize();
}
public String serialize() {
return button.toString() + DELIM + clientX + DELIM + clientY + DELIM
+ altKey + DELIM + ctrlKey + DELIM + metaKey + DELIM + shiftKey
+ DELIM + type + DELIM + relativeX + DELIM + relativeY;
}
public static MouseEventDetails deSerialize(String serializedString) {
MouseEventDetails instance = new MouseEventDetails();
String[] fields = serializedString.split(",");
instance.button = MouseButton.valueOf(fields[0]);
instance.clientX = Integer.parseInt(fields[1]);
instance.clientY = Integer.parseInt(fields[2]);
instance.altKey = Boolean.valueOf(fields[3]).booleanValue();
instance.ctrlKey = Boolean.valueOf(fields[4]).booleanValue();
instance.metaKey = Boolean.valueOf(fields[5]).booleanValue();
instance.shiftKey = Boolean.valueOf(fields[6]).booleanValue();
instance.type = Integer.parseInt(fields[7]);
instance.relativeX = Integer.parseInt(fields[8]);
instance.relativeY = Integer.parseInt(fields[9]);
return instance;
}
public String getButtonName() {
return button == null ? "" : button.getName();
}
public int getType() {
return type;
}
public boolean isDoubleClick() {
return type == ONDBLCLICK;
}
}