view src/samer/core_/util/swing/VCanvas.java @ 0:bf79fb79ee13

Initial Mercurial check in.
author samer
date Tue, 17 Jan 2012 17:50:20 +0000
parents
children
line wrap: on
line source
/*
 *	Copyright (c) 2000, Samer Abdallah, King's College London.
 *	All rights reserved.
 *
 *	This software is provided AS iS and WITHOUT ANY WARRANTY; 
 *	without even the implied warranty of MERCHANTABILITY or 
 *	FITNESS FOR A PARTICULAR PURPOSE.
 */

package	samer.core.util.swing;
import	samer.core.util.*;
import	samer.core.*;
import	javax.swing.*;
import	java.awt.*;
import	java.awt.event.*;

/** Basically a Viewer implemented as a bare JComponent.
	Calls attach() on addNotify(). Also calls realized();
	Calls sized() when sized.
	Keeps track of its own width and height.
	Can display popup menu.
 */

public class VCanvas extends JComponent implements Viewer
{
	public int		 width, height;

	public VCanvas()
	{
		addMouseListener(MouseRetarget.listener);
		addComponentListener( new ComponentAdapter() {
			public void componentResized(ComponentEvent e) {
				width=getWidth(); height=getHeight();
				sized();
			}
		} );

		setBackground(Shell.getColor("background",null));
		setForeground(Shell.getColor("foreground",null));
		setOpaque(true);
	}

	protected void realized() {}
	protected void sized() {}

	protected void paintComponent(Graphics g) { clear(g); }
	public void clear(Graphics g) {
		g.setColor(getBackground());
		g.fillRect(0,0,width,height);
	}

	public void removeNotify() { detach(); super.removeNotify(); }
	public void addNotify() {
		super.addNotify();
		width=getWidth(); height=getHeight();
		attach(); realized(); // ??
	}

	public Dimension getMinimumSize() { return new Dimension(0,0); }

	// ....... MenuAnchor bits .......................

	public Component	getComponent() { return this; }
	public void	attach() {} 
	public void	detach() {}

	// private javax.swing.JPopupMenu	menu=null;
	private DynamicPopupHandler	popup=null;
	
	public void	exposeCommands(Agent agent) {
		popup=MenuBuilder.showCommands(agent,this,popup);
		// menu=MenuBuilder.showCommands(agent,getComponent(),menu);
	}
}