PK2META-INF/MANIFEST.MFMLK-. K-*ϳR03MuI,.RH+ϭJL1sOPKl@>PK 2*·&com/tomzammikiel2/MyListenerHold.class.1 com/tomzammikiel2/MyListenerHoldjava/lang/Objectjava/awt/event/ActionListenerjava/io/SerializablemyListLjavax/swing/DefaultListModel;indexI"(Ljavax/swing/DefaultListModel;I)VCode()V    LineNumberTableLocalVariableTablethis"Lcom/tomzammikiel2/MyListenerHold;lmindxactionPerformed(Ljava/awt/event/ActionEvent;)Vjavax/swing/DefaultListModel getElementAt(I)Ljava/lang/Object; !" #com/tomzammikiel2/TimeHold% setElementAt(Ljava/lang/Object;I)V '( )eLjava/awt/event/ActionEvent;tempLcom/tomzammikiel2/TimeHold; SourceFileMyListenerHold.java!   Y**+*     b**$&M*,**79: +, -./0PK 2W $com/tomzammikiel2/PageableText.class.com/tomzammikiel2/PageableTextjava/lang/Objectjava/awt/print/Pageablejava/awt/print/Printable FONTFAMILYLjava/lang/String;FONTSIZEI FONTSTYLELINESPACEFACTORFformatLjava/awt/print/PageFormat;linesLjava/util/Vector;fontLjava/awt/Font; linespaceing linesPerPagenumPagesbaseline()VCode Monospaced  ! #?  &LineNumberTableLocalVariableTable0(Ljava/lang/String;Ljava/awt/print/PageFormat;)V Exceptionsjava/io/IOException-java/io/StringReader/(Ljava/lang/String;)V *1 02.(Ljava/io/Reader;Ljava/awt/print/PageFormat;)V *4 5this Lcom/tomzammikiel2/PageableText;text,(Ljava/io/File;Ljava/awt/print/PageFormat;)Vjava/io/FileReader;(Ljava/io/File;)V *= <>fileLjava/io/File; * B  D  Fjava/io/BufferedReaderH(Ljava/io/Reader;)V *J IKjava/util/VectorM NB  P addElement(Ljava/lang/Object;)V RS NTreadLine()Ljava/lang/String; VW IX setGlobals Z [streamLjava/io/Reader;inLjava/io/BufferedReader;line0(Ljava/util/Vector;Ljava/awt/print/PageFormat;)Velements()Ljava/util/Enumeration; cd Nejava/util/Enumerationg nextElement()Ljava/lang/Object; ij hkjava/lang/Stringmlength()I op nq substring(II)Ljava/lang/String; st nu(I)Ljava/lang/String; sw nxhasMoreElements()Z z{ h| listLines allTheLinesloopLjava/util/Enumeration;aLine shortLine java/awt/Font(Ljava/lang/String;II)V *    java/awt/print/PageFormatgetImageableHeight()D java/lang/Mathfloor(D)D  size p N  getNumberOfPages getPageFormat(I)Ljava/awt/print/PageFormat;pagenum getPrintable(I)Ljava/awt/print/Printable;print2(Ljava/awt/Graphics;Ljava/awt/print/PageFormat;I)Ijava/awt/GraphicsgetFontMetrics'(Ljava/awt/Font;)Ljava/awt/FontMetrics; java/awt/FontMetrics getAscent p java/awt/ColorwhiteLjava/awt/Color; setColor(Ljava/awt/Color;)V  getImageableX  getImageableY getImageableWidth fillRect(IIII)V setFont(Ljava/awt/Font;)V black  elementAt(I)Ljava/lang/Object; N drawString gLjava/awt/Graphics;fmLjava/awt/FontMetrics; startLineendLinex0y0i SourceFilePageableText.java!     D  "$%'( !)*+,.P*0Y+3,6( . /) 789 *:,.P*=78=]^=&_`% a 5a *b h*C*E*,GNYON+f:8ln:rKLv:-ULy:-U}*-Q*\(BJ) KMNOP+Q5R?SETNVTO^YcZg[)Hh78h~hRL+) ? ZK*Y $"*"'j**G*o**Qd*l`(_`!d6eJh) K78p/*(m) 789*G(n)78 6*(o)78  **E+*:*E++,,Ž,Ŏ,+*+ж*h6*`d6*Q*Qd6,6,Ž*E`66/*Qn:  r + *`6(fyz}$~.7>INSV^emx)p 78 . mq xf H < 6 a PK 1'^ #//#com/tomzammikiel2/PageableText.javapackage com.tomzammikiel2; import java.awt.*; import java.awt.print.*; import java.io.*; import java.util.Vector; import java.util.Enumeration; /* * This example is from the book "Java Foundation Classes in a Nutshell". * Written by David Flanagan. Copyright (c) 1999 by O'Reilly & Associates. * You may distribute this source code for non-commercial purposes only. * You may study, modify, and use this example for any purpose, as long as * this notice is retained. Note that this example is provided "as is", * WITHOUT WARRANTY of any kind either expressed or implied. */ /* P.S. This class has been modified from the book for my purposes here, and a comment from David Flanagan is as follows: "Actually, you're fine here, too. The copyright says that you can use the code for any purpose. That includes commercial purposes. I just don't want you taking my examples, putting them in a new book and re-selling them!" wrote David Flanagan. */ public class PageableText implements Pageable, Printable { public static String FONTFAMILY = "Monospaced"; public static int FONTSIZE = 10; public static int FONTSTYLE = Font.PLAIN; public static float LINESPACEFACTOR = 1.1f; PageFormat format; // The pagesize, margins , and orientation Vector lines; // the lines to print Font font; // the font to print with int linespaceing; // the space between lines int linesPerPage; // how many lines fit per page int numPages; // how many pages to print all lines int baseline = -1; // the baseline position of the font // create a Pageable text object for a single string of text public PageableText(String text, PageFormat format) throws IOException { this(new StringReader(text), format); } // creata a PageableText object for a file of text public PageableText(File file, PageFormat format) throws IOException { this(new FileReader(file),format); } // create a Pageble Text objet for a stream of text public PageableText(Reader stream,PageFormat format) throws IOException { this.format = format; BufferedReader in = new BufferedReader(stream); lines = new Vector(); String line; while ((line = in.readLine())!=null) { lines.addElement(line); } this.setGlobals(); } public PageableText(Vector listLines, PageFormat format) { this.format = format; Vector allTheLines = new Vector(); Enumeration loop = listLines.elements(); while (loop.hasMoreElements()) { String aLine = (String) loop.nextElement(); if (aLine.length() > 75 ){ String shortLine = aLine.substring(0,76); allTheLines.addElement(shortLine); aLine = aLine.substring(76); } allTheLines.addElement(aLine); } lines = allTheLines; this.setGlobals(); } // end of constructors public void setGlobals() { font = new Font(FONTFAMILY,FONTSTYLE,FONTSIZE); linespaceing = (int) (FONTSIZE * LINESPACEFACTOR); // figure out lines per page and number of pages linesPerPage = (int) Math.floor(format.getImageableHeight()/linespaceing); numPages = (lines.size() - 1)/linesPerPage + 1; } // the folowing are the methods of the Pageable interface; // This class must also impliment the Printable interface public int getNumberOfPages() { return numPages; } public PageFormat getPageFormat(int pagenum) {return format;} public Printable getPrintable(int pagenum) {return this;} /* the folowing is the print method of the printable interface. It does the printing */ public int print(Graphics g, PageFormat format, int pagenum) { if ((pagenum <0 )| (pagenum >=numPages)) return NO_SUCH_PAGE; // first time called figure out baseline fopr font if (baseline == -1) { FontMetrics fm = g.getFontMetrics(font); baseline =fm.getAscent(); } // clear the background to white g.setColor(Color.white); g.fillRect((int) format.getImageableX(),(int) format.getImageableY(), (int) format.getImageableWidth(), (int) format.getImageableHeight()); // set the font to color to be drawn with - can't assume it black. g.setFont(font); g.setColor(Color.black); // figure which lines will be print on this page int startLine = pagenum * linesPerPage; int endLine = startLine + linesPerPage - 1; if (endLine >= lines.size()) { endLine = lines.size() - 1; } // compute the position of on the page of the first line int x0 = (int) format.getImageableX(); int y0 = (int) format.getImageableY() + baseline; // loop through the lines , printng them for (int i = startLine; i<=endLine; i++) { // get the line String line = (String) lines.elementAt(i); // draw the line if (line.length() > 0) { g.drawString(line,x0,y0); } // move down for the next line y0 += linespaceing; } // tell the PrinterJob that the page was succesfuly printed return PAGE_EXISTS; } // end of print } // end of class PageablePK ܝ2ƋZZcom/tomzammikiel5/Clock$1.class./com/tomzammikiel5/Clock$1java/lang/Object'javax/swing/event/ListSelectionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$1; valueChanged)(Ljavax/swing/event/ListSelectionEvent;)V$javax/swing/event/ListSelectionEvent getSource()Ljava/lang/Object;  javax/swing/JListgetSelectedIndex()I ! "com/tomzammikiel5/Clock$workI &' %(e&Ljavax/swing/event/ListSelectionEvent; SourceFile Clock.java InnerClasses0   8 **+    J*+#) *+,-. PK ܝ2Bouu com/tomzammikiel5/Clock$10.class.ycom/tomzammikiel5/Clock$10java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$10;actionPerformed(Ljava/awt/event/ActionEvent;)Vjava/awt/print/PrinterJob getPrinterJob()Ljava/awt/print/PrinterJob;   defaultPage()Ljava/awt/print/PageFormat;    pageDialog8(Ljava/awt/print/PageFormat;)Ljava/awt/print/PageFormat; "# $com/tomzammikiel5/Clock&jBoxLjavax/swing/JList; () '*javax/swing/JList,getModel()Ljavax/swing/ListModel; ./ -0javax/swing/DefaultListModel2elements()Ljava/util/Enumeration; 45 36java/util/Vector8 9java/util/Enumeration; nextElement()Ljava/lang/Object; => <?com/tomzammikiel2/TimeHoldAtoString()Ljava/lang/String; CD BEadd(Ljava/lang/Object;)Z GH 9IhasMoreElements()Z KL <Mcom/tomzammikiel2/PageableTextO0(Ljava/util/Vector;Ljava/awt/print/PageFormat;)V Q PR setPageable(Ljava/awt/print/Pageable;)V TU V printDialog XL Yprint [ \'Problem with printer, check and re-try.^javax/swing/JOptionPane`showMessageDialog)(Ljava/awt/Component;Ljava/lang/Object;)V bc adjava/awt/print/PrinterExceptionfeLjava/awt/event/ActionEvent;jobLjava/awt/print/PrinterJob;formatLjava/awt/print/PageFormat;loopLjava/util/Enumeration;linesLjava/util/Vector;lineLjava/lang/String;pex!Ljava/awt/print/PrinterException; SourceFile Clock.java InnerClasses0   8 **+    :vM,,!%N*+137:9Y::@BF:JWN,PY-SW,Z,]M*+_ehhgR (+58:BLZahipruRvvhidjk [lmIno(@pq:rsi tuvwx PK ܝ2u2JJ com/tomzammikiel5/Clock$11.class.2com/tomzammikiel5/Clock$11java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$11;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/ClockwinLjavax/swing/JFrame;  javax/swing/JFrame setVisible(Z)V ! "dispose $ %java/lang/System'exit(I)V )* (+eLjava/awt/event/ActionEvent; SourceFile Clock.java InnerClasses0   8 **+    Z*#*&,    -./01 PK ܝ2qR com/tomzammikiel5/Clock$12.class.+com/tomzammikiel5/Clock$12java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$12;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/ClockjBoxLjavax/swing/JList;  Clock task timer Copyright 2005 Thomas E. Zammikiel. (Shareware)Free non-exclusive non-commercial use license to all. If you use it at work - you need to register it - only five dollarsjavax/swing/JOptionPane showMessageDialog)(Ljava/awt/Component;Ljava/lang/Object;)V "# !$eLjava/awt/event/ActionEvent; SourceFile Clock.java InnerClasses0   8 **+    M *%    &'()* PK ܝ2I}] ] com/tomzammikiel5/Clock$13.class.com/tomzammikiel5/Clock$13java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$13;actionPerformed(Ljava/awt/event/ActionEvent;)Vjava/awt/print/PrinterJob getPrinterJob()Ljava/awt/print/PrinterJob;   defaultPage()Ljava/awt/print/PageFormat;    pageDialog8(Ljava/awt/print/PageFormat;)Ljava/awt/print/PageFormat; "# $java/lang/String&.To Register 'TaskClock' fill out form and mail(with payment of Five dolars to:* ,Thomas E. Zammikiel. P.O. BOX 550Yonkers, NY 1071025Last Name: __________________________________________46First Name: __________________________________________62Street: __________________________________________8=City, State & ZIP: __________________________________________: Optional:<1E-mail:__________________________________________>7Phone number:__________________________________________@(Comments to improve or change TaskClock:BB__________________________________________________________________Djava/util/VectorF Gadd(Ljava/lang/Object;)Z IJ GKcom/tomzammikiel2/PageableTextM0(Ljava/util/Vector;Ljava/awt/print/PageFormat;)V O NP setPageable(Ljava/awt/print/Pageable;)V RS T printDialog()Z VW Xprint Z [com/tomzammikiel5/Clock]jBoxLjavax/swing/JList; _` ^a'Problem with printer, check and re-try.cjavax/swing/JOptionPaneeshowMessageDialog)(Ljava/awt/Component;Ljava/lang/Object;)V gh fijava/awt/print/PrinterExceptionkeLjava/awt/event/ActionEvent;jobLjava/awt/print/PrinterJob;formatLjava/awt/print/PageFormat;regLines[Ljava/lang/String; holdLinesLjava/util/Vector;indexItempLjava/lang/String;pex!Ljava/awt/print/PrinterException; SourceFile Clock.java InnerClasses0   8 **+ &   WM,,!%N)'Y)SY+SY-SY/SY1SY3SY-SY-SY5SY -SY 7SY -SY 9SY -SY;SY-SY-SY-SY=SY-SY?SY-SYASY-SYCSY-SYESY-SYESY-SYESY-SY ESY!-SY"ESY#-SY$ESY%-SY&ESY'-SY(ES:GYH:62:LW,NY-QU,Y,\M*bdjIIl:)+ /012#3(4-53697?8E9K:Q;W<]=c>i?o@uA{BCDEFGHIJKLMNOPQRSTUVWX/^ _`b"_-g;iBjInJqQrSpVt\ WWmnEop <qrEst <uvwxyzJ {|}~ PK ܝ2Ccom/tomzammikiel5/Clock$2.class.4com/tomzammikiel5/Clock$2java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$2;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/ClockworkI  jBoxLjavax/swing/JList;   javax/swing/JList"getSelectedValue()Ljava/lang/Object; $% #&com/tomzammikiel2/TimeHold(start * )+eLjava/awt/event/ActionEvent;thLcom/tomzammikiel2/TimeHold; SourceFile Clock.java InnerClasses0   8 **+    h**!')M,,  -./0123 PK ܝ2\44com/tomzammikiel5/Clock$3.class.>com/tomzammikiel5/Clock$3java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$3;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/ClockworkI  jBoxLjavax/swing/JList;   javax/swing/JList"getSelectedValue()Ljava/lang/Object; $% #&com/tomzammikiel2/TimeHold(stop * )+getModel()Ljavax/swing/ListModel; -. #/javax/swing/DefaultListModel1 setElementAt(Ljava/lang/Object;I)V 34 25eLjava/awt/event/ActionEvent;thLcom/tomzammikiel2/TimeHold; SourceFile Clock.java InnerClasses0   8 **+    6*-*!')M,,*!02,*6 5 66789:;<= PK ܝ2#OD{{com/tomzammikiel5/Clock$4.class.Ecom/tomzammikiel5/Clock$4java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$4;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/ClockworkI  jBoxLjavax/swing/JList;   javax/swing/JList"getSelectedValue()Ljava/lang/Object; $% #&com/tomzammikiel2/TimeHold(setCount(J)V *+ ), setStartTime .+ )/getModel()Ljavax/swing/ListModel; 12 #3javax/swing/DefaultListModel5 setElementAt(Ljava/lang/Object;I)V 78 69stop ; )<eLjava/awt/event/ActionEvent;thLcom/tomzammikiel2/TimeHold; SourceFile Clock.java InnerClasses0   8 **+    @*7*!')M, -, 0*!46,*:,= #;? @@>?&@ABCD PK ܝ2Q;R,,com/tomzammikiel5/Clock$5.class.[com/tomzammikiel5/Clock$5java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$5;actionPerformed(Ljava/awt/event/ActionEvent;)VEnter new task.javax/swing/JOptionPaneshowInputDialog&(Ljava/lang/Object;)Ljava/lang/String;  com/tomzammikiel5/Clock jBoxLjavax/swing/JList; "# !$javax/swing/JList&getModel()Ljavax/swing/ListModel; () '*javax/swing/DefaultListModel,javax/swing/Timer. com/tomzammikiel2/MyListenerHold0getSize()I 23 -4"(Ljavax/swing/DefaultListModel;I)V 6 17#(ILjava/awt/event/ActionListener;)V 9 /:setInitialDelay(I)V <= /> setCoalesce(Z)V @A /Bcom/tomzammikiel2/TimeHoldD)(Ljava/lang/String;JLjavax/swing/Timer;)V F EG addElement(Ljava/lang/Object;)V IJ -KsetSelectedIndex M= 'NeLjava/awt/event/ActionEvent;msgLjava/lang/String;tmLjavax/swing/Timer;dmLjavax/swing/DefaultListModel; SourceFile Clock.java InnerClasses0   8 **+    ]M,U*%+-:/Y1Y58;N-?-CEY, -HL*%5dO6   &(+27<K\4]]PQWRS2*TUCVWXYZ PK ܝ2yF&&com/tomzammikiel5/Clock$6.class.[com/tomzammikiel5/Clock$6java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$6;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/ClockworkI  jBoxLjavax/swing/JList;   javax/swing/JList"getSelectedValue()Ljava/lang/Object; $% #&com/tomzammikiel2/TimeHold(getName()Ljava/lang/String; *+ ),java/lang/StringBuffer.Modify: 0(Ljava/lang/String;)V 2 /3append,(Ljava/lang/String;)Ljava/lang/StringBuffer; 56 /7 By re-typing it9toString ;+ /<javax/swing/JOptionPane>showInputDialog8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String; @A ?BsetName D2 )EgetModel()Ljavax/swing/ListModel; GH #Ijavax/swing/DefaultListModelK setElementAt(Ljava/lang/Object;I)V MN LOeLjava/awt/event/ActionEvent;msgLjava/lang/String; replaceMsgtimeHLcom/tomzammikiel2/TimeHold; SourceFile Clock.java InnerClasses0   8 **+    bMN*U*!'):-M/Y14,8:8=,CN-"-F*!JL*PB$169:>BHU^a4bbQR`ST^UTCVWXYZ PK ܝ2-/^j j com/tomzammikiel5/Clock$7.class.com/tomzammikiel5/Clock$7java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$7;actionPerformed(Ljava/awt/event/ActionEvent;)Vjava/util/Vector com/tomzammikiel5/ClockjBoxLjavax/swing/JList;  javax/swing/JList!getModel()Ljavax/swing/ListModel; #$ "%javax/swing/DefaultListModel'workI )* +size()I -. (/ getElementAt(I)Ljava/lang/Object; 12 (3com/tomzammikiel2/TimeHold5 isRunning()Z 78 69stop ; 6<java/lang/Integer>(I)V @ ?Aadd(Ljava/lang/Object;)Z CD Ejavax/swing/TimerG com/tomzammikiel2/MyListenerHoldI"(Ljavax/swing/DefaultListModel;I)V K JL#(ILjava/awt/event/ActionListener;)V N HOsetInitialDelay Q@ HR setCoalesce(Z)V TU HVgetName()Ljava/lang/String; XY 6ZgetCount()J \] 6^)(Ljava/lang/String;JLjavax/swing/Timer;)V ` 6a setElementAt(Ljava/lang/Object;I)V cd (econtains gD hstart j 6kremoveElementAt m@ (nsetSelectedIndex p@ "qupdateUI s "teLjava/awt/event/ActionEvent;dlmLjavax/swing/DefaultListModel; stopVectorLjava/util/Vector; stopIntegerLjava/lang/Integer;lengthithLcom/tomzammikiel2/TimeHold;indtmhtimeLjavax/swing/Timer;timehld SourceFile Clock.java InnerClasses0   8 **+     XYN* &(M*,9* &(06*,6J* &(46::(=*,?YdB:-FW*,`6{* &(46:HYJY,dMP:SW6Y[_b: , df?YdB:-i l,,0do*,+*,0d,* *,r* u-!3?FILQV^co| $ / < M W XXvwBxyPz{||}|}3$~*<Q*V-*aI(  PK ܝ2`G  com/tomzammikiel5/Clock$8.class.com/tomzammikiel5/Clock$8java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$8;actionPerformed(Ljava/awt/event/ActionEvent;)Vcom/tomzammikiel5/Clockchooser1Ljavax/swing/JFileChooser;  winLjavax/swing/JFrame;   javax/swing/JFileChooser"showOpenDialog(Ljava/awt/Component;)I $% #&getSelectedFile()Ljava/io/File; () #*java/io/ObjectInputStream,java/io/FileInputStream.(Ljava/io/File;)V 0 /1(Ljava/io/InputStream;)V 3 -4 readObject()Ljava/lang/Object; 67 -8javax/swing/DefaultListModel:java/util/Vector<java/lang/Integer>intValue()I @A ?BworkI DE Fclose H -IjBoxLjavax/swing/JList; KL Mjavax/swing/JListOsetModel(Ljavax/swing/ListModel;)V QR PSupdateUI U PVelements()Ljava/util/Enumeration; XY =Zjava/util/Enumeration\ nextElement ^7 ]_getModel()Ljavax/swing/ListModel; ab Pc elementAt(I)Ljava/lang/Object; ef ;gcom/tomzammikiel2/TimeHoldistart k jlhasMoreElements()Z no ]psetSelectedIndex(I)V rs PtFError trying to open file, Please pick a different file and try again.vjavax/swing/JOptionPanexshowMessageDialog)(Ljava/awt/Component;Ljava/lang/Object;)V z{ y|lInternal Error in trying to open file, Could not create a class. Please pick a different file and try again.~java/io/IOException java/lang/ClassNotFoundExceptioneLjava/awt/event/ActionEvent;resultsaveFileLjava/io/File;oisLjava/io/ObjectInputStream; holdModelLjavax/swing/DefaultListModel;reStartsLjava/util/Vector;reSelectLjava/lang/Integer;reSelloopLjava/util/Enumeration; testIntegerpickexLjava/io/IOException;cnfe"Ljava/lang/ClassNotFoundException; SourceFile Clock.java InnerClasses0   8 **+ M   ; **!'=*+N-Y/Y-25:9;:9=:9?:C6*GJ*NT*NW[: . `?:  C6 *Nd; hjm q*Nu*NW":*Nw}:*N}!!$PQR!U%V-U2W4X7W<YFZP[W]`^e_qa{bcdefgfgcklmpqotwxv}E!2<FPW|EQ  E   PK ܝ2˾com/tomzammikiel5/Clock$9.class.com/tomzammikiel5/Clock$9java/lang/Objectjava/awt/event/ActionListenerthis$0Lcom/tomzammikiel5/Clock; Synthetic(Lcom/tomzammikiel5/Clock;)VCode()V   LineNumberTableLocalVariableTablethisLcom/tomzammikiel5/Clock$9;actionPerformed(Ljava/awt/event/ActionEvent;)Vjava/util/Vector com/tomzammikiel5/Clockchooser2Ljavax/swing/JFileChooser;  winLjavax/swing/JFrame; !" #javax/swing/JFileChooser%showSaveDialog(Ljava/awt/Component;)I '( &)getSelectedFile()Ljava/io/File; +, &- java/io/File/exists()Z 12 03java/lang/StringBuffer5File: 7(Ljava/lang/String;)V 9 6:getName()Ljava/lang/String; <= 0>append,(Ljava/lang/String;)Ljava/lang/StringBuffer; @A 6B exists.D Would you like to overwrite it?FtoString H= 6IjBoxLjavax/swing/JList; KL M File ExistsOjavax/swing/JOptionPaneQshowConfirmDialog<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)I ST RUjavax/swing/JListWgetModel()Ljavax/swing/ListModel; YZ X[javax/swing/DefaultListModel] elementAt(I)Ljava/lang/Object; _` ^acom/tomzammikiel2/TimeHoldc isRunning e2 dfstop h dijava/lang/Integerk(I)V m lnadd(Ljava/lang/Object;)Z pq rsize()I tu ^vjava/io/ObjectOutputStreamxjava/io/FileOutputStreamz(Ljava/io/File;)V | {}(Ljava/io/OutputStream;)V  y writeObject(Ljava/lang/Object;)V ygetSelectedIndex u Xclose yelements()Ljava/util/Enumeration; java/util/Enumeration nextElement()Ljava/lang/Object; intValue u lstart dhasMoreElements 2 workI setSelectedIndex m XupdateUI XOError trying to save the file, Please pick a different file name and try again.showMessageDialog)(Ljava/awt/Component;Ljava/lang/Object;)V Rjava/io/IOExceptioneLjava/awt/event/ActionEvent;saveFileLjava/io/File; runningListLjava/util/Vector;resultredoZmsgLjava/lang/String;optindx tempTimeHoldLcom/tomzammikiel2/TimeHold;oosLjava/io/ObjectOutputStream; outSelectLjava/lang/Integer;loopLjava/util/Enumeration; testIntegerpickexLjava/io/IOException; SourceFile Clock.java InnerClasses0   8 **+     MYN66w* *$*6\* .M,4D6Y8;,?CECGCJ:*NPV6 66 66@68*N\^bd:gj-lYosW*N\^wyY{Y,~:*N\-lY*No:-: . l:  6 *N\^ bd *N**NO:*N-:.l:6 *N\^ bdαF  &+6=MRW\ehmrx~!&,/;BOTWZdu  \"mh,V ; B J8  PK ܝ2qqcom/tomzammikiel5/Clock.class.com/tomzammikiel5/Clockjava/lang/Object noneSelectedI ConstantValueworkjBoxLjavax/swing/JList;winLjavax/swing/JFrame;chooser1Ljavax/swing/JFileChooser;chooser2dataLjavax/swing/DefaultListModel;jScrollLjavax/swing/JScrollPane; buttonBoxLjavax/swing/JPanel; startButtonLjavax/swing/JButton; stopButton clearButton addButton deleteButton modifyButtonholdArgLjava/lang/String;fileLjavax/swing/JMenu;helpmain([Ljava/lang/String;)VCode()V &' ((Ljava/lang/String;)V &* + displayWindow -' .LineNumberTableLocalVariableTableargs[Ljava/lang/String; workClockLcom/tomzammikiel5/Clock; (javax/swing/JFrame7 TaskClock9 8+ <javax/swing/JFileChooser> ?(  A  Cjavax/swing/DefaultListModelE F(  H  J  Ljavax/swing/JListN O( Qjavax/swing/JPanelS T(  Vjava/awt/FlowLayoutX Y( setLayout(Ljava/awt/LayoutManager;)V [\ T]javax/swing/JButton_Starta `+  dStopf  hClearj  lAddn  pDeleter  tModifyv  xthisfnamejavax/swing/Timer| com/tomzammikiel2/MyListenerHold~"(Ljavax/swing/DefaultListModel;I)V & #(ILjava/awt/event/ActionListener;)V & }setInitialDelay(I)V } setCoalesce(Z)V }com/tomzammikiel2/TimeHold Prototype)(Ljava/lang/String;JLjavax/swing/Timer;)V &  addElement(Ljava/lang/Object;)V FsetModel(Ljavax/swing/ListModel;)V Ocom/tomzammikiel5/Clock$1(Lcom/tomzammikiel5/Clock;)V & addListSelectionListener,(Ljavax/swing/event/ListSelectionListener;)V Ocom/tomzammikiel5/Clock$2 addActionListener"(Ljava/awt/event/ActionListener;)V `com/tomzammikiel5/Clock$3 com/tomzammikiel5/Clock$4 com/tomzammikiel5/Clock$5 com/tomzammikiel5/Clock$6 com/tomzammikiel5/Clock$7 javax/swing/JScrollPane(Ljava/awt/Component;)V &  setVerticalScrollBarPolicy setVisibleRowCount OsetSelectionMode OsetSelectedIndex Oadd*(Ljava/awt/Component;)Ljava/awt/Component; TaddMenus ' javax/swing/JMenuBar ( ! ((Ljavax/swing/JMenu;)Ljavax/swing/JMenu; "! getContentPane()Ljava/awt/Container; 8java/awt/BorderLayout (java/awt/Container ]Center)(Ljava/awt/Component;Ljava/lang/Object;)V South setJMenuBar(Ljavax/swing/JMenuBar;)V 8setDefaultCloseOperation 8 java/io/File + readArgFile(Ljava/io/File;)V pack ' 8show ' 8timLjavax/swing/Timer;menubarLjavax/swing/JMenuBar;javax/swing/JMenu File  +Helpjavax/swing/JMenuItemOpen +0(Ljavax/swing/JMenuItem;)Ljavax/swing/JMenuItem;   com/tomzammikiel5/Clock$8  Save ascom/tomzammikiel5/Clock$9 Print!com/tomzammikiel5/Clock$10# $Exit&com/tomzammikiel5/Clock$11( )About+com/tomzammikiel5/Clock$12- . Print registration form - 1 page0com/tomzammikiel5/Clock$132 3item1Ljavax/swing/JMenuItem;item2item3item4 helpItem1 registerItemjava/io/ObjectInputStream<java/io/FileInputStream> & ?@(Ljava/io/InputStream;)V &B =C readObject()Ljava/lang/Object; EF =Gjava/util/VectorIjava/lang/IntegerKintValue()I MN LOclose Q' =RupdateUI T' OUelements()Ljava/util/Enumeration; WX JYjava/util/Enumeration[ nextElement ]F \^getModel()Ljavax/swing/ListModel; `a Ob elementAt(I)Ljava/lang/Object; de Ffstart h' ihasMoreElements()Z kl \mFError trying to open file, Please pick a different file and try again.ojavax/swing/JOptionPaneqshowMessageDialog s rtlInternal Error in trying to open file, Could not create a class. Please pick a different file and try again.vjava/io/IOExceptionx java/lang/ClassNotFoundExceptionzsaveFileLjava/io/File;oisLjava/io/ObjectInputStream; holdModelreStartsLjava/util/Vector;reSelectLjava/lang/Integer;reSelloopLjava/util/Enumeration; testIntegerpickexLjava/io/IOException;cnfe"Ljava/lang/ClassNotFoundException; SourceFile Clock.java InnerClasses!    !"! #$%n *Y)LY*2,L+/0EFIMN1  23 4545&'%W*6*8Y:;=*?Y@B*?Y@D*FYGI*K*M*OYPR*8Y:;=*?Y@B*?Y@D*FYGI*TYUW*WYYZ^*`Ybce*`Ygci*`Ykcm*`Yocq*`Yscu*`Ywcy0VS&(*',2>7T<UGVTX_Yj\u_`cdefhik1 z5&*%F *)*+K0no p1 z5 {-'%*FYGI}YY*IL++*IY +*R*I*RY**eY**iY**mY**qY**yY**uY**Y*R**R*R*R*W*qW*W*eW*W*iW*W*mW*W*uW*W*yW*ջYM,*ڶW,*߶W*=Y*=*W*=**=,*=*K*Y*K*=*=0't z"{'|,}>IXgv !#$+&/(7)@*I,Z/j2z589;?@B1 z5"7x'%* Y  * Y ߻YL*+W+Y*YM*,W,Y* Y"N*-W-$Y*%Y':*W)Y**Y,:*W.Y*/Y1:*W3Y*40VGHJ'L0M<GP\gp|!#&z1Hz5'56G76g86^96;:6;6% =Y?Y+ADM,HFN,HJ:,HL:P6*M,S*R-*RVZ:+_L:P6 *RcF gjn*RΧM*RpuM*Rwuy{0v~~ ~!*17;CJQT`gqvy|1z z5|}~z!q*h1aQA`g  j $).3PK ۝2g6UJJcom/tomzammikiel5/Clock.javapackage com.tomzammikiel5; import java.awt.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.util.*; import java.util.Vector; import java.io.*; import java.awt.print.*; import com.tomzammikiel2.MyListenerHold; import com.tomzammikiel2.PageableText; import com.tomzammikiel2.TimeHold; /** * This class sets ups and runs the GUI for keeping track of multiple times. * It's a multiple stop watch. Times can be added, started, stoped, cleared to * zero, deleted, or modified * * @author Thomas E. Zammikiel * @version 1.0 * copyright (c) 2005 Thomas E Zammikiel */ public class Clock { public final static int noneSelected = -1; public int work; public JList jBox; public JFrame win = new JFrame("TaskClock"); // The main window public JFileChooser chooser1 = new JFileChooser(); public JFileChooser chooser2 = new JFileChooser(); public DefaultListModel data = new DefaultListModel(); public JScrollPane jScroll; public JPanel buttonBox; public JButton startButton; public JButton stopButton; public JButton clearButton; public JButton addButton; public JButton deleteButton; // added 11-20-04 public JButton modifyButton; // added 11-20-04 public String holdArg = null; public JMenu file; public JMenu help; public static void main(String[] args) { Clock workClock; if (args.length==0){ workClock = new Clock(); } else { workClock = new Clock(args[0]); } workClock.displayWindow(); } // end of main public Clock() { work = noneSelected; jBox = new JList(); win = new JFrame("TaskClock"); // The main window chooser1 = new JFileChooser(); chooser2 = new JFileChooser(); // Make container for the data data = new DefaultListModel(); // Make a swing container for the buttons buttonBox = new JPanel(); buttonBox.setLayout(new FlowLayout()); // create buttons startButton = new JButton("Start"); stopButton = new JButton("Stop"); clearButton = new JButton("Clear"); addButton = new JButton("Add"); deleteButton = new JButton("Delete"); // added 11-20-04 modifyButton = new JButton("Modify"); // added 11-20-04 } public Clock(String fname){ this(); this.holdArg = fname; } public void displayWindow() { // Make container for the data data = new DefaultListModel(); // Make a Swing Timer, put it in the constructor for a // TimeHold, and put that as a row in the DefaultListModel javax.swing.Timer tim; tim = new javax.swing.Timer(1000, new MyListenerHold(data, 0)); tim.setInitialDelay(0); tim.setCoalesce(false); data.addElement(new TimeHold("Prototype", 0L, tim)); // connect the data to the JList jBox.setModel(data); // Whenever the selection of the Jlist changes, keep track // of the index in the global variable work jBox.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { work = ((JList) e.getSource()).getSelectedIndex(); } }); // This code happens whenever the start button is clicked // it starts the timer startButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (work != noneSelected) { TimeHold th = (TimeHold) jBox.getSelectedValue(); th.start(); } } }); // This code happens whenever the stop button is clicked // It stops the timer stopButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (work != noneSelected) { TimeHold th = (TimeHold) jBox.getSelectedValue(); th.stop(); ((DefaultListModel) jBox.getModel()).setElementAt(th, work); } } }); // This code happens evrytime the clear button is clicked // It sets the time accumulator back to zero clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (work != noneSelected) { TimeHold th = (TimeHold) jBox.getSelectedValue(); th.setCount(0L); th.setStartTime(0L); ((DefaultListModel) jBox.getModel()).setElementAt(th, work); th.stop(); } } }); // This code happens everytime add button is clicked addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String msg; msg = JOptionPane.showInputDialog("Enter new task."); if (msg != null) { // If new name is entered add it to the // DefaultListModel below javax.swing.Timer tm; DefaultListModel dm = (DefaultListModel) jBox.getModel(); tm = new javax.swing.Timer(1000, new MyListenerHold(dm, dm .getSize())); tm.setInitialDelay(0); tm.setCoalesce(false); dm.addElement(new TimeHold(msg, 0, tm)); jBox.setSelectedIndex(dm.getSize() - 1); } } }); // This code happens everytime a modify button is clicked modifyButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String msg = null; String replaceMsg = null; TimeHold timeH; if (work != noneSelected) { timeH = (TimeHold) jBox.getSelectedValue(); msg = timeH.getName(); replaceMsg = JOptionPane.showInputDialog("Modify: " + msg + " By re-typing it", msg); if (replaceMsg != null) { // If new name is entered add it // to the // DefaultListModel below timeH.setName(replaceMsg); ((DefaultListModel) jBox.getModel()).setElementAt( timeH, work); } } } }); //This code happens everytime delete button is clicked 11-20-2004 deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { DefaultListModel dlm; Vector stopVector = new Vector(); Integer stopInteger; dlm = (DefaultListModel) jBox.getModel(); if (work != noneSelected) { int length; length = ((DefaultListModel) jBox.getModel()).size(); // stop all the timers from selection to end of list if they // are running for (int i = work; i < length; i++) { TimeHold th = (TimeHold) ((DefaultListModel) jBox .getModel()).getElementAt(i); if (th.isRunning()) { th.stop(); if (i > work) { stopInteger = new Integer(i - 1); stopVector.add(stopInteger); } } } // end of for int ind = work + 1; while (ind < length) { TimeHold tmh = (TimeHold) ((DefaultListModel) jBox .getModel()).getElementAt(ind); javax.swing.Timer time; time = new javax.swing.Timer(1000, new MyListenerHold( dlm, ind - 1)); time.setInitialDelay(0); time.setCoalesce(false); TimeHold timehld = new TimeHold(tmh.getName(), tmh .getCount(), time); dlm.setElementAt(timehld, ind - 1); stopInteger = new Integer(ind - 1); if (stopVector.contains(stopInteger)) { timehld.start(); } ind++; } dlm.removeElementAt(dlm.size() - 1); if (work == noneSelected) { work = dlm.size() - 1; jBox.setSelectedIndex(work); jBox.updateUI(); } } // end of while } // end of outerif }); jScroll = new JScrollPane(jBox); jScroll .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); jBox.setVisibleRowCount(15); // show ten rows initially // only allow one row to be selected at a time jBox.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jBox.setSelectedIndex(0); // add the buttons to their container buttonBox.add(addButton); buttonBox.add(startButton); buttonBox.add(stopButton); buttonBox.add(clearButton); buttonBox.add(deleteButton); buttonBox.add(modifyButton); this.addMenus(); JMenuBar menubar = new JMenuBar(); menubar.add(file); menubar.add(help); win.getContentPane().setLayout(new BorderLayout()); // put the buttons in the center win.getContentPane().add(buttonBox, "Center"); // put the scrollable Jlist on the bottom win.getContentPane().add(jScroll, "South"); // add the menus to the gui win.setJMenuBar(menubar); // Make the window close when user clickes on corner x win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); if (holdArg != null) { //System.out.println("File is:" + holdArg); this.readArgFile(new File(holdArg)); } // Display and run the GUI win.pack(); win.show(); return; } public void addMenus() { // put in menu file = new JMenu("File"); help = new JMenu("Help"); JMenuItem item1 = new JMenuItem("Open"); file.add(item1); item1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int result = chooser1.showOpenDialog(win); if (result == JFileChooser.APPROVE_OPTION) { File saveFile = chooser1.getSelectedFile(); try { ObjectInputStream ois = new ObjectInputStream( new FileInputStream(saveFile)); DefaultListModel holdModel = (DefaultListModel) ois .readObject(); Vector reStarts = (Vector) ois.readObject(); Integer reSelect = (Integer) ois.readObject(); int reSel = reSelect.intValue(); work = reSel; ois.close(); jBox.setModel(holdModel); jBox.updateUI(); Enumeration loop = reStarts.elements(); while (loop.hasMoreElements()) { Integer testInteger = (Integer) loop.nextElement(); int pick = testInteger.intValue(); ((TimeHold) ((DefaultListModel) jBox.getModel()) .elementAt(pick)).start(); } jBox.setSelectedIndex(reSel); jBox.updateUI(); } catch (IOException ex) { JOptionPane .showMessageDialog( jBox, "Error trying to open file, " + "Please pick a different file and try again."); } catch (ClassNotFoundException cnfe) { JOptionPane .showMessageDialog( jBox, "Internal Error in trying to open file, " + "Could not create a class. Please pick a different file and try again."); } } } }); JMenuItem item2 = new JMenuItem("Save as"); file.add(item2); item2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { File saveFile = null; Vector runningList = new Vector(); int result = JFileChooser.CANCEL_OPTION; boolean redo = true; while (redo) { result = chooser2.showSaveDialog(win); if (result == JFileChooser.APPROVE_OPTION) { saveFile = chooser2.getSelectedFile(); if (saveFile.exists()) { // show dialog with message String msg = "File: " + saveFile.getName() + " exists." + " Would you like to overwrite it?"; int opt = JOptionPane.showConfirmDialog(jBox, msg, "File Exists", JOptionPane.YES_NO_OPTION); if (opt == JOptionPane.YES_OPTION) { redo = false; } else { redo = true; } ; } else { redo = false; } } else { redo = false; } ; } ; if (result == JFileChooser.APPROVE_OPTION) { try { // stop all running clocks before writing to disk // keep track in Vector int indx = 0; while (indx < ((DefaultListModel) jBox.getModel()) .size()) { TimeHold tempTimeHold = (TimeHold) ((DefaultListModel) jBox .getModel()).elementAt(indx); if (tempTimeHold.isRunning()) { tempTimeHold.stop(); runningList.add(new Integer(indx)); } indx++; } ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(saveFile)); oos.writeObject(jBox.getModel()); oos.writeObject(runningList); Integer outSelect = new Integer(jBox.getSelectedIndex()); oos.writeObject(outSelect); oos.close(); // restart the stopped timers Enumeration loop = runningList.elements(); while (loop.hasMoreElements()) { Integer testInteger = (Integer) loop.nextElement(); int pick = testInteger.intValue(); ((TimeHold) ((DefaultListModel) jBox.getModel()) .elementAt(pick)).start(); } jBox.setSelectedIndex(work); jBox.updateUI(); } catch (IOException ex) { JOptionPane .showMessageDialog( jBox, "Error trying to save the file, " + "Please pick a different file name and try again."); // restart the stopped timers Enumeration loop = runningList.elements(); while (loop.hasMoreElements()) { Integer testInteger = (Integer) loop.nextElement(); int pick = testInteger.intValue(); ((TimeHold) ((DefaultListModel) jBox.getModel()) .elementAt(pick)).start(); } } } } }); JMenuItem item3 = new JMenuItem("Print"); file.add(item3); item3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { PrinterJob job = PrinterJob.getPrinterJob(); // get the defulat page format and ask user to customize it PageFormat format = job.pageDialog(job.defaultPage()); // create the pageableText object and let the printer know // about it Enumeration loop = ((DefaultListModel) jBox.getModel()) .elements(); Vector lines = new Vector(); while (loop.hasMoreElements()) { String line = ((TimeHold) loop.nextElement()) .toString(); lines.add(line); } job.setPageable(new PageableText(lines, format)); //ask user to select printer, and if not cancelled - print. if (job.printDialog()) { job.print(); } } catch (PrinterException pex) { JOptionPane .showMessageDialog( jBox, "Problem with printer, check and re-try."); } } }); JMenuItem item4 = new JMenuItem("Exit"); file.add(item4); item4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { win.setVisible(false); win.dispose(); System.exit(0); } }); JMenuItem helpItem1 = new JMenuItem("About"); help.add(helpItem1); helpItem1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane .showMessageDialog( jBox, "Clock task timer\n"+ "Copyright 2005 Thomas E. Zammikiel.\n"+ "(Shareware)Free non-exclusive non-commercial use license to all.\n"+ "If you use it at work - you need to register it - only five dollars"); } }); JMenuItem registerItem = new JMenuItem("Print registration form - 1 page"); help.add(registerItem); registerItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { PrinterJob job = PrinterJob.getPrinterJob(); // get the defulat page format and ask user to customize it PageFormat format = job.pageDialog(job.defaultPage()); // create the pageableText object and let the printer know // about it // String regLines[] = { "To Register 'TaskClock' fill out form and mail", "with payment of Five dolars to:", " ", "Thomas E. Zammikiel", "P.O. BOX 55", "Yonkers, NY 10710", " ", " ", "Last Name: __________________________________________", " ", "First Name: __________________________________________", " ", "Street: __________________________________________", " ", "City, State & ZIP: __________________________________________", " ", " ", " ", "Optional:", " ", "E-mail:__________________________________________", " ", "Phone number:__________________________________________", " ", "Comments to improve or change TaskClock:", " ", "__________________________________________________________________", " ", "__________________________________________________________________", " ", "__________________________________________________________________", " ", "__________________________________________________________________", " ", "__________________________________________________________________", " ", "__________________________________________________________________", " ", "__________________________________________________________________", " ", "__________________________________________________________________" }; Vector holdLines = new Vector(); for (int index=0; index < regLines.length;index++){ String temp = (String) regLines[index]; //System.out.println(temp); holdLines.add(temp); } job.setPageable(new PageableText(holdLines, format)); //ask user to select printer, and if not cancelled - print. if (job.printDialog()) { job.print(); } } catch (PrinterException pex) { JOptionPane .showMessageDialog( jBox, "Problem with printer, check and re-try."); } } }); } // end of addmenus public void readArgFile(File saveFile) { try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream( saveFile)); DefaultListModel holdModel = (DefaultListModel) ois.readObject(); Vector reStarts = (Vector) ois.readObject(); Integer reSelect = (Integer) ois.readObject(); int reSel = reSelect.intValue(); work = reSel; ois.close(); jBox.setModel(holdModel); jBox.updateUI(); Enumeration loop = reStarts.elements(); while (loop.hasMoreElements()) { Integer testInteger = (Integer) loop.nextElement(); int pick = testInteger.intValue(); ((TimeHold) ((DefaultListModel) jBox.getModel()) .elementAt(pick)).start(); } jBox.setSelectedIndex(reSel); //jBox.updateUI(); } catch (IOException ex) { JOptionPane.showMessageDialog(jBox, "Error trying to open file, " + "Please pick a different file and try again."); } catch (ClassNotFoundException cnfe) { JOptionPane .showMessageDialog( jBox, "Internal Error in trying to open file, " + "Could not create a class. Please pick a different file and try again."); } } // end of saveArgFile } //end of Clock class PK 28 8 com/tomzammikiel2/TimeHold.class.com/tomzammikiel2/TimeHoldjava/lang/Objectjava/io/SerializablenameLjava/lang/String;countJtimerLjavax/swing/Timer; startTimerunZ(Ljava/lang/String;J)VCode()V        LineNumberTableLocalVariableTablethisLcom/tomzammikiel2/TimeHold;)(Ljava/lang/String;JLjavax/swing/Timer;)V  % 'time isRunning()Z setRunning(Z)VbsetTimer(Ljavax/swing/Timer;)VgetTimer()Ljavax/swing/Timer;setName(Ljava/lang/String;)VsetCount(J)VgetName()Ljava/lang/String;getCount()J getStartTimestart *+ =java/util/Date? @getTime B: @Cjavax/swing/TimerE < FG ,- Istop K FN setStartTime P6 Q formatCountjava/lang/StringBufferV000X 4 WZappend(J)Ljava/lang/StringBuffer; \] W^toString `8 Wacjava/lang/Stringelength()I gh fi substring(I)Ljava/lang/String; kl fm<00qvalueOf&(Ljava/lang/Object;)Ljava/lang/String; st fu:w,(Ljava/lang/String;)Ljava/lang/StringBuffer; \y WzworkhourssHoursminssMinssecssSecst S8   SourceFile TimeHold.java!   ~$*** * **+*  " #! $"#$$ $] *+ &*( () *!* "#   ) *+/* /! "#,->* 34!"#./0>*+( 78!"#) 12/*( ;! "#34>*+ ?@!"#56>* BC!"# 78/* F! "#9:/* J! "#;:/* N! "#<\"*>*@YAD*(H*J UVWX!Z! ""#KF*>A* "*Y@YAD*eLma* *(O* R*J "`bf/h4k;l@mEo! F"#S8 *>5* *@YAD*eLma@* *@*@TmBWYY[!_b:!cjdn:jdn:!oioieom7WYr[_b:jdn:!oioieoie7 WYr[ _b:   jdn: WYv[x{{x{ {b Jyz|,}1~9>DV^o}!f "#)| 6| >| D} V~z gE 2 P6>* !"# `8HWY*v[{*{b ! "#PK 2ɓ sscom/tomzammikiel2/TimeHold.javapackage com.tomzammikiel2; import java.util.*; import java.io.*; /** * This class is mostly used as a container for: * * Accumulated time, held in: count * the start time, held in: startTime * and a boolean, held in run: * that's true when the task timer is running, and false * when the task is stopped * * @author Thomas E. Zammikiel * @version 1.0 * copyright (c) 2005 Thomas E Zammikiel */ public class TimeHold implements Serializable { public String name = ""; public long count = 0; public javax.swing.Timer timer; public long startTime = 0; public boolean run = false; public TimeHold(String name,long count) { this.name = name; this.count = count; } /** * Creates a new TimeHold object * @param name The name of the task * @param count The time accumulator, usually starts at zero * @param time The swing timer that will fire ActionEvents * */ public TimeHold(String name,long count,javax.swing.Timer time) { this(name,count); timer = time; } /* a bunch of setter and getter methods for the properties. */ public boolean isRunning() { return run; } public void setRunning(boolean b) { run = b; } public void setTimer(javax.swing.Timer time) { timer = time; } public javax.swing.Timer getTimer() { return timer; } public void setName(String name) { this.name = name; } public void setCount(long count) { this.count = count; } public String getName() { return name; } public long getCount() { return count; } public long getStartTime() { return startTime; } /** This method starts the timer for a particular task, but * only if that task hasn't been started already. */ public void start() { if (!this.isRunning()) { startTime = new Date().getTime(); timer.start(); this.setRunning(true); } } /** This method stops the timing for a particular task, but only * if that task hasn't already been stopped */ public void stop() { if (this.isRunning()) { if (startTime != 0) { /* Update the accumulator when the timing task is stoped so * that it reflects an accurate total when the task * is started again */ count = count + ((new Date().getTime() - startTime) / 1000); } else { count = 0; }; timer.stop(); this.setStartTime(0); this.setRunning(false); } } /** This method formats a string representation of the time accumulator * or zero if the timer task is not running * */ public String formatCount() { long work; if (this.isRunning()) { if (startTime !=0L ) { work = count + ((new Date().getTime() - startTime) / 1000); } else { count = 0; work = count; }; } else { work = count; } long hours = work / (60 * 60); String sHours = ("000" + hours); if (hours > 99L) { sHours = sHours.substring(sHours.length()-3); } else { sHours = sHours.substring(sHours.length()-2); } long mins = (work - (hours*60*60)) / 60; String sMins = "00" + mins; sMins = sMins.substring(sMins.length()-2); long secs = work - (hours * 60 * 60) - (mins * 60); String sSecs = "00" + secs; sSecs = sSecs.substring(sSecs.length()-2); return sHours + ":" + sMins + ":" + sSecs; } public void setStartTime(long t) { startTime = t; } /** * This method return the string rpresentation of a TimeHold timer task * that can be displayed as a row in a JList. */ public String toString() { return this.formatCount() + " " + name; } /** * This method resets the starttime variable after the TimeHold object * is deserialized. This is neeeded because of how time is accumulated */ /* private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); System.out.println("\nis running?\n"+this.isRunning()); if (this.isRunning()) { this.setStartTime(new Date().getTime()); System.out.println("\nrecalculated time\n"); System.out.println("\nstarting timer\n"); timer.start(); } } private void writeObject(ObjectOutputStream ot) throws IOException { long holdCount = count; if (this.isRunning()) { count = count + ((new Date().getTime() - startTime) / 1000); } ot.defaultWriteObject(); if (this.isRunning()) { count = holdCount; } } */ } PK2l@>META-INF/MANIFEST.MFPK 2*·&com/tomzammikiel2/MyListenerHold.classPK 2W $ com/tomzammikiel2/PageableText.classPK 1'^ #//#Fcom/tomzammikiel2/PageableText.javaPK ܝ2ƋZZ3com/tomzammikiel5/Clock$1.classPK ܝ2Bouu M7com/tomzammikiel5/Clock$10.classPK ܝ2u2JJ @com/tomzammikiel5/Clock$11.classPK ܝ2qR Ccom/tomzammikiel5/Clock$12.classPK ܝ2I}] ] Gcom/tomzammikiel5/Clock$13.classPK ܝ2CLScom/tomzammikiel5/Clock$2.classPK ܝ2\44Wcom/tomzammikiel5/Clock$3.classPK ܝ2#OD{{[com/tomzammikiel5/Clock$4.classPK ܝ2Q;R,,F`com/tomzammikiel5/Clock$5.classPK ܝ2yF&&fcom/tomzammikiel5/Clock$6.classPK ܝ2-/^j j mcom/tomzammikiel5/Clock$7.classPK ܝ2`G  vcom/tomzammikiel5/Clock$8.classPK ܝ2˾com/tomzammikiel5/Clock$9.classPK ܝ2qqJcom/tomzammikiel5/Clock.classPK ۝2g6UJJcom/tomzammikiel5/Clock.javaPK 28 8 .com/tomzammikiel2/TimeHold.classPK 2ɓ sscom/tomzammikiel2/TimeHold.javaPKT