All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zkoss.zk.ui.event.ClientInfoEvent Maven / Gradle / Ivy

There is a newer version: 10.0.0-jakarta
Show newest version
/* ClientInfoEvent.java

	Purpose:
		
	Description:
		
	History:
		Tue Jul 25 16:34:05     2006, Created by tomyeh

Copyright (C) 2006 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
	This program is distributed under LGPL Version 2.1 in the hope that
	it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.zk.ui.event;

import java.util.TimeZone;
import java.util.List;
import java.util.Map;

import org.zkoss.util.TimeZones;

import org.zkoss.zk.au.AuRequest;

/**
 * The onClientInfo event is used to notify the client's information, such
 * as time zone and screen resolutions.
 *
 * 

This event is sent if and only if it is registered to a root component. * *

Note: the information returned by this event is not stored in the server. * Thus, you might want to store in the session's attribute * ({@link org.zkoss.zk.ui.Session#setAttribute}). * * @author tomyeh * @see org.zkoss.zk.ui.util.Clients */ public class ClientInfoEvent extends Event { private final TimeZone _timeZone; private final int _scrnwd, _scrnhgh, _colorDepth; private final int _dtwd, _dthgh, _dtx, _dty; private final double _dpr; private final String _orient; /** Converts an AU request to a client-info event. * @since 5.0.0 */ public static final ClientInfoEvent getClientInfoEvent(AuRequest request) { final Map data = request.getData(); //Note: ClientInfoEvent is a broadcast event final List inf = (List)data.get(""); return new ClientInfoEvent(request.getCommand(), getInt(inf, 0), getInt(inf, 1), getInt(inf, 2), getInt(inf, 3), getInt(inf, 4), getInt(inf, 5), getInt(inf, 6), getInt(inf, 7), getDouble(inf, 8), (String)inf.get(9)); } private static final int getInt(List inf, int j) { return ((Integer)inf.get(j)).intValue(); } private static final double getDouble(List inf, int j) { return Double.parseDouble((String)inf.get(j)); } /** Constructs an event to hold the client-info. * *

Note: {@link #getTarget} will return null. It means it is a broadcast * event. * * @param scrnwd the screen's width * @param scrnhgh the screen's height * @param dtwd the desktop's width * @param dthgh the desktop's height * @param dtx the desktop's the left offset * @param dty the desktop's the top offset * @param dpr the device's devicePixelRatio * @param orient the device's orientation */ public ClientInfoEvent(String name, int timeZoneOfs, int scrnwd, int scrnhgh, int colorDepth, int dtwd, int dthgh, int dtx, int dty, double dpr, String orient) { super(name, null); final StringBuffer sb = new StringBuffer(8).append("GMT"); //Note: we have to revert the sign //see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Date:getTimezoneOffset _timeZone = TimeZones.getTimeZone(-timeZoneOfs); _scrnwd = scrnwd; _scrnhgh = scrnhgh; _colorDepth = colorDepth; _dtwd = dtwd; _dthgh = dthgh; _dtx = dtx; _dty = dty; //devicePixelRatio and orientation on tablet device _dpr = dpr; _orient = orient; } /** Returns the time zone of the client. */ public TimeZone getTimeZone() { return _timeZone; } /** Returns the pixel width of the client's screen. */ public int getScreenWidth() { return _scrnwd; } /** Returns the pixel height of the client's screen. */ public int getScreenHeight() { return _scrnhgh; } /** Returns the maximum number of colors the client's screen supports. */ public int getColorDepth() { return _colorDepth; } /** Returns the pixel width of the client's desktop. */ public int getDesktopWidth() { return _dtwd; } /** Returns the pixel height of the client's desktop. */ public int getDesktopHeight() { return _dthgh; } /** The the current horizontal pixel location of the top-left corner of * the document in the window. * It is changed by user when he scrolls the browser. *

To change it programmatically, use {@link org.zkoss.zk.ui.util.Clients#scrollTo}. */ public int getDesktopXOffset() { return _dtx; } /** The the current vertical pixel location of the top-left corner of * the document in the window. * It is changed by user when he scrolls the browser. *

To change it programmatically, use {@link org.zkoss.zk.ui.util.Clients#scrollTo}. */ public int getDesktopYOffset() { return _dty; } /** * Return the current device pixel ratio on tablet/mobile device, * otherwise return 1.0 instead. * @since 6.5.0 */ public double getDevicePixelRatio() { return _dpr; } /** * Return the current orientation. The orientation is portrait when the * media feature height is greater than or equal to media feature width, * otherwise is landscape. * @since 6.5.0 */ public String getOrientation() { return _orient; } /** * Utility to check if the current orientation is portrait on tablet/mobile device. * @since 6.5.0 */ public boolean isPortrait() { return "portrait".equals(_orient); } /** * Utility to check if the current orientation is portrait on tablet/mobile device. * @see #isPortrait() * @since 6.5.0 */ public boolean isVertical() { return isPortrait(); } /** * Utility to check if the current orientation is landscape on tablet/mobile device. * @since 6.5.0 */ public boolean isLandscape(){ return "landscape".equals(_orient); } /** * Utility to check if the current orientation is landscape on tablet/mobile device. * @see #isLandscape() * @since 6.5.0 */ public boolean isHorizontal() { return isLandscape(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy