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

echopointng.ImageMap Maven / Gradle / Ivy

Go to download

Echo2 bundled with Echo2_Extras, Echo2_FileTransfer and echopointing and various improvements/bugfixes

There is a newer version: 2.0.4
Show newest version
package echopointng;
/* 
 * This file is part of the Echo Point Project.  This project is a collection
 * of Components that have extended the Echo Web Application Framework.
 *
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (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.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 */
import java.io.Serializable;
import java.util.EventListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import echopointng.able.Borderable;
import echopointng.able.MouseCursorable;

import nextapp.echo2.app.ImageReference;
import nextapp.echo2.app.Style;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;

/**
 *
 * The ImageMap class provides a Component
 * that allows a user to click on region within a provided region.  
 * 
* A series of ImageMap.Coords are provided that * indicate what areas on the region should produce an * ActionEvent. *
* This ImageMap.Coords are stored in a map keyed by * by their ActionCommand String. This means that their can be at * most one set of coordinates for a given ActionCommand. *
* @author Brad Baker */ public class ImageMap extends AbleComponent { /** Property Change Names */ public static final String PROPERTY_IMAGE = "image"; public static final Style DEFAULT_STYLE; static { MutableStyleEx style = new MutableStyleEx(); style.setProperty(Borderable.PROPERTY_BORDER, new BorderEx(0,null,BorderEx.STYLE_NONE)); style.setProperty(MouseCursorable.PROPERTY_MOUSE_CURSOR, MouseCursorable.CURSOR_POINTER); DEFAULT_STYLE = style; } // our list of co-ordinnates private Map coordMap = null; /** * The Coords object is a set of co-ordinates and an ActionCommand * String. * * The co-ordinates can be used to represent a circle, rectangle or * polygon. The contructor used will determine type of Coords object * is created */ public static class Coords implements Serializable { public static final int RECTANGLE = 0; public static final int CIRCLE = 1; public static final int POLYGON = 2; private int type; private int top; private int bottom; private int left; private int right; private int x; private int y; private int radius; private int[] polyCoords; private String actionCommand = null; private String altText = null; /** * Creates a new Rectangular Coords object with the given dimensions * with no ActionCommand string. * * @param left The value of the left co-ord. * @param top The value of the top co-ord. * @param right The value of the right co-ord. * @param bottom The value of the bottom co-ord. */ public Coords(int left, int top, int right, int bottom) { this(left, top, right, bottom, null); } /** * Creates a new Rectangular Coords object with the given dimensions * with the given actionCommand String. * * @param left The value of the left co-ord. * @param top The value of the top co-ord. * @param right The value of the right co-ord. * @param bottom The value of the bottom co-ord. */ public Coords(int left, int top, int right, int bottom, String actionCommand) { super(); this.type = RECTANGLE; this.left = left; this.top = top; this.right = right; this.bottom = bottom; this.actionCommand = actionCommand; } /** * Creates a new Circular Coords object with the given dimensions * with no ActionCommand string. * * @param x The value of the x co-ord. * @param y The value of the y co-ord. * @param radius The value of the radius co-ord. */ public Coords(int x, int y, int radius) { this(x, y, radius, null); } /** * Creates a new Circular Coords object with the given dimensions * with the given ActionCommand string. * * @param x The value of the x co-ord. * @param y The value of the y co-ord. * @param radius The value of the radius co-ord. * @param actionCommand The values of the ActionCommand */ public Coords(int x, int y, int radius, String actionCommand) { super(); this.type = CIRCLE; this.x = x; this.y = y; this.radius = radius; this.actionCommand = actionCommand; } /** * Creates a new Polygon Coords object with the given dimensions * with no ActionCommand string. * * @param polyCoords An integer array of co-ordinates */ public Coords(int[] polyCoords) { this(polyCoords, null); } /** * Creates a new Polygon Coords object with the given dimensions * with the given ActionCommand string. * * @param polyCoords An integer array of co-ordinates * @param actionCommand The values of the ActionCommand */ public Coords(int[] polyCoords, String actionCommand) { super(); this.type = POLYGON; this.polyCoords = polyCoords; this.actionCommand = actionCommand; } /** * Returns the value of the ActionCommand. * * @return The value of the ActionCommand. */ public String getActionCommand() { return actionCommand; } /** * Returns the value of the bottom co-ord. * * @return The value of the bottom co-ord. */ public int getBottom() { return bottom; } /** * Returns the value of the left co-ord. * * @return The value of the left co-ord. */ public int getLeft() { return left; } /** * Returns the value of the right co-ord. * * @return The value of the right co-ord. */ public int getRight() { return right; } /** * Returns the value of the top co-ord. * * @return The value of the top co-ord. */ public int getTop() { return top; } /** * Returns the value of the x co-ord. * * @return The value of the x co-ord. */ public int getX() { return x; } /** * Returns the value of the y co-ord. * * @return The value of the y co-ord. */ public int getY() { return y; } /** * Returns the value of the radius co-ord. * * @return The value of the radius co-ord. */ public int getRadius() { return radius; } /** * Returns the array of the polygon co-ords. * * @return The array of the polygon co-ords. */ public int[] getPolygonCoords() { return polyCoords; } /** * Returns the type co-ords. * * This can be : *
    *
  • RECTANGLE
  • *
  • CIRCLE
  • *
  • POLYGON
  • *
* * @return The type co-ords. */ public int getType() { return type; } /** * Sets the action command of the co-ords */ public void setActionCommand(String newActionCommand) { actionCommand = newActionCommand; } /** * @return Returns the alternate text for a given co-ord. */ public String getAltText() { return altText; } /** * Sets the alternate text for a given co-ord * @param altText - the alternate text for a given co-ord. */ public void setAltText(String altText) { this.altText = altText; } } /** * Constructs a ImageMap with nothing in it * */ public ImageMap() { this(null); } /** * Constructs an ImageMap using the provided image. * */ public ImageMap(ImageReference image) { super(); this.coordMap = new HashMap(); setImage(image); } /** * Adds an ActionListener. * * @param l The ActionListener to be added. */ public void addActionListener(ActionListener l) { getEventListenerList().addListener(ActionListener.class, l); } /** * Adds a set of co-ordinate's to the ImageMap */ public void addCoord(ImageMap.Coords coord) { coordMap.put(coord.getActionCommand(), coord); } /** * Adds a set of co-ordinate's to the ImageMap and * sets the co-ordinate's action command at the same time. */ public void addCoord(ImageMap.Coords coord, String actionCommand) { coord.setActionCommand(actionCommand); coordMap.put(coord.getActionCommand(), coord); } /** * @see nextapp.echo2.app.Component#processInput(java.lang.String, java.lang.Object) */ public void processInput(String inputName, Object inputValue) { fireActionPerformed(new ActionEvent(this,inputName)); } /** * Notifies all listeners that have registered for this event type. * * @param e The ActionEvent to send. */ public void fireActionPerformed(ActionEvent e) { EventListener[] listeners = getEventListenerList().getListeners(ActionListener.class); for (int index = 0; index < listeners.length; ++index) { ((ActionListener) listeners[index]).actionPerformed(e); } } /** * Returns the set of co-ordinates in the ImageMap */ public Set getCoords() { return coordMap.entrySet(); } /** * @return The ImageReference of the ImageMap. */ public ImageReference getImage() { return (ImageReference) getProperty(PROPERTY_IMAGE); } /** * Removes an ActionListener. * * @param l The ActionListener to be removed. */ public void removeActionListener(ActionListener l) { getEventListenerList().removeListener(ActionListener.class, l); } /** * Sets the ImageReference of the ImageMap. */ public void setImage(ImageReference newValue) { setProperty(PROPERTY_IMAGE,newValue); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy