|  |
DownLoad JavaCal.lzh(ソースコード付き)
///////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.io.DataInputStream;
import java.net.URL;
import java.util.*;
import netscape.javascript.JSObject;
public class tcaldate extends Applet
{
public boolean kDown(int i)
{
switch(i)
{
case 1003:
chgDate(30);
break;
case 1002:
chgDate(-30);
break;
case 1001:
chgDate(365);
break;
case 1000:
chgDate(-365);
break;
case 43: // '+'
case 1007:
chgDate(1);
break;
case 45: // '-'
case 1006:
chgDate(-1);
break;
case 1004:
chgDate(-7);
break;
case 1005:
chgDate(7);
break;
case 42: // '*'
chgDate(0);
break;
case 10: // '\n'
case 32: // ' '
postDate();
repaint();
break;
}
return true;
}
public void stop()
{
}
public boolean mouseEnter(Event event, int i, int j)
{
onButt = true;
return true;
}
private String formURL(int i, boolean flag)
{
String s;
if(flag)
s = new String(sDest);
else
s = new String(sStr);
String s1 = new String("");
byte byte0 = 32;
if(i < 0)
return "";
Date date = new Date(pDate.getTime() + lDay * (long)((i + 1) - jSem));
if(date.getHours() != 0)
date = new Date(date.getTime() + lDay / 24L);
i = date.getDay();
i = (i + 1) - iFD;
if(i == 0)
i = 7;
Date date1 = new Date(date.getYear(), 0, 1);
int j = (int)((date.getTime() - date1.getTime()) / lDay) + 1;
int k = ((j + 7) - i) / 7 + 1;
if(date1.getDay() > 4)
k--;
if(date1.getDay() == 1)
k--;
boolean flag1 = false;
int i1 = 0;
int j1 = s.length();
for(int l = s.indexOf(37, i1); l > -1; l = s.indexOf(37, i1))
{
s1 += s.substring(i1, l);
i1 = l + 1;
if(i1 < j1)
{
char c = s.charAt(i1);
boolean flag2 = false;
switch(c)
{
default:
break;
case 68: // 'D'
if(date.getDate() < 10)
s1 += "0";
// fall through
case 100: // 'd'
s1 += "" + date.getDate();
break;
case 77: // 'M'
if(date.getMonth() < 9)
s1 += "0";
// fall through
case 109: // 'm'
s1 += "" + (date.getMonth() + 1);
break;
case 89: // 'Y'
s1 += "" + (1900 + date.getYear());
break;
case 121: // 'y'
int k1 = date.getYear();
if(k1 > 99)
k1 -= 100;
if(k1 < 10)
s1 += "0";
s1 += "" + k1;
break;
case 74: // 'J'
if(j < 10)
s1 += "0";
// fall through
case 106: // 'j'
s1 += "" + j;
break;
case 83: // 'S'
case 115: // 's'
i = (date.getDay() + 1) - iFD;
if(i == 0)
s1 += "7";
else
s1 += "" + i;
break;
case 87: // 'W'
if(k < 10)
s1 += "0";
// fall through
case 119: // 'w'
s1 += "" + k;
break;
}
i1++;
}
}
if(i1 < j1)
s1 += s.substring(i1);
return s1;
}
public boolean keyDown(Event event, int i)
{
return kDown(event.key);
}
private void initDate(int i)
{
initDate(i, 1);
}
private void initDate(int i, int j)
{
if(i != -99)
if(i == -1)
dDate = new Date();
else
if(i < -1)
{
int i1 = pDate.getMonth();
int k = pDate.getYear();
if(i == -10)
{
if(i1 == 0)
{
i1 = 11;
k--;
} else
{
i1--;
}
} else
if(i1 == 11)
{
i1 = 0;
k++;
} else
{
i1++;
}
dDate = new Date(k, i1, 1);
} else
{
dDate = new Date(pDate.getTime() + lDay * (long)((i + 1) - jSem));
}
int l = 0;
do
{
if(l++ > 60)
break;
i = 1 << dDate.getDay();
if((jValid & i) != i && !holDate(dDate))
break;
dDate = new Date(dDate.getTime() + (long)j * lDay);
} while(true);
if(dDate.getHours() != 0)
dDate = new Date(dDate.getTime() + lDay / 24L);
Date date = new Date(dDate.getYear(), 0, 1);
pDate = new Date(dDate.getYear(), dDate.getMonth(), 1);
if(pDate.getHours() != 0)
pDate = new Date(pDate.getTime() - lDay / 24L);
jSem = pDate.getDay();
if(jSem == 0)
jSem = 7;
if(jSem == 1)
jSem = 8;
jSem = (jSem + 1) - iFD;
double d = date.getTimezoneOffset() * 60000;
double d1 = pDate.getTimezoneOffset() * 60000;
jS1 = (int)(((((double)(pDate.getTime() - date.getTime()) + (d - d1)) / (double)lDay + 8D) - (double)jSem) / 7D) + 1;
if(date.getDay() > 4)
jS1--;
if(date.getDay() == 1)
jS1--;
}
public void setMin(int i, int j, int k)
{
minDate = -1L;
if(i > 0)
{
if(k > 1800)
k -= 1900;
try
{
Date date = new Date(k, j - 1, i);
minDate = date.getTime();
if(dDate.getTime() < minDate)
{
dDate = date;
initDate(-99);
repaint();
return;
}
}
catch(Exception _ex) { }
}
}
public boolean mouseExit(Event event, int i, int j)
{
pressedButt = false;
onButt = false;
showStatus("");
iActif = -1;
repaint();
return true;
}
public void chgDate(int i)
{
long l = dDate.getTime() + lDay * (long)i;
if((new Date(l)).getHours() != 0)
l += lDay / 24L;
if((l >= minDate || minDate == -1L) && (l <= maxDate || maxDate == -1L))
{
dDate = new Date(l);
if(i != 0)
{
if(i < 0)
initDate(-99, -1);
else
initDate(-99, 1);
} else
{
initDate(-1);
}
selDate(-99);
if(e1 != null && (isShow == 1 || isShow == 3))
isShow++;
repaint();
}
}
public int putDate(int i, int j, int k)
{
if(k > 1800)
k -= 1900;
try
{
dDate = new Date(k, j - 1, i);
initDate(-99);
if(e1 != null)
{
e1.setText(getDate());
if(isShow == 4)
isShow--;
}
repaint();
}
catch(Exception _ex)
{
return -1;
}
return 1;
}
public String getDate()
{
return formURL((dDate.getDate() + jSem) - 2, true);
}
public void postDate()
{
if(e1 != null && iActif > -1)
{
e1.setText(getDate());
if(isShow == 4)
isShow--;
}
if(dest.length() > 0 && (!targ.equals("_none") || iActif == -30))
try
{
if(dest.startsWith("javascript:"))
try
{
JSObject.getWindow(this).eval(dest);
}
catch(Exception _ex) { }
else
if(dest.charAt(0) == '.')
clickDest = new URL(getCodeBase(), dest);
else
clickDest = new URL(dest);
}
catch(Exception _ex)
{
showStatus("Bad URL! =" + dest);
}
else
clickDest = null;
if(dest2.length() > 0 && iActif > -1)
try
{
JSObject.getWindow(this).eval(dest2);
}
catch(Exception _ex) { }
if(clickDest != null)
getAppletContext().showDocument(clickDest, targ);
}
public boolean mouseUp(Event event, int i, int j)
{
if(pressedButt && onButt)
if(iActif != -40)
{
iActif = validDate(iActif);
if((iActif > -1 || iActif < -9) && iActif != -30)
initDate(iActif);
if(e1 != null && iActif > -1)
e1.setText(getDate());
postDate();
} else
if(isShow == 1 || isShow == 3)
isShow++;
else
isShow--;
pressedButt = false;
repaint();
return true;
}
public void paint(Graphics g)
{
if(aWidth < 1)
{
try
{
aWidth = size().width;
aHeight = size().height - zY;
buffer = createImage(aWidth, aHeight + zY);
offScreen = buffer.getGraphics();
iH = (aWidth - 6) / (7 + iWD);
}
catch(Exception _ex)
{
offScreen = null;
}
if(e1 != null)
{
e1.reshape(1, 1, aWidth - 24, zY);
validate();
}
}
update(g);
}
public boolean holDate(Date date)
{
if(dList == null)
return false;
String s = "";
String s1 = "";
String s2 = "";
int i = date.getDate();
if(i < 10)
s += "0";
s += "" + i + "/";
i = date.getMonth() + 1;
if(i < 10)
s += "0";
s += "" + i + "/";
s1 = s + "*";
s += "" + (1900 + date.getYear());
for(Enumeration enumeration = dList.elements(); enumeration.hasMoreElements();)
{
String s3 = (String)enumeration.nextElement();
if(s3.equals(s) || s3.equals(s1))
return true;
}
return false;
}
public void readFile(String s)
{
DataInputStream datainputstream = null;
try
{
datainputstream = new DataInputStream((new URL(getCodeBase(), s)).openStream());
}
catch(Exception _ex)
{
datainputstream = null;
return;
}
dList = new Vector(40, 5);
do
{
String s1;
do
try
{
s1 = datainputstream.readLine().trim();
}
catch(Exception _ex)
{
return;
}
while(s1.charAt(0) == '/');
dList.addElement(s1);
} while(true);
}
private int validDate(int i)
{
long l = pDate.getTime();
if(i == -20)
l += lDay * 30L;
else
if(i == -10)
l -= lDay;
else
l += lDay * (long)((i + 1) - jSem);
if((new Date(l)).getHours() != 0)
l += lDay / 24L;
int j = 1 << (new Date(l)).getDay();
if((l >= minDate || minDate == -1L) && (l <= maxDate || maxDate == -1L) && ((jValid & j) != j || i < 0) && (!holDate(new Date(l)) || i < -9))
return i;
else
return -1;
}
public void selDate(int i)
{
if(i == -99)
iActif = (dDate.getDate() + jSem) - 2;
if(iActif > -1)
{
dest = formURL(iActif, true);
if(sStr.length() > 0)
dest2 = formURL(iActif, false);
showStatus(dest);
}
}
public synchronized void update(Graphics g)
{
if(offScreen != null)
{
paintApplet(offScreen);
g.drawImage(buffer, 0, 0, this);
return;
} else
{
paintApplet(g);
return;
}
}
public void paintApplet(Graphics g)
{
int i = 0;
int ai[] = {
0, 0, 0
};
int ai1[] = {
0, 0, 0
};
String s = new String("");
if(isShow == 1 || isShow == 3)
{
g.setColor(new Color(0xffffff));
g.fillRect(0, 0, aWidth, aHeight + zY);
}
if(isShow > 0)
{
g.setColor(new Color(0xd0d0d0));
g.fillRect(aWidth - 21, 1, 15, zY - 2);
g.draw3DRect(aWidth - 21, 1, 15, zY - 2, iActif != -40);
ai[0] = aWidth - 17;
ai[1] = aWidth - 13;
ai[2] = aWidth - 9;
ai1[0] = ai1[2] = 9;
ai1[1] = zY - 7;
g.setColor(new Color(0));
g.fillPolygon(ai, ai1, 3);
}
if(isShow == 1 || isShow == 3)
return;
if(bgimg == null)
{
g.setColor(new Color(bC_a));
g.fill3DRect(0, 0 + zY, aWidth, aHeight, true);
g.fill3DRect(1, 1 + zY, aWidth - 2, aHeight - 2, true);
g.setColor(new Color(bC_i));
g.fillRect(3, 3 + zY, aWidth - 5, 2 + iT);
g.draw3DRect(3, 3 + zY, aWidth - 7, 2 + iT, false);
} else
{
g.drawImage(bgimg, 0, 0 + zY, this);
}
g.setColor(new Color(bC_a));
g.fillRect(6, 6 + zY, 12, iT - 4);
g.fillRect(aWidth - 21, 6 + zY, 12, iT - 4);
g.draw3DRect(6, 6 + zY, 12, iT - 4, iActif != -10);
g.draw3DRect(aWidth - 21, 6 + zY, 12, iT - 4, iActif != -20);
if(bReg != 1)
{
g.draw3DRect(aWidth - 21, (aHeight - iT) + 1 + zY, 12, iT - 5, iActif != -30);
g.setColor(new Color(tC_w));
g.drawString("?", aWidth - 18, (aHeight - 5) + zY);
}
g.setColor(new Color(tC_w));
int j = (iT - wMetrics.getHeight()) / 2 + wMetrics.getHeight() + 2;
ai[0] = ai[1] = aWidth - 17;
ai[2] = aWidth - 11;
ai1[0] = 4 + iT / 6 + zY;
ai1[1] = 4 + (5 * iT) / 6 + zY;
ai1[2] = 4 + iT / 2 + zY;
g.fillPolygon(ai, ai1, 3);
ai[0] = ai[1] = 16;
ai[2] = 10;
g.fillPolygon(ai, ai1, 3);
g.setColor(new Color(tC_a));
s += sM[dDate.getMonth()] + " " + (1900 + dDate.getYear());
i = (aWidth - wMetrics.stringWidth(s)) / 2;
g.drawString(s, i, j + zY);
if(iActif > -1)
{
Date date = new Date(pDate.getTime() + lDay * (long)((iActif + 1) - jSem));
if(date.getHours() != 0)
date = new Date(date.getTime() + lDay / 24L);
String s1 = sD[date.getDay()] + " " + date.getDate() + " " + sM[date.getMonth()];
g.drawString(s1, 5, (aHeight - 5) + zY);
}
g.setColor(new Color(tC_w));
if(bgimg == null)
{
i = 0;
do
g.drawString("" + sD[i + iFD].charAt(0), 8 + (i + iWD) * iH, 4 + iT + iT + zY);
while(++i < 7);
}
if(iWD == 1)
{
i = 3;
i = 3;
do
{
String s2;
if((jS1 + i) - 3 == 0)
s2 = "53";
else
if((jS1 + i) - 3 > 53)
s2 = "1";
else
s2 = "" + ((jS1 + i) - 3);
g.drawString(" " + s2, iH - 3 - wMetrics.stringWidth(s2), iT * i + 4 + zY);
} while(++i < 9);
}
g.setColor(new Color(tC_a));
i = 1;
do
drawEl(g, i - 1);
while(++i < 43);
}
public void setMax(int i, int j, int k)
{
maxDate = -1L;
if(i > 0)
{
if(k > 1800)
k -= 1900;
try
{
Date date = new Date(k, j - 1, i);
maxDate = date.getTime();
if(dDate.getTime() > maxDate)
{
dDate = date;
initDate(-99);
repaint();
return;
}
}
catch(Exception _ex) { }
}
}
public void start()
{
repaint();
}
public void drawEl(Graphics g, int i)
{
int j = i % 7 + iWD;
int k = 3 + i / 7;
g.setColor(new Color(bC_i));
if(bgimg == null)
g.fillRect(3 + j * iH, (zY + 8 + iT * k) - iT, iH, iT);
Date date = new Date(pDate.getTime() + lDay * (long)((i + 1) - jSem));
if(date.getHours() != 0)
date = new Date(date.getTime() + lDay / 24L);
if(iActif == i)
g.draw3DRect(2 + j * iH, (zY + 8 + iT * k) - iT, iH, iT - 1, !pressedButt);
g.setFont(wFont);
i = 1 << date.getDay();
if(date.getMonth() != pDate.getMonth() || (jValid & i) == i || holDate(date))
{
g.setColor(new Color(tC_i));
} else
{
g.setColor(new Color(tC_a));
if(date.getDate() == dDate.getDate())
{
g.setColor(new Color(bC_s));
g.fillRect(4 + j * iH, (zY + 9 + iT * k) - iT, iH - 2, iT - 2);
g.setColor(new Color(tC_s));
g.setFont(wFont2);
}
}
i = (iH - wMetrics.stringWidth("00")) / 3;
if(date.getDate() < 10)
{
g.drawString("0" + date.getDate(), 6 + j * iH + i, zY + iT * k + 4);
return;
} else
{
g.drawString("" + date.getDate(), 6 + j * iH + i, zY + iT * k + 4);
return;
}
}
public String getAppletInfo()
{
return "tcaldate v2.51 * Calendar Applet by R. BERTHOU (1998..2001)\r\n E-Mail : rbl@berthou.com\r\nURL :" + sR;
}
public boolean mouseDown(Event event, int i, int j)
{
pressedButt = true;
return true;
}
public void init()
{
String s;
setLayout(null);
lDay = (new Date(97, 1, 2, 2, 0, 0)).getTime() - (new Date(97, 1, 2, 1, 0, 0)).getTime();
lDay = lDay * 24L;
s = getParameter("fontsize");
int i = 12;
if(s != null)
i = Integer.parseInt(s);
s = getParameter("font");
if(s != null)
{
wFont = new Font(s, 0, i);
wFont2 = new Font(s, 1, i);
}
if(wFont == null)
{
wFont = getFont();
wFont2 = getFont();
}
s = getParameter("weeknumber");
if(s == null)
iWD = 1;
else
iWD = 0;
s = getParameter("edit");
if(s == null)
{
isShow = 0;
zY = 0;
} else
{
if(s.equals("auto"))
isShow = 3;
else
isShow = 1;
s = getParameter("fesize");
if(s != null)
i = Integer.parseInt(s);
s = getParameter("fontedit");
if(s != null)
wFontEdit = new Font(s, 0, i);
if(wFontEdit == null)
wFontEdit = wFont;
wMetrics = getFontMetrics(wFontEdit);
zY = (wMetrics.getHeight() * 120) / 100;
}
try
{
aWidth = size().width;
aHeight = size().height - zY;
buffer = createImage(aWidth, aHeight + zY);
offScreen = buffer.getGraphics();
iH = (aWidth - 6) / (7 + iWD);
}
catch(Exception _ex)
{
offScreen = null;
}
wMetrics = getFontMetrics(wFont);
iT = (wMetrics.getHeight() * 120) / 100;
s = getParameter("bgcolor");
bC_a = s != null ? Integer.parseInt(s) : 0xafafaf;
s = getParameter("bgcolor2");
bC_i = s != null ? Integer.parseInt(s) : 0xe0e0e0;
s = getParameter("bgcolor3");
bC_s = s != null ? Integer.parseInt(s) : 0;
s = getParameter("t_col1");
tC_a = s != null ? Integer.parseInt(s) : 0;
s = getParameter("t_col2");
tC_i = s != null ? Integer.parseInt(s) : 0x909090;
s = getParameter("t_col3");
tC_s = s != null ? Integer.parseInt(s) : 0xffffff;
s = getParameter("t_col4");
tC_w = s != null ? Integer.parseInt(s) : tC_a;
s = getParameter("target");
targ = s != null ? s : "_self";
s = getParameter("script");
if(s == null)
sStr = "";
else
sStr = new String(s);
dest2 = new String("");
sDest = getParameter("link");
if(sDest == null)
sDest = "";
s = getParameter("jvalid");
jValid = s != null ? Integer.parseInt(s) : 0;
s = getParameter("startsunday");
iFD = s != null ? Integer.parseInt(s) : 1;
s = getParameter("current");
if(s == null)
System.out.println("HOE");
// break ;//MISSING_BLOCK_LABEL_800;
//this;
//new Date();
Date.parse(s);
//minDate;
dDate = new Date(minDate);
//break ;//MISSING_BLOCK_LABEL_791;
//JVM INSTR ;//pop ;
dDate = new Date();
initDate(-99);
//break ;//MISSING_BLOCK_LABEL_805;
initDate(-1);
//s = getParameter("min");
//if(s == null)
// break ;//MISSING_BLOCK_LABEL_845;
//this;
//new Date();
//Date.parse(s);
//minDate;
//break ;//MISSING_BLOCK_LABEL_852;
//JVM INSTR ;//pop ;
//minDate = -1L;
//break ;//MISSING_BLOCK_LABEL_852;
minDate = -1L;
//s = getParameter("max");
//if(s == null)
// break ;//MISSING_BLOCK_LABEL_889;
//this;
//new Date();
//Date.parse(s);
//maxDate;
//break ;//MISSING_BLOCK_LABEL_889;
//JVM INSTR ;//pop ;
maxDate = -1L;
int j = 1;
do
{
String s1 = getParameter("month" + j);
if(s1 != null)
sM[j - 1] = new String(s1);
} while(++j < 13);
j = 1;
do
{
String s2 = getParameter("day" + j);
if(s2 != null)
sD[j - 1] = new String(s2);
} while(++j < 8);
sD[7] = sD[0];
String s3 = getParameter("bgImg");
if(s3 != null)
{
MediaTracker mediatracker = new MediaTracker(this);
bgimg = getImage(getCodeBase(), s3);
mediatracker.addImage(bgimg, 0);
try
{
mediatracker.waitForAll();
}
catch(InterruptedException _ex) { }
} else
{
bgimg = null;
}
s3 = getParameter("holfile");
if(s3 != null)
readFile(s3);
sClose = null;
initDate(-99);
if(isShow > 0)
{
String s4 = getParameter("bxc");
bXC = s4 != null ? Integer.parseInt(s4) : 0xffffff;
setBackground(new Color(bXC));
e1 = new edate(this);
e1.setFont(wFontEdit);
add(e1);
e1.reshape(1, 1, aWidth - 24, zY);
e1.setText(getDate());
}
return;
}
public tcaldate()
{
zY = 22;
minDate = -1L;
maxDate = -1L;
iActif = -1;
iWD = 1;
}
public boolean mouseMove(Event event, int i, int j)
{
j -= zY;
if((isShow == 1 || isShow == 3) && j > 0)
return true;
int k;
if(i > 3 + iH * iWD && i < 3 + iH * (7 + iWD) && j > 8 + iT + iT && j < 8 + 8 * iT)
k = ((j - 8 - iT - iT) / iT) * 7 + (i - 3 - iH * iWD) / iH;
else
k = -1;
if(i > 5 && i < 18 && j > 5 && j < 2 + iT)
k = -10;
else
if(i > aWidth - 20 && i < aWidth - 9 && j > 5 && j < 2 + iT)
k = -20;
else
if(i > aWidth - 20 && i < aWidth - 9 && j > (aHeight - iT) + 1 && j < aHeight - 3)
{
if(bReg != 1)
k = -30;
} else
if(j < -1 && i > aWidth - 21 && i < aWidth - 5 && isShow > 0)
k = -40;
if(iActif != k)
{
if(k > -30)
k = validDate(k);
iActif = k;
dest = new String("");
if(iActif == -30)
{
if(sClose == null)
dest = new String(sR);
else
dest = new String(sClose);
showStatus(dest);
} else
if(iActif > -30)
selDate(k);
repaint();
}
return true;
}
private int iFD;
private Vector dList;
private int zY;
static String sR = "http://www.kg-group.com";
private int bReg;
private long lDay;
private Image bgimg;
private Image buffer;
private Graphics offScreen;
private boolean onButt;
private boolean pressedButt;
private URL clickDest;
private String dest;
private String dest2;
public String sDest;
public String sStr;
public String sClose;
private String targ;
private int tC_a;
private int tC_i;
private int tC_s;
private int tC_w;
private int bC_a;
private int bC_i;
private int bC_s;
private int bXC;
public Date dDate;
private Date pDate;
private long minDate;
private long maxDate;
private String sM[] = {
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October",
"November", "December", ""
};
private String sD[] = {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
};
private int jSem;
private int jS1;
private int jValid;
private Font wFont;
private Font wFont2;
private Font wFontEdit;
private FontMetrics wMetrics;
private int isShow;
private int aWidth;
private int aHeight;
private int iT;
private int iH;
private int iActif;
private int iWD;
public edate e1;
}
///////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
import java.awt.Event;
import java.awt.TextField;
class edate extends TextField
{
public edate(tcaldate tcaldate1)
{
p = tcaldate1;
}
public boolean keyDown(Event event, int i)
{
return p.kDown(event.key);
}
tcaldate p;
}
インターネットスタートページ 鈴木維一郎 石橋三重子
|
|
|
|
|
|