Mercurial > hg > jslab
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); } }