From 5582c446089f5afb34e2674c4510076bfaf365e6 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Fri, 29 Aug 2008 12:31:39 -0500 Subject: [PATCH 01/45] Created and finished initial version of timeline implementation. committer: Jonathan Bernard --- src/jdbernard/timestamper/Test.java | 77 ++++++++ src/jdbernard/timestamper/Timeline.java | 234 ++++++++++++++++++++++++ 2 files changed, 311 insertions(+) create mode 100644 src/jdbernard/timestamper/Test.java create mode 100644 src/jdbernard/timestamper/Timeline.java diff --git a/src/jdbernard/timestamper/Test.java b/src/jdbernard/timestamper/Test.java new file mode 100644 index 0000000..0031944 --- /dev/null +++ b/src/jdbernard/timestamper/Test.java @@ -0,0 +1,77 @@ +package jdbernard.timestamper; + +import java.util.Date; +import java.util.Scanner; + +public class Test { + public static void main(String[] args) throws Exception { + + Timeline t = new Timeline(); + String choice; + Scanner in = new Scanner(System.in); + + boolean loop = true; + + while(loop) { + System.out.println("[N]ew Timestamp, [S]ave, [L]oad, [P]rint, [Q]uit: "); + choice = in.nextLine(); + String filename; + + switch (choice.toLowerCase().charAt(0)) { + case 'n': + System.out.println("Enter time (HH:mm:ss) "); + Date d = new Date(); + d.setHours(0); + d.setMinutes(0); + d.setSeconds(0); + d.setTime(d.getTime() + Timeline.shortFormat.parse(in.nextLine()).getTime()); + + System.out.println("Enter mark ('EOM' to end) "); + String line = ""; + StringBuilder mark = new StringBuilder(); + line = in.nextLine(); + while (!line.endsWith("EOM")) { + mark.append(line); + line = in.nextLine(); + } + mark.append(line.substring(0, line.length() - 3)); + + System.out.println("Enter notes ('EON' to end) "); + StringBuilder notes = new StringBuilder(); + line = in.nextLine(); + while (!line.endsWith("EON")) { + notes.append(line); + line = in.nextLine(); + } + notes.append(line.substring(0, line.length() - 3)); + + t.addMarker(d, mark.toString(), notes.toString()); + break; + + case 's': + System.out.print("Enter filename to save: "); + filename = in.nextLine(); + + Timeline.writeToFile(filename, t); + break; + + case 'l': + System.out.println("Enter filename to load: "); + filename = in.nextLine(); + + t = Timeline.readFromFile(filename); + break; + + case 'p': + Timeline.writeToStream(System.out, t); + break; + + case 'q': + loop = false; + break; + + default: + } + } + } +} diff --git a/src/jdbernard/timestamper/Timeline.java b/src/jdbernard/timestamper/Timeline.java new file mode 100644 index 0000000..f380235 --- /dev/null +++ b/src/jdbernard/timestamper/Timeline.java @@ -0,0 +1,234 @@ +package jdbernard.timestamper; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import java.util.Date; +import java.util.Iterator; +import java.util.Scanner; +import java.util.TreeSet; + +/** + * @author Jonathan Bernard + * A Timeline object represents a series of markers at specific points in time. + * The markers have a name or symbol (the 'mark') and notes associated with that + * mark. + */ +public class Timeline implements Iterable { + + /** + * This represents a marker on the timeline. + * The date of the marker and the mark cannot be changed once assigned. + */ + public class TimelineMarker implements Comparable { + private final Date timestamp; + private final String mark; + private String notes; + + public TimelineMarker(Date timestamp, String mark, String notes) { + if (timestamp == null || mark == null) + throw new IllegalArgumentException("Null timestamp or mark" + + " is not permitted."); + + this.timestamp = timestamp; + this.mark = mark; + this.notes = notes; + } + + public Date getTimestamp() { return timestamp; } + + public String getMark() { return mark; } + + public String getNotes() { return notes; } + + public void setNotes(String notes) { this.notes = notes; } + + @Override + public int compareTo(TimelineMarker that) { + if (that == null) return Integer.MAX_VALUE; + + return this.timestamp.compareTo(that.timestamp); + } + + @Override + public boolean equals(Object that) { + if (that == null) return false; + if (!(that instanceof TimelineMarker)) return false; + + return this.timestamp.equals(((TimelineMarker)that).timestamp); + } + + } + + private static enum ReadingState { + NewMarker, + StartMark, + ReadMark, + StartNotes, + ReadNotes, + EndMarker + }; + + public static SimpleDateFormat shortFormat = new SimpleDateFormat("HH:mm:ss"); + public static SimpleDateFormat longFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); + + private static int lineWrap = 78; + private TreeSet timelineList; + + public Timeline() { + timelineList = new TreeSet(); + } + + public void addMarker(Date timestamp, String name, String notes) { + timelineList.add(new TimelineMarker(timestamp, name, notes)); + } + + public String getLastName(Date timestamp) { + //TODO: + return null; + } + + public String getLastNotes(Date timestamp) { + //TODO: + return null; + } + + public TimelineMarker getLastMarker(Date timestamp) { + //TODO: + return null; + } + + public void removeMarker(TimelineMarker marker) { + timelineList.remove(marker); + } + + public Iterator iterator() { + return timelineList.iterator(); + } + + public static void writeToStream(OutputStream stream, Timeline timeline) + throws IOException { + Writer out = new OutputStreamWriter(stream); + for (TimelineMarker tm : timeline.timelineList) { + + // write timestamp + out.write(longFormat.format(tm.getTimestamp()) + "\n"); + + // write mark + String mark = tm.getMark().replace('\n', '\u0000'); + if (mark.length() < lineWrap) out.write(mark + "\n"); + else { + // wrap lines if neccessary + int i; + for (i = 0; (i + lineWrap) < mark.length(); i+=lineWrap) + out.write(mark.substring(i, i+lineWrap) + "\\\n"); + if (i < mark.length()) + out.write(mark.substring(i, mark.length()) + "\n"); + } + + // write notes + String notes = tm.getNotes().replace('\n', '\u0000'); + if (notes.length() < lineWrap) out.write(notes + "\n"); + else { + // wrap lines if neccessary + int i; + for (i = 0; (i + lineWrap) < notes.length(); i+=lineWrap) + out.write(notes.substring(i, i+lineWrap) + "\\\n"); + if (i < notes.length()) + out.write(notes.substring(i, notes.length()) + "\n"); + } + out.write("\n"); + } + out.flush(); + } + + public static void writeToFile(String filename, Timeline timeline) + throws IOException, FileNotFoundException { + OutputStream out = new FileOutputStream(filename); + writeToStream(out, timeline); + out.close(); + } + + public static Timeline readFromStream(InputStream stream) + throws IOException, FileNotFoundException { + Scanner in = new Scanner(stream); + Timeline timeline = new Timeline(); + + ReadingState readingState = ReadingState.NewMarker; + Date d = null; + StringBuilder mark = null; + StringBuilder notes = null; + String line; + int lineNumber = 0; + + while (in.hasNextLine()) { + line = in.nextLine(); + lineNumber++; + + switch (readingState) { + + case NewMarker: + try { d = longFormat.parse(line); } + catch (ParseException pe) { + throw new IOException("Error parsing timeline file at line " + + lineNumber + ": expected a new marker date but could not parse" + + " the date. Error: " + pe.getLocalizedMessage()); + } + readingState = ReadingState.StartMark; + break; + + case StartMark: + mark = new StringBuilder(); + // fall through to ReadMark + case ReadMark: + if (line.endsWith("\\")) { + readingState = ReadingState.ReadMark; + line = line.substring(0, line.length() - 1); + } + else readingState = ReadingState.StartNotes; + mark.append(line); + break; + + case StartNotes: + notes = new StringBuilder(); + // fall through to ReadNotes + case ReadNotes: + if (line.endsWith("\\")) { + readingState = ReadingState.ReadNotes; + line = line.substring(0, line.length() - 1); + } + else readingState = ReadingState.EndMarker; + notes.append(line); + break; + + case EndMarker: + String sMark = mark.toString().replace('\u0000', '\n'); + String sNotes = notes.toString().replace('\u0000', '\n'); + timeline.addMarker(d, sMark, sNotes); + readingState = ReadingState.NewMarker; + } + } + + //if (readingState != ReadingState.NewMarker) + //TODO: warning of invalid marker file + + return timeline; + } + + public static Timeline readFromFile(String filename) + throws IOException, FileNotFoundException { + InputStream in = new FileInputStream(filename); + Timeline t = readFromStream(in); + in.close(); + return t; + } +} From 373f813c7c1d4b9867a2ec6afe9578e8ec9935a1 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Fri, 29 Aug 2008 14:51:55 -0500 Subject: [PATCH 02/45] Added initial GUI code from NetBeans IDE committer: Jonathan Bernard --- build.xml | 69 ++ clean_all_whitespace.sh | 10 + clean_trailing_whitespace.sh | 9 + manifest.mf | 3 + nbproject/build-impl.xml | 629 ++++++++++++++++++ nbproject/genfiles.properties | 8 + nbproject/private/private.properties | 2 + nbproject/project.properties | 64 ++ nbproject/project.xml | 19 + .../org.jdesktop.application.Application | 1 + .../timestamper/TimeStamperAboutBox.form | 191 ++++++ .../timestamper/TimeStamperAboutBox.java | 131 ++++ src/jdbernard/timestamper/TimeStamperApp.java | 45 ++ .../timestamper/TimeStamperView.form | 179 +++++ .../timestamper/TimeStamperView.java | 174 +++++ src/jdbernard/timestamper/Timeline.java | 2 +- .../resources/TimeStamperAboutBox.properties | 11 + .../resources/TimeStamperApp.properties | 16 + .../resources/TimeStamperView.properties | 21 + src/jdbernard/timestamper/resources/about.png | Bin 0 -> 8187 bytes .../resources/icons/12-em-cross.png | Bin 0 -> 357 bytes .../resources/icons/16-em-cross-hover.png | Bin 0 -> 506 bytes .../resources/icons/16-em-cross.png | Bin 0 -> 469 bytes .../resources/icons/16-em-pencil.png | Bin 0 -> 257 bytes .../resources/icons/24-em-cross.png | Bin 0 -> 626 bytes .../timestamper/resources/icons/close.gif | Bin 0 -> 918 bytes .../timestamper/resources/splash.png | Bin 0 -> 21747 bytes 27 files changed, 1583 insertions(+), 1 deletion(-) create mode 100755 build.xml create mode 100755 clean_all_whitespace.sh create mode 100755 clean_trailing_whitespace.sh create mode 100755 manifest.mf create mode 100755 nbproject/build-impl.xml create mode 100755 nbproject/genfiles.properties create mode 100755 nbproject/private/private.properties create mode 100755 nbproject/project.properties create mode 100755 nbproject/project.xml create mode 100755 src/META-INF/services/org.jdesktop.application.Application create mode 100755 src/jdbernard/timestamper/TimeStamperAboutBox.form create mode 100755 src/jdbernard/timestamper/TimeStamperAboutBox.java create mode 100755 src/jdbernard/timestamper/TimeStamperApp.java create mode 100755 src/jdbernard/timestamper/TimeStamperView.form create mode 100755 src/jdbernard/timestamper/TimeStamperView.java create mode 100755 src/jdbernard/timestamper/resources/TimeStamperAboutBox.properties create mode 100755 src/jdbernard/timestamper/resources/TimeStamperApp.properties create mode 100755 src/jdbernard/timestamper/resources/TimeStamperView.properties create mode 100755 src/jdbernard/timestamper/resources/about.png create mode 100755 src/jdbernard/timestamper/resources/icons/12-em-cross.png create mode 100755 src/jdbernard/timestamper/resources/icons/16-em-cross-hover.png create mode 100755 src/jdbernard/timestamper/resources/icons/16-em-cross.png create mode 100755 src/jdbernard/timestamper/resources/icons/16-em-pencil.png create mode 100755 src/jdbernard/timestamper/resources/icons/24-em-cross.png create mode 100755 src/jdbernard/timestamper/resources/icons/close.gif create mode 100755 src/jdbernard/timestamper/resources/splash.png diff --git a/build.xml b/build.xml new file mode 100755 index 0000000..dd51e77 --- /dev/null +++ b/build.xml @@ -0,0 +1,69 @@ + + + + + + Builds, tests, and runs the project TimeStamper. + + + diff --git a/clean_all_whitespace.sh b/clean_all_whitespace.sh new file mode 100755 index 0000000..b0b6f95 --- /dev/null +++ b/clean_all_whitespace.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +./clean_trailing_whitespace.sh build.xml +./clean_trailing_whitespace.sh src/jdbernard/timestamper/*.java +./clean_trailing_whitespace.sh src/jdbernard/timestamper/*.form +./clean_trailing_whitespace.sh src/jdbernard/timestamper/resources/*.properties +./clean_trailing_whitespace.sh nbproject/*.xml +./clean_trailing_whitespace.sh nbproject/project.* +./clean_trailing_whitespace.sh nbproject/*.properties +./clean_trailing_whitespace.sh nbproject/private/private.properties diff --git a/clean_trailing_whitespace.sh b/clean_trailing_whitespace.sh new file mode 100755 index 0000000..71ca396 --- /dev/null +++ b/clean_trailing_whitespace.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +perl -pi -e 's/[\t\r\f ]+$//g' $@ + +for file in $@ +do + rm "$file.bak" + echo "$file done!" +done diff --git a/manifest.mf b/manifest.mf new file mode 100755 index 0000000..328e8e5 --- /dev/null +++ b/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100755 index 0000000..c7ec535 --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + + + + + + java -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100755 index 0000000..05aab62 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=6a978a17 +build.xml.script.CRC32=6e5ad54e +build.xml.stylesheet.CRC32=be360661 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=6a978a17 +nbproject/build-impl.xml.script.CRC32=b108e4f5 +nbproject/build-impl.xml.stylesheet.CRC32=487672f9 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties new file mode 100755 index 0000000..222ae47 --- /dev/null +++ b/nbproject/private/private.properties @@ -0,0 +1,2 @@ +jaxws.endorsed.dir=C:\\Program Files\\NetBeans 6.1\\java2\\modules\\ext\\jaxws21\\api +user.properties.file=C:\\Documents and Settings\\jbernard\\.netbeans\\6.1\\build.properties diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100755 index 0000000..5fc3e20 --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,64 @@ +application.desc=A simple java desktop application based on Swing Application Framework +application.homepage=http://appframework.dev.java.net +application.title=Basic Application Example +application.vendor=Sun Microsystems Inc. +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/TimeStamper.jar +dist.javadoc.dir=${dist.dir}/javadoc +excludes= +includes=** +jar.compress=false +javac.classpath=\ + ${libs.swing-app-framework.classpath} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.source=1.5 +javac.target=1.5 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${libs.junit.classpath}:\ + ${libs.junit_4.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +main.class=jdbernard.timestamper.TimeStamperApp +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value +# or test-sys-prop.name=value to set system properties for unit tests): +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100755 index 0000000..caa4303 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,19 @@ + + + org.netbeans.modules.java.j2seproject + + + TimeStamper + 1.6.5 + + + + + + + + + + + + diff --git a/src/META-INF/services/org.jdesktop.application.Application b/src/META-INF/services/org.jdesktop.application.Application new file mode 100755 index 0000000..be8269e --- /dev/null +++ b/src/META-INF/services/org.jdesktop.application.Application @@ -0,0 +1 @@ +jdbernard.timestamper.TimeStamperApp \ No newline at end of file diff --git a/src/jdbernard/timestamper/TimeStamperAboutBox.form b/src/jdbernard/timestamper/TimeStamperAboutBox.form new file mode 100755 index 0000000..9d14b5b --- /dev/null +++ b/src/jdbernard/timestamper/TimeStamperAboutBox.form @@ -0,0 +1,191 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/jdbernard/timestamper/TimeStamperAboutBox.java b/src/jdbernard/timestamper/TimeStamperAboutBox.java new file mode 100755 index 0000000..f964400 --- /dev/null +++ b/src/jdbernard/timestamper/TimeStamperAboutBox.java @@ -0,0 +1,131 @@ +/* + * TimeStamperAboutBox.java + */ + +package jdbernard.timestamper; + +import org.jdesktop.application.Action; + +public class TimeStamperAboutBox extends javax.swing.JDialog { + + public TimeStamperAboutBox(java.awt.Frame parent) { + super(parent); + initComponents(); + getRootPane().setDefaultButton(closeButton); + } + + @Action public void closeAboutBox() { + setVisible(false); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + closeButton = new javax.swing.JButton(); + javax.swing.JLabel appTitleLabel = new javax.swing.JLabel(); + javax.swing.JLabel versionLabel = new javax.swing.JLabel(); + javax.swing.JLabel appVersionLabel = new javax.swing.JLabel(); + javax.swing.JLabel vendorLabel = new javax.swing.JLabel(); + javax.swing.JLabel appVendorLabel = new javax.swing.JLabel(); + javax.swing.JLabel homepageLabel = new javax.swing.JLabel(); + javax.swing.JLabel appHomepageLabel = new javax.swing.JLabel(); + javax.swing.JLabel appDescLabel = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getResourceMap(TimeStamperAboutBox.class); + setTitle(resourceMap.getString("title")); // NOI18N + setModal(true); + setName("aboutBox"); // NOI18N + setResizable(false); + + javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getActionMap(TimeStamperAboutBox.class, this); + closeButton.setAction(actionMap.get("closeAboutBox")); // NOI18N + closeButton.setName("closeButton"); // NOI18N + + appTitleLabel.setFont(appTitleLabel.getFont().deriveFont(appTitleLabel.getFont().getStyle() | java.awt.Font.BOLD, appTitleLabel.getFont().getSize()+4)); + appTitleLabel.setText(resourceMap.getString("Application.title")); // NOI18N + appTitleLabel.setName("appTitleLabel"); // NOI18N + + versionLabel.setFont(versionLabel.getFont().deriveFont(versionLabel.getFont().getStyle() | java.awt.Font.BOLD)); + versionLabel.setText(resourceMap.getString("versionLabel.text")); // NOI18N + versionLabel.setName("versionLabel"); // NOI18N + + appVersionLabel.setText(resourceMap.getString("Application.version")); // NOI18N + appVersionLabel.setName("appVersionLabel"); // NOI18N + + vendorLabel.setFont(vendorLabel.getFont().deriveFont(vendorLabel.getFont().getStyle() | java.awt.Font.BOLD)); + vendorLabel.setText(resourceMap.getString("vendorLabel.text")); // NOI18N + vendorLabel.setName("vendorLabel"); // NOI18N + + appVendorLabel.setText(resourceMap.getString("Application.vendor")); // NOI18N + appVendorLabel.setName("appVendorLabel"); // NOI18N + + homepageLabel.setFont(homepageLabel.getFont().deriveFont(homepageLabel.getFont().getStyle() | java.awt.Font.BOLD)); + homepageLabel.setText(resourceMap.getString("homepageLabel.text")); // NOI18N + homepageLabel.setName("homepageLabel"); // NOI18N + + appHomepageLabel.setText(resourceMap.getString("Application.homepage")); // NOI18N + appHomepageLabel.setName("appHomepageLabel"); // NOI18N + + appDescLabel.setText(resourceMap.getString("appDescLabel.text")); // NOI18N + appDescLabel.setName("appDescLabel"); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(versionLabel) + .addComponent(vendorLabel) + .addComponent(homepageLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(appVersionLabel) + .addComponent(appVendorLabel) + .addComponent(appHomepageLabel))) + .addComponent(appTitleLabel, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(appDescLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE) + .addComponent(closeButton)) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(appTitleLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(appDescLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(versionLabel) + .addComponent(appVersionLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(vendorLabel) + .addComponent(appVendorLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(homepageLabel) + .addComponent(appHomepageLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(closeButton) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton closeButton; + // End of variables declaration//GEN-END:variables + +} diff --git a/src/jdbernard/timestamper/TimeStamperApp.java b/src/jdbernard/timestamper/TimeStamperApp.java new file mode 100755 index 0000000..b3db88b --- /dev/null +++ b/src/jdbernard/timestamper/TimeStamperApp.java @@ -0,0 +1,45 @@ +/* + * TimeStamperApp.java + */ + +package jdbernard.timestamper; + +import org.jdesktop.application.Application; +import org.jdesktop.application.SingleFrameApplication; + +/** + * The main class of the application. + */ +public class TimeStamperApp extends SingleFrameApplication { + + /** + * At startup create and show the main frame of the application. + */ + @Override protected void startup() { + show(new TimeStamperView(this)); + getMainFrame().setSize(400, 75); + } + + /** + * This method is to initialize the specified window by injecting resources. + * Windows shown in our application come fully initialized from the GUI + * builder, so this additional configuration is not needed. + */ + @Override protected void configureWindow(java.awt.Window root) { + } + + /** + * A convenient static getter for the application instance. + * @return the instance of TimeStamperApp + */ + public static TimeStamperApp getApplication() { + return Application.getInstance(TimeStamperApp.class); + } + + /** + * Main method launching the application. + */ + public static void main(String[] args) { + launch(TimeStamperApp.class, args); + } +} diff --git a/src/jdbernard/timestamper/TimeStamperView.form b/src/jdbernard/timestamper/TimeStamperView.form new file mode 100755 index 0000000..d61c345 --- /dev/null +++ b/src/jdbernard/timestamper/TimeStamperView.form @@ -0,0 +1,179 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/jdbernard/timestamper/TimeStamperView.java b/src/jdbernard/timestamper/TimeStamperView.java new file mode 100755 index 0000000..7819270 --- /dev/null +++ b/src/jdbernard/timestamper/TimeStamperView.java @@ -0,0 +1,174 @@ +/* + * TimeStamperView.java + */ + +package jdbernard.timestamper; + +import org.jdesktop.application.Action; +import org.jdesktop.application.ResourceMap; +import org.jdesktop.application.SingleFrameApplication; +import org.jdesktop.application.FrameView; + +/** + * The application's main frame. + */ +public class TimeStamperView extends FrameView { + + public TimeStamperView(SingleFrameApplication app) { + super(app); + + initComponents(); + + ResourceMap resourceMap = getResourceMap(); + + getFrame().setUndecorated(true); + + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + mainPanel = new javax.swing.JPanel(); + currentTaskLabel = new javax.swing.JLabel(); + exitButton = new javax.swing.JButton(); + taskTextField = new javax.swing.JTextField(); + startTimeLabel = new javax.swing.JLabel(); + totalTimeNow = new javax.swing.JLabel(); + jLabel1 = new javax.swing.JLabel(); + notesButton = new javax.swing.JButton(); + + mainPanel.setBorder(javax.swing.BorderFactory.createMatteBorder(2, 2, 2, 2, new java.awt.Color(0, 0, 0))); + mainPanel.setName("mainPanel"); // NOI18N + + currentTaskLabel.setFont(currentTaskLabel.getFont().deriveFont(currentTaskLabel.getFont().getStyle() | java.awt.Font.BOLD, currentTaskLabel.getFont().getSize()+2)); + org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getResourceMap(TimeStamperView.class); + currentTaskLabel.setText(resourceMap.getString("currentTaskLabel.text")); // NOI18N + currentTaskLabel.setName("currentTaskLabel"); // NOI18N + + javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getActionMap(TimeStamperView.class, this); + exitButton.setAction(actionMap.get("quit")); // NOI18N + exitButton.setBorder(null); + exitButton.setContentAreaFilled(false); + exitButton.setFocusPainted(false); + exitButton.setHideActionText(true); + exitButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); + exitButton.setName("exitButton"); // NOI18N + exitButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + exitButtonMouseEntered(evt); + } + public void mouseExited(java.awt.event.MouseEvent evt) { + exitButtonMouseExited(evt); + } + }); + + taskTextField.setText(resourceMap.getString("taskTextField.text")); // NOI18N + taskTextField.setName("taskTextField"); // NOI18N + taskTextField.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyReleased(java.awt.event.KeyEvent evt) { + taskTextFieldKeyReleased(evt); + } + }); + + startTimeLabel.setFont(startTimeLabel.getFont().deriveFont(startTimeLabel.getFont().getStyle() | java.awt.Font.BOLD, startTimeLabel.getFont().getSize()+4)); + startTimeLabel.setForeground(resourceMap.getColor("startTimeLabel.foreground")); // NOI18N + startTimeLabel.setText(resourceMap.getString("startTimeLabel.text")); // NOI18N + startTimeLabel.setName("startTimeLabel"); // NOI18N + + totalTimeNow.setFont(totalTimeNow.getFont().deriveFont(totalTimeNow.getFont().getStyle() | java.awt.Font.BOLD, totalTimeNow.getFont().getSize()+3)); + totalTimeNow.setForeground(resourceMap.getColor("totalTimeNow.foreground")); // NOI18N + totalTimeNow.setText(resourceMap.getString("totalTimeNow.text")); // NOI18N + totalTimeNow.setName("totalTimeNow"); // NOI18N + + jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD, jLabel1.getFont().getSize()+3)); + jLabel1.setForeground(resourceMap.getColor("jLabel1.foreground")); // NOI18N + jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N + jLabel1.setName("jLabel1"); // NOI18N + + notesButton.setAction(actionMap.get("editNotes")); // NOI18N + notesButton.setHideActionText(true); + notesButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); + notesButton.setName("notesButton"); // NOI18N + + javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(mainPanelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(totalTimeNow) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel1)) + .addComponent(taskTextField) + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(currentTaskLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(startTimeLabel))) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(mainPanelLayout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 104, Short.MAX_VALUE) + .addComponent(exitButton)) + .addGroup(mainPanelLayout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(notesButton) + .addContainerGap()))) + ); + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(mainPanelLayout.createSequentialGroup() + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(currentTaskLabel) + .addComponent(exitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(startTimeLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(taskTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(notesButton)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(totalTimeNow) + .addComponent(jLabel1)) + .addContainerGap(15, Short.MAX_VALUE)) + ); + + setComponent(mainPanel); + }// //GEN-END:initComponents + +private void taskTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_taskTextFieldKeyReleased + // Do stuff + +}//GEN-LAST:event_taskTextFieldKeyReleased + +private void exitButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exitButtonMouseEntered + exitButton.setIcon(getResourceMap().getIcon("exitButton.hover.icon")); +}//GEN-LAST:event_exitButtonMouseEntered + +private void exitButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exitButtonMouseExited + exitButton.setIcon(getResourceMap().getIcon("exitButton.icon")); +}//GEN-LAST:event_exitButtonMouseExited + + @Action + public void editNotes() { + + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel currentTaskLabel; + private javax.swing.JButton exitButton; + private javax.swing.JLabel jLabel1; + private javax.swing.JPanel mainPanel; + private javax.swing.JButton notesButton; + private javax.swing.JLabel startTimeLabel; + private javax.swing.JTextField taskTextField; + private javax.swing.JLabel totalTimeNow; + // End of variables declaration//GEN-END:variables + +} diff --git a/src/jdbernard/timestamper/Timeline.java b/src/jdbernard/timestamper/Timeline.java index f380235..031051b 100644 --- a/src/jdbernard/timestamper/Timeline.java +++ b/src/jdbernard/timestamper/Timeline.java @@ -55,7 +55,7 @@ public class Timeline implements Iterable { @Override public int compareTo(TimelineMarker that) { if (that == null) return Integer.MAX_VALUE; - + return this.timestamp.compareTo(that.timestamp); } diff --git a/src/jdbernard/timestamper/resources/TimeStamperAboutBox.properties b/src/jdbernard/timestamper/resources/TimeStamperAboutBox.properties new file mode 100755 index 0000000..714bb54 --- /dev/null +++ b/src/jdbernard/timestamper/resources/TimeStamperAboutBox.properties @@ -0,0 +1,11 @@ +title = About: ${Application.title} ${Application.version} + +closeAboutBox.Action.text = &Close + +appDescLabel.text=Application for tracking an individual's time usage. + +versionLabel.text=Product Version\: + +vendorLabel.text=Vendor\: + +homepageLabel.text=Homepage\: diff --git a/src/jdbernard/timestamper/resources/TimeStamperApp.properties b/src/jdbernard/timestamper/resources/TimeStamperApp.properties new file mode 100755 index 0000000..cd5287d --- /dev/null +++ b/src/jdbernard/timestamper/resources/TimeStamperApp.properties @@ -0,0 +1,16 @@ +# Application global resources + +Application.name = TimeStamper +Application.title = TimeStamper +Application.version = 1.0 +Application.vendor = Jonathan Bernard +Application.homepage = +Application.description = A simple Java desktop application based on Swing Application Framework. +Application.vendorId = Sun +Application.id = ${Application.name} +Application.lookAndFeel = system +quit.Action.text=Exit +quit.Action.accelerator=ctrl pressed Q +quit.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-em-cross.png +quit.Action.icon=/jdbernard/timestamper/resources/icons/16-em-cross.png +quit.Action.shortDescription=Exit the application diff --git a/src/jdbernard/timestamper/resources/TimeStamperView.properties b/src/jdbernard/timestamper/resources/TimeStamperView.properties new file mode 100755 index 0000000..4cd12e8 --- /dev/null +++ b/src/jdbernard/timestamper/resources/TimeStamperView.properties @@ -0,0 +1,21 @@ + +currentTaskLabel.text=Current task started at +exitButton.text= +#NOI18N +exitButton.icon=icons/16-em-cross.png +exitButton.hover.icon=icons/16-em-cross-hover.png +taskTextField.text= +#NOI18N +startTimeLabel.foreground=0, 102, 102 +startTimeLabel.text=12:00:00 +totalTimeNow.text=3day 2hr 50min 25sec +#NOI18N +totalTimeNow.foreground=0, 153, 0 +jLabel1.text=12:00:00 +#NOI18N +jLabel1.foreground=204, 0, 0 +notesButton.text=jButton1 +editNotes.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-em-pencil.png +editNotes.Action.icon=/jdbernard/timestamper/resources/icons/16-em-pencil.png +editNotes.Action.shortDescription=Edit notes for this task +editNotes.Action.text=Notes diff --git a/src/jdbernard/timestamper/resources/about.png b/src/jdbernard/timestamper/resources/about.png new file mode 100755 index 0000000000000000000000000000000000000000..c6dfe0a5228507c09da581f78f712dbcf25e37c8 GIT binary patch literal 8187 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 Dm0Fni literal 0 HcmV?d00001 diff --git a/src/jdbernard/timestamper/resources/icons/12-em-cross.png b/src/jdbernard/timestamper/resources/icons/12-em-cross.png new file mode 100755 index 0000000000000000000000000000000000000000..65dfa8dc611a62b5e5f7fecd8bd1f0f3e7d862d9 GIT binary patch literal 357 zcmV-r0h<1aP)g3$S4M0Axc=1)-l%*PxmT6bcX|<#w;V91la2Z8ozrJGW!yd5(X+ z8vTO99*y;umG}9~G6^Q`4n0`paCF_gH5xG?^L;HMvWfSDz^dt0&nLum3OpXjimk1| z0AeyhvfI5sNp4(8(gL>|#CQzhIBHt0BH3(^oleXls8R@*ERq9UE9lD$D*YKKxJ zYk@EXu2+TFwmF08pbl)efo4+?sbo)BnUr>5a<>c7=^%+BWal#vi7a|O7IP3o&q%3W zM-sPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOQ4 z7Bx7Eo-*zL00DYQL_t(I%cYaCN&`U@MNh)Q6e0v+BHE^uHFb&>x zSTAYP`U`fF!ooUHd#f15A|S$U2wsadvre*#=!1dbaNlKk_f1I>|EXYgd3wBeuu^Yn zJ|30U#p`@`?|^cV$ef>3skihSjwB>8o8FOFD-8ycB*n23Yvp(xXM8YlTvBe}HLt4Q zS7NQy@B94I#50&p@1n$7sn^Ryi-nXV`B^M7-s`Pi5J}312t@Poh)TWHH7_r4asqE} z@cs_vGHh)@9FtyLFdvW3fXGW>!(=vt=@ilwjDh`q(yJ@487NGlYr+tgO9+CjIS636 z#DpQ0daGNw2QI3kBdFEj;Q@AbTrVoC>2Qd7elBgM(CJ8*mr}d!rkz+Twc8o*bi5S2MRMZPQz!a~7a2J5 wm*#J|q>CIcf_9n%yDRLhuf8WZeFAG=!Q$$RrHX}(jdlxmK?@s24@Jz)OfDf&@eW)FoB8IS z+08%1@H`KXtf%0``T7jubEoTlzrPum;!AG7yu!RCvg&o&|HI8IQLP5mY{IHmL$Pp* zg;PG-#0WeX*tTEXXaI);a6Uu#dT@tBSmme+o)L<@0`FDkUe&PBC-NN2g%M zii<_4LP5+zCId}|4(QsvbIhFctP7f$u_;U@(DONv%R#T#aF8A{A!HhD5Ii#+<5eN{t;jR!;{~_8Q17X-@ zH{_poBWF)~^VWaq2};+VDdoHE2)5t*!+n;x!>qrxUnKACuRHr;**{6WWG8s0`+9>7FmBz#DakVFj!E)BaiyW6?E}G6v zIVDa~?!Lm;y6;P(Dlt~)79Q6FWIO@4M@OM)VVvmh^y2nQ#7K6L70dsUDzJ5OC zU$k`dqXX#a`HpFA zlVw^42D~0nGliIi@1$c}*q($25c0u6XxktXcR@I<_$;EJ*!L)*8CM-)n9> z4)^H^Cl?nYd}kfo7{l0lLD~YzhliobsY;&B!dzcVL#6R_XI(W2Vc91rNbnQ!7_0Vy{n_T(n2pPp6xTZF_fjN)FssBIysPien04`c2?Fl?un*aa+ M07*qoM6N<$f?@_03;+NC literal 0 HcmV?d00001 diff --git a/src/jdbernard/timestamper/resources/icons/close.gif b/src/jdbernard/timestamper/resources/icons/close.gif new file mode 100755 index 0000000000000000000000000000000000000000..0bbad997478cc0c50aa43f57c548e3bedff5136b GIT binary patch literal 918 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 sKaSV$2!JQuN1~ACLyCE)zT?RvsQLABh@G%8n+a literal 0 HcmV?d00001 From cb419c658fe5cf68f43eabfe3b2cfa4cf9650468 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Fri, 29 Aug 2008 18:19:56 -0500 Subject: [PATCH 03/45] Initial working version checkin. committer: Jonathan Bernard --- clean_all_whitespace.sh | 1 + src/jdbernard/timestamper/TimeStamperApp.java | 113 ++++++- .../timestamper/TimeStamperView.form | 140 +++++++-- .../timestamper/TimeStamperView.java | 291 ++++++++++++++++-- src/jdbernard/timestamper/Timeline.java | 23 +- .../resources/TimeStamperView.properties | 31 +- .../resources/icons/16-tool-a-hover.png | Bin 0 -> 393 bytes .../timestamper/resources/icons/16-tool-a.png | Bin 0 -> 275 bytes .../resources/icons/document-open-16x16.png | Bin 0 -> 537 bytes .../resources/icons/document-save-16x16.png | Bin 0 -> 911 bytes .../icons/document-save-as-16x16.png | Bin 0 -> 866 bytes timestamper.config | 4 + 12 files changed, 535 insertions(+), 68 deletions(-) create mode 100755 src/jdbernard/timestamper/resources/icons/16-tool-a-hover.png create mode 100755 src/jdbernard/timestamper/resources/icons/16-tool-a.png create mode 100755 src/jdbernard/timestamper/resources/icons/document-open-16x16.png create mode 100755 src/jdbernard/timestamper/resources/icons/document-save-16x16.png create mode 100755 src/jdbernard/timestamper/resources/icons/document-save-as-16x16.png create mode 100755 timestamper.config diff --git a/clean_all_whitespace.sh b/clean_all_whitespace.sh index b0b6f95..2a57986 100755 --- a/clean_all_whitespace.sh +++ b/clean_all_whitespace.sh @@ -1,6 +1,7 @@ #!/bin/sh ./clean_trailing_whitespace.sh build.xml +./clean_trailing_whitespace.sh timestamper.config ./clean_trailing_whitespace.sh src/jdbernard/timestamper/*.java ./clean_trailing_whitespace.sh src/jdbernard/timestamper/*.form ./clean_trailing_whitespace.sh src/jdbernard/timestamper/resources/*.properties diff --git a/src/jdbernard/timestamper/TimeStamperApp.java b/src/jdbernard/timestamper/TimeStamperApp.java index b3db88b..04f4f66 100755 --- a/src/jdbernard/timestamper/TimeStamperApp.java +++ b/src/jdbernard/timestamper/TimeStamperApp.java @@ -4,20 +4,75 @@ package jdbernard.timestamper; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.EventObject; +import java.util.Properties; +import java.util.logging.ConsoleHandler; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; import org.jdesktop.application.Application; import org.jdesktop.application.SingleFrameApplication; /** * The main class of the application. */ -public class TimeStamperApp extends SingleFrameApplication { +public class TimeStamperApp extends SingleFrameApplication +implements Application.ExitListener { + + private Timeline activeTimeline; + private String currentTimelineFile; + private Logger log; + private Properties config; + + public TimeStamperApp() { + super(); + + activeTimeline = new Timeline(); + + log = Logger.getLogger("jdbernard.timestamper"); + log.setLevel(Level.CONFIG); + + ConsoleHandler ch = new ConsoleHandler(); + ch.setLevel(Level.INFO); + + log.addHandler(ch); + + try { + FileHandler fh = new FileHandler("TimeStamper.log", true); + fh.setLevel(Level.ALL); + } catch (IOException ioe) { + log.warning("Could not open log file for writing. Switching console" + + " logging to verbose."); + ch.setLevel(Level.ALL); + } + + try { + config = new Properties(); + FileInputStream cfgIn = new FileInputStream("timestamper.config"); + config.load(cfgIn); + cfgIn.close(); + } catch (IOException ioe) { + log.warning("Could not load configuration options."); + } + + try { + activeTimeline = Timeline.readFromFile( + config.getProperty("lastUsedTimelineFilename")); + } catch (IOException ioe) { + log.warning("Could not load the last used timeline file."); + } + } /** * At startup create and show the main frame of the application. */ @Override protected void startup() { show(new TimeStamperView(this)); - getMainFrame().setSize(400, 75); + getMainFrame().setSize(300, 60); + getApplication().addExitListener(this); } /** @@ -42,4 +97,58 @@ public class TimeStamperApp extends SingleFrameApplication { public static void main(String[] args) { launch(TimeStamperApp.class, args); } + + public void saveTimeline() { + saveTimelineToFile(currentTimelineFile); + } + + public void saveTimelineToFile(String filename) { + if (filename == null || filename.equals("")) + filename = "default-timeline.txt"; + + try { + Timeline.writeToFile(filename, activeTimeline); + currentTimelineFile = filename; + } catch (IOException ioe) { + log.warning("Could not save timeline file: " + + ioe.getLocalizedMessage()); + } + } + + public void loadTimeline(String filename) { + + if (filename == null || filename.equals("")) { + activeTimeline = new Timeline(); + return; + } + + try { + activeTimeline = Timeline.readFromFile(filename); + // TODO: re-init gui for new timeline + } catch (IOException ioe) { + log.warning("Could not load from the file: " + + ioe.getLocalizedMessage()); + } + } + + public Timeline getActiveTimeline() { + return activeTimeline; + } + + @Override + public void willExit(EventObject e) { + saveTimeline(); + + config.setProperty("lastUsedTimelineFilename", currentTimelineFile); + try { + FileOutputStream out = new FileOutputStream("timestamper.config"); + config.store(out, ""); + out.close(); + } catch (IOException ioe) { + log.warning("Could not save config file."); + } + } + + @Override + public boolean canExit(EventObject e) { return true; } } diff --git a/src/jdbernard/timestamper/TimeStamperView.form b/src/jdbernard/timestamper/TimeStamperView.form index d61c345..bd73c61 100755 --- a/src/jdbernard/timestamper/TimeStamperView.form +++ b/src/jdbernard/timestamper/TimeStamperView.form @@ -11,19 +11,25 @@ + + + + + + - - - + + + - - + + - + @@ -32,7 +38,9 @@ - + + + @@ -46,23 +54,30 @@ - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + @@ -102,6 +117,11 @@ + + + + + @@ -133,16 +153,16 @@ - + - + - - - + + + @@ -157,6 +177,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -174,6 +256,6 @@ - + diff --git a/src/jdbernard/timestamper/TimeStamperView.java b/src/jdbernard/timestamper/TimeStamperView.java index 7819270..1fd9796 100755 --- a/src/jdbernard/timestamper/TimeStamperView.java +++ b/src/jdbernard/timestamper/TimeStamperView.java @@ -4,7 +4,20 @@ package jdbernard.timestamper; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; +import javax.swing.JFileChooser; import org.jdesktop.application.Action; +import org.jdesktop.application.Application; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; @@ -12,7 +25,7 @@ import org.jdesktop.application.FrameView; /** * The application's main frame. */ -public class TimeStamperView extends FrameView { +public class TimeStamperView extends FrameView implements MouseMotionListener { public TimeStamperView(SingleFrameApplication app) { super(app); @@ -23,6 +36,47 @@ public class TimeStamperView extends FrameView { getFrame().setUndecorated(true); + fileChooser = new JFileChooser(); + + updateTimer = new Timer(); + updateTimer.scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + Date currentTime = new Date(); + currentTimeLabel.setText(Timeline.shortFormat.format(currentTime)); + if (mostRecentTask != null) { + long seconds = currentTime.getTime() - mostRecentTask.getTime(); + seconds /= 1000; + long minutes = seconds / 60; + seconds = seconds % 60; + long hours = minutes / 60; + minutes %= 60; + long days = hours / 24; + hours %= 24; + StringBuilder sb = new StringBuilder(); + + if (days > 0) sb.append(Long.toString(days) + "day "); + if (hours > 0) sb.append(Long.toString(hours) + "hr "); + if (minutes > 0) sb.append(Long.toString(minutes) + "min "); + sb.append(Long.toString(seconds) + "sec"); + + totalTimeNow.setText(sb.toString()); + } else totalTimeNow.setText(""); + } + }, 0, 1000); + + thinTaskFont = taskTextField.getFont().deriveFont(Font.PLAIN); + boldTaskFont = thinTaskFont.deriveFont(Font.BOLD); + + // refresh new timeline + Timeline t = ((TimeStamperApp) getApplication()).getActiveTimeline(); + Timeline.TimelineMarker lastMarker = t.getLastMarker(new Date()); + + mostRecentTask = lastMarker.getTimestamp(); + startTimeLabel.setText(Timeline.shortFormat.format(lastMarker.getTimestamp())); + + taskTextField.setText(lastMarker.getMark()); } /** This method is called from within the constructor to @@ -40,11 +94,22 @@ public class TimeStamperView extends FrameView { taskTextField = new javax.swing.JTextField(); startTimeLabel = new javax.swing.JLabel(); totalTimeNow = new javax.swing.JLabel(); - jLabel1 = new javax.swing.JLabel(); + currentTimeLabel = new javax.swing.JLabel(); notesButton = new javax.swing.JButton(); + optionsButton = new javax.swing.JButton(); + optionsMenu = new javax.swing.JPopupMenu(); + saveTimelineMenuItem = new javax.swing.JMenuItem(); + saveTimelineAsMenuItem = new javax.swing.JMenuItem(); + loadTimelineMenuItem = new javax.swing.JMenuItem(); mainPanel.setBorder(javax.swing.BorderFactory.createMatteBorder(2, 2, 2, 2, new java.awt.Color(0, 0, 0))); mainPanel.setName("mainPanel"); // NOI18N + mainPanel.addMouseListener(new java.awt.event.MouseAdapter() { + public void mousePressed(java.awt.event.MouseEvent evt) { + mainPanelMousePressed(evt); + } + }); + mainPanel.addMouseMotionListener(this); currentTaskLabel.setFont(currentTaskLabel.getFont().deriveFont(currentTaskLabel.getFont().getStyle() | java.awt.Font.BOLD, currentTaskLabel.getFont().getSize()+2)); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getResourceMap(TimeStamperView.class); @@ -68,6 +133,7 @@ public class TimeStamperView extends FrameView { } }); + taskTextField.setFont(taskTextField.getFont().deriveFont(taskTextField.getFont().getStyle() | java.awt.Font.BOLD)); taskTextField.setText(resourceMap.getString("taskTextField.text")); // NOI18N taskTextField.setName("taskTextField"); // NOI18N taskTextField.addKeyListener(new java.awt.event.KeyAdapter() { @@ -86,35 +152,59 @@ public class TimeStamperView extends FrameView { totalTimeNow.setText(resourceMap.getString("totalTimeNow.text")); // NOI18N totalTimeNow.setName("totalTimeNow"); // NOI18N - jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD, jLabel1.getFont().getSize()+3)); - jLabel1.setForeground(resourceMap.getColor("jLabel1.foreground")); // NOI18N - jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N - jLabel1.setName("jLabel1"); // NOI18N + currentTimeLabel.setFont(currentTimeLabel.getFont().deriveFont(currentTimeLabel.getFont().getStyle() | java.awt.Font.BOLD, currentTimeLabel.getFont().getSize()+3)); + currentTimeLabel.setForeground(resourceMap.getColor("currentTimeLabel.foreground")); // NOI18N + currentTimeLabel.setText(resourceMap.getString("currentTimeLabel.text")); // NOI18N + currentTimeLabel.setName("currentTimeLabel"); // NOI18N notesButton.setAction(actionMap.get("editNotes")); // NOI18N notesButton.setHideActionText(true); notesButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); notesButton.setName("notesButton"); // NOI18N + optionsButton.setIcon(resourceMap.getIcon("optionsButton.icon")); // NOI18N + optionsButton.setContentAreaFilled(false); + optionsButton.setFocusPainted(false); + optionsButton.setHideActionText(true); + optionsButton.setIconTextGap(0); + optionsButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); + optionsButton.setMaximumSize(new java.awt.Dimension(16, 16)); + optionsButton.setMinimumSize(new java.awt.Dimension(16, 16)); + optionsButton.setName("optionsButton"); // NOI18N + optionsButton.setPreferredSize(new java.awt.Dimension(16, 16)); + optionsButton.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + optionsButtonMouseClicked(evt); + } + public void mouseEntered(java.awt.event.MouseEvent evt) { + optionsButtonMouseEntered(evt); + } + public void mouseExited(java.awt.event.MouseEvent evt) { + optionsButtonMouseExited(evt); + } + }); + javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap() - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(mainPanelLayout.createSequentialGroup() + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup() .addComponent(totalTimeNow) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel1)) - .addComponent(taskTextField) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE) + .addComponent(currentTimeLabel)) + .addComponent(taskTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 229, Short.MAX_VALUE) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(currentTaskLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(startTimeLabel))) .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 104, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 109, Short.MAX_VALUE) + .addComponent(optionsButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) .addComponent(exitButton)) .addGroup(mainPanelLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -124,27 +214,53 @@ public class TimeStamperView extends FrameView { mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(currentTaskLabel) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(exitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(startTimeLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(taskTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(notesButton)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(totalTimeNow) - .addComponent(jLabel1)) - .addContainerGap(15, Short.MAX_VALUE)) + .addComponent(optionsButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(mainPanelLayout.createSequentialGroup() + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(notesButton) + .addGroup(mainPanelLayout.createSequentialGroup() + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(currentTaskLabel) + .addComponent(startTimeLabel)) + .addGap(0, 0, 0) + .addComponent(taskTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(0, 0, 0) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(currentTimeLabel) + .addComponent(totalTimeNow)))) + .addContainerGap(24, Short.MAX_VALUE)) ); + optionsMenu.setName("optionsMenu"); // NOI18N + + saveTimelineMenuItem.setAction(actionMap.get("saveTimeline")); // NOI18N + saveTimelineMenuItem.setName("saveTimelineMenuItem"); // NOI18N + optionsMenu.add(saveTimelineMenuItem); + + saveTimelineAsMenuItem.setAction(actionMap.get("saveTimelineAs")); // NOI18N + saveTimelineAsMenuItem.setName("saveTimelineAsMenuItem"); // NOI18N + optionsMenu.add(saveTimelineAsMenuItem); + + loadTimelineMenuItem.setAction(actionMap.get("loadTimeline")); // NOI18N + loadTimelineMenuItem.setName("loadTimelineMenuItem"); // NOI18N + optionsMenu.add(loadTimelineMenuItem); + setComponent(mainPanel); }// //GEN-END:initComponents private void taskTextFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_taskTextFieldKeyReleased - // Do stuff - + if (evt.getKeyCode() == KeyEvent.VK_ENTER) { + Timeline t = ((TimeStamperApp) getApplication()).getActiveTimeline(); + Date d = new Date(); + t.addMarker(d, taskTextField.getText(), "No comments."); + startTimeLabel.setText(Timeline.shortFormat.format(d)); + taskTextField.setFont(boldTaskFont); + mostRecentTask = d; + } else { + taskTextField.setFont(thinTaskFont); + } }//GEN-LAST:event_taskTextFieldKeyReleased private void exitButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_exitButtonMouseEntered @@ -155,20 +271,139 @@ private void exitButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:e exitButton.setIcon(getResourceMap().getIcon("exitButton.icon")); }//GEN-LAST:event_exitButtonMouseExited +private void optionsButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_optionsButtonMouseEntered + optionsButton.setIcon(getResourceMap().getIcon("optionsButton.hover.icon"));//GEN-LAST:event_optionsButtonMouseEntered +} + +private void optionsButtonMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_optionsButtonMouseExited + optionsButton.setIcon(getResourceMap().getIcon("optionsButton.icon"));//GEN-LAST:event_optionsButtonMouseExited +} + +private void mainPanelMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mainPanelMousePressed + mousePressRelativeToFrame = evt.getPoint(); +}//GEN-LAST:event_mainPanelMousePressed + +private void optionsButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_optionsButtonMouseClicked + optionsMenu.show(evt.getComponent(), evt.getX(), evt.getY()); +}//GEN-LAST:event_optionsButtonMouseClicked + @Action public void editNotes() { - + // TODO: } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel currentTaskLabel; + private javax.swing.JLabel currentTimeLabel; private javax.swing.JButton exitButton; - private javax.swing.JLabel jLabel1; + private javax.swing.JMenuItem loadTimelineMenuItem; private javax.swing.JPanel mainPanel; private javax.swing.JButton notesButton; + private javax.swing.JButton optionsButton; + private javax.swing.JPopupMenu optionsMenu; + private javax.swing.JMenuItem saveTimelineAsMenuItem; + private javax.swing.JMenuItem saveTimelineMenuItem; private javax.swing.JLabel startTimeLabel; private javax.swing.JTextField taskTextField; private javax.swing.JLabel totalTimeNow; // End of variables declaration//GEN-END:variables + private Point mousePressRelativeToFrame; + private JFileChooser fileChooser; + private Timer updateTimer; + private Font boldTaskFont; + private Font thinTaskFont; + private Date mostRecentTask; + + public void mouseDragged(MouseEvent e) { + Point currentMousePoint = e.getLocationOnScreen(); + + // this is the point we will compute as the new upper left + // coordinate of the frame. It needs to be translated some to account + // for the fact that the user can press the mouse anywhere on the + // main panel. + Point finalPoint = (Point) currentMousePoint.clone(); + // find out where the new point should be, ignoreing screen bounds + finalPoint.translate(-mousePressRelativeToFrame.x, + -mousePressRelativeToFrame.y); + + // get the current frame bounds + Rectangle frameBounds = getFrame().getBounds(); + + // screen resolution + Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize(); + + // check to see if the frame is near any of the screen boundaries + // if it is, 'snap' the final point to that boundary. + if (frameBounds.x < 20) + finalPoint.translate(-finalPoint.x, 0); + if (frameBounds.y < 20) + finalPoint.translate(0, -finalPoint.y); + if ((resolution.width - (frameBounds.x + frameBounds.width)) < 20) + finalPoint.translate(resolution.width - + (finalPoint.x + frameBounds.width), 0); + if ((resolution.height - (frameBounds.y + frameBounds.height)) < 20) + finalPoint.translate(0, resolution.height - + (finalPoint.y + frameBounds.height)); + + + // this point represents a backwards version of the initial calculation + // to find the finalPoint. It says, based on the current final point, + // assume I moved the frame to that point. Where, relative to that point + // should the mouse be, based on how far it was relative to the point + // when the user pressed it. + Point whereMouseShouldBe = (Point) finalPoint.clone(); + whereMouseShouldBe.translate(mousePressRelativeToFrame.x, + mousePressRelativeToFrame.y); + + // if the actual mouse location is different from the expected location, + // then we know that the snapping behaviour has altered the frames new + // placement. If this alteration is too large (30 px apart in this case) + // then we know the user is trying to pull the frame out of its snapped + // position. In this case, we want to ignore the snap calculations and + // base the new frame location entirely on the current mouse location + if (whereMouseShouldBe.distance(currentMousePoint) > 30) { + finalPoint = (Point) currentMousePoint.clone(); + finalPoint.translate(-mousePressRelativeToFrame.x, + -mousePressRelativeToFrame.y); + } + + // once we've figured out where to go, put us there :) + getFrame().setLocation(finalPoint); + } + + public void mouseMoved(MouseEvent e) { + } + + @Action + public void saveTimeline() { + ((TimeStamperApp) getApplication()).saveTimeline(); + } + + @Action + public void saveTimelineAs() { + if (fileChooser.showSaveDialog(getFrame())!=JFileChooser.APPROVE_OPTION) + return; + + ((TimeStamperApp) getApplication()).saveTimelineToFile( + fileChooser.getSelectedFile().getAbsolutePath()); + } + + @Action + public void loadTimeline() { + if (fileChooser.showOpenDialog(getFrame())!=JFileChooser.APPROVE_OPTION) + return; + + ((TimeStamperApp) getApplication()).loadTimeline( + fileChooser.getSelectedFile().getAbsolutePath()); + + // refresh new timeline + Timeline t = ((TimeStamperApp) getApplication()).getActiveTimeline(); + Timeline.TimelineMarker lastMarker = t.getLastMarker(new Date()); + + mostRecentTask = lastMarker.getTimestamp(); + startTimeLabel.setText(Timeline.shortFormat.format(lastMarker.getTimestamp())); + + taskTextField.setText(lastMarker.getMark()); + } } diff --git a/src/jdbernard/timestamper/Timeline.java b/src/jdbernard/timestamper/Timeline.java index 031051b..992a925 100644 --- a/src/jdbernard/timestamper/Timeline.java +++ b/src/jdbernard/timestamper/Timeline.java @@ -93,18 +93,29 @@ public class Timeline implements Iterable { } public String getLastName(Date timestamp) { - //TODO: - return null; + TimelineMarker lastMarker = getLastMarker(timestamp); + return (lastMarker == null ? + "No previous marker." : + lastMarker.getMark()); + } public String getLastNotes(Date timestamp) { - //TODO: - return null; + TimelineMarker lastMarker = getLastMarker(timestamp); + return (lastMarker == null ? + "No previous marker." : + lastMarker.getNotes()); } public TimelineMarker getLastMarker(Date timestamp) { - //TODO: - return null; + TimelineMarker lastMarker = null; + for (TimelineMarker tm : timelineList) { + if (tm.getTimestamp().after(timestamp)) + break; + lastMarker = tm; + } + + return lastMarker; } public void removeMarker(TimelineMarker marker) { diff --git a/src/jdbernard/timestamper/resources/TimeStamperView.properties b/src/jdbernard/timestamper/resources/TimeStamperView.properties index 4cd12e8..69e5b38 100755 --- a/src/jdbernard/timestamper/resources/TimeStamperView.properties +++ b/src/jdbernard/timestamper/resources/TimeStamperView.properties @@ -4,6 +4,8 @@ exitButton.text= #NOI18N exitButton.icon=icons/16-em-cross.png exitButton.hover.icon=icons/16-em-cross-hover.png +optionsButton.icon=icons/16-tool-a.png +optionsButton.hover.icon=icons/16-tool-a-hover.png taskTextField.text= #NOI18N startTimeLabel.foreground=0, 102, 102 @@ -11,11 +13,34 @@ startTimeLabel.text=12:00:00 totalTimeNow.text=3day 2hr 50min 25sec #NOI18N totalTimeNow.foreground=0, 153, 0 -jLabel1.text=12:00:00 -#NOI18N -jLabel1.foreground=204, 0, 0 notesButton.text=jButton1 editNotes.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-em-pencil.png editNotes.Action.icon=/jdbernard/timestamper/resources/icons/16-em-pencil.png editNotes.Action.shortDescription=Edit notes for this task editNotes.Action.text=Notes +jButton1.text= +showOptionsMenu.Action.text=Options menu +showOptionsMenu.Action.shortDescription=Show the application's options menu. +showOptionsMenu.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-tool-a.png +showOptionsMenu.Action.icon=/jdbernard/timestamper/resources/icons/16-tool-a.png +saveTimelineMenuItem.text=Item +saveTimeline.Action.text=Save Timeline... +saveTimeline.Action.smallIcon=/jdbernard/timestamper/resources/icons/document-save-16x16.png +saveTimeline.Action.icon=/jdbernard/timestamper/resources/icons/document-save-16x16.png +saveTimeline.Action.shortDescription=Save all actions to a timeline file. +saveTimelineAs.Action.smallIcon=/jdbernard/timestamper/resources/icons/document-save-as-16x16.png +saveTimelineAs.Action.icon=/jdbernard/timestamper/resources/icons/document-save-as-16x16.png +saveTimelineAs.Action.shortDescription=Save actions to a new timeline file. +saveTimelineAs.Action.text=Save Timeline As... +loadTimelineMenuItem.text=Item +loadTimeline.Action.text=Load Timeline... +loadTimeline.Action.shortDescription=Load a set of actions from a timeline file +loadTimeline.Action.smallIcon=/jdbernard/timestamper/resources/icons/document-open-16x16.png +loadTimeline.Action.icon=/jdbernard/timestamper/resources/icons/document-open-16x16.png +currentTimeLabel.text=12:00:00 +#NOI18N +currentTimeLabel.foreground=204, 0, 0 +exit.Action.text=Exit +exit.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-em-cross.png +exit.Action.shortDescription=Close the application. +exit.Action.icon=/jdbernard/timestamper/resources/icons/16-em-cross.png diff --git a/src/jdbernard/timestamper/resources/icons/16-tool-a-hover.png b/src/jdbernard/timestamper/resources/icons/16-tool-a-hover.png new file mode 100755 index 0000000000000000000000000000000000000000..f602f9472e55e1afd7136ac898f6772c70bd46fa GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgfv4p|Wi1Nrb^3!o{So-U3d7N?g6 z+jbvv5U7>@l>bS%Ng+wMF5xNL#O4jY9=k)kR$r1cd$`Majf&bvE0-sAC;v64)*p&1 zR9RElJ5f4fM(Q)({EGaJNlgDaxBCZ+sNedNZ-38ou66B!ImHF%vOoCVeR=r6XPYIN zQO%tvPgNGCUWz+e>t>(A!ysUEjlucYhncB&nHO1He0^4$Z67~_#E-hk@$2l%M18VW zC-i>IxN&9QdGR;p@ymqjJ0~%DaRqpl#)aGxs|?KaS{W8JgWs#`w`h|B1H&0H?=#DV zWljrs{V7;{z*$+cx8o7Z=a)-_Yt$EC^vL;C%9k-aWn09fhg literal 0 HcmV?d00001 diff --git a/src/jdbernard/timestamper/resources/icons/16-tool-a.png b/src/jdbernard/timestamper/resources/icons/16-tool-a.png new file mode 100755 index 0000000000000000000000000000000000000000..dcf0cdf1b2a53ff0a62c747f59962661ad774fcd GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fotpJ}8*ZYs2+_-ap(c;CcSFfHkciz1D3qF4O^5XTIpTB-h zpE2|Fxyw6uY{<>c1(L@D8&rV0_)3EOg8w4}2G;|3P5@<6JzX3_DsIJ`j}~iC;BXC` zFIqI~e+hHx%+mTPZ-q?m>~Gn6coVbbV)-3=(wdp~Z)+$~^Wa`_Fql2!w@|XqwpGlR zY?@ZxV>XyX{~upF@AEBdr!_i-}AlaS`P;MW>cxu z9DkvdD(%12*vj(SYwBQ4KAVt{;nB!s5cn*uEK(>G9=&_BwGk;W{&Y+R`Ug2YIt0LO zijhdfX+$oceL4PQYR1-D<2WwYTaqQknBn2TP(y*ux9iiujIETy_dW7Ia{we;TLAF9 zi@L?G+gv%@VHnmp08>dGm7nz|ot<4Zu?<8zh`Jobr5(iM3DW6ww1Dq>y#I2}LB<7O z{=<5mexGZi-ial#0UXEWAmg&|{62xwT!w2`Voc5NR%Zb4BNuRdcG0j{YeTx-tq##~ zN`U|(f@N8V2qIua&_)QgP}Bw$8bU3!C9c-~!p)>l_FVBj>w{Prgz`cJ1VN-M3ty=dUzxwDk-RR*TX)b=<`?UJv bHvh|SH)hI<8EUFWod3@ax5SUXmoUNIxjD3X>Dy`V=irVb7^B}VQg$JV|oe-V{&C- zbY)~9cWHEJAarPDAV*0}P%H{)baZe!FE4j@cP?jXZE!Aca%X3X$43AF0)$CKK~y-) zosvyRRACf`pSj)f=Fj9z;I%Q$k+M;2QBgD|6u8J1MHDVVC@g}Csliq)D#}F>R1gMI zv?vN9uqY^MThJnjM2er z*tjzZQ~_IohM*?d(88ZT78%aXyXViH;2#P!cXaKIt*nn#mz#sDYsxyRBZX^i&nNvY z!|UGX>ciJj;*mGYx;yU-{}qrteZJeB8awQX#;6}=+9+dz9;B^hBg-ombNT)Y{GmQ# z1>=94?<9FFC0|AcL_}oZb6R@S1CqM-L=p!tNYAS;()IMMw4S;y?*@nEcUhJtsg9)R zhVHYpJjTSt1mTi$w7?{V;sDV1aTK#e=lghu_XD3;vZxRO075}Q0RXz^f+)dPitQ(E z%-gYda01u!x!CiPi#;y^czkvr$ZTH&P@+)2qU%s20PVYX(wJDs%#2Mmq|uaE&)(MU z0PJaAf$|k1G6xV5B9Sl^Wic)tSjWw~4~WOA&hFy#?;glwrvv%h2{W;VNh9FnHS!gh7CNsvH<|wws9PX>FMctA?pDB z{r$MEo7eC>4_()D?>`lZMDjE6Jdbob&B(|InM?)|K}0YNgQ1}zLZMKuT9$=nS@~B` zN>N-~L@*f4eG&lIbrCfS6E%B2<@@;-!r?HbrKLopQ2?^pEI=;pcwHQ&6!E$`lu|5- lMst<}sgC3s;57fI&R>%|GfdSYVr>8b002ovPDHLkV1jlggmVA@ literal 0 HcmV?d00001 diff --git a/src/jdbernard/timestamper/resources/icons/document-save-as-16x16.png b/src/jdbernard/timestamper/resources/icons/document-save-as-16x16.png new file mode 100755 index 0000000000000000000000000000000000000000..9bed1436efffee1a483904588473674318598b1f GIT binary patch literal 866 zcmV-o1D*VdP)UFWod3@ax5SUXmoUNIxjD3X>Dy`V=irVb7^B}VQg$JV|oe-V{&C- zbY)~9cWHEJAarPDAV*0}P%H{)baZe!FE4j@cP?jXZE!Aca%X3X$43AF0#`{yK~y-) zosv&TlVKdkKkwW8GjsCJ;cHs9iJC|qA~d!H4G(FMMByQX#3HCzjd|)|VIB-21Mwh5 zhom5c6$M4zBB6t3c_^}jnrK;u`YN**_QtOTUJ`MufOw3D}O<$@%J>jc9glCx%%Yp!W_TTZru}!8;pKg ziIreduQu~|jz3q2r))jc$I(uWGxwCOmnKd+iq~);5l0swcK8o_Q>AwF0Fa+$sjC1L1r-H%nUmZ19?@7`$l=NgGB#(d76639 zVRT)`nOBmOcy<+0;@U>{org457jm@9jjroNqtWCOEdZuz5{X0r&~+VM*XccPrR92n z<(R?A+A^9C9Y9r8LZJ|mNCcbBmiPxgzgH^C_adwe_&*qa^)k`Gv&$^mj1Hi7? sSDjmaE$V6yvJn)Y-+LKoV`H@c1eLz@t3P|Tod5s;07*qoM6N<$f{Xxk=>Px# literal 0 HcmV?d00001 diff --git a/timestamper.config b/timestamper.config new file mode 100755 index 0000000..e8de75c --- /dev/null +++ b/timestamper.config @@ -0,0 +1,4 @@ +# +#Fri Aug 29 18:18:08 CDT 2008 +lastUsedTimelineFilename=default-timeline.txt +lastUsedTimelineFile=default-timeline.txt From ed5bdce87c0ab10a6829a63bbb1c65223e62b116 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Fri, 29 Aug 2008 18:27:48 -0500 Subject: [PATCH 04/45] Minor bug fix. Now allows a config file to be created if it does not exist. committer: Jonathan Bernard --- src/jdbernard/timestamper/TimeStamperApp.java | 12 +++++------- src/jdbernard/timestamper/TimeStamperView.java | 16 ++++++++++------ timestamper.config | 4 ---- 3 files changed, 15 insertions(+), 17 deletions(-) delete mode 100755 timestamper.config diff --git a/src/jdbernard/timestamper/TimeStamperApp.java b/src/jdbernard/timestamper/TimeStamperApp.java index 04f4f66..b74fbd9 100755 --- a/src/jdbernard/timestamper/TimeStamperApp.java +++ b/src/jdbernard/timestamper/TimeStamperApp.java @@ -4,6 +4,7 @@ package jdbernard.timestamper; +import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; @@ -51,19 +52,16 @@ implements Application.ExitListener { try { config = new Properties(); - FileInputStream cfgIn = new FileInputStream("timestamper.config"); + File cfgFile = new File("timestamper.config"); + if (!cfgFile.exists()) cfgFile.createNewFile(); + FileInputStream cfgIn = new FileInputStream(cfgFile); config.load(cfgIn); cfgIn.close(); } catch (IOException ioe) { log.warning("Could not load configuration options."); } - try { - activeTimeline = Timeline.readFromFile( - config.getProperty("lastUsedTimelineFilename")); - } catch (IOException ioe) { - log.warning("Could not load the last used timeline file."); - } + loadTimeline(config.getProperty("lastUsedTimelineFilename")); } /** diff --git a/src/jdbernard/timestamper/TimeStamperView.java b/src/jdbernard/timestamper/TimeStamperView.java index 1fd9796..30b8b57 100755 --- a/src/jdbernard/timestamper/TimeStamperView.java +++ b/src/jdbernard/timestamper/TimeStamperView.java @@ -73,10 +73,12 @@ public class TimeStamperView extends FrameView implements MouseMotionListener { Timeline t = ((TimeStamperApp) getApplication()).getActiveTimeline(); Timeline.TimelineMarker lastMarker = t.getLastMarker(new Date()); - mostRecentTask = lastMarker.getTimestamp(); - startTimeLabel.setText(Timeline.shortFormat.format(lastMarker.getTimestamp())); + if (lastMarker != null) { + mostRecentTask = lastMarker.getTimestamp(); + startTimeLabel.setText(Timeline.shortFormat.format(lastMarker.getTimestamp())); - taskTextField.setText(lastMarker.getMark()); + taskTextField.setText(lastMarker.getMark()); + } } /** This method is called from within the constructor to @@ -401,9 +403,11 @@ private void optionsButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIR Timeline t = ((TimeStamperApp) getApplication()).getActiveTimeline(); Timeline.TimelineMarker lastMarker = t.getLastMarker(new Date()); - mostRecentTask = lastMarker.getTimestamp(); - startTimeLabel.setText(Timeline.shortFormat.format(lastMarker.getTimestamp())); + if (lastMarker != null) { + mostRecentTask = lastMarker.getTimestamp(); + startTimeLabel.setText(Timeline.shortFormat.format(lastMarker.getTimestamp())); - taskTextField.setText(lastMarker.getMark()); + taskTextField.setText(lastMarker.getMark()); + } } } diff --git a/timestamper.config b/timestamper.config deleted file mode 100755 index e8de75c..0000000 --- a/timestamper.config +++ /dev/null @@ -1,4 +0,0 @@ -# -#Fri Aug 29 18:18:08 CDT 2008 -lastUsedTimelineFilename=default-timeline.txt -lastUsedTimelineFile=default-timeline.txt From 0864b978e720ee85f81f2c8c37f3df3772f1367d Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Fri, 29 Aug 2008 18:30:58 -0500 Subject: [PATCH 05/45] missed some IDE stuff. committer: Jonathan Bernard --- clean_all_whitespace.sh | 2 +- nbproject/private/private.xml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100755 nbproject/private/private.xml diff --git a/clean_all_whitespace.sh b/clean_all_whitespace.sh index 2a57986..588c950 100755 --- a/clean_all_whitespace.sh +++ b/clean_all_whitespace.sh @@ -8,4 +8,4 @@ ./clean_trailing_whitespace.sh nbproject/*.xml ./clean_trailing_whitespace.sh nbproject/project.* ./clean_trailing_whitespace.sh nbproject/*.properties -./clean_trailing_whitespace.sh nbproject/private/private.properties +./clean_trailing_whitespace.sh nbproject/private/private.* diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100755 index 0000000..c1f155a --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,4 @@ + + + + From 34e52d78bf6ea052868d5aadd5f1d9ce986dbf48 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Sat, 30 Aug 2008 00:29:22 -0500 Subject: [PATCH 06/45] Referencing libraries in an IDE-independant way using relative paths to the 'lib' directory so that build scripts can run on any platform and outside the IDE committer: Jonathan Bernard --- lib/appframework-1.0.3.jar | Bin 0 -> 264192 bytes lib/swing-worker-1.1.jar | Bin 0 -> 11007 bytes nbproject/private/private.properties | 4 ++-- nbproject/project.properties | 5 ++++- src/jdbernard/timestamper/TimeStamperApp.java | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 lib/appframework-1.0.3.jar create mode 100644 lib/swing-worker-1.1.jar diff --git a/lib/appframework-1.0.3.jar b/lib/appframework-1.0.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..9f5cdbf7b82bfe7b23f6168ab24a3d00207188de GIT binary patch literal 264192 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�LY8XKbpbGPyePEp=wZln=u-RbOD9lVK)v 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 R(x-$eh@60sBohO}{{uK*tSkTk literal 0 HcmV?d00001 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index 222ae47..965073e 100755 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -1,2 +1,2 @@ -jaxws.endorsed.dir=C:\\Program Files\\NetBeans 6.1\\java2\\modules\\ext\\jaxws21\\api -user.properties.file=C:\\Documents and Settings\\jbernard\\.netbeans\\6.1\\build.properties +jaxws.endorsed.dir=/usr/local/netbeans-6.1/java2/modules/ext/jaxws21/api +user.properties.file=/home/jdbernard/.netbeans/6.1/build.properties diff --git a/nbproject/project.properties b/nbproject/project.properties index 5fc3e20..1deab8a 100755 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -20,10 +20,13 @@ dist.dir=dist dist.jar=${dist.dir}/TimeStamper.jar dist.javadoc.dir=${dist.dir}/javadoc excludes= +file.reference.appframework-1.0.3.jar=lib/appframework-1.0.3.jar +file.reference.swing-worker-1.1.jar=lib/swing-worker-1.1.jar includes=** jar.compress=false javac.classpath=\ - ${libs.swing-app-framework.classpath} + ${file.reference.appframework-1.0.3.jar}:\ + ${file.reference.swing-worker-1.1.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/src/jdbernard/timestamper/TimeStamperApp.java b/src/jdbernard/timestamper/TimeStamperApp.java index b74fbd9..814a49e 100755 --- a/src/jdbernard/timestamper/TimeStamperApp.java +++ b/src/jdbernard/timestamper/TimeStamperApp.java @@ -69,7 +69,7 @@ implements Application.ExitListener { */ @Override protected void startup() { show(new TimeStamperView(this)); - getMainFrame().setSize(300, 60); + getMainFrame().setSize(350, 60); getApplication().addExitListener(this); } From 5a992da4808f82fd6ad73865d8298a511fba99b1 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Sat, 30 Aug 2008 23:35:42 -0500 Subject: [PATCH 07/45] Added ability to specify timeline file on command line Added release build target to build stand-alone jar and tar.gz files committer: Jonathan Bernard --- build.xml | 16 ++++++++++++++++ nbproject/project.properties | 1 + release/TimeStamper_v1.0.jar | Bin 0 -> 214911 bytes release/TimeStamper_v1.0.tar.gz | Bin 0 -> 146526 bytes src/jdbernard/timestamper/TimeStamperApp.java | 18 ++++++++++++++++++ 5 files changed, 35 insertions(+) create mode 100644 release/TimeStamper_v1.0.jar create mode 100644 release/TimeStamper_v1.0.tar.gz diff --git a/build.xml b/build.xml index dd51e77..574c0b4 100755 --- a/build.xml +++ b/build.xml @@ -66,4 +66,20 @@ nbproject/build-impl.xml file. --> + + + + + + + + + + + + + + + + diff --git a/nbproject/project.properties b/nbproject/project.properties index 1deab8a..3137dd5 100755 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -2,6 +2,7 @@ application.desc=A simple java desktop application based on Swing Application Fr application.homepage=http://appframework.dev.java.net application.title=Basic Application Example application.vendor=Sun Microsystems Inc. +application.version=1.0 build.classes.dir=${build.dir}/classes build.classes.excludes=**/*.java,**/*.form # This directory is removed when the project is cleaned: diff --git a/release/TimeStamper_v1.0.jar b/release/TimeStamper_v1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..d02c2bed5ab9313f45cc5aacf25bc5012f6baf07 GIT binary patch literal 214911 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