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