This repository has been archived on 2025-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
pjava-juninstaller/MyProgBar.java
mbirth a1d6305b9b modified JUninstaller.java
+ Properties object for preferences, loaded on startup, saved on close
        + MyProgBar on comparison
        + Remaining time calculated on comparison

modified   MyFilesystemParser.java
        + counters for dumped and compared lines

modified   MyProgBar.java
        * now uses long values
        x threw NullPointerException when Graphics g was null
        x some pixel corrections, incl. addition correction if run on EPOC
        + more accessors
2005-02-02 18:05:03 +00:00

118 lines
3.3 KiB
Java

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
public class MyProgBar extends Component {
final static int WINDOWS = 1;
final static int PQ1 = 2;
final static int PQ2 = 3;
long minVal;
long maxVal;
long curVal;
private int systemDelta = 0;
Color fgColor = new Color(0,0,128);
Color bgColor = new Color(220,220,220);
Color txColor = Color.white;
int Height = 18;
int Width = 40;
private int mode;
public MyProgBar(long min, long max, long pos, int mode) {
this.minVal = min;
this.maxVal = max;
this.curVal = pos;
this.mode = mode;
if (System.getProperty("os.name").equals("EPOC")) {
this.systemDelta = -1;
}
}
public MyProgBar(long min, long max, long pos) {
this(min, max, pos, MyProgBar.WINDOWS);
}
public MyProgBar(long min, long max) {
this(min, max, min, MyProgBar.WINDOWS);
}
public MyProgBar() {
this(0, 100, 0, MyProgBar.WINDOWS);
}
public void paint(Graphics g) {
if (g != null) {
double percentage = (double)(curVal-minVal)/(double)(maxVal-minVal);
String percString = String.valueOf((int)(percentage*100)) + "%";
g.setFont(new Font("Dialog", Font.PLAIN, 10));
FontMetrics fm = getFontMetrics(g.getFont());
int pright = (int)((double)(getSize().width-2)/(maxVal-minVal)*(curVal-minVal));
g.setColor(bgColor);
g.fill3DRect(pright+1,1,getSize().width-2-pright+systemDelta,getSize().height-2+systemDelta, false);
g.setColor(fgColor);
g.fill3DRect(1,1,pright+systemDelta,getSize().height-2+systemDelta, true);
g.setXORMode(txColor);
int tleft;
switch (mode) {
default:
case MyProgBar.WINDOWS:
g.drawString(percString, getSize().width/2-fm.stringWidth(percString)/2, getSize().height/2-fm.getHeight()/2+fm.getAscent());
break;
case MyProgBar.PQ1:
tleft = pright+2;
if (tleft+fm.stringWidth(percString)>=getSize().width-1) tleft = getSize().width-1-fm.stringWidth(percString);
g.drawString(percString, tleft, getSize().height/2-fm.getHeight()/2+fm.getAscent());
break;
case MyProgBar.PQ2:
tleft = (pright-1)/2-fm.stringWidth(percString)/2+1;
if (tleft <= 2) tleft = 2;
g.drawString(percString, tleft, getSize().height/2-fm.getHeight()/2+fm.getAscent());
break;
}
g.setPaintMode();
g.setColor(Color.black);
g.drawRect(0,0,getSize().width-1,getSize().height-1);
}
}
public void setMinValue(long v) {
minVal = v;
}
public void setMaxValue(long v) {
maxVal = v;
}
public void setBgColor(Color c) {
bgColor = c;
}
public void setFgColor(Color c) {
fgColor = c;
}
public void setPos(long p) {
curVal = p;
if (curVal > maxVal) curVal = maxVal;
else if (curVal < minVal ) curVal = minVal;
paint(getGraphics());
}
public void setMode(int m) {
mode = m;
paint(getGraphics());
}
public Dimension getPreferredSize() {
return new Dimension(Width, Height);
}
public Dimension getMinimumSize() {
return new Dimension(Width, Height);
}
}