001 /* 002 * @(#)ToolButton.java 003 * 004 * Project: JHotdraw - a GUI framework for technical drawings 005 * http://www.jhotdraw.org 006 * http://jhotdraw.sourceforge.net 007 * Copyright: © by the original author(s) and all contributors 008 * License: Lesser GNU Public License (LGPL) 009 * http://www.opensource.org/licenses/lgpl-license.html 010 */ 011 012 package org.objectweb.jac.ide.diagrams; 013 014 import CH.ifa.draw.framework.Tool; 015 import CH.ifa.draw.framework.ToolListener; 016 import CH.ifa.draw.util.PaletteButton; 017 import CH.ifa.draw.util.PaletteListener; 018 import java.util.EventObject; 019 import javax.swing.BorderFactory; 020 import javax.swing.ImageIcon; 021 import javax.swing.border.BevelBorder; 022 import javax.swing.border.Border; 023 024 /** 025 * A PaletteButton that is associated with a tool. 026 * 027 * @see Tool 028 * 029 * @version <$CURRENT_VERSION$> 030 */ 031 public class ToolButton extends PaletteButton implements ToolListener { 032 033 private String name; 034 private Tool tool; 035 036 public ToolButton(PaletteListener listener, ImageIcon icon, String name, Tool tool) { 037 super(listener); 038 tool.addToolListener(this); 039 setEnabled(tool.isUsable()); 040 041 this.tool = tool; 042 this.name = name; 043 044 setIcon(icon); 045 setToolTipText(name); 046 setEnabled(true); 047 setBorder(normalBorder); 048 } 049 050 Border normalBorder = 051 BorderFactory.createCompoundBorder( 052 BorderFactory.createBevelBorder(BevelBorder.RAISED), 053 BorderFactory.createEmptyBorder(2,2,2,2)); 054 Border pressedBorder = 055 BorderFactory.createCompoundBorder( 056 BorderFactory.createBevelBorder(BevelBorder.LOWERED), 057 BorderFactory.createEmptyBorder(2,2,2,2)); 058 059 public Tool getTool() { 060 return tool; 061 } 062 063 public String getName() { 064 return name; 065 } 066 067 public Object attributeValue() { 068 return getTool(); 069 } 070 071 public void toolUsable(EventObject toolEvent) { 072 setEnabled(true); 073 } 074 075 public void toolUnusable(EventObject toolEvent) { 076 setEnabled(false); 077 setSelected(false); 078 } 079 080 public void toolActivated(EventObject toolEvent) { 081 setBorder(pressedBorder); 082 } 083 084 public void toolDeactivated(EventObject toolEvent) { 085 setBorder(normalBorder); 086 } 087 088 public void toolEnabled(EventObject toolEvent) { 089 setEnabled(true); 090 } 091 092 public void toolDisabled(EventObject toolEvent) { 093 setEnabled(false); 094 } 095 }