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 0000000..c6dfe0a
Binary files /dev/null and b/src/jdbernard/timestamper/resources/about.png differ
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 0000000..65dfa8d
Binary files /dev/null and b/src/jdbernard/timestamper/resources/icons/12-em-cross.png differ
diff --git a/src/jdbernard/timestamper/resources/icons/16-em-cross-hover.png b/src/jdbernard/timestamper/resources/icons/16-em-cross-hover.png
new file mode 100755
index 0000000..a7740b8
Binary files /dev/null and b/src/jdbernard/timestamper/resources/icons/16-em-cross-hover.png differ
diff --git a/src/jdbernard/timestamper/resources/icons/16-em-cross.png b/src/jdbernard/timestamper/resources/icons/16-em-cross.png
new file mode 100755
index 0000000..466e3bb
Binary files /dev/null and b/src/jdbernard/timestamper/resources/icons/16-em-cross.png differ
diff --git a/src/jdbernard/timestamper/resources/icons/16-em-pencil.png b/src/jdbernard/timestamper/resources/icons/16-em-pencil.png
new file mode 100755
index 0000000..1b4e958
Binary files /dev/null and b/src/jdbernard/timestamper/resources/icons/16-em-pencil.png differ
diff --git a/src/jdbernard/timestamper/resources/icons/24-em-cross.png b/src/jdbernard/timestamper/resources/icons/24-em-cross.png
new file mode 100755
index 0000000..a9e18d2
Binary files /dev/null and b/src/jdbernard/timestamper/resources/icons/24-em-cross.png differ
diff --git a/src/jdbernard/timestamper/resources/icons/close.gif b/src/jdbernard/timestamper/resources/icons/close.gif
new file mode 100755
index 0000000..0bbad99
Binary files /dev/null and b/src/jdbernard/timestamper/resources/icons/close.gif differ
diff --git a/src/jdbernard/timestamper/resources/splash.png b/src/jdbernard/timestamper/resources/splash.png
new file mode 100755
index 0000000..a1fbdc1
Binary files /dev/null and b/src/jdbernard/timestamper/resources/splash.png differ