GWT Java

/*
 * Copyright 2006 Robert Hanson 
 * 
 * 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 org.gwtwidgets.client.util;
public class WindowUtils
{
    public static Location getLocation ()
    {
        Location result = new Location();
        result.setHash(getHash());
        result.setHost(getHost());
        result.setHostName(getHostName());
        result.setHref(getHref());
        result.setPath(getPath());
        result.setPort(getPort());
        result.setProtocol(getProtocol());
        result.setQueryString(getQueryString());
        return result;
    }
    private static native String getQueryString () /*-{
        return $wnd.location.search;
    }-*/;
    private static native String getProtocol () /*-{
        return $wnd.location.protocol;
    }-*/;
    private static native String getPort () /*-{
        return $wnd.location.port;
    }-*/;
    private static native String getPath () /*-{
        return $wnd.location.pathname;
    }-*/;
    private static native String getHref () /*-{
        return $wnd.location.href;
    }-*/;
    private static native String getHostName () /*-{
        return $wnd.location.hostname;
    }-*/;
    private static native String getHost () /*-{
        return $wnd.location.host;
    }-*/;
    private static native String getHash () /*-{
        return $wnd.location.hash;
    }-*/;
    
}
/////////////////////////////////
/*
 * Copyright 2006 Robert Hanson 
 * 
 * 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 org.gwtwidgets.client.util;
import java.util.HashMap;
import java.util.Map;
public class Location
{
    private String hash;
    private String host;
    private String hostName;
    private String href;
    private String path;
    private String port;
    private String protocol;
    private String queryString;
    private HashMap paramMap;
    public String getHash ()
    {
        return hash;
    }
    public String getHost ()
    {
        return host;
    }
    public String getHostName ()
    {
        return hostName;
    }
    public String getHref ()
    {
        return href;
    }
    public String getPath ()
    {
        return path;
    }
    public String getPort ()
    {
        return port;
    }
    public String getProtocol ()
    {
        return protocol;
    }
    public String getQueryString ()
    {
        return queryString;
    }
    protected void setHash (String hash)
    {
        this.hash = hash;
    }
    protected void setHost (String host)
    {
        this.host = host;
    }
    protected void setHostName (String hostName)
    {
        this.hostName = hostName;
    }
    protected void setHref (String href)
    {
        this.href = href;
    }
    protected void setPath (String path)
    {
        this.path = path;
    }
    protected void setPort (String port)
    {
        this.port = port;
    }
    protected void setProtocol (String protocol)
    {
        this.protocol = protocol;
    }
    protected void setQueryString (String queryString)
    {
        this.queryString = queryString;
        paramMap = new HashMap();
        
        if (queryString != null && queryString.length() > 1) {
            String qs = queryString.substring(1);
            String[] kvPairs = qs.split("&");
            for (int i = 0; i < kvPairs.length; i++) {
                String[] kv = kvPairs[i].split("=");
                if (kv.length > 1) {
                    paramMap.put(kv[0], unescape(kv[1]));
                }
                else {
                    paramMap.put(kv[0], "");
                }
            }
        }
    }
    
    private native String unescape (String val) /*-{
        return unescape(val);
    }-*/;
    public String getParameter (String name)
    {
        return (String) paramMap.get(name);
    }
    public Map getParameterMap ()
    {
        return paramMap;
    }
}