Finished version 1.5
Added timeline viewer for a single day Added icon resources Modified build file to clean more stuff committer: Jonathan Bernard <jdbernard@gmail.com>
@ -87,7 +87,7 @@
|
|||||||
<delete>
|
<delete>
|
||||||
<fileset dir="${basedir}">
|
<fileset dir="${basedir}">
|
||||||
<include name="*.log" />
|
<include name="*.log" />
|
||||||
<include name="*.log.lck" />
|
<include name="*.log.*" />
|
||||||
<include name="timestamper.config" />
|
<include name="timestamper.config" />
|
||||||
</fileset>
|
</fileset>
|
||||||
</delete>
|
</delete>
|
||||||
|
BIN
lib/jcalendar-1.3.2.jar
Executable file
@ -22,12 +22,14 @@ dist.jar=${dist.dir}/TimeStamper.jar
|
|||||||
dist.javadoc.dir=${dist.dir}/javadoc
|
dist.javadoc.dir=${dist.dir}/javadoc
|
||||||
excludes=
|
excludes=
|
||||||
file.reference.appframework-1.0.3.jar=lib/appframework-1.0.3.jar
|
file.reference.appframework-1.0.3.jar=lib/appframework-1.0.3.jar
|
||||||
|
file.reference.jcalendar-1.3.2.jar=C:\\Documents and Settings\\jbernard\\My Documents\\Development\\TimeStamper\\lib\\jcalendar-1.3.2.jar
|
||||||
file.reference.swing-worker-1.1.jar=lib/swing-worker-1.1.jar
|
file.reference.swing-worker-1.1.jar=lib/swing-worker-1.1.jar
|
||||||
includes=**
|
includes=**
|
||||||
jar.compress=false
|
jar.compress=false
|
||||||
javac.classpath=\
|
javac.classpath=\
|
||||||
${file.reference.appframework-1.0.3.jar}:\
|
${file.reference.appframework-1.0.3.jar}:\
|
||||||
${file.reference.swing-worker-1.1.jar}
|
${file.reference.swing-worker-1.1.jar}:\
|
||||||
|
${file.reference.jcalendar-1.3.2.jar}
|
||||||
# Space-separated list of extra javac options
|
# Space-separated list of extra javac options
|
||||||
javac.compilerargs=
|
javac.compilerargs=
|
||||||
javac.deprecation=false
|
javac.deprecation=false
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<Properties>
|
<Properties>
|
||||||
<Property name="defaultCloseOperation" type="int" value="2"/>
|
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||||
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
|
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
|
||||||
|
<Property name="undecorated" type="boolean" value="true"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
<SyntheticProperties>
|
<SyntheticProperties>
|
||||||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
@ -22,44 +23,334 @@
|
|||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Component id="mainPanel" alignment="0" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="timelineDayDisplay1" max="32767" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Component id="mainPanel" alignment="0" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="timelineDayDisplay1" max="32767" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
</Layout>
|
</Layout>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Container class="jdbernard.timestamper.TimelineDayDisplay" name="timelineDayDisplay1">
|
<Container class="javax.swing.JPanel" name="mainPanel">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="name" type="java.lang.String" value="timelineDayDisplay1" noResource="true"/>
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
<Property name="timeline" type="jdbernard.timestamper.Timeline" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
|
||||||
<Connection code="timeline" type="code"/>
|
<LineBorder thickness="2"/>
|
||||||
|
</Border>
|
||||||
</Property>
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="mainPanel" noResource="true"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="mainPanelMousePressed"/>
|
||||||
|
</Events>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="JavaCodeGenerator_ListenersCodePost" type="java.lang.String" value="mainPanel.addMouseMotionListener(this);"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<EmptySpace min="0" pref="380" max="32767" attributes="0"/>
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
|
<Component id="dayDisplay" alignment="0" pref="405" max="32767" attributes="0"/>
|
||||||
|
<Component id="detailPanel" alignment="0" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<EmptySpace min="0" pref="278" max="32767" attributes="0"/>
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="dayDisplay" pref="339" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="detailPanel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="jdbernard.timestamper.TimelineDayDisplay" name="dayDisplay">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="dayDisplay" noResource="true"/>
|
||||||
|
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[100, 100]"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<EmptySpace min="0" pref="405" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<EmptySpace min="0" pref="339" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
</Container>
|
||||||
|
<Container class="javax.swing.JPanel" name="detailPanel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
|
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
|
||||||
|
<LineBorder/>
|
||||||
|
</Border>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="detailPanel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<Component id="textPane" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="buttonPanel" min="-2" pref="139" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="buttonPanel" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="textPane" alignment="1" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JPanel" name="textPane">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="textPane" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
|
<Component id="notesScrollPane" alignment="0" pref="238" max="32767" attributes="0"/>
|
||||||
|
<Component id="timestampDateChooser" alignment="0" pref="238" max="32767" attributes="0"/>
|
||||||
|
<Component id="markTextField" alignment="0" pref="238" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="timestampDateChooser" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="markTextField" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="notesScrollPane" pref="36" max="32767" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JTextField" name="markTextField">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="markTextField.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="markTextField" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Container class="javax.swing.JScrollPane" name="notesScrollPane">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="notesScrollPane" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JTextArea" name="notesTextArea">
|
||||||
|
<Properties>
|
||||||
|
<Property name="columns" type="int" value="20"/>
|
||||||
|
<Property name="rows" type="int" value="5"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="notesTextArea" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
<Component class="com.toedter.calendar.JDateChooser" name="timestampDateChooser">
|
||||||
|
<Properties>
|
||||||
|
<Property name="dateFormatString" type="java.lang.String" resourceKey="timestampDateChooser.dateFormatString"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="timestampDateChooser" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
<Container class="javax.swing.JPanel" name="buttonPanel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="buttonPanel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
|
||||||
|
<SubComponents>
|
||||||
|
<Container class="javax.swing.JPanel" name="datePanel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="datePanel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
|
||||||
|
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="dateLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="background" type="java.awt.Color" resourceKey="dateLabel.background"/>
|
||||||
|
<Property name="horizontalAlignment" type="int" value="0"/>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="dateLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="dateLabel" noResource="true"/>
|
||||||
|
<Property name="opaque" type="boolean" value="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="0" gridY="0" gridWidth="5" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="prevWeekButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="previousWeek" methodName="previousWeek"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="hideActionText" type="boolean" value="true"/>
|
||||||
|
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||||
|
<Insets value="[0, 2, 0, 2]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="prevWeekButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="prevDayButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="previousDay" methodName="previousDay"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="hideActionText" type="boolean" value="true"/>
|
||||||
|
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||||
|
<Insets value="[0, 2, 0, 2]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="prevDayButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="currentDayButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="currentDay" methodName="currentDay"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||||
|
<Insets value="[0, 2, 0, 2]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="currentDayButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="nextDayButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="nextDay" methodName="nextDay"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="hideActionText" type="boolean" value="true"/>
|
||||||
|
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||||
|
<Insets value="[0, 2, 0, 2]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="nextDayButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="3" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="nextWeekButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="nextWeek" methodName="nextWeek"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="hideActionText" type="boolean" value="true"/>
|
||||||
|
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
|
||||||
|
<Insets value="[0, 2, 0, 2]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="nextWeekButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="4" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
<Component class="javax.swing.JButton" name="newMarkerButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="newMarker" methodName="newMarker"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="newMarkerButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="deleteMarkerButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="deleteMarker" methodName="deleteMarker"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="deleteMarkerButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="saveMarkerChanges">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.PunchcardDisplayDialog" id="saveMarkerChanges" methodName="saveMarkerChanges"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="saveMarkerChanges" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Constraints>
|
||||||
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
|
||||||
|
<GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
|
||||||
|
</Constraint>
|
||||||
|
</Constraints>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -6,20 +6,39 @@
|
|||||||
|
|
||||||
package jdbernard.timestamper;
|
package jdbernard.timestamper;
|
||||||
|
|
||||||
|
import java.awt.Frame;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseMotionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import javax.swing.JDialog;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
import org.jdesktop.application.Action;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jbernard
|
* @author jbernard
|
||||||
*/
|
*/
|
||||||
public class PunchcardDisplayDialog extends javax.swing.JDialog {
|
public class PunchcardDisplayDialog extends JDialog
|
||||||
|
implements MouseMotionListener, ChangeListener {
|
||||||
|
|
||||||
/** Creates new form PunchcardDisplayDialog */
|
/** Creates new form PunchcardDisplayDialog */
|
||||||
public PunchcardDisplayDialog(java.awt.Frame parent, boolean modal) {
|
public PunchcardDisplayDialog(Frame parent, boolean modal,
|
||||||
|
Timeline timeline, Calendar day) {
|
||||||
super(parent, modal);
|
super(parent, modal);
|
||||||
|
this.timeline = timeline;
|
||||||
|
this.day = day;
|
||||||
initComponents();
|
initComponents();
|
||||||
timelineDayDisplay1.setDay(Calendar.getInstance());
|
markTextField.setFont(dayDisplay.getMarkFont());
|
||||||
|
notesTextArea.setFont(dayDisplay.getNotesFont());
|
||||||
|
dayDisplay.setTimeline(timeline);
|
||||||
|
dayDisplay.setDay(day);
|
||||||
|
dayDisplay.addChangeListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This method is called from within the constructor to
|
/** This method is called from within the constructor to
|
||||||
@ -30,58 +49,268 @@ public class PunchcardDisplayDialog extends javax.swing.JDialog {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
java.awt.GridBagConstraints gridBagConstraints;
|
||||||
|
|
||||||
timelineDayDisplay1 = new jdbernard.timestamper.TimelineDayDisplay();
|
mainPanel = new javax.swing.JPanel();
|
||||||
|
dayDisplay = new jdbernard.timestamper.TimelineDayDisplay();
|
||||||
|
detailPanel = new javax.swing.JPanel();
|
||||||
|
textPane = new javax.swing.JPanel();
|
||||||
|
markTextField = new javax.swing.JTextField();
|
||||||
|
notesScrollPane = new javax.swing.JScrollPane();
|
||||||
|
notesTextArea = new javax.swing.JTextArea();
|
||||||
|
timestampDateChooser = new com.toedter.calendar.JDateChooser();
|
||||||
|
buttonPanel = new javax.swing.JPanel();
|
||||||
|
datePanel = new javax.swing.JPanel();
|
||||||
|
dateLabel = new javax.swing.JLabel();
|
||||||
|
prevWeekButton = new javax.swing.JButton();
|
||||||
|
prevDayButton = new javax.swing.JButton();
|
||||||
|
currentDayButton = new javax.swing.JButton();
|
||||||
|
nextDayButton = new javax.swing.JButton();
|
||||||
|
nextWeekButton = new javax.swing.JButton();
|
||||||
|
newMarkerButton = new javax.swing.JButton();
|
||||||
|
deleteMarkerButton = new javax.swing.JButton();
|
||||||
|
saveMarkerChanges = new javax.swing.JButton();
|
||||||
|
|
||||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
setName("Form"); // NOI18N
|
setName("Form"); // NOI18N
|
||||||
|
setUndecorated(true);
|
||||||
|
|
||||||
timelineDayDisplay1.setName("timelineDayDisplay1"); // NOI18N
|
mainPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 2));
|
||||||
|
mainPanel.setName("mainPanel"); // NOI18N
|
||||||
|
mainPanel.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||||
|
public void mousePressed(java.awt.event.MouseEvent evt) {
|
||||||
|
mainPanelMousePressed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
mainPanel.addMouseMotionListener(this);
|
||||||
|
|
||||||
javax.swing.GroupLayout timelineDayDisplay1Layout = new javax.swing.GroupLayout(timelineDayDisplay1);
|
dayDisplay.setName("dayDisplay"); // NOI18N
|
||||||
timelineDayDisplay1.setLayout(timelineDayDisplay1Layout);
|
dayDisplay.setPreferredSize(new java.awt.Dimension(100, 100));
|
||||||
timelineDayDisplay1Layout.setHorizontalGroup(
|
|
||||||
timelineDayDisplay1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
javax.swing.GroupLayout dayDisplayLayout = new javax.swing.GroupLayout(dayDisplay);
|
||||||
.addGap(0, 380, Short.MAX_VALUE)
|
dayDisplay.setLayout(dayDisplayLayout);
|
||||||
|
dayDisplayLayout.setHorizontalGroup(
|
||||||
|
dayDisplayLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGap(0, 405, Short.MAX_VALUE)
|
||||||
);
|
);
|
||||||
timelineDayDisplay1Layout.setVerticalGroup(
|
dayDisplayLayout.setVerticalGroup(
|
||||||
timelineDayDisplay1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
dayDisplayLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGap(0, 278, Short.MAX_VALUE)
|
.addGap(0, 339, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
|
||||||
|
detailPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
|
||||||
|
detailPanel.setName("detailPanel"); // NOI18N
|
||||||
|
|
||||||
|
textPane.setName("textPane"); // NOI18N
|
||||||
|
|
||||||
|
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getResourceMap(PunchcardDisplayDialog.class);
|
||||||
|
markTextField.setText(resourceMap.getString("markTextField.text")); // NOI18N
|
||||||
|
markTextField.setName("markTextField"); // NOI18N
|
||||||
|
|
||||||
|
notesScrollPane.setName("notesScrollPane"); // NOI18N
|
||||||
|
|
||||||
|
notesTextArea.setColumns(20);
|
||||||
|
notesTextArea.setRows(5);
|
||||||
|
notesTextArea.setName("notesTextArea"); // NOI18N
|
||||||
|
notesScrollPane.setViewportView(notesTextArea);
|
||||||
|
|
||||||
|
timestampDateChooser.setDateFormatString(resourceMap.getString("timestampDateChooser.dateFormatString")); // NOI18N
|
||||||
|
timestampDateChooser.setName("timestampDateChooser"); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout textPaneLayout = new javax.swing.GroupLayout(textPane);
|
||||||
|
textPane.setLayout(textPaneLayout);
|
||||||
|
textPaneLayout.setHorizontalGroup(
|
||||||
|
textPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, textPaneLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(textPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
|
.addComponent(notesScrollPane, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 238, Short.MAX_VALUE)
|
||||||
|
.addComponent(timestampDateChooser, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 238, Short.MAX_VALUE)
|
||||||
|
.addComponent(markTextField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 238, Short.MAX_VALUE))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
textPaneLayout.setVerticalGroup(
|
||||||
|
textPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(textPaneLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(timestampDateChooser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(markTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(notesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 36, Short.MAX_VALUE)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
buttonPanel.setName("buttonPanel"); // NOI18N
|
||||||
|
buttonPanel.setLayout(new java.awt.GridBagLayout());
|
||||||
|
|
||||||
|
datePanel.setName("datePanel"); // NOI18N
|
||||||
|
datePanel.setLayout(new java.awt.GridBagLayout());
|
||||||
|
|
||||||
|
dateLabel.setBackground(resourceMap.getColor("dateLabel.background")); // NOI18N
|
||||||
|
dateLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
|
dateLabel.setText(resourceMap.getString("dateLabel.text")); // NOI18N
|
||||||
|
dateLabel.setName("dateLabel"); // NOI18N
|
||||||
|
dateLabel.setOpaque(true);
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 0;
|
||||||
|
gridBagConstraints.gridy = 0;
|
||||||
|
gridBagConstraints.gridwidth = 5;
|
||||||
|
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
|
||||||
|
gridBagConstraints.weightx = 1.0;
|
||||||
|
datePanel.add(dateLabel, gridBagConstraints);
|
||||||
|
|
||||||
|
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(jdbernard.timestamper.TimeStamperApp.class).getContext().getActionMap(PunchcardDisplayDialog.class, this);
|
||||||
|
prevWeekButton.setAction(actionMap.get("previousWeek")); // NOI18N
|
||||||
|
prevWeekButton.setHideActionText(true);
|
||||||
|
prevWeekButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
|
||||||
|
prevWeekButton.setName("prevWeekButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 0;
|
||||||
|
gridBagConstraints.gridy = 1;
|
||||||
|
datePanel.add(prevWeekButton, gridBagConstraints);
|
||||||
|
|
||||||
|
prevDayButton.setAction(actionMap.get("previousDay")); // NOI18N
|
||||||
|
prevDayButton.setHideActionText(true);
|
||||||
|
prevDayButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
|
||||||
|
prevDayButton.setName("prevDayButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 1;
|
||||||
|
gridBagConstraints.gridy = 1;
|
||||||
|
datePanel.add(prevDayButton, gridBagConstraints);
|
||||||
|
|
||||||
|
currentDayButton.setAction(actionMap.get("currentDay")); // NOI18N
|
||||||
|
currentDayButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
|
||||||
|
currentDayButton.setName("currentDayButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 2;
|
||||||
|
gridBagConstraints.gridy = 1;
|
||||||
|
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
|
||||||
|
gridBagConstraints.weightx = 1.0;
|
||||||
|
datePanel.add(currentDayButton, gridBagConstraints);
|
||||||
|
|
||||||
|
nextDayButton.setAction(actionMap.get("nextDay")); // NOI18N
|
||||||
|
nextDayButton.setHideActionText(true);
|
||||||
|
nextDayButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
|
||||||
|
nextDayButton.setName("nextDayButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 3;
|
||||||
|
gridBagConstraints.gridy = 1;
|
||||||
|
datePanel.add(nextDayButton, gridBagConstraints);
|
||||||
|
|
||||||
|
nextWeekButton.setAction(actionMap.get("nextWeek")); // NOI18N
|
||||||
|
nextWeekButton.setHideActionText(true);
|
||||||
|
nextWeekButton.setMargin(new java.awt.Insets(0, 2, 0, 2));
|
||||||
|
nextWeekButton.setName("nextWeekButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 4;
|
||||||
|
gridBagConstraints.gridy = 1;
|
||||||
|
datePanel.add(nextWeekButton, gridBagConstraints);
|
||||||
|
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 0;
|
||||||
|
gridBagConstraints.gridy = 0;
|
||||||
|
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
|
||||||
|
gridBagConstraints.weightx = 1.0;
|
||||||
|
buttonPanel.add(datePanel, gridBagConstraints);
|
||||||
|
|
||||||
|
newMarkerButton.setAction(actionMap.get("newMarker")); // NOI18N
|
||||||
|
newMarkerButton.setName("newMarkerButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 0;
|
||||||
|
gridBagConstraints.gridy = 1;
|
||||||
|
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
|
||||||
|
gridBagConstraints.weightx = 1.0;
|
||||||
|
buttonPanel.add(newMarkerButton, gridBagConstraints);
|
||||||
|
|
||||||
|
deleteMarkerButton.setAction(actionMap.get("deleteMarker")); // NOI18N
|
||||||
|
deleteMarkerButton.setName("deleteMarkerButton"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 0;
|
||||||
|
gridBagConstraints.gridy = 2;
|
||||||
|
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
|
||||||
|
gridBagConstraints.weightx = 1.0;
|
||||||
|
buttonPanel.add(deleteMarkerButton, gridBagConstraints);
|
||||||
|
|
||||||
|
saveMarkerChanges.setAction(actionMap.get("saveMarkerChanges")); // NOI18N
|
||||||
|
saveMarkerChanges.setName("saveMarkerChanges"); // NOI18N
|
||||||
|
gridBagConstraints = new java.awt.GridBagConstraints();
|
||||||
|
gridBagConstraints.gridx = 0;
|
||||||
|
gridBagConstraints.gridy = 3;
|
||||||
|
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
|
||||||
|
buttonPanel.add(saveMarkerChanges, gridBagConstraints);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout detailPanelLayout = new javax.swing.GroupLayout(detailPanel);
|
||||||
|
detailPanel.setLayout(detailPanelLayout);
|
||||||
|
detailPanelLayout.setHorizontalGroup(
|
||||||
|
detailPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, detailPanelLayout.createSequentialGroup()
|
||||||
|
.addComponent(textPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(buttonPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
);
|
||||||
|
detailPanelLayout.setVerticalGroup(
|
||||||
|
detailPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(buttonPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(textPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
|
||||||
|
mainPanel.setLayout(mainPanelLayout);
|
||||||
|
mainPanelLayout.setHorizontalGroup(
|
||||||
|
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
|
.addComponent(dayDisplay, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 405, Short.MAX_VALUE)
|
||||||
|
.addComponent(detailPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
mainPanelLayout.setVerticalGroup(
|
||||||
|
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(dayDisplay, javax.swing.GroupLayout.DEFAULT_SIZE, 339, Short.MAX_VALUE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(detailPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
getContentPane().setLayout(layout);
|
getContentPane().setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addContainerGap()
|
|
||||||
.addComponent(timelineDayDisplay1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addContainerGap())
|
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addContainerGap()
|
|
||||||
.addComponent(timelineDayDisplay1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
||||||
.addContainerGap())
|
|
||||||
);
|
);
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void mainPanelMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mainPanelMousePressed
|
||||||
|
mousePressRelativeToWindow = evt.getPoint();
|
||||||
|
}//GEN-LAST:event_mainPanelMousePressed
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param args the command line arguments
|
* @param args the command line arguments
|
||||||
*/
|
*/
|
||||||
public static void main(String args[]) throws Exception {
|
public static void main(String args[]) throws Exception {
|
||||||
java.awt.EventQueue.invokeLater(new Runnable() {
|
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
PunchcardDisplayDialog dialog = new PunchcardDisplayDialog(new javax.swing.JFrame(), true);
|
Timeline timeline = null;
|
||||||
try { dialog.timelineDayDisplay1.setTimeline(Timeline.readFromFile("test-timeline.txt")); }
|
Calendar day = Calendar.getInstance();
|
||||||
|
try { timeline = Timeline.readFromFile("test-timeline.txt"); }
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
System.err.println("Could not open timeline text.");
|
System.err.println("Could not open timeline text:");
|
||||||
|
e.printStackTrace(System.err);
|
||||||
|
timeline = new Timeline();
|
||||||
try { new File("PLACE_HERE").createNewFile(); }
|
try { new File("PLACE_HERE").createNewFile(); }
|
||||||
catch (Exception e1) {}
|
catch (Exception e1) {}
|
||||||
}
|
}
|
||||||
|
PunchcardDisplayDialog dialog = new PunchcardDisplayDialog(new javax.swing.JFrame(), true, timeline, day);
|
||||||
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
|
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
|
||||||
public void windowClosing(java.awt.event.WindowEvent e) {
|
public void windowClosing(java.awt.event.WindowEvent e) {
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
@ -92,9 +321,108 @@ public class PunchcardDisplayDialog extends javax.swing.JDialog {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void previousWeek() {
|
||||||
|
day.add(Calendar.WEEK_OF_YEAR, -1);
|
||||||
|
dayDisplay.setDay(day);
|
||||||
|
dateLabel.setText(dateFormatter.format(day.getTime()));
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void previousDay() {
|
||||||
|
day.add(Calendar.DAY_OF_YEAR, -1);
|
||||||
|
dayDisplay.setDay(day);
|
||||||
|
dateLabel.setText(dateFormatter.format(day.getTime()));
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void currentDay() {
|
||||||
|
day = Calendar.getInstance();
|
||||||
|
dayDisplay.setDay(day);
|
||||||
|
dateLabel.setText(dateFormatter.format(day.getTime()));
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void nextDay() {
|
||||||
|
day.add(Calendar.DAY_OF_YEAR, 1);
|
||||||
|
dayDisplay.setDay(day);
|
||||||
|
dateLabel.setText(dateFormatter.format(day.getTime()));
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void nextWeek() {
|
||||||
|
day.add(Calendar.WEEK_OF_YEAR, 1);
|
||||||
|
dayDisplay.setDay(day);
|
||||||
|
dateLabel.setText(dateFormatter.format(day.getTime()));
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void newMarker() {
|
||||||
|
dayDisplay.addMarker(timestampDateChooser.getDate(),
|
||||||
|
markTextField.getText(), notesTextArea.getText());
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void deleteMarker() {
|
||||||
|
dayDisplay.deleteSelectedMarker();
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void saveMarkerChanges() {
|
||||||
|
deleteMarker();
|
||||||
|
newMarker();
|
||||||
|
}
|
||||||
|
|
||||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
private jdbernard.timestamper.TimelineDayDisplay timelineDayDisplay1;
|
private javax.swing.JPanel buttonPanel;
|
||||||
|
private javax.swing.JButton currentDayButton;
|
||||||
|
private javax.swing.JLabel dateLabel;
|
||||||
|
private javax.swing.JPanel datePanel;
|
||||||
|
private jdbernard.timestamper.TimelineDayDisplay dayDisplay;
|
||||||
|
private javax.swing.JButton deleteMarkerButton;
|
||||||
|
private javax.swing.JPanel detailPanel;
|
||||||
|
private javax.swing.JPanel mainPanel;
|
||||||
|
private javax.swing.JTextField markTextField;
|
||||||
|
private javax.swing.JButton newMarkerButton;
|
||||||
|
private javax.swing.JButton nextDayButton;
|
||||||
|
private javax.swing.JButton nextWeekButton;
|
||||||
|
private javax.swing.JScrollPane notesScrollPane;
|
||||||
|
private javax.swing.JTextArea notesTextArea;
|
||||||
|
private javax.swing.JButton prevDayButton;
|
||||||
|
private javax.swing.JButton prevWeekButton;
|
||||||
|
private javax.swing.JButton saveMarkerChanges;
|
||||||
|
private javax.swing.JPanel textPane;
|
||||||
|
private com.toedter.calendar.JDateChooser timestampDateChooser;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
private Calendar day;
|
||||||
private Timeline timeline;
|
private Timeline timeline;
|
||||||
|
private SimpleDateFormat dateFormatter =
|
||||||
|
new SimpleDateFormat("EEE MMM dd");
|
||||||
|
private Point mousePressRelativeToWindow;
|
||||||
|
|
||||||
|
public void mouseDragged(MouseEvent e) {
|
||||||
|
setLocation(TimeStamperView.calculateWindowMovement(
|
||||||
|
e.getLocationOnScreen(), mousePressRelativeToWindow,
|
||||||
|
getBounds(),
|
||||||
|
new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseMoved(MouseEvent e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
Timeline.TimelineMarker marker = dayDisplay.getSelectedTimelineMarker();
|
||||||
|
timestampDateChooser.setDate(marker.getTimestamp());
|
||||||
|
|
||||||
|
markTextField.setText(marker.getMark());
|
||||||
|
notesTextArea.setText(marker.getNotes());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,6 +222,27 @@
|
|||||||
<Property name="name" type="java.lang.String" value="loadTimelineMenuItem" noResource="true"/>
|
<Property name="name" type="java.lang.String" value="loadTimelineMenuItem" noResource="true"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<Component class="javax.swing.JSeparator" name="seperator1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="name" type="java.lang.String" value="seperator1" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<MenuItem class="javax.swing.JCheckBoxMenuItem" name="showNotesDialogCheckBoxMenuItem">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.TimeStamperView" id="editNotes" methodName="editNotes"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="showNotesDialogCheckBoxMenuItem" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem class="javax.swing.JCheckBoxMenuItem" name="showPunchcardCheckBoxMenuItem">
|
||||||
|
<Properties>
|
||||||
|
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
|
||||||
|
<action class="jdbernard.timestamper.TimeStamperView" id="showPunchcard" methodName="showPunchcard"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="showPunchcardCheckBoxMenuItem" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</MenuItem>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
</NonVisualComponents>
|
</NonVisualComponents>
|
||||||
|
@ -11,9 +11,11 @@ import java.awt.Toolkit;
|
|||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseMotionListener;
|
import java.awt.event.MouseMotionListener;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
import javax.swing.ButtonGroup;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
import org.jdesktop.application.Action;
|
import org.jdesktop.application.Action;
|
||||||
import org.jdesktop.application.ResourceMap;
|
import org.jdesktop.application.ResourceMap;
|
||||||
@ -98,6 +100,9 @@ public class TimeStamperView extends FrameView implements MouseMotionListener {
|
|||||||
saveTimelineMenuItem = new javax.swing.JMenuItem();
|
saveTimelineMenuItem = new javax.swing.JMenuItem();
|
||||||
saveTimelineAsMenuItem = new javax.swing.JMenuItem();
|
saveTimelineAsMenuItem = new javax.swing.JMenuItem();
|
||||||
loadTimelineMenuItem = new javax.swing.JMenuItem();
|
loadTimelineMenuItem = new javax.swing.JMenuItem();
|
||||||
|
seperator1 = new javax.swing.JSeparator();
|
||||||
|
showNotesDialogCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
|
||||||
|
showPunchcardCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
|
||||||
|
|
||||||
mainPanel.setBorder(javax.swing.BorderFactory.createMatteBorder(2, 2, 2, 2, new java.awt.Color(0, 0, 0)));
|
mainPanel.setBorder(javax.swing.BorderFactory.createMatteBorder(2, 2, 2, 2, new java.awt.Color(0, 0, 0)));
|
||||||
mainPanel.setName("mainPanel"); // NOI18N
|
mainPanel.setName("mainPanel"); // NOI18N
|
||||||
@ -177,13 +182,13 @@ public class TimeStamperView extends FrameView implements MouseMotionListener {
|
|||||||
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(mainPanelLayout.createSequentialGroup()
|
.addGroup(mainPanelLayout.createSequentialGroup()
|
||||||
.addComponent(totalTimeNow)
|
.addComponent(totalTimeNow)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 23, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 58, Short.MAX_VALUE)
|
||||||
.addComponent(currentTimeLabel))
|
.addComponent(currentTimeLabel))
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
|
||||||
.addComponent(currentTaskLabel)
|
.addComponent(currentTaskLabel)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(startTimeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE))
|
.addComponent(startTimeLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE))
|
||||||
.addComponent(taskTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE))
|
.addComponent(taskTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
.addComponent(optionsButton)
|
.addComponent(optionsButton)
|
||||||
@ -226,6 +231,17 @@ public class TimeStamperView extends FrameView implements MouseMotionListener {
|
|||||||
loadTimelineMenuItem.setName("loadTimelineMenuItem"); // NOI18N
|
loadTimelineMenuItem.setName("loadTimelineMenuItem"); // NOI18N
|
||||||
optionsMenu.add(loadTimelineMenuItem);
|
optionsMenu.add(loadTimelineMenuItem);
|
||||||
|
|
||||||
|
seperator1.setName("seperator1"); // NOI18N
|
||||||
|
optionsMenu.add(seperator1);
|
||||||
|
|
||||||
|
showNotesDialogCheckBoxMenuItem.setAction(actionMap.get("editNotes")); // NOI18N
|
||||||
|
showNotesDialogCheckBoxMenuItem.setName("showNotesDialogCheckBoxMenuItem"); // NOI18N
|
||||||
|
optionsMenu.add(showNotesDialogCheckBoxMenuItem);
|
||||||
|
|
||||||
|
showPunchcardCheckBoxMenuItem.setAction(actionMap.get("showPunchcard")); // NOI18N
|
||||||
|
showPunchcardCheckBoxMenuItem.setName("showPunchcardCheckBoxMenuItem"); // NOI18N
|
||||||
|
optionsMenu.add(showPunchcardCheckBoxMenuItem);
|
||||||
|
|
||||||
setComponent(mainPanel);
|
setComponent(mainPanel);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -252,7 +268,17 @@ public class TimeStamperView extends FrameView implements MouseMotionListener {
|
|||||||
|
|
||||||
@Action
|
@Action
|
||||||
public void editNotes() {
|
public void editNotes() {
|
||||||
notesDialog.setVisible(notesButton.isSelected());
|
notesVisible = !notesVisible;
|
||||||
|
notesDialog.setVisible(notesVisible);
|
||||||
|
notesButton.setSelected(notesVisible);
|
||||||
|
showNotesDialogCheckBoxMenuItem.setSelected(notesVisible);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Action
|
||||||
|
public void showPunchcard() {
|
||||||
|
punchcardVisible = !punchcardVisible;
|
||||||
|
showPunchcardCheckBoxMenuItem.setSelected(punchcardVisible);
|
||||||
|
getPunchcardDisplayDialog().setVisible(punchcardVisible);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNotesForActiveTask(String notes) {
|
public void setNotesForActiveTask(String notes) {
|
||||||
@ -273,6 +299,9 @@ public class TimeStamperView extends FrameView implements MouseMotionListener {
|
|||||||
private javax.swing.JPopupMenu optionsMenu;
|
private javax.swing.JPopupMenu optionsMenu;
|
||||||
private javax.swing.JMenuItem saveTimelineAsMenuItem;
|
private javax.swing.JMenuItem saveTimelineAsMenuItem;
|
||||||
private javax.swing.JMenuItem saveTimelineMenuItem;
|
private javax.swing.JMenuItem saveTimelineMenuItem;
|
||||||
|
private javax.swing.JSeparator seperator1;
|
||||||
|
private javax.swing.JCheckBoxMenuItem showNotesDialogCheckBoxMenuItem;
|
||||||
|
private javax.swing.JCheckBoxMenuItem showPunchcardCheckBoxMenuItem;
|
||||||
private javax.swing.JLabel startTimeLabel;
|
private javax.swing.JLabel startTimeLabel;
|
||||||
private javax.swing.JTextField taskTextField;
|
private javax.swing.JTextField taskTextField;
|
||||||
private javax.swing.JLabel totalTimeNow;
|
private javax.swing.JLabel totalTimeNow;
|
||||||
@ -285,6 +314,19 @@ public class TimeStamperView extends FrameView implements MouseMotionListener {
|
|||||||
private Font thinTaskFont;
|
private Font thinTaskFont;
|
||||||
private Date mostRecentTask;
|
private Date mostRecentTask;
|
||||||
private NotesDialog notesDialog;
|
private NotesDialog notesDialog;
|
||||||
|
private PunchcardDisplayDialog punchcardDisplayDialog;
|
||||||
|
private boolean notesVisible = false;
|
||||||
|
private boolean punchcardVisible = false;
|
||||||
|
|
||||||
|
private PunchcardDisplayDialog getPunchcardDisplayDialog() {
|
||||||
|
if (punchcardDisplayDialog == null) {
|
||||||
|
punchcardDisplayDialog = new PunchcardDisplayDialog(this.getFrame(),
|
||||||
|
false,
|
||||||
|
((TimeStamperApp) getApplication()).getActiveTimeline(),
|
||||||
|
Calendar.getInstance());
|
||||||
|
}
|
||||||
|
return punchcardDisplayDialog;
|
||||||
|
}
|
||||||
|
|
||||||
public void mouseDragged(MouseEvent e) {
|
public void mouseDragged(MouseEvent e) {
|
||||||
getFrame().setLocation(calculateWindowMovement(e.getLocationOnScreen(),
|
getFrame().setLocation(calculateWindowMovement(e.getLocationOnScreen(),
|
||||||
|
@ -6,43 +6,73 @@ package jdbernard.timestamper;
|
|||||||
|
|
||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Font;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
|
import java.awt.Point;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jbernard
|
* @author jbernard
|
||||||
*/
|
*/
|
||||||
public class TimelineDayDisplay extends JComponent {
|
public class TimelineDayDisplay extends JComponent implements MouseListener {
|
||||||
|
|
||||||
|
private class MarkerDisplayEntry {
|
||||||
|
public Timeline.TimelineMarker marker;
|
||||||
|
public float relY;
|
||||||
|
public float relHeight;
|
||||||
|
public Rectangle2D markBounds;
|
||||||
|
public Rectangle2D notesBounds;
|
||||||
|
public Rectangle bounds;
|
||||||
|
}
|
||||||
|
|
||||||
private Timeline timeline;
|
private Timeline timeline;
|
||||||
private Calendar day;
|
private ArrayList<MarkerDisplayEntry> markerEntries;
|
||||||
|
private Calendar day = Calendar.getInstance();
|
||||||
|
private Calendar nextDay = Calendar.getInstance();
|
||||||
|
private Timeline.TimelineMarker currentMarker;
|
||||||
|
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
|
||||||
|
|
||||||
private final Color evenTrans = new Color(0.75f, 0.75f, 0.75f, 0.4f);
|
private Font markFont;// = getFont().deriveFont(Font.BOLD);
|
||||||
private final Color evenOpaque = new Color(0.75f, 0.75f, 0.75f, 1f);
|
private Font notesFont;// = getFont();
|
||||||
private final Color oddTrans = new Color(0.5f, 0.5f, 0.5f, 0.4f);
|
|
||||||
private final Color oddOpaque = new Color(0.5f, 0.5f, 0.5f, 1f);
|
private Color evenTrans = new Color(0.75f, 0.75f, 0.75f, 0.4f);
|
||||||
|
private Color evenOpaque = new Color(0.75f, 0.75f, 0.75f, 1f);
|
||||||
|
private Color oddTrans = new Color(0.5f, 0.5f, 0.5f, 0.4f);
|
||||||
|
private Color oddOpaque = new Color(0.5f, 0.5f, 0.5f, 1f);
|
||||||
|
private Color selectedTrans = new Color(0.5f, 0.75f, 0.5f, 0.4f);
|
||||||
|
private Color selectedOpaque = new Color(0.5f, 0.75f, 0.5f, 1f);
|
||||||
|
private Color fontColor = new Color(0.1f, 0.1f, 0.1f, 1f);
|
||||||
|
|
||||||
|
private long oneDayInMilli = (24 * 60 * 60 * 1000);
|
||||||
|
|
||||||
public TimelineDayDisplay() {
|
public TimelineDayDisplay() {
|
||||||
super();
|
super();
|
||||||
|
addMouseListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TimelineDayDisplay(Timeline timeline, Calendar day) {
|
public TimelineDayDisplay(Timeline timeline, Calendar day) {
|
||||||
super();
|
this();
|
||||||
this.timeline = timeline;
|
this.timeline = timeline;
|
||||||
this.day = day;
|
this.day = day;
|
||||||
|
updateMarkers(getGraphics());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTimeline(Timeline t) {
|
public void setTimeline(Timeline t) {
|
||||||
timeline = t;
|
timeline = t;
|
||||||
|
updateMarkers(getGraphics());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Timeline getTimeline() {
|
public Timeline getTimeline() {
|
||||||
@ -50,44 +80,103 @@ public class TimelineDayDisplay extends JComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setDay(Calendar d) {
|
public void setDay(Calendar d) {
|
||||||
day = d;
|
day.setTime(d.getTime());
|
||||||
day.set(Calendar.HOUR_OF_DAY, 0);
|
day.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
day.set(Calendar.MINUTE, 0);
|
day.set(Calendar.MINUTE, 0);
|
||||||
day.set(Calendar.SECOND, 0);
|
day.set(Calendar.SECOND, 0);
|
||||||
|
|
||||||
|
nextDay.setTime(day.getTime());
|
||||||
|
nextDay.add(Calendar.DAY_OF_YEAR, 1);
|
||||||
|
updateMarkers(getGraphics());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Calendar getDay() {
|
public Calendar getDay() {
|
||||||
return day;
|
return day;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setMarkFont(Font f) {
|
||||||
public void paintComponent(Graphics g) {
|
markFont = f;
|
||||||
Insets insets = this.getInsets();
|
}
|
||||||
Rectangle bounds = this.getBounds();
|
|
||||||
Rectangle canvasBounds = new Rectangle(insets.left, insets.top,
|
|
||||||
bounds.width - insets.left - insets.right - 1,
|
|
||||||
bounds.height - insets.top - insets.bottom - 1);
|
|
||||||
|
|
||||||
Calendar nextDay = Calendar.getInstance();
|
public Font getMarkFont() {
|
||||||
nextDay.setTime(day.getTime());
|
return markFont;
|
||||||
nextDay.add(Calendar.DAY_OF_YEAR, 1);
|
}
|
||||||
|
|
||||||
Graphics2D g2d = (Graphics2D) g;
|
public void setNotesFont(Font f) {
|
||||||
double hourHeight = canvasBounds.getHeight() / 24.0;
|
notesFont = f;
|
||||||
long oneDayInMilli = (24 * 60 * 60 * 1000);
|
}
|
||||||
Rectangle2D stringBounds = getFontMetrics(getFont()).getStringBounds("00:00 ", g);
|
|
||||||
for (int i = 1; i < 24; i++) {
|
|
||||||
int lineY = (int) Math.round(hourHeight * (double) i);
|
|
||||||
g.drawLine(canvasBounds.x + (int) stringBounds.getWidth(), canvasBounds.y + lineY,
|
|
||||||
canvasBounds.x + canvasBounds.width,
|
|
||||||
canvasBounds.y + lineY);
|
|
||||||
|
|
||||||
if ((hourHeight > (stringBounds.getHeight()) || ((i % 2) == 0))) {
|
public Font getNotesFont() {
|
||||||
g.drawString(String.format("%1$02d:00", i),
|
return notesFont;
|
||||||
canvasBounds.x + 2, lineY + (int) (stringBounds.getHeight() / 2));
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public void setFontColor(Color f) {
|
||||||
|
fontColor = new Color(f.getRGB());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color getFontColor() {
|
||||||
|
return fontColor;
|
||||||
|
}
|
||||||
|
public void setEvenColor(Color c) {
|
||||||
|
evenOpaque = new Color(c.getRGB());
|
||||||
|
evenTrans = new Color((float) c.getRed() / 255f,
|
||||||
|
(float) c.getGreen() / 255f,
|
||||||
|
(float) c.getBlue() / 255f, 0.4f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color getEvenColor() {
|
||||||
|
return evenOpaque;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOddColor(Color c) {
|
||||||
|
oddOpaque = new Color(c.getRGB());
|
||||||
|
oddTrans = new Color((float) c.getRed() / 255f,
|
||||||
|
(float) c.getGreen() / 255f,
|
||||||
|
(float) c.getBlue() / 255f, 0.4f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color getOddColor() {
|
||||||
|
return oddOpaque;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedColor(Color c) {
|
||||||
|
selectedOpaque = new Color(c.getRGB());
|
||||||
|
selectedTrans = new Color((float) c.getRed() / 255f,
|
||||||
|
(float) c.getGreen() / 255f,
|
||||||
|
(float) c.getBlue() / 255f, 0.4f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color getSelectedColor() {
|
||||||
|
return selectedOpaque;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Timeline.TimelineMarker getSelectedTimelineMarker() {
|
||||||
|
return currentMarker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMarker(Date timestamp, String mark, String notes) {
|
||||||
|
timeline.addMarker(timestamp, mark, notes);
|
||||||
|
updateMarkers(getGraphics());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteSelectedMarker() {
|
||||||
|
timeline.removeMarker(currentMarker);
|
||||||
|
updateMarkers(getGraphics());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateSelectedMarker(String notes) {
|
||||||
|
currentMarker.setNotes(notes);
|
||||||
|
updateMarkers(getGraphics());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateMarkers(Graphics g) {
|
||||||
|
|
||||||
|
markerEntries = new ArrayList<MarkerDisplayEntry>();
|
||||||
|
|
||||||
|
if (markFont == null) markFont = getFont().deriveFont(Font.BOLD);
|
||||||
|
if (notesFont == null) notesFont = getFont();
|
||||||
|
|
||||||
|
// get all relevant markers
|
||||||
Timeline.TimelineMarker tm = timeline.getLastMarker(day.getTime());
|
Timeline.TimelineMarker tm = timeline.getLastMarker(day.getTime());
|
||||||
Iterator<Timeline.TimelineMarker> itr = timeline.iterator();
|
Iterator<Timeline.TimelineMarker> itr = timeline.iterator();
|
||||||
|
|
||||||
@ -102,35 +191,180 @@ public class TimelineDayDisplay extends JComponent {
|
|||||||
|
|
||||||
markers.add(tm);
|
markers.add(tm);
|
||||||
|
|
||||||
for (int i = 0; i < markers.size(); i++) {
|
for (int i = 0; i < markers.size() - 1; i++) {
|
||||||
int boxY = 0;
|
MarkerDisplayEntry markerEntry = new MarkerDisplayEntry();
|
||||||
int boxHeight = 1;
|
|
||||||
if (i != 0) {
|
markerEntry.marker = markers.get(i);
|
||||||
double relTime = markers.get(i).getTimestamp().getTime() - day.getTimeInMillis();
|
|
||||||
boxY = (int) Math.round((relTime / oneDayInMilli)
|
// set string bounds
|
||||||
* canvasBounds.getHeight()) + canvasBounds.y;
|
markerEntry.markBounds = getFontMetrics(markFont)
|
||||||
}
|
.getStringBounds(markers.get(i).getMark(), g);
|
||||||
if (i == markers.size() - 1) {
|
markerEntry.notesBounds = getFontMetrics(notesFont)
|
||||||
double relTime = nextDay.getTime().getTime()
|
.getStringBounds(markers.get(i).getNotes(), g);
|
||||||
- markers.get(i).getTimestamp().getTime();
|
|
||||||
boxHeight = (int) Math.round(relTime / oneDayInMilli
|
// calculate upper bound
|
||||||
* canvasBounds.getHeight());
|
if (i == 0) {
|
||||||
|
markerEntry.relY = 0;
|
||||||
} else {
|
} else {
|
||||||
double relTime = markers.get(i + 1).getTimestamp().getTime()
|
// calculate time in ms since the beginning of the day
|
||||||
- markers.get(i).getTimestamp().getTime();
|
markerEntry.relY = markers.get(i).getTimestamp().getTime()
|
||||||
boxHeight = (int) Math.round(relTime / oneDayInMilli
|
- day.getTimeInMillis();
|
||||||
* canvasBounds.getHeight());
|
// calculate percentage of total time in day
|
||||||
|
markerEntry.relY /= oneDayInMilli;
|
||||||
}
|
}
|
||||||
g.setColor((i % 2 == 0 ? evenTrans : oddTrans));
|
|
||||||
g.fillRect(canvasBounds.x + (int) stringBounds.getWidth() + 5, boxY,
|
// calculate lower bound
|
||||||
canvasBounds.x + canvasBounds.width, boxHeight);
|
if (i == 0)
|
||||||
g2d.setColor((i % 2 == 0 ? evenOpaque : oddOpaque));
|
markerEntry.relHeight =
|
||||||
|
markers.get(i + 1).getTimestamp().getTime()
|
||||||
|
- day.getTimeInMillis();
|
||||||
|
else if (i == markers.size() - 2)
|
||||||
|
markerEntry.relHeight = nextDay.getTimeInMillis()
|
||||||
|
- markers.get(i).getTimestamp().getTime();
|
||||||
|
else
|
||||||
|
markerEntry.relHeight =
|
||||||
|
markers.get(i + 1).getTimestamp().getTime()
|
||||||
|
- markers.get(i).getTimestamp().getTime();
|
||||||
|
markerEntry.relHeight /= oneDayInMilli;
|
||||||
|
|
||||||
|
markerEntries.add(markerEntry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paintComponent(Graphics g) {
|
||||||
|
removeAll();
|
||||||
|
|
||||||
|
if (markerEntries == null) updateMarkers(g);
|
||||||
|
|
||||||
|
Insets insets = this.getInsets();
|
||||||
|
Rectangle bounds = this.getBounds();
|
||||||
|
Rectangle canvasBounds = new Rectangle(insets.left, insets.top,
|
||||||
|
bounds.width - insets.left - insets.right - 1,
|
||||||
|
bounds.height - insets.top - insets.bottom - 1);
|
||||||
|
double hourHeight = canvasBounds.getHeight() / 24.0;
|
||||||
|
|
||||||
|
Graphics2D g2d = (Graphics2D) g;
|
||||||
|
Rectangle2D stringBounds = getFontMetrics(getFont()).getStringBounds("00:00 ", g);
|
||||||
|
|
||||||
|
// draw hour lines
|
||||||
|
for (int i = 1; i < 24; i++) {
|
||||||
|
int lineY = (int) Math.round(hourHeight * (double) i);
|
||||||
|
g.drawLine(canvasBounds.x + (int) stringBounds.getWidth(), canvasBounds.y + lineY,
|
||||||
|
canvasBounds.x + canvasBounds.width,
|
||||||
|
canvasBounds.y + lineY);
|
||||||
|
|
||||||
|
//draw hours labels
|
||||||
|
if ((hourHeight > (stringBounds.getHeight()) || ((i % 2) == 0))) {
|
||||||
|
g.drawString(String.format("%1$02d:00", i),
|
||||||
|
canvasBounds.x + 2, lineY + (int) (stringBounds.getHeight() / 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < markerEntries.size(); i++) {
|
||||||
|
|
||||||
|
MarkerDisplayEntry curEntry = markerEntries.get(i);
|
||||||
|
|
||||||
|
Rectangle2D markBounds;
|
||||||
|
Rectangle2D notesBounds;
|
||||||
|
|
||||||
|
boolean selected = curEntry.marker.equals(currentMarker);
|
||||||
|
|
||||||
|
// if i == 0, this is the default
|
||||||
|
curEntry.bounds = new Rectangle();
|
||||||
|
curEntry.bounds.y = 3;
|
||||||
|
curEntry.bounds.x = canvasBounds.x + (int) stringBounds.getWidth() + 5;
|
||||||
|
curEntry.bounds.height = 1;
|
||||||
|
curEntry.bounds.width = canvasBounds.width - (int) stringBounds.getWidth() - 8;
|
||||||
|
|
||||||
|
double relTime;
|
||||||
|
|
||||||
|
// calculate upper bound
|
||||||
|
curEntry.bounds.y = (int) Math.round(curEntry.relY
|
||||||
|
* canvasBounds.getHeight());
|
||||||
|
|
||||||
|
if (i == 0) curEntry.bounds.y += 3;
|
||||||
|
|
||||||
|
// calculate lower bound
|
||||||
|
curEntry.bounds.height = (int) Math.round(curEntry.relHeight
|
||||||
|
* canvasBounds.getHeight());
|
||||||
|
|
||||||
|
if (i ==0) curEntry.bounds.height -= 6;
|
||||||
|
else curEntry.bounds.height -= 3;
|
||||||
|
|
||||||
|
// draw box
|
||||||
|
if (selected) g.setColor(selectedTrans);
|
||||||
|
else g.setColor((i % 2 == 0 ? evenTrans : oddTrans));
|
||||||
|
g.fillRect(curEntry.bounds.x, curEntry.bounds.y, curEntry.bounds.width, curEntry.bounds.height);
|
||||||
|
|
||||||
|
if (selected) g.setColor(selectedOpaque);
|
||||||
|
else g2d.setColor((i % 2 == 0 ? evenOpaque : oddOpaque));
|
||||||
g2d.setStroke(new BasicStroke(3f));
|
g2d.setStroke(new BasicStroke(3f));
|
||||||
g2d.drawRect(canvasBounds.x + (int) stringBounds.getWidth() + 5, boxY,
|
g2d.drawRect(curEntry.bounds.x, curEntry.bounds.y, curEntry.bounds.width, curEntry.bounds.height);
|
||||||
canvasBounds.x + canvasBounds.width, boxHeight);
|
|
||||||
|
// draw timestamp name
|
||||||
|
markBounds = (Rectangle2D) curEntry.markBounds.clone();
|
||||||
|
markBounds.setRect(curEntry.bounds.x + 3,
|
||||||
|
curEntry.bounds.y + stringBounds.getHeight(),
|
||||||
|
markBounds.getWidth(), markBounds.getHeight());
|
||||||
|
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.setFont(markFont);
|
||||||
|
g.drawString(curEntry.marker.getMark(),
|
||||||
|
(int) markBounds.getX(), (int) markBounds.getY());
|
||||||
|
|
||||||
|
// draw notes
|
||||||
|
notesBounds = (Rectangle2D) curEntry.notesBounds.clone();
|
||||||
|
notesBounds.setRect(curEntry.bounds.x + 6,
|
||||||
|
curEntry.bounds.y + stringBounds.getHeight() + markBounds.getHeight(),
|
||||||
|
notesBounds.getWidth(), notesBounds.getHeight());
|
||||||
|
|
||||||
|
if (curEntry.bounds.contains(notesBounds)) {
|
||||||
|
g.setFont(notesFont);
|
||||||
|
g.drawString(curEntry.marker.getNotes(),
|
||||||
|
(int) notesBounds.getX(), (int) notesBounds.getY());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g.setColor(Color.BLACK);
|
g.setColor(Color.BLACK);
|
||||||
g.drawRect(canvasBounds.x, canvasBounds.y, canvasBounds.width, canvasBounds.height);
|
g.drawRect(canvasBounds.x, canvasBounds.y, canvasBounds.width, canvasBounds.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addChangeListener(ChangeListener cl) {
|
||||||
|
changeListeners.add(cl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removeChangeListener(ChangeListener cl) {
|
||||||
|
return changeListeners.remove(cl);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fireChangeEvent() {
|
||||||
|
for (ChangeListener cl : changeListeners)
|
||||||
|
cl.stateChanged(new ChangeEvent(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
Point topLeft = getLocationOnScreen();
|
||||||
|
for (MarkerDisplayEntry markerEntry : markerEntries) {
|
||||||
|
Rectangle absBounds = new Rectangle(markerEntry.bounds);
|
||||||
|
absBounds.translate(topLeft.x, topLeft.y);
|
||||||
|
if (absBounds.contains(e.getLocationOnScreen())) {
|
||||||
|
currentMarker = markerEntry.marker;
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fireChangeEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseReleased(MouseEvent e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseEntered(MouseEvent e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mouseExited(MouseEvent e) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
42
src/jdbernard/timestamper/resources/PunchcardDisplayDialog.properties
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
markTextField.text=
|
||||||
|
previousWeek.Action.text=<<
|
||||||
|
previousWeek.Action.shortDescription=Go back one week.
|
||||||
|
dateLabel.text=date
|
||||||
|
#NOI18N
|
||||||
|
dateLabel.background=255, 255, 153
|
||||||
|
prevWeekButton.text=jButton1
|
||||||
|
previousWeek.Action.icon=/jdbernard/timestamper/resources/icons/media-seek-backward.png
|
||||||
|
previousWeek.Action.smallIcon=/jdbernard/timestamper/resources/icons/media-seek-backward.png
|
||||||
|
prevDayButton.text=jButton1
|
||||||
|
previousDay.Action.smallIcon=/jdbernard/timestamper/resources/icons/media-playback-reverse.png
|
||||||
|
previousDay.Action.icon=/jdbernard/timestamper/resources/icons/media-playback-reverse.png
|
||||||
|
previousDay.Action.shortDescription=Go back one day.
|
||||||
|
previousDay.Action.text=Previous Day
|
||||||
|
currentDay.Action.text=Today
|
||||||
|
currentDay.Action.shortDescription=Go to today's date.
|
||||||
|
jButton2.text=jButton2
|
||||||
|
nextDay.Action.smallIcon=/jdbernard/timestamper/resources/icons/media-playback-start.png
|
||||||
|
nextDay.Action.icon=/jdbernard/timestamper/resources/icons/media-playback-start.png
|
||||||
|
nextDay.Action.shortDescription=Go one day forward.
|
||||||
|
nextDay.Action.text=Next Day
|
||||||
|
nextWeekButton.text=jButton3
|
||||||
|
nextWeek.Action.text=Next Week
|
||||||
|
nextWeek.Action.smallIcon=/jdbernard/timestamper/resources/icons/media-seek-forward.png
|
||||||
|
nextWeek.Action.icon=/jdbernard/timestamper/resources/icons/media-seek-forward.png
|
||||||
|
nextWeek.Action.shortDescription=Go one week forward.
|
||||||
|
newMarkerButton.text=jButton1
|
||||||
|
newMarker.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-square-green-add.png
|
||||||
|
newMarker.Action.icon=/jdbernard/timestamper/resources/icons/16-square-green-add.png
|
||||||
|
newMarker.Action.shortDescription=Create a new timestamp mark.
|
||||||
|
newMarker.Action.text=New Marker
|
||||||
|
deleteMarkerButton.text=jButton1
|
||||||
|
deleteMarker.Action.text=Delete Marker
|
||||||
|
deleteMarker.Action.shortDescription=Delete a timestamp mark.
|
||||||
|
deleteMarker.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-square-red-delete.png
|
||||||
|
deleteMarker.Action.icon=/jdbernard/timestamper/resources/icons/16-square-red-delete.png
|
||||||
|
saveMarkerChanges.text=jButton1
|
||||||
|
saveMarkerChanges.Action.smallIcon=/jdbernard/timestamper/resources/icons/document-save-16x16.png
|
||||||
|
saveMarkerChanges.Action.icon=/jdbernard/timestamper/resources/icons/document-save-16x16.png
|
||||||
|
saveMarkerChanges.Action.shortDescription=Save timeline marker changes.
|
||||||
|
saveMarkerChanges.Action.text=Save Changes
|
||||||
|
timestampDateChooser.dateFormatString=MMM d, yyyy HH:mm
|
@ -17,7 +17,7 @@ notesButton.text=jButton1
|
|||||||
editNotes.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-em-pencil.png
|
editNotes.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-em-pencil.png
|
||||||
editNotes.Action.icon=/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.shortDescription=Edit notes for this task
|
||||||
editNotes.Action.text=Notes
|
editNotes.Action.text=Show Notes
|
||||||
jButton1.text=
|
jButton1.text=
|
||||||
showOptionsMenu.Action.text=Options menu
|
showOptionsMenu.Action.text=Options menu
|
||||||
showOptionsMenu.Action.shortDescription=Show the application's options menu.
|
showOptionsMenu.Action.shortDescription=Show the application's options menu.
|
||||||
@ -49,3 +49,9 @@ notesButton2.text=jToggleButton1
|
|||||||
optionsButton.rolloverIcon=icons/16-tool-a-hover.png
|
optionsButton.rolloverIcon=icons/16-tool-a-hover.png
|
||||||
#NOI18N
|
#NOI18N
|
||||||
exitButton.rolloverIcon=icons/16-em-cross-hover.png
|
exitButton.rolloverIcon=icons/16-em-cross-hover.png
|
||||||
|
showNotesDialogCheckBoxMenuItem.text=CheckBox
|
||||||
|
showPunchcardCheckBoxMenuItem.text=CheckBox
|
||||||
|
showPunchcard.Action.shortDescription=View the timeline
|
||||||
|
showPunchcard.Action.text=Show Timeline
|
||||||
|
showPunchcard.Action.smallIcon=/jdbernard/timestamper/resources/icons/16-file-archive.png
|
||||||
|
showPunchcard.Action.icon=/jdbernard/timestamper/resources/icons/16-file-archive.png
|
||||||
|
BIN
src/jdbernard/timestamper/resources/icons/16-file-archive.png
Executable file
After Width: | Height: | Size: 293 B |
BIN
src/jdbernard/timestamper/resources/icons/16-square-green-add.png
Executable file
After Width: | Height: | Size: 345 B |
BIN
src/jdbernard/timestamper/resources/icons/16-square-red-delete.png
Executable file
After Width: | Height: | Size: 321 B |
BIN
src/jdbernard/timestamper/resources/icons/media-playback-reverse.png
Executable file
After Width: | Height: | Size: 636 B |
BIN
src/jdbernard/timestamper/resources/icons/media-playback-start.png
Executable file
After Width: | Height: | Size: 660 B |
BIN
src/jdbernard/timestamper/resources/icons/media-seek-backward.png
Executable file
After Width: | Height: | Size: 764 B |
BIN
src/jdbernard/timestamper/resources/icons/media-seek-forward.png
Executable file
After Width: | Height: | Size: 782 B |
BIN
src/jdbernard/timestamper/resources/icons/media-skip-backward.png
Executable file
After Width: | Height: | Size: 770 B |
BIN
src/jdbernard/timestamper/resources/icons/media-skip-forward.png
Executable file
After Width: | Height: | Size: 771 B |