|
What this is
Other links
The source code
/*
** AWT Widget Package.
** Copyright (c) 1997 by Timothy Gerard Endres
**
** This program is free software.
**
** You may redistribute it and/or modify it under the terms of the GNU
** General Public License as published by the Free Software Foundation.
** Version 2 of the license should be included with this distribution in
** the file LICENSE, as well as License.html. If the license is not
** included with this distribution, you may find a copy at the FSF web
** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.
**
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
** REDISTRIBUTION OF THIS SOFTWARE.
**
*/
package com.ice.widget;
import java.awt.*;
import java.awt.event.*;
/**
* Shows an image in a canvas component.
* When clicked, will send "IMAGECLICK" action to listeners.
* Supports a popup menu on the image.
*
* @version $Revision: 1.2 $
* @author Timothy Gerard Endres,
* <a href="mailto:time@ice.com">time@ice.com.
*/
public class
ImageCanvas extends Canvas
implements MouseListener, MouseMotionListener
{
static public final String RCS_ID = "$Id: ImageCanvas.java,v 1.2 1998/02/21 23:55:27 time Exp $";
static public final String RCS_REV = "$Revision: 1.2 $";
protected Image image;
protected int width, height;
protected Dimension mDim, pDim;
protected boolean fitImage;
protected boolean isPopupEvent;
protected PopupMenu popup;
protected ActionListener aListener;
protected String actionCommand;
public
ImageCanvas( Image image )
{
super();
this.popup = null;
this.fitImage = true;
this.actionCommand = "IMAGECLICK";
this.setImage( image );
this.addMouseListener( this );
this.repaint();
}
public void
setActionCommand( String command )
{
this.actionCommand = command;
}
public String
setActionCommand()
{
return this.actionCommand;
}
public void
setPopupMenu( PopupMenu popup )
{
this.popup = popup;
}
public boolean
getFitImage()
{
return this.fitImage;
}
public void
setFitImage( boolean fitImage )
{
this.fitImage = fitImage;
}
public void
setImage( Image image )
{
this.image = image;
if ( this.image != null )
{
this.prepareImage( image, this );
MediaTracker tracker = new MediaTracker( this );
tracker.addImage( this.image, 0 );
try { tracker.waitForAll(); }
catch ( InterruptedException ex )
{
System.err.println
( "ImageCanvas: media tracker interrupted!\n"
+ " " + ex.getMessage() );
}
this.computeDimensions();
}
}
public synchronized void
paint( Graphics g )
{
if ( ! this.getParent().isEnabled() )
return;
Dimension d = this.getSize();
if ( this.image != null )
{
int y = 0;
int x = 0;
if ( this.fitImage )
{
Color bg = this.getBackground();
int width = this.image.getWidth( this );
int height = this.image.getHeight( this );
double wPct = 0.0;
if ( width > d.width )
{
wPct = ( (double)( width - d.width )
/ (double)width );
}
double hPct = 0.0;
if ( height > d.height )
{
hPct = ( (double)( height - d.height )
/ (double)height );
}
double pct = 0.0;
if ( hPct > 0.0 || wPct > 0.0 )
{
pct = (hPct > wPct) ? hPct : wPct;
width -= (pct * width);
height -= (pct * height);
}
g.drawImage
( this.image, x, y,
width, height, bg, null );
}
else
{
g.drawImage( this.image, x, y, null );
}
}
}
public boolean
isFocusTraversable()
{
return false;
}
public void
computeDimensions()
{
int width = this.image.getWidth( this );
int height = this.image.getHeight( this );
this.mDim = new Dimension( width, height );
this.pDim =
new Dimension
( this.mDim.width, this.mDim.height );
}
public Dimension
getPreferredSize()
{
return this.pDim;
}
public Dimension
getMinimumSize()
{
return this.mDim;
}
public void
addNotify()
{
super.addNotify();
this.computeDimensions();
}
protected void
processActionEvent( ActionEvent event )
{
if ( this.aListener != null)
{
this.aListener.actionPerformed( event );
}
}
/**
* Adds the specified action listener to receive action events
* from this button.
* @param l the action listener
*/
public void
addActionListener( ActionListener listener )
{
this.aListener =
AWTEventMulticaster.add( this.aListener, listener );
}
/**
* Removes the specified action listener so it no longer receives
* action events from this button.
* @param l the action listener
*/
public void
removeActionListener( ActionListener listener )
{
this.aListener =
AWTEventMulticaster.remove( this.aListener, listener );
}
public void
mousePressed( MouseEvent event )
{
}
public void
mouseReleased( MouseEvent event )
{
if ( event.isPopupTrigger() )
{
this.isPopupEvent = true;
if ( this.popup != null )
this.popup.show
( this, event.getX(), event.getY() );
}
}
public void
mouseClicked( MouseEvent event )
{
if ( this.isPopupEvent )
{
this.isPopupEvent = false;
return;
}
ActionEvent aEvent = new ActionEvent
( this, ActionEvent.ACTION_PERFORMED, this.actionCommand );
this.processActionEvent( aEvent );
}
public void
mouseEntered( MouseEvent event )
{
}
public void
mouseExited( MouseEvent event )
{
}
public void
mouseDragged( MouseEvent event )
{
}
public void
mouseMoved( MouseEvent event )
{
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.