summaryrefslogtreecommitdiff
path: root/java/EAC/EACLabel.java
diff options
context:
space:
mode:
authorcdgill <cdgill@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-01-07 22:46:07 +0000
committercdgill <cdgill@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-01-07 22:46:07 +0000
commit78552d9795151a325fe0d5701c2ea28c256ecdfb (patch)
tree286780950a8cedb569ecf57846b511c114e9bf14 /java/EAC/EACLabel.java
parent57e792805e7e43fbc649cc7efddbeff61f9aed87 (diff)
downloadATCD-78552d9795151a325fe0d5701c2ea28c256ecdfb.tar.gz
moved EAC from ACE_wrappers to ACE_wrappers/java
Diffstat (limited to 'java/EAC/EACLabel.java')
-rw-r--r--java/EAC/EACLabel.java187
1 files changed, 187 insertions, 0 deletions
diff --git a/java/EAC/EACLabel.java b/java/EAC/EACLabel.java
new file mode 100644
index 00000000000..e841c4e4c40
--- /dev/null
+++ b/java/EAC/EACLabel.java
@@ -0,0 +1,187 @@
+/**
+ * Title: EACLabel
+ * Description: Text labels for Event Analysis Configurator graphical
+ * primitives
+ */
+package EAC;
+import java.awt.*;
+
+public class EACLabel extends Primitive {
+
+ // Font for labels
+ protected Font label_font = new EACFont().getFont();
+
+ // Font Metrics for sizing and bounds checking labels
+ protected FontMetrics fm = canvas.getFontMetrics(label_font);
+
+ // Label text
+ protected char[] text;
+
+ // associated Primitive
+ protected Primitive labelee;
+
+ public EACLabel(EACPanel p, int n) {
+ super(p);
+ text = new char[n];
+ } /* constructor */
+
+ public void setLabelee(Primitive p) {
+ labelee = p;
+ } /* setLabelee */
+
+ public Primitive getLabelee() {
+ return labelee;
+ } /* getLabelee */
+
+ public void setText(String s) {
+ text = s.toCharArray();
+ } /* setText */
+
+ public String getText() {
+ return java.lang.String.valueOf(text);
+ } /* getText */
+
+ public void setTop(Point p) {
+ anchor = new Point(p.x - (3 * text.length),
+ p.y + 9);
+ } /* setTop */
+
+ public Point getTop() {
+ return new Point(anchor.x + (3 * text.length),
+ anchor.y - 9);
+ } /* getTop */
+
+ public void draw() throws BoundsException {
+ if (inBounds()) {
+ Graphics g = canvas.getGraphics();
+ g.setFont(label_font);
+ g.drawChars(text,0,text.length,anchor.x,anchor.y);
+ } else
+ throw new BoundsException("Attempted to place Label partially out of bounds");
+ } /* draw */
+
+ public void specialDraw() {
+ Graphics g = canvas.getGraphics();
+
+ g.setXORMode(canvas.getBackground());
+ g.drawRect(upperLeft().x, upperLeft().y,
+ upperRight().x - upperLeft().x, // WIDTH
+ lowerRight().y - upperRight().y); // HEIGHT
+ } /* specialDraw */
+
+ public void specialUndraw() {
+ Graphics g = canvas.getGraphics();
+
+ g.setColor(canvas.getBackground());
+ g.setXORMode(canvas.getForeground());
+ g.drawRect(upperLeft().x, upperLeft().y,
+ upperRight().x - upperLeft().x, // WIDTH
+ lowerRight().y - upperRight().y); // HEIGHT
+ } /* specialUndraw */
+
+ public boolean contains(Point p) {
+ return ((p.x >= upperLeft().x) &&
+ (p.x <= upperRight().x) &&
+ (p.y <= lowerLeft().y) &&
+ (p.y >= upperLeft().y));
+ } /* contains */
+
+ public boolean inBounds() {
+ // don't know why we need this, but fm.stringWidth seems to return a
+ // value that's bigger than the actual width of the text
+ //final int xTweak = 20;
+
+ //if (canvas.contains(anchor.x + fm.stringWidth(text.toString()) - xTweak,
+ // anchor.y - fm.getHeight()))
+ if ((canvas.contains(upperLeft())) &&
+ (canvas.contains(upperRight())) &&
+ (canvas.contains(lowerLeft())) &&
+ (canvas.contains(lowerRight())))
+ return true;
+ else
+ return false;
+ } /* inBounds */
+
+ public Point upperLeft() {
+ return new Point(anchor.x,anchor.y - 9);
+ } /* upperLeft */
+
+ public Point upperRight() {
+ return new Point(anchor.x + (6 * text.length),anchor.y - 9);
+ } /* upperRight */
+
+ public Point lowerLeft() {
+ return anchor;
+ } /* lowerLeft */
+
+ public Point lowerRight() {
+ return new Point(anchor.x + (6 * text.length),anchor.y);
+ } /* lowerRight */
+
+ public void write(File f) throws java.io.IOException {
+ int i;
+
+ // if there's an associated primitive, that primitive
+ // is responsible for writing out the label info too,
+ // so only write out the info if there is no labelee
+ if (labelee == null) {
+ f.writeInt(f.LABEL);
+ f.writeInt(text.length);
+ f.writeInt(anchor.x);
+ f.writeInt(anchor.y);
+ for (i = 0; i < text.length; i++)
+ f.writeChar(text[i]);
+ }
+ } /* write */
+
+ public void read(File f) throws java.io.IOException {
+ int i;
+
+ anchor = new Point();
+ anchor.x = f.readInt();
+ anchor.y = f.readInt();
+
+ for (i = 0; i < text.length; i++)
+ text[i] = f.readChar();
+ } /* read */
+
+ public int addInput(Connector c) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to add input to label");
+ } /* addInput */
+
+ public int addOutput(Connector c) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to add output to label");
+ } /* addOutput */
+
+ public Connector getInput(int i) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to retrieve input from label");
+ } /* getInput */
+
+ public Connector getOutput(int i) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to retrieve output from label");
+ } /* getOutput */
+
+ public int getInputCount() throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to retrieve input count from label");
+ } /* getInputCount */
+
+ public int getOutputCount() throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to retrieve output count from label");
+ } /* getOutputCount */
+
+ public void removeInput(int i) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to remove input from label");
+ } /* removeInput */
+
+ public void removeOutput(int i) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to remove output from label");
+ } /* removeOutput */
+
+ public void event(Source s) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to push event to label");
+ } /* event */
+
+ public void wakeup(long t) throws ConnectionException {
+ throw new ConnectionException("ERROR: Attempted to wake up label");
+ } /* wakeup */
+} \ No newline at end of file