jNotes 1.0 users guide

Contents

1 Introduction

1.1 What is jNotes

jNotes is an application for personal information management. With jNotes, you can edit the diaries, schedule events and plan your personal projects.

Main features of jNotes:

  • Calendar-based user interface for navigation through the date items
  • Easy-to-use text editor for diary notes editing
  • Support for the numerous collections of the notes (aka "books")
  • Scheduling the events with reminding in a time
  • Lightweight ("minimal") alternative start mode for enabling the event notifications in background
  • Scheduling the to-do tasks, grouped in the numerous project workflows
  • Calculation of the projects execution progress
  • Automatic background saving of the all data changes
  • Publishing the notes in the various formats (with pluggable export filters)
  • XML is the native format of the jNotes data
  • Full I18N support. The program can be localized without a rebuilding the source code.

1.2 Copyrights and legal notices

Copyright© 2002 by Alex V. Alishevskikh (alex@openmechanics.net), OpenMechanics.org

jNotes page: http://www.openmechanics.org/jnotes/

This product is licensed under the terms and conditions of the GNU General Public License (http://www.fsf.org).

BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

2 Installation and running

2.1 Installation requirements

jNotes is written with a 100% pure Java, and has no operating system requirements. All you need to be installed on your system are:

  • Java 2 Runtime Environment (version 1.2 and higher).
  • Apache Xerces XML Parser. You can use another JAXP-compliant Java XML parser, however you will need to have Xerces on your CLASSPATH anyway. Xerces 1.4 is currently tested and recommended.
  • TRAX-compliant Java XSLT-processor. (Actually need if you want to use jNotes export features. Apache Xalan 2 is currently tested and recommended.)

2.2 Installation

Unpack the distribution ZIP file to the appropriate place. Then you can edit your CLASSPATH to include the jnotes.jar file from jNotes distribution. Xerces XML parser and XSLT processor (if you want to use the export features) libraries should be on your CLASSPATH too. Make sure that the "user.home" system property contains a path of the existing directory and you have the permissions for reading/writing from/to there.

2.3 Running in a full mode

Type the following to launch jNotes:

java org.openmechanics.jnotes.JNotes

All required libraries must be on your CLASSPATH (or, you should use the "-cp" option).

At the first running, jNotes creates the ".jnotes" subdirectory in your "user.home" path. Be aware that (re)moving this directory or deleting/changing the files contained there may causes a loss or corruption of your data and unstable work of jNotes.

2.4 Running in a 'minimal' mode

If you don't going to work with jNotes but want to get the event notifications, you can start jNotes in a "minimal" mode. This mode requires a minimal amount of the system resources. To run jNotes in a minimal mode, use the "-m" option:

java org.openmechanics.jnotes.JNotes -m

3 Working with jNotes

3.1 Areas of the program window


Main jNotes window contains the following areas:

  • Calendar - provides the navigation through the dates.
  • Main menu
  • Editors - the tabbed pane at the central area of window, contains the three editors tabs.
  • Icons toolbar - contains icons for quick access to various kinds of the jNotes data.

3.2 Calendar


Calendar is a main tool for navigation through the jNotes information items. You can navigate through the dates by clicking the days in the calendar table, selecting a month in the Months combobox and entering an year in the Years text field. By clicking the arrows buttons ( ) on the calendar toolbar, you will roll to the one day back or forward. You always can to roll back to the today's date by clicking the ("Go to today") button.

3.3 Editors


In jNotes you have the three modes of editing and browsing daily information: Notes, Events and To-do's. The every mode is accessible via editors, switched by the Editors Tabs at the bottom of the main window. The content of the editors is date-dependence and it is changed when you navigate through the calendar. But you shouldn't care about to save a data changes - all the entered information will stored when you change the date or quit jNotes.

4 Notes and books

4.1 Notes editor

The Notes editor is the simple text editor, similar to MS Notepad. With Notes editor you can create and edit diary notes for a calendar date.

All the editor actions accessible by the Notes editor toolbar:


  • Undo (Ctrl+Z) reverts the editor content to the previous stored state and Redo (Shift+Ctrl+Z) restoring it back again.
  • Copy(Ctrl+C), Paste(Ctrl+V) and Cut(Ctrl+X) - familiar clipboard operations with a selected text.
  • Insert current time(Ctrl+T) and Insert current date(Ctrl+D) - inserts a current time or a today's date at the text cursor position.
  • Insert a text file - imports a text file and inserts its content at the text cursor position.

Of course, you can use all the familiar editing keys, such as BackSpace, Del, Tab, etc. You can customize the editor font and colors at jNotes Preferences (Edit -> Preferences -> Editor).

If a date has a non-empty note, it marked in calendar with embossed frame:


4.2 Books

In jNotes terminology, "book" is a collection of the diary notes. An amount of books can be created, and only the one book can be active at the time. When jNotes started the first time, it creates the one book named "Default book". You can create, activize and manage the books by the "jNotes books" dialog. To launching this dialog, click the "Books" icon on the Icons toolbar.


  • Open - activize the selected book
  • New - create new book. There is a "New book" dialog appears:

    After you entered the new book name and (optionally) description, you will be asked for to where to save a new book file. You can import the already existing book file as a new book by clicking the "Import book file" button. This function can be useful, for example, if you want to get a copy of the notes created on another machine.
  • Delete - Delete the selected books. At least the one book must be remained in the books list.
  • Export - Export (publish) the book notes. You will be asked about to where to save the file and about the export filter. The "Plain text" and "HTML document" filters are available by default. You can customize the filters list and add your own export filters (see Appendix "B").

5 Events scheduling

You can set an amount of events for any calendar date. Every event is associated with a day time, to within one minute (I believe, seconds will be needless here). Also you can turn on the notification about an event occurrence (reminding). When an event time occurs, you'll get a notification dialog box. You'll need to start jNotes (or jNotes "minimal" mode) to get an events notifications.

5.1 Events editor


To launch the events editor, select the "Events" editors tab. When there is no events set at this date, you will see the empty daytime table with a step in one hour (for convenience). Just to select the event text field with a hour you wish and enter the event text. Click on a checkbox if you want to get the event notification. The event text will be marked as red.

Probably, you'll need to adjust the event time. Click on the time text field and enter the new time (hours and minutes, divided by colon). The hours must be entered as numbers from 0 to 23.

When a date already has an events, only the non-empty event fields will be shown. You can add a new event by click the "Add a new event" button () on the Events editor toolbar and enter the event time and text in new empty event field. The "Delete an event" button () removes a selected event fields.

5.2 Event notifications

When the time of event occurs, the event notification dialog box will appears. Also, you can turn on a sound notification at jNotes Preferences (Edit -> Preferences -> Notifications).


After you close this dialog, the event's notification mark will be cleared.

Probably, some events may occurs when jNotes was not been started (if these events were an important for you, it's not a good, really). When you launch jNotes next time, you will get a message about all the events occured when jNotes was not been started:


Leave the selected "Clear notifications" checkbox if you want to clear the notification marks of this events. You can disable a checking for missed events at jNotes Preferences.

If the date has an events set, it marked in calendar by bang sign "!":


6 Projects scheduling

With jNotes, you can plan your daily work by defining a set of to-do tasks for each date. If you're hardworking man (or woman), you could ever share your worktime for the several projects. jNotes allows you to group the tasks into numerous parallel project workflows.

6.1 Creation and management of the projects

All the projects management actions are accessible via "JNotes Projects" dialog, launched by click the "Projects" icon on the Icons bar:


An each project has a start and end date. The "active" projects (marked with a green checkmarks) are the projects contained the current date in their time bounds. The "stopped" projects (with a red cross) are the projects, which time bounds has passed or not occurred yet. The percent of execution displays the ratio of the done tasks to total of the tasks in a project.

To create a new projects, press the "Start new" button. You will see the "New project" dialog box:


Enter the name of the project and select the start and end date in the calendars. You can set the events for each date to get a notification about project starting and ending. To set an event, click on the "Set notification" () icon and enter a time and text of the new event in the pop-up dialog box.

To edit the project properties, select it in the projects list and press the "Edit" button. You will see a dialog box, similar to "New book" dialog. You can enter a new name of the project and change the start and end date.

To delete all the projects selected in the list, press the "Delete" button. Projects will be deleted after the confirmation.

6.2 To-do tasks editor

To edit the to-do tasks for current day, select the "To Do" editors tab:


The to-do editor contained the two areas: projects list and the tasks area. Select a project you need in the projects list and enter a text of to-do task in the text field. New fields will added automatically after you press "Enter". Also you can use the "Add a new task" button () on the editor toolbar. The "Delete task" button () removes a selected task fields. If you want to associate the to-do task with event and get a notification about this task, click the "Set notification" () icon and enter a time and text of the event in the dialog box. By default, jNotes will substitute the text of task as the text of new event.

You can mark an existing task as "done" by clicking the "Done" checkbox for the task field. jNotes will use an amount of "done" tasks for calculating the percent of execution for this project.

When a project is selected, jNotes calendar will marks the project's start and end date and the dates having to-do tasks:


7 Miscellaneous

7.1 Main menu

  • File
    • New book (Ctrl+N) - create a new diary book (like as "New" button in a books dialog)
    • Open book (Ctrl+O) - activize a diary book (like as "Open" button in a books dialog)
    • Export book notes - export the notes of current book (like as "Export" button in a books dialog)
    • Save note as text file - save a current note text as text file
    • Minimize (Alt+F10) - switch to minimal mode
    • Exit (Ctrl+O) - quit jNotes
  • Edit
    • Undo, Redo, Cut, Copy, Paste - common editor operations (see "Notes editor).
    • Select all (Ctrl+A) - select all the current note text
    • Insert - Insert current time, date or text file (like as editor toolbar actions)
    • Preferences - Launching the jNotes Preferences dialog
  • Go
    • Next day (Alt+Right), Previous day (Alt+Left), Today (Alt+Home) - calendar operations (see "Calendar")

7.2 Preferences

jNotes Preferences dialog box is launching by Edit > Preferences menu. This dialog contains the following preference tabs:

  • Editor - customize the Notes editor look-and-feel: font family, font size, background and foreground colors.
  • Notifications - The "Check missed events when start" checkbox enables a checking for out-of-date event notifications when jNotes starts. In "Sound" panel you can enable and customize the notify sounds.
  • Calendar - There are three checkboxes turning on or off the non-empty notes, events and project items marks in calendar .
  • Export filters - customize the book export filters. Press the "Add" button to add a new XSLT filter. Use the "Remove" button to remove a selected filter from filters list.
  • Other
    • Always run in minimized mode - When checked, jNotes will always starting in minimal mode.
    • System Look-and-feel - When checked, jNotes will uses a Java look-and-feel for a current system. Otherwise, a "default" Java L&F will be used.
    • Disable localization features - When checked, jNotes will uses a default (english) messages instead of local messages.
    The changes in "Other" preferences tab will take effect the next time you start jNotes.

Appendices

Appendix A. Localization

Localization of jNotes is simply and don't needs for rebuilding the source code. You can change all the program messages and generated text by create the usual Java "properties" file and save it on "org/openmechanics/jnotes/locale" subpath of the jnotes.jar (you'll need to unpack jnotes.jar before and pack it again). When jNotes will started, it automatically choose the messages file, appropriate to current user locale.

The properties file name must be designed by the following scheme:

messages_**.properties

Where "**" are two small letters identified language of your locale (for example, "fr", "de", "it"). The text of the messages file must be encoded as UTF-8 (Unicode escapes should not be used). Take a look for "messages_ru.properties" file (for russian locale), for know how to create the local messages file.

This is good idea, if you would post me a messages file created for your language, that I could include it into jNotes distribution. Please write me: alex@openmechanics.net.

Appendix B. Customization of the export filters

The "export filters" is the XSLT stylesheets transforms a jNotes XML data to another formats. jNotes is shipped with two default filter stylesheets: for export to plain text and HTML. If you're familiar with XSLT, you can write your own stylesheets for various output formats. Take a look for jNotes XML DTD (at the section below) and jNotes native stylesheets to know how to create export filters.

After you created the your own filter, you need to add it to jNotes. Open the "Export filters" preferences tab (Edit > Preferences > Export filters) and press the "Add" button. You will see a dialog box, where you need to enter the filter description, output file extension and select an XSLT stylesheet file. After you added a new filter, it will be appeared in the filters list and will be ready to use.

Note that filter stylesheets uses the some custom Java extensions, which are not a part of the XSLT. Default stylesheets uses the Xalan extensions syntax. If you're using an another TRAX-compatible XSLT processor (for example, SAXON), it could have a different extension mechanism. You should refer to processor documentation to learn about extensions launching syntax.

Appendix C. jNotes XML DTD's

jNotes uses the XML as a native format to store the data. This fact makes jNotes data compatible with another XML-based applications and possible to import/export to another formats with XSLT. The DTD's for the jNotes XML data formats are described below.

DTD: jNotes book file (*.jnb)
<!ELEMENT jnb:book (jnb:year+)>
<!ATTLIST jnb:book
  xmlns:jnb FIXED "http://openmechanics.org/2002/jnotes-xml"
>
<!ELEMENT jnb:year (jnb:month+)>
<!ATTLIST jnb:year
  year CDATA #REQUIRED
>
<!ELEMENT jnb:month (jnb:day+)>
<!ATTLIST jnb:month
  month CDATA #REQUIRED
>
<!ELEMENT jnb:day (jnb:note)>
<!ATTLIST jnb:day
  day CDATA #REQUIRED
>
<!ELEMENT jnb:note (#PCDATA)>
DTD: jNotes books list file (bookslist.jbl)
<!ELEMENT jbl:books-list (jbl:book+)>
<!ATTLIST jbl:books-list
  default CDATA #REQUIRED
  xmlns:jbl FIXED "http://openmechanics.org/2002/jnotes-bookslist-xml"
>
<!ELEMENT jbl:book (jbl:description)>
<!ATTLIST jbl:book
  file CDATA #REQUIRED
  name CDATA #REQUIRED
>
<!ELEMENT jbl:description (#PCDATA)>
DTD: jNotes events list file (eventslist.jne)
<!ELEMENT jne:eventslist (jnd:year+)>
<!ATTLIST jne:eventslist
  xmlns:jne FIXED "http://openmechanics.org/2002/jnotes-eventslist-xml"
>
<!ELEMENT jne:year (jne:month+)>
<!ATTLIST jne:year
  year CDATA #REQUIRED
>
<!ELEMENT jne:month (jne:day+)>
<!ATTLIST jne:month
  month CDATA #REQUIRED
>
<!ELEMENT jne:day (jne:events)>
<!ATTLIST jne:day
  day CDATA #REQUIRED
>
<!ELEMENT jne:events (jne:time+)>
<!ELEMENT jne:time (#PCDATA)>
<!ATTLIST jne:time
  notify (yes|no) #IMPLIED "no"
  time CDATA #REQUIRED
>
DTD: jNotes projects list file (projectslist.jnp)
<!ELEMENT jnp:projects-list (jnp:project+)>
<!ATTLIST jnp:projects-list
  current CDATA #REQUIRED
  xmlns:jnp FIXED xmlns:jne CDATA "http://openmechanics.org/2002/jnotes-projectslist-xml"
>
<!ELEMENT jnp:project (jnp:year+)>
<!ATTLIST jnp:project
  startDate CDATA #REQUIRED
  endDate CDATA #REQUIRED
  name CDATA #REQUIRED
>
<!ELEMENT jnp:year (jnp:month+)>
<!ATTLIST jnp:year
  year CDATA #REQUIRED
>
<!ELEMENT jnp:month (jnp:day+)>
<!ATTLIST jnp:month
  month CDATA #REQUIRED
>
<!ELEMENT jnp:day (jnp:todo+)>
<!ATTLIST jnp:day
  day CDATA #REQUIRED
>
<!ELEMENT jnp:todo (#PCDATA)>
<!ATTLIST jnp:todo
  done (yes|no) #IMPLIED "no"
>

Appendix D. Feedback, bugs reporting and project support

Your feedback is very important for me. Please notify me about the bugs, incompatibilities and usability issues you met with jNotes. Of course, all other kinds of supporting the jNotes development are more than welcome.

Please send your feedback to alex@openmechanics.net.

Check the jNotes updates and news at http://www.openmechanics.org/jnotes/.


© 2002-2003 Alex Alishevskikh alex@openmechanics.net