blob: f64eeea7bf3b4c4fa03d871e9b61faee086bcc80 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Angelo Zerr and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.e4.ui.css.swt.helpers;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.widgets.Display;
import org.w3c.dom.css.CSSPrimitiveValue;
import org.w3c.dom.css.CSSValue;
public class CSSSWTCursorHelper {
/**
* @see http://www.w3schools.com/css/pr_class_cursor.asp
*/
public static Cursor getSWTCursor(CSSValue value, Display display) {
if (!(value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE))
return null;
int i = getSWTCursorId((CSSPrimitiveValue) value);
if (i == SWT.NONE)
return null;
Cursor cursor = new Cursor(display, i);
return cursor;
}
public static String getCSSCursor(Cursor cursor) {
if (cursor == null)
return "auto";
// switch (cursor.getType()) {
// case Cursor.DEFAULT_CURSOR:
// // The default cursor (often an arrow)
// return "default";
// case Cursor.CROSSHAIR_CURSOR:
// // The cursor render as a crosshair
// return "crosshair";
// case Cursor.HAND_CURSOR:
// // The cursor render as a pointer (a hand) that indicates a link
// return "pointer";
// case Cursor.MOVE_CURSOR:
// // The cursor indicates something that should be moved
// return "move";
// case Cursor.E_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved
// // right (east)
// return "e-resize";
// case Cursor.NE_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved up
// // and right (north/east)
// return "ne-resize";
// case Cursor.NW_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved up
// // and left (north/west)
// return "nw-resize";
// case Cursor.N_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved up
// // (north)
// return "n-resize";
// case Cursor.SE_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved
// // down and right (south/east)
// return "se-resize";
// case Cursor.SW_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved
// // down and left (south/west)
// return "sw-resize";
// case Cursor.S_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved
// // down (south)
// return "s-resize";
// case Cursor.W_RESIZE_CURSOR:
// // The cursor indicates that an edge of a box is to be moved
// // left (west)
// return "w-resize";
// case Cursor.TEXT_CURSOR:
// // The cursor indicates text
// return "text";
// case Cursor.WAIT_CURSOR:
// // The cursor indicates that the program is busy (often a watch
// // or an hourglass)
// return "wait";
// // TODO : manage help cursor
// }
return "auto";
}
public static int getSWTCursorId(CSSPrimitiveValue value) {
String cursorName = value.getStringValue();
if ("default".equals(cursorName))
// The default cursor (often an arrow)
return SWT.NONE;
if ("auto".equals(cursorName))
// TODO : manage auto
// Default. The browser sets a cursor
return SWT.NONE;
if ("crosshair".equals(cursorName))
// The cursor render as a crosshair
return SWT.CURSOR_CROSS;
if ("pointer".equals(cursorName))
// The cursor render as a pointer (a hand) that indicates a link
return SWT.CURSOR_HAND;
if ("move".equals(cursorName))
// The cursor indicates something that should be moved
return SWT.CURSOR_UPARROW;
if ("e-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved right
// (east)
return SWT.CURSOR_SIZEE;
if ("ne-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved up and
// right (north/east)
return SWT.CURSOR_SIZENE;
if ("nw-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved up and
// left (north/west)
return SWT.CURSOR_SIZENW;
if ("n-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved up
// (north)
return SWT.CURSOR_SIZEN;
if ("se-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved down
// and right (south/east)
return SWT.CURSOR_SIZESE;
if ("sw-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved down
// and left (south/west)
return SWT.CURSOR_SIZESW;
if ("s-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved down
// (south)
return SWT.CURSOR_SIZES;
if ("w-resize".equals(cursorName))
// The cursor indicates that an edge of a box is to be moved left
// (west)
return SWT.CURSOR_SIZEW;
if ("text".equals(cursorName))
// The cursor indicates text
return SWT.CURSOR_UPARROW;
if ("wait".equals(cursorName))
// The cursor indicates that the program is busy (often a watch or
// an hourglass)
return SWT.CURSOR_WAIT;
if ("help".equals(cursorName))
// The cursor indicates that help is available (often a question
// mark or a balloon)
return SWT.CURSOR_HELP;
return SWT.NONE;
}
}