Cool Java Applet
This applet reads in messages from a text file and displays them in different ways.
AI
Resumen de IA: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Código fuente
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.net.URL;
import java.util.StringTokenizer;
import java.util.Vector;
public class message extends Applet
implements Runnable
{
Thread display;
String message;
int message_pos;
int caption_pos;
int pos;
int offset;
int select_index;
Vector all_urls;
Vector all_news;
Vector all_caps;
Vector all_rects;
Vector back_rects;
Vector news_group;
boolean legal;
Color cap_fgcolor;
Font capfont;
Color bgcolor;
Color fgcolor;
Font txtfont;
Color bdcolor;
Color mocolor;
int speed;
int delay;
String window;
int font_size;
FontMetrics fm;
boolean mouse_in;
int max_select_index;
int total_height;
int total_chars;
int nor_h;
int nor_a;
int cap_h;
int cap_a;
boolean done;
Dimension d;
Dimension offDimension;
Image offImage;
Graphics offGraphics;
Point mouse_point;
public void init()
{
pos = 0;
d = size();
try
{
String s = getParameter("notice");
if(s.indexOf("DAROCKER22") < 0)
legal = false;
if(s.indexOf("Copyright") < 0)
legal = false;
s = getParameter("license");
if(!s.equals("Demo"))
legal = false;
}
catch(Exception _ex)
{
legal = false;
}
Color color = null;
color = get_color("bgcolor");
if(color != null)
bgcolor = color;
color = get_color("txt_color");
if(color != null)
fgcolor = color;
color = get_color("cap_color");
if(color != null)
cap_fgcolor = color;
color = get_color("bdcolor");
if(color != null)
bdcolor = color;
color = get_color("mocolor");
if(color != null)
mocolor = color;
Font font = get_font("txt_font");
if(font != null)
txtfont = font;
font = get_font("cap_font");
if(font != null)
capfont = font;
String s1 = getParameter("speed");
if(s1 != null)
{
Integer integer = new Integer(remove_space(s1));
speed = integer.intValue();
}
s1 = getParameter("delay");
if(s1 != null)
{
Integer integer1 = new Integer(remove_space(s1));
delay = integer1.intValue();
}
s1 = getParameter("window");
if(s1 != null)
window = s1;
setBackground(bgcolor);
fm = getToolkit().getFontMetrics(txtfont);
nor_h = fm.getHeight();
nor_a = fm.getAscent();
fm = getToolkit().getFontMetrics(capfont);
cap_h = fm.getHeight();
cap_a = fm.getAscent();
DataInputStream datainputstream = null;
try
{
URL url = new URL(getCodeBase(), "conf.dat");
java.io.InputStream inputstream = url.openStream();
datainputstream = new DataInputStream(inputstream);
}
catch(Exception _ex) { }
int i = 0;
try
{
for(String s2 = datainputstream.readLine(); s2 != null; s2 = datainputstream.readLine())
{
i = s2.indexOf("<news ");
if(i >= 0)
{
news_group.addElement(new String(" "));
String s3 = s2.substring(i + 5);
i = s3.lastIndexOf(">");
s3 = s3.substring(0, i);
i = s3.indexOf("caption=");
s3 = s3.substring(i);
all_caps.addElement(get_next_string(s3));
i = s3.indexOf("content=");
s3 = s3.substring(i);
all_news.addElement(get_next_string(s3));
i = s3.indexOf("url=");
s3 = s3.substring(i);
all_urls.addElement(parse_url(get_next_string(s3)));
}
}
}
catch(Exception exception)
{
System.out.println(exception);
}
i = 0;
mouse_point = new Point(-1, -1);
}
public String get_next_string(String s)
{
int i = s.indexOf(34);
String s1 = s.substring(i + 1);
i = s1.indexOf(34);
return s1.substring(0, i);
}
public boolean handleEvent(Event event)
{
if(!done)
return super.handleEvent(event);
switch(event.id)
{
case 504: // Event.MOUSE_EVENT
mouse_in = true;
Thread.yield();
repaint();
display.resume();
break;
case 505: // Event.MOUSE_EXIT
mouse_in = false;
Thread.yield();
repaint();
display.resume();
break;
case 501: // Event.MOUSE_DOWN
mouse_pressed(event);
break;
}
return super.handleEvent(event);
}
public void mouse_pressed(Event event)
{
int i = event.x;
int j = event.y;
mouse_point = new Point(i, j);
String s = (String)all_urls.elementAt(pos);
try
{
URL url = new URL(s);
getAppletContext().showDocument(url, window);
return;
}
catch(Exception _ex)
{
return;
}
}
public void paint(Graphics g)
{
update(g);
}
public void update(Graphics g)
{
if(!legal)
return;
if(all_news.size() == 0)
return;
d = size();
if(offImage == null)
{
offDimension = size();
offImage = createImage(d.width, d.height);
offGraphics = offImage.getGraphics();
}
offGraphics.clearRect(0, 0, d.width, d.height);
offGraphics.setColor(bgcolor);
offGraphics.fillRect(0, 0, d.width, d.height);
offGraphics.setColor(bdcolor);
offGraphics.drawRect(0, 0, d.width - 1, d.height - 1);
int i = (pos + 1) % all_caps.size();
String s = (String)all_caps.elementAt(i);
String s1 = (String)all_news.elementAt(i);
Vector vector = new Vector();
vector = parse_lines(parse_words(s1));
vector.insertElementAt(s, 0);
int j = (vector.size() - 1) * nor_h + cap_h;
j = (d.height - j) / 2;
int k = j + nor_h;
boolean flag = false;
for(int j1 = 0; j1 < vector.size(); j1++)
{
String s2 = (String)vector.elementAt(j1);
if(j1 == 0)
{
k += cap_a;
fm = getToolkit().getFontMetrics(capfont);
int l = fm.stringWidth(s2);
l = (d.width - l) / 2;
offGraphics.setFont(capfont);
offGraphics.setColor(cap_fgcolor);
offGraphics.drawString(s2, l, k);
} else
{
k += nor_a;
fm = getToolkit().getFontMetrics(txtfont);
int i1 = fm.stringWidth(s2);
i1 = (d.width - i1) / 2;
offGraphics.setFont(txtfont);
if(mouse_in)
offGraphics.setColor(mocolor);
else
offGraphics.setColor(fgcolor);
offGraphics.drawString(s2, i1, k);
}
}
g.drawImage(offImage, 0, 0, this);
}
public String parse_url(String s)
{
if(s.indexOf("http://") >= 0)
return s;
URL url = null;
try
{
url = getCodeBase();
}
catch(Exception _ex) { }
String s1 = url.getHost();
String s2 = url.getFile();
s = remove_space(s);
if(s.startsWith("/"))
return "http://" + s1 + s;
if(s.startsWith("../"))
{
for(int i = s.indexOf("../"); i >= 0; i = s.indexOf("../"))
{
s = s.substring(i + 3);
i = s2.lastIndexOf("/");
s2 = s2.substring(0, i);
}
int j = s2.lastIndexOf("/");
s2 = s2.substring(0, j);
return "http://" + s1 + s2 + "/" + s;
} else
{
int k = s2.lastIndexOf("/");
s2 = s2.substring(0, k + 1);
return "http://" + s1 + s2 + s;
}
}
public Vector parse_words(String s)
{
Vector vector = new Vector();
StringBuffer stringbuffer = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if(c != ' ')
{
stringbuffer.append(c);
} else
{
vector.addElement(new String(stringbuffer));
stringbuffer = new StringBuffer();
}
}
vector.addElement(new String(stringbuffer));
return vector;
}
public void refresh(int i, int j)
{
Graphics g = getGraphics();
d = size();
if(offImage == null)
{
offDimension = size();
offImage = createImage(d.width, d.height);
offGraphics = offImage.getGraphics();
}
offGraphics.clearRect(0, 0, size().width, size().height);
String s = (String)all_caps.elementAt(pos);
String s1 = (String)all_news.elementAt(pos);
Vector vector = new Vector();
vector = parse_lines(parse_words(s1));
vector.insertElementAt(s, 0);
int k = (vector.size() - 1) * nor_h + cap_h;
k = (d.height - k) / 2;
int l = k + nor_h;
boolean flag = false;
for(int i2 = 0; i2 < vector.size(); i2++)
{
String s2 = (String)vector.elementAt(i2);
if(i2 == 0)
{
l += cap_a;
fm = getToolkit().getFontMetrics(capfont);
int i1 = fm.stringWidth(s2);
i1 = (d.width - i1) / 2;
offGraphics.setFont(capfont);
offGraphics.setColor(cap_fgcolor);
offGraphics.drawString(s2, i1, l);
} else
{
l += nor_a;
fm = getToolkit().getFontMetrics(txtfont);
int j1 = fm.stringWidth(s2);
j1 = (d.width - j1) / 2;
offGraphics.setFont(txtfont);
if(mouse_in)
offGraphics.setColor(mocolor);
else
offGraphics.setColor(fgcolor);
offGraphics.drawString(s2, j1, l);
}
}
int j2 = (pos + 1) % all_news.size();
s = (String)all_caps.elementAt(j2);
s1 = (String)all_news.elementAt(j2);
vector = new Vector();
vector = parse_lines(parse_words(s1));
vector.insertElementAt(s, 0);
k = (vector.size() - 1) * nor_h + cap_h;
k = (d.height - k) / 2;
l = k + nor_h;
int k2 = 0;
int l2 = 0;
switch(j)
{
case 0: // '\0'
k2 = d.width - (i * d.width) / 10;
l2 = d.height - (i * d.height) / 10;
break;
case 1: // '\001'
k2 = d.width - (i * d.width) / 10;
l2 = 0;
break;
case 2: // '\002'
k2 = d.width - (i * d.width) / 10;
l2 = -d.height + (i * d.height) / 10;
break;
case 3: // '\003'
k2 = 0;
l2 = -d.height + (i * d.height) / 10;
break;
case 4: // '\004'
k2 = -d.width + (i * d.width) / 10;
l2 = -d.height + (i * d.height) / 10;
break;
case 5: // '\005'
k2 = -d.width + (i * d.width) / 10;
l2 = 0;
break;
case 6: // '\006'
k2 = -d.width + (i * d.width) / 10;
l2 = d.height - (i * d.height) / 10;
break;
case 7: // '\007'
k2 = 0;
l2 = d.height - (i * d.height) / 10;
break;
}
offGraphics.setColor(bdcolor);
offGraphics.drawRect(k2, l2, d.width - 1, d.height - 1);
offGraphics.setColor(bgcolor);
offGraphics.fillRect(k2 + 1, l2 + 1, d.width - 2, d.height - 2);
for(int i3 = 0; i3 < vector.size(); i3++)
{
String s3 = (String)vector.elementAt(i3);
if(i3 == 0)
{
l += cap_a;
fm = getToolkit().getFontMetrics(capfont);
int k1 = fm.stringWidth(s3);
k1 = (d.width - k1) / 2;
offGraphics.setFont(capfont);
offGraphics.setColor(cap_fgcolor);
offGraphics.drawString(s3, k2 + k1, l2 + l);
} else
{
l += nor_a;
fm = getToolkit().getFontMetrics(txtfont);
int l1 = fm.stringWidth(s3);
l1 = (d.width - l1) / 2;
offGraphics.setFont(txtfont);
if(mouse_in)
offGraphics.setColor(mocolor);
else
offGraphics.setColor(fgcolor);
offGraphics.drawString(s3, k2 + l1, l2 + l);
}
}
offGraphics.setColor(bdcolor);
offGraphics.drawRect(0, 0, d.width - 1, d.height - 1);
g.drawImage(offImage, 0, 0, this);
}
public String remove_space(String s)
{
StringBuffer stringbuffer = new StringBuffer();
for(int i = 0; i < s.length(); i++)
{
int j = s.charAt(i);
if(j != 32)
stringbuffer.append((char)j);
}
return new String(stringbuffer);
}
public void run()
{
pos = 0;
for(int i = 0; display != null; i = (i + 1) % 8)
{
done = false;
for(int j = 0; j <= 10; j++)
{
refresh(j, i);
try
{
Thread.sleep(speed);
}
catch(Exception _ex) { }
}
done = true;
try
{
Thread.sleep(delay);
}
catch(Exception _ex) { }
pos = (pos + 1) % all_news.size();
}
}
public void start()
{
if(display == null)
{
display = new Thread(this);
display.start();
}
}
public void stop()
{
display = null;
}
public Color get_color(String s)
{
Integer integer = null;
Integer integer1 = null;
Integer integer2 = null;
try
{
String s1 = getParameter(s);
StringTokenizer stringtokenizer = new StringTokenizer(s1, ",");
if(stringtokenizer.hasMoreTokens())
integer = new Integer(remove_space(stringtokenizer.nextToken()));
if(stringtokenizer.hasMoreTokens())
integer1 = new Integer(remove_space(stringtokenizer.nextToken()));
if(stringtokenizer.hasMoreTokens())
integer2 = new Integer(remove_space(stringtokenizer.nextToken()));
Color color = new Color(integer.intValue(), integer1.intValue(), integer2.intValue());
return color;
}
catch(Exception _ex)
{
return null;
}
}
public Font get_font(String s)
{
try
{
String s1 = getParameter(s);
StringTokenizer stringtokenizer = new StringTokenizer(s1, ",");
String s2 = null;
String s3 = null;
Integer integer = null;
if(stringtokenizer.hasMoreTokens())
s2 = new String(remove_space(stringtokenizer.nextToken()));
if(stringtokenizer.hasMoreTokens())
s3 = new String(remove_space(stringtokenizer.nextToken()));
if(stringtokenizer.hasMoreTokens())
integer = new Integer(remove_space(stringtokenizer.nextToken()));
byte byte0;
if(s3.equals("BOLD"))
byte0 = 1;
else
if(s3.equals("ITALIC"))
byte0 = 2;
else
byte0 = 0;
Font font = new Font(s2, byte0, integer.intValue());
return font;
}
catch(Exception _ex)
{
return null;
}
}
public Vector parse_lines(Vector vector)
{
d = size();
Vector vector1 = new Vector();
int i = 0;
int j = txtfont.getSize();
int _tmp = d.height / j;
fm = getToolkit().getFontMetrics(txtfont);
StringBuffer stringbuffer = new StringBuffer();
for(; i < vector.size(); i++)
{
String s = (String)vector.elementAt(i);
stringbuffer.append(s);
int k = fm.stringWidth(stringbuffer.toString());
int l = -1;
if(i < vector.size() - 1)
{
String s2 = (String)vector.elementAt(i + 1);
StringBuffer stringbuffer1 = new StringBuffer(stringbuffer.toString());
stringbuffer1.append(" ");
stringbuffer1.append(s2);
l = fm.stringWidth(stringbuffer1.toString());
}
if(k <= d.width - 8 && l >= d.width - 8 && i < vector.size())
{
vector1.addElement(new String(stringbuffer));
stringbuffer = new StringBuffer();
continue;
}
if(k <= d.width - 8 && i == vector.size() - 1)
{
vector1.addElement(new String(stringbuffer));
stringbuffer = new StringBuffer();
break;
}
if(k >= d.width - 8)
{
boolean flag = false;
String s1 = new String(stringbuffer);
for(int j1 = s1.length() - 1; j1 >= 0; j1--)
{
String s3 = s1.substring(0, j1);
int i1 = fm.stringWidth(s3);
if(i1 > d.width - 8)
continue;
vector1.addElement(s3 + "-");
stringbuffer = new StringBuffer(s1.substring(j1));
stringbuffer.append(" ");
break;
}
} else
{
stringbuffer.append(" ");
}
}
return vector1;
}
public message()
{
select_index = -1;
all_urls = new Vector();
all_news = new Vector();
all_caps = new Vector();
all_rects = new Vector();
back_rects = new Vector();
news_group = new Vector();
legal = true;
cap_fgcolor = Color.red;
capfont = new Font("serif", 0, 22);
bgcolor = new Color(255, 255, 255);
fgcolor = Color.black;
txtfont = new Font("serif", 0, 14);
bdcolor = Color.red;
mocolor = Color.pink;
speed = 10;
delay = 2000;
window = "_self";
mouse_in = false;
done = true;
}
}
Upload
Upload
Comentarios originales (3)
Recuperado de Wayback Machine