Files
webmin/proc/Util.java
2007-04-12 20:24:50 +00:00

149 lines
3.2 KiB
Java

import java.awt.*;
import java.awt.image.*;
class Util
{
static Frame fr;
static Graphics g;
static Font f;
static FontMetrics fnm;
static Toolkit tk;
static Color light_edge = Color.white;
static Color dark_edge = Color.black;
static Color body = Color.lightGray;
static Color body_hi = new Color(210, 210, 210);
static Color light_edge_hi = Color.white;
static Color dark_edge_hi = Color.darkGray;
static Color dark_bg = new Color(150, 150, 150);
static Color text = Color.black;
static Color light_bg = Color.white;
static
{
fr = new Frame();
fr.addNotify();
g = fr.getGraphics();
setFont(new Font("TimesRoman", Font.PLAIN, 8));
tk = Toolkit.getDefaultToolkit();
}
static boolean waitForImage(Image i)
{
MediaTracker mt = new MediaTracker(fr);
mt.addImage(i, 0);
try { mt.waitForAll(); } catch(Exception e) { return false; }
return !mt.isErrorAny();
}
static boolean waitForImage(Image i, int w, int h)
{
MediaTracker mt = new MediaTracker(fr);
mt.addImage(i, w, h, 0);
try { mt.waitForAll(); } catch(Exception e) { return false; }
return !mt.isErrorAny();
}
static int getWidth(Image i)
{
waitForImage(i);
return i.getWidth(fr);
}
static int getHeight(Image i)
{
waitForImage(i);
return i.getHeight(fr);
}
static Image createImage(int w, int h)
{
return fr.createImage(w, h);
}
static Image createImage(ImageProducer p)
{
return fr.createImage(p);
}
static Object createObject(String name)
{
try {
Class c = Class.forName(name);
return c.newInstance();
}
catch(Exception e) {
System.err.println("Failed to create object "+name+" : "+
e.getClass().getName());
System.exit(1);
}
return null;
}
/**Create a new instance of some object
*/
static Object createObject(Object o)
{
try { return o.getClass().newInstance(); }
catch(Exception e) {
System.err.println("Failed to reproduce object "+o+" : "+
e.getClass().getName());
System.exit(1);
}
return null;
}
static void dottedRect(Graphics g, int x1, int y1,
int x2, int y2, int s)
{
int i, s2 = s*2, t;
if (x2 < x1) { t = x1; x1 = x2; x2 = t; }
if (y2 < y1) { t = y1; y1 = y2; y2 = t; }
for(i=x1; i<=x2; i+=s2)
g.drawLine(i, y1, i+s > x2 ? x2 : i+s, y1);
for(i=y1; i<=y2; i+=s2)
g.drawLine(x2, i, x2, i+s > y2 ? y2 : i+s);
for(i=x2; i>=x1; i-=s2)
g.drawLine(i, y2, i-s < x1 ? x1 : i-s, y2);
for(i=y2; i>=y1; i-=s2)
g.drawLine(x1, i, x1, i-s < y1 ? y1 : i-s);
}
static void recursiveLayout(Container c)
{
c.layout();
for(int i=0; i<c.countComponents(); i++) {
Component cc = c.getComponent(i);
if (cc instanceof Container)
recursiveLayout((Container)cc);
}
}
static void recursiveBackground(Component c, Color b)
{
if (c instanceof TextField || c instanceof Choice ||
c instanceof TextArea)
return; // leave these alone
c.setBackground(b);
if (c instanceof Container) {
Container cn = (Container)c;
for(int i=0; i<cn.countComponents(); i++)
recursiveBackground(cn.getComponent(i), b);
}
}
static void recursiveBody(Component c)
{
recursiveBackground(c, Util.body);
}
static void setFont(Font nf)
{
f = nf;
g.setFont(f);
fnm = g.getFontMetrics();
}
}