org.activityinfo.legacy.shared.reports.model.MapIcon.java Source code

Java tutorial

Introduction

Here is the source code for org.activityinfo.legacy.shared.reports.model.MapIcon.java

Source

package org.activityinfo.legacy.shared.reports.model;

/*
 * #%L
 * ActivityInfo Server
 * %%
 * Copyright (C) 2009 - 2013 UNICEF
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the 
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public 
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-3.0.html>.
 * #L%
 */

import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.safehtml.shared.UriUtils;

import java.io.Serializable;

/**
 * A generic bitmap icon that can be used on the client or server side, in tiled
 * maps as well as SVG maps.
 *
 * @author Alex Bertram
 */
public final class MapIcon implements Serializable, ImageResource {
    private static final int DEFAULT_SIZE = 32;

    private String name;
    private String url;

    // Default to 32x32 sized icons
    private int width = DEFAULT_SIZE;
    private int height = DEFAULT_SIZE;

    private int anchorX;
    private int anchorY;

    public MapIcon() {
    }

    public MapIcon(String name) {
        setName(name);
    }

    public MapIcon(String name, int width, int height, int anchorX, int anchorY) {
        setName(name);
        this.width = width;
        this.height = height;
        this.anchorX = anchorX;
        this.anchorY = anchorY;
    }

    /**
     * @return A short name of the icon
     */
    @Override
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
        url = "mapicons/" + name + ".png";
    }

    /**
     * @return The width of the icon image, in pixels
     */
    @Override
    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    /**
     * @return The height of the icon image, in pixels
     */
    @Override
    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    /**
     * @return The distance from the left side at which the image should be
     * anchored to the point.
     */
    public int getAnchorX() {
        return anchorX;
    }

    public void setAnchorX(int anchorX) {
        this.anchorX = anchorX;
    }

    /**
     * @return The distance from the top at which of the image should be
     * anchored to the point.
     */
    public int getAnchorY() {
        return anchorY;
    }

    public void setAnchorY(int anchorY) {
        this.anchorY = anchorY;
    }

    @Override
    public int getLeft() {
        return 0;
    }

    @Override
    public int getTop() {
        return 0;
    }

    @Override
    public String getURL() {
        return url;
    }

    @Override
    public SafeUri getSafeUri() {
        return UriUtils.fromTrustedString(getURL());
    }

    @Override
    public boolean isAnimated() {
        return false;
    }

    public static MapIcon fromEnum(Icon icon) {
        return new MapIcon(icon.toString());
    }

    public enum Icon {
        Default, Doctor, Fire, Food, Water
    }

}