package org.jacorb.poa.gui.beans;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1997-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/**
* @author Reimo Tiedemann, FU Berlin
* @version 1.0, 05/03/99
* @see org.jacorb.poa.gui.beans.FillLevelBar
*/
public class FillLevelCanvas extends java.awt.Canvas {
private java.awt.Graphics buf = null;
private java.awt.Image img = null;
private java.awt.Color color1 = java.awt.Color.orange;
private java.awt.Color color2 = java.awt.Color.red;
private int width = 0;
private int height = 0;
private int max = 0;
private int avg = 0;
private int min = 0;
private int cur = 0;
private int yAvg = 0;
private int yCur = 0;
private boolean useAvg;
/**
* Constructor
*/
/* WARNING: THIS METHOD WILL BE REGENERATED. */
public FillLevelCanvas() {
super();
initialize();
}
public int getYAvg() {
if (useAvg) return yAvg;
return 0;
}
/**
* Called whenever the part throws an exception.
* @param exception java.lang.Throwable
*/
private void handleException(Throwable exception) {
/* Uncomment the following lines to print uncaught exceptions to stdout */
// System.out.println("--------- UNCAUGHT EXCEPTION ---------");
// exception.printStackTrace(System.out);
}
public void init(int _min, int _avg, int _max, java.awt.Color _color1, java.awt.Color _color2, boolean _useAvg) {
min = _min;
avg = _avg;
max = _max;
useAvg = _useAvg;
yCompute();
if (_color1 != null) color1 = _color1;
if (_color2 != null) color2 = _color2;
}
/**
* Initialize the class.
*/
/* WARNING: THIS METHOD WILL BE REGENERATED. */
private void initialize() {
// user code begin {1}
// user code end
setName("FillLevelCanvas");
setBackground(java.awt.Color.white);
setSize(15, 100);
// user code begin {2}
width = getBounds().width;
height = getBounds().height;
// user code end
}
/**
* main entrypoint - starts the part when it is run as an application
* @param args java.lang.String[]
*/
public static void main(java.lang.String[] args) {
try {
java.awt.Frame frame;
try {
Class aFrameClass = Class.forName("com.ibm.uvm.abt.edit.TestFrame");
frame = (java.awt.Frame)aFrameClass.newInstance();
} catch (java.lang.Throwable ivjExc) {
frame = new java.awt.Frame();
}
FillLevelCanvas aFillLevelCanvas;
aFillLevelCanvas = new FillLevelCanvas();
frame.add("Center", aFillLevelCanvas);
frame.setSize(aFillLevelCanvas.getSize());
frame.setVisible(true);
} catch (Throwable exception) {
System.err.println("Exception occurred in main() of org.jacorb.poa.gui.FillLevelCanvas");
exception.printStackTrace(System.out);
}
}
public void paint(java.awt.Graphics g) {
if (buf == null) {
img = createImage(getBounds().width, getBounds().height);
buf = img.getGraphics();
} else {
buf.setColor(getBackground());
buf.fillRect(0, 0, width, height);
buf.setColor(getForeground());
}
paintUnbuffered(buf);
g.drawImage(img, 0, 0, this);
}
public void paintUnbuffered(java.awt.Graphics g) {
if (useAvg) {
if (cur <= avg) {
g.setColor(color1);
g.fillRect(0, yCur, width, height - yCur);
} else {
g.setColor(color2);
g.fillRect(0, yCur, width, height - yCur);
g.setColor(color1);
g.fillRect(0, yAvg, width, height - yAvg);
}
if (avg < max) {
g.setColor(java.awt.Color.black);
g.drawLine(0, yAvg, width, yAvg);
}
} else {
g.setColor(color1);
g.fillRect(0, yCur, width, height - yCur);
}
}
public void setAvg(int value) {
avg = value;
yCompute();
repaint();
}
public void setCurrent(int value) {
cur = value;
yCompute();
repaint();
}
public void setMax(int value) {
max = value;
yCompute();
repaint();
}
public void setMin(int value) {
min = value;
yCompute();
repaint();
}
private void yCompute() {
float helpF;
if (useAvg) {
helpF = ((float)avg)/((float)max-min) * ((float)height);
yAvg = yTransform((int) helpF);
}
helpF = ((float)cur)/((float)max-min) * ((float)height);
yCur = yTransform((int) helpF);
}
private int yTransform(int y) {
return height - y;
}
}