components/visual-panels/core/src/java/vpanels/panel/com/oracle/solaris/vp/panel/swing/timezone/LocationPicker.java
changeset 3553 f1d133b09a8c
parent 3552 077ebe3d0d24
child 3554 ef58713bafc4
--- a/components/visual-panels/core/src/java/vpanels/panel/com/oracle/solaris/vp/panel/swing/timezone/LocationPicker.java	Tue Dec 16 05:53:51 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
- */
-
-package com.oracle.solaris.vp.panel.swing.timezone;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.geom.Point2D;
-import java.util.*;
-import javax.swing.*;
-import com.oracle.solaris.vp.util.swing.ScaledIcon;
-
-public class LocationPicker<T> extends JLabel
-    implements MouseListener, MouseMotionListener
-{
-    static final int LOC_OFFSET = 2;
-    static final int LOC_SIZE = LOC_OFFSET * 2 + 1;
-
-    /**
-     * Maps a normalized 2D location (0..1, 0..1) to a pixel location
-     * using the provided image dimensions.
-     *
-     * @param dim the dimension of the image to map into
-     * @param point the normalized 2D location
-     * @return the discrete pixel location within the image
-     */
-    private static Point normToPixel(Dimension dim, Point2D point)
-    {
-	double width = dim.getWidth();
-	double height = dim.getHeight();
-	return new Point((int)(width * point.getX()),
-	    (int)(height * point.getY()));
-    }
-
-    private class LocationLabel extends JLabel
-    {
-	private final T object_;
-	private final String label_;
-	private final Point2D center_;
-	private Point pixelCenter_;
-	private boolean highlit_;
-	private boolean selected_;
-
-	LocationLabel(T object)
-	{
-	    object_ = object;
-	    label_ = mapper_.getLabel(object);
-	    center_ = mapper_.map(object);
-
-	    setSize(LOC_SIZE, LOC_SIZE);
-	}
-
-	@Override
-	public void paint(Graphics g)
-	{
-	    Graphics2D g2 = (Graphics2D)g;
-	    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-		RenderingHints.VALUE_ANTIALIAS_ON);
-
-	    g.setColor(Color.black);
-	    g.fillRect(1, 1, LOC_SIZE - 2, LOC_SIZE - 2);
-	    g.setColor(selected_ ?
-		Color.yellow : highlit_ ? Color.cyan : Color.red.darker());
-	    g.fillRect(0, 0, LOC_SIZE - 2, LOC_SIZE - 2);
-	}
-
-	Point2D getCenter()
-	{
-	    return (center_);
-	}
-
-	Point getPixelCenter()
-	{
-	    return (pixelCenter_);
-	}
-
-	void setPixelCenter(Point pixelCenter)
-	{
-	    pixelCenter_ = pixelCenter;
-	    setLocation(pixelCenter.x - LOC_OFFSET, pixelCenter.y - LOC_OFFSET);
-	}
-
-	T getObject()
-	{
-	    return (object_);
-	}
-
-	String getToolTip()
-	{
-	    return (label_);
-	}
-
-	void setHighlit(boolean highlit)
-	{
-	    highlit_ = highlit;
-	    repaint(getVisibleRect());
-	}
-
-	void setSelected(boolean selected)
-	{
-	    selected_ = selected;
-	    repaint(getVisibleRect());
-	}
-    }
-
-    private class LocationLayout implements LayoutManager
-    {
-	public void addLayoutComponent(String name, Component comp)
-	{
-	}
-
-	public void removeLayoutComponent(Component comp)
-	{
-	}
-
-	public Dimension preferredLayoutSize(Container parent)
-	{
-	    return (new Dimension(0, 0));
-	}
-
-	public Dimension minimumLayoutSize(Container parent)
-	{
-	    return (new Dimension(0, 0));
-	}
-
-	public void layoutContainer(Container parent)
-	{
-	    int nComps = parent.getComponentCount();
-
-	    Dimension size = parent.getSize();
-	    for (int i = 0; i < nComps; i++) {
-		Component c = parent.getComponent(i);
-		if (!c.isVisible())
-		    continue;
-		LocationLabel label = (LocationLabel)c;
-		label.setPixelCenter(normToPixel(size, label.getCenter()));
-	    }
-	}
-    }
-
-    private LocationMapper<T> mapper_;
-    private Map<T, LocationLabel> objects_ = new HashMap<T, LocationLabel>();
-    private LocationLabel current_;
-    private LocationLabel selection_;
-
-    private LocationSelectionListeners<T> selectionListeners_ =
-	new LocationSelectionListeners<T>();
-
-    private LocationSelectionListeners<T> highlightListeners_ =
-	new LocationSelectionListeners<T>();
-
-    private ScaledIcon icon_;
-
-    //
-    // Constructors
-    //
-
-    public LocationPicker(Icon background, LocationMapper<T> mapper) {
-
-	icon_ = new ScaledIcon(background);
-	setIcon(icon_);
-	mapper_ = mapper;
-	current_ = null;
-
-	setLayout(new LocationLayout());
-
-	addMouseMotionListener(this);
-	addMouseListener(this);
-    }
-
-    @Override
-    public Dimension getPreferredSize() {
-	if (isPreferredSizeSet()) {
-	    return super.getPreferredSize();
-	}
-
-	Insets insets = getInsets();
-	Icon icon = icon_.getIcon();
-	int width = icon.getIconWidth() + insets.left + insets.right;
-	int height = icon.getIconHeight() + insets.top + insets.bottom;
-
-	return new Dimension(width, height);
-    }
-
-    @Override
-    public void setBounds(int x, int y, int width, int height)
-    {
-	super.setBounds(x, y, width, height);
-	icon_.setIconWidth(width);
-	icon_.setIconHeight(height);
-    }
-
-    /*
-     * MouseListener methods
-     */
-
-    public void mouseClicked(MouseEvent e)
-    {
-	/* Theoretically, motion could be lost or not occur. */
-	mouseMoved(e);
-	setSelection(current_);
-    }
-
-    public void mousePressed(MouseEvent e)
-    {
-	return;
-    }
-
-    public void mouseReleased(MouseEvent e)
-    {
-	return;
-    }
-
-    public void mouseEntered(MouseEvent e)
-    {
-	return;
-    }
-
-    public void mouseExited(MouseEvent e)
-    {
-	return;
-    }
-
-    /*
-     * MouseMotionListener methods
-     */
-
-    public void mouseDragged(MouseEvent e)
-    {
-	return;
-    }
-
-    public void mouseMoved(MouseEvent e)
-    {
-	double mindist = Double.MAX_VALUE;
-	LocationLabel closest = null;
-
-	/*
-	 * Simple but sufficient.
-	 */
-	Point target = e.getPoint();
-	for (LocationLabel ll : objects_.values()) {
-	    double dist = target.distanceSq(ll.getPixelCenter());
-	    if (dist < mindist) {
-		mindist = dist;
-		closest = ll;
-	    }
-	}
-	setCurrent(closest);
-    }
-
-    /*
-     * LocationPicker methods
-     */
-
-    private void sendEvent(LocationSelectionListeners<T> listeners,
-	LocationSelectionEvent.Type type, LocationLabel location)
-    {
-	LocationSelectionEvent<T> event =
-	    new LocationSelectionEvent<T>(this, type,
-	    location == null ? null : location.getObject());
-
-	listeners.locationChanged(event);
-    }
-
-    private void setCurrent(LocationLabel newloc)
-    {
-	if (newloc != current_) {
-	    if (current_ != null)
-		current_.setHighlit(false);
-	    if (newloc != null) {
-		newloc.setHighlit(true);
-		setToolTipText(newloc.getToolTip());
-	    } else {
-		setToolTipText(null);
-	    }
-
-	    current_ = newloc;
-
-	    sendEvent(highlightListeners_,
-		LocationSelectionEvent.Type.HIGHLIGHT, selection_);
-	}
-    }
-
-    private void setSelection(LocationLabel newloc)
-    {
-	if (newloc != selection_) {
-	    if (selection_ != null)
-		selection_.setSelected(false);
-	    if (newloc != null)
-		newloc.setSelected(true);
-
-	    selection_ = newloc;
-
-	    sendEvent(selectionListeners_,
-		LocationSelectionEvent.Type.SELECTION, selection_);
-	}
-    }
-
-    public void setSelection(T object)
-    {
-	LocationLabel ll = objects_.get(object);
-	if (ll == null && object != null)
-	    throw (new IllegalArgumentException("Object not in display"));
-	setSelection(ll);
-    }
-
-    public T getSelection()
-    {
-	return ((selection_ == null) ? null : selection_.getObject());
-    }
-
-    public void addSelectionListener(LocationSelectionListener<T> listener)
-    {
-	selectionListeners_.add(listener);
-    }
-
-    public boolean removeSelectionListener(
-	LocationSelectionListener<T> listener)
-    {
-	return selectionListeners_.remove(listener);
-    }
-
-    public void addHighlightListener(LocationSelectionListener<T> listener)
-    {
-	highlightListeners_.add(listener);
-    }
-
-    public boolean removeHighlightListener(
-	LocationSelectionListener<T> listener)
-    {
-	return highlightListeners_.remove(listener);
-    }
-
-    public void setObjects(Set<T> objects) {
-	if (!objects_.isEmpty()) {
-	    for (LocationLabel label : objects_.values())
-		remove(label);
-	    objects_.clear();
-	}
-
-	for (T o : objects) {
-	    LocationLabel l = new LocationLabel(o);
-	    add(l);
-	    objects_.put(o, l);
-	}
-    }
-}