001 /*
002 * Copyright (c) Holger Pfaff - http://pfaff.ws
003 *
004 * This software maybe used for any purpose provided the
005 * above copyright notice is retained. It is supplied as is.
006 * No warranty expressed or implied - Use at your own risk.
007 */
008
009 import java.awt.*;
010 import java.awt.event.*;
011 import java.util.*;
012
013 /**
014 * (#)Knob.java
015 * @author Holger Pfaff
016 * @version 3.2 19-Mar-2004<br><br>
017 *
018 * Implement a Knob (Button) widget
019 */
020
021 public class Knob extends Caption {
022
023 /**
024 * action command for this knob
025 */
026 protected String acommand = null;
027
028 /**
029 * create an empty knob
030 */
031 public Knob() {
032 this("");
033 }
034
035 /**
036 * create a knob with speified label
037 *
038 * @param v value to add/remove
039 */
040 public Knob(String l) {
041 super(l);
042 insets = new Insets(1,1,1,1); // top left bottom right
043 innerInsets = new Insets(2,3,2,3);
044 borderType = RAISED;
045 borderDepth = 2;
046 mode = CENTER;
047 addMouseListener(this);
048 addMouseMotionListener(this);
049 }
050
051 /**
052 * get current action command
053 *
054 * @return current action command
055 */
056 public String getActionCommand() {
057 return acommand;
058 }
059
060 /**
061 * set current action command
062 *
063 * @param a action command
064 */
065 public void setActionCommand(String a) {
066 acommand = a;
067 }
068
069 /**
070 * what to do on mouse press
071 */
072 public void onPress() {
073 setActive(true);
074 }
075
076 /**
077 * what to do on mouse release
078 */
079 public void onRelease() {
080 active = false;
081 if(isEntered()) {
082 entered = false;
083 notifyActionListeners(new ActionEvent(this, 0, acommand));
084 }
085 repaint();
086 }
087
088 /**
089 * implement mouse listener
090 *
091 * @param e MouseEvent
092 */
093 public void mouseExited(MouseEvent e) {
094 setEntered(false);
095 }
096
097 /**
098 * implement mouse listener
099 */
100 public void mousePressed(MouseEvent e) {
101 setEntered(true);
102 onPress();
103 }
104
105 /**
106 * implement mouse listener
107 *
108 * @param e MouseEvent
109 */
110 public void mouseReleased(MouseEvent e) {
111 repaint();
112 onRelease();
113 }
114
115 /**
116 * implement mouse listener
117 *
118 * @param e MouseEvent
119 */
120 public void mouseMoved(MouseEvent e) {
121 if(isEntered() != contains(e.getPoint())) {
122 setEntered(!isEntered());
123 }
124 }
125
126 /**
127 * implement mouse listener
128 *
129 * @param e MouseEvent
130 */
131 public void mouseDragged(MouseEvent e) {
132 mouseMoved(e);
133 }
134 }