Squeak Class Documentation category index | class index  
 
PDA
  category: Morphic-PDA
  superclass: Model
  subclasses:

PDA help text...
A lot about the PDA should be obvious just by opening one up and playing with the sample data. The PDA holds a complete database of people, events, to-do items and notes. The date and keyword selected determine which records are visible at any given time.

All records
All records in the database have a number of pre-allocated fields, and these are displayed in the obvious manner in the current item pane at the bottom, when the record is selected. Care must be taken to enter only valid data as the contents of any field. This is usually simple but, for instance, matching string quotes can be a problem (embedded string quotes must be doubled).

Any item may be augmented by any number of fields, provided that the field names do not conflict with existing ones, and that the contents are valid Squeak objects.

The description field may often carry a long body of text so, for this reason, a special feature is provided for viewing only the description of the current item. This makes it a lot easier to read long notes (like this one), and it saves the user from worrying about matching quotes and other punctuation. Sorry it's a mode -- use the menu of the bottom pane to switch modes.

People
Since the name field is not split into first, middle, last as in some databases, you are encouraged to adopt the following format:
Lastname, First I., Jr. (Nickname) (&Spousename)
which allows for useful processing for invitations and the like.

ToDoItems
ToDo items are designed not to be removed, but only to be marked done. This allows the database to be browsed retroactively, with the to-do items appearing and disappearing on the dates the tasks were introduced and completed respectively. Note that toDo items have a deadline field whose obvious associated semantics (see alarms) have not yet been implemented.

Schedule
Scedule items are relatively simple. It is intended that if duration is specified, and that if time+duration overlaps ensuing events, that the ensuing events will be show in red or someting like that. Alarms have not yet been implemented, but they will accept an integer field equal to the number of minutes prior to event time that the alarm should appear. Presumably an alarm will apppear as a new object on the screen that announces the event, sounds a continuing audible sound, and allows easy dismissal by clicking or keystroke.

A number of short forms are allowed for the time field, such as '4p' asTime.
An event with time = nil will appear with dashes at the beginning of the day.

RecurringEvents
Recurring events are treated specially. Each master event is consulted to generate derivative events in the schedule for any given day. You can edit the derivative events, at which point they will become permanent events just like any other. An unedited recurring event is a virtual object -- if you edit the master, its derivative copies may disappear from one time and reappear at another. For this reason it is recommended that you never alter the date of a recurring event. Instead, declare its last date, causing an end to that series, and create another recurring event for the new schedule if desired. In this manner all the past schedule will continue to appear as it did when it was current.

To examine or alter recurring events, select the 'recurring' category (this will need further filtering for large databases). The currently supported recurrence rules include
#eachDay - for example, a 2-week vacation (give first and last dates).
#dayOfWeek - for example, every Thursday
#dayOfMonth - for example, on the first day of every month
#dateOfYear - for example, birthdays and many holidays
#nthWeekdayOfMonth - for example, the second Tuesday of every month
#nthWeekdayOfMonthEachYear - for example, Thanksgiving
(The Squeak PDA does not support the recurrence rule for Easter Sunday ;-).

Notes
Notes are simple a place to capture thoughts and information relevant to the different areas of your life while you are in the simple planning mood inspired by using a PDA. The ability to view the current item's description only is especially useful for notes.

Spawn Entire Month
While this feature (accessible from bottom pane menu) is very crude and does not offer interaction, its real purpose is for printing. Expand the spawned window to full screen, use the morph menu to choose 'print PS to File...', and then send the resulting .eps file to your printer. (At the time of this writing portrait and landscpe options were reversed ;-).

instance methods
  category
  categoryChoices
categorySelected
chooseFrom:categoryItem:
selectCategory:

  currentItem
  acceptCurrentItemText:
clearUserEditFlag
currentItem
currentItem:
currentItemMenu:
currentItemSelection
currentItemSelection:
currentItemText
okToChange
toggleDescriptionMode
updateCurrentItem

  date
  selectDate:
setDate:fromButton:down:

  example
  sampleCategoryList
sampleNotes
samplePeopleList
sampleRecurringEventsList
sampleScheduleList
sampleToDoList

  initialization
  initialize
labelString
loadDatabase
mergeDatabase
openAsMorphIn:
openMonthView
rekeyAllRecordsFrom:to:
saveDatabase
userCategories:allPeople:allEvents:recurringEvents:allToDoItems:allNotes:dateSelected:

  menus
  perform:orSendTo:

  notes
  addNote
notesList
notesListIndex
notesListIndex:
notesListItems
notesMenu:
removeNote
updateNotesList

  people
  addPerson
peopleList
peopleListIndex
peopleListIndex:
peopleListItems
peopleMenu:
removePerson
updatePeopleList

  schedule
  addEvent
addRecurringEvent
declareLastDate
declarelastDate
removeEvent
scheduleList
scheduleListForDay:
scheduleListIndex
scheduleListIndex:
scheduleListItems
scheduleMenu:
updateScheduleList

  to do
  addToDoItem
declareItemDone
removeToDoItem
toDoList
toDoListIndex
toDoListIndex:
toDoListItems
toDoMenu:
updateToDoList

class methods
  no messages
 

instance methods
  category top  
 

categoryChoices

Return a list for the popup chooser


 

categorySelected


 

chooseFrom:categoryItem:


 

selectCategory:


  currentItem top  
 

acceptCurrentItemText:

Accept into the current item from the text provided, and update lists accordingly


 

clearUserEditFlag

Clear the hasUnacceptedEdits flag in all my dependent views.


 

currentItem

Return the value of currentItem


 

currentItem:

Assign newValue to currentItem.


 

currentItemMenu:


 

currentItemSelection

Return the value of currentItemSelection


 

currentItemSelection:

Assign newValue to currentItemSelection.


 

currentItemText


 

okToChange

Allows a controller to ask this of any model


 

toggleDescriptionMode


 

updateCurrentItem


  date top  
 

selectDate:


 

setDate:fromButton:down:


  example top  
 

sampleCategoryList


 

sampleNotes


 

samplePeopleList


 

sampleRecurringEventsList


 

sampleScheduleList


 

sampleToDoList


  initialization top  
 

initialize


 

labelString


 

loadDatabase


 

mergeDatabase


 

openAsMorphIn:

PDA new openAsMorph openInWorld


 

openMonthView


 

rekeyAllRecordsFrom:to:


 

saveDatabase


 

userCategories:allPeople:allEvents:recurringEvents:allToDoItems:allNotes:dateSelected:


  menus top  
 

perform:orSendTo:

This should be the default in Object


  notes top  
 

addNote


 

notesList

Return the value of notesList


 

notesListIndex

Return the value of notesListIndex


 

notesListIndex:

Assign newValue to notesListIndex.


 

notesListItems


 

notesMenu:


 

removeNote


 

updateNotesList


  people top  
 

addPerson


 

peopleList

Return the value of peopleList


 

peopleListIndex

Return the value of peopleListIndex


 

peopleListIndex:

Assign newValue to peopleListIndex.


 

peopleListItems


 

peopleMenu:


 

removePerson


 

updatePeopleList


  schedule top  
 

addEvent


 

addRecurringEvent


 

declareLastDate


 

declarelastDate


 

removeEvent


 

scheduleList

Return the value of scheduleList


 

scheduleListForDay:


 

scheduleListIndex

Return the value of scheduleListIndex


 

scheduleListIndex:

Assign newValue to scheduleListIndex.


 

scheduleListItems


 

scheduleMenu:


 

updateScheduleList


  to do top  
 

addToDoItem


 

declareItemDone


 

removeToDoItem


 

toDoList

Return the value of toDoList


 

toDoListIndex

Return the value of toDoListIndex


 

toDoListIndex:

Assign newValue to toDoListIndex.


 

toDoListItems


 

toDoMenu:


 

updateToDoList


class methods
  no messages top