This section covers details of data entry and command usage that have not been
fully elucidated in the preceding scenarios.
2.11.1. Default Action in Dailogs When Enter Key Pressed
Spell this out, as generically as possible, for all dialogs. It's very
annoying not to have this work right.
2.11.2. Command Enabling and Disabling
Cover exactly which and when commands are enabled and disalbed. One known ref to this section is from Section 2.3.6.4, wherein is raised the issue of calendar "modification" commands being disabled when the current calendar is that of another user or group. Another issue is that just about all commands should be disabled where there is not current calendar open.
I think a table with each command, or groups of commands would be good. The table would have two columns -- commands and when enabled. State the commands are disabled in all other circumstances. The commands column would probably be well organized by menu, so there's a couple levels of command hierarchy in it. 3 "Pressing OK (4sep02)"
After a grep scan, it appears that nowhere do we say that scheduling dialogs
"remain" on the screen after the user presses "OK". I suppose it's
possible that some other word that "remain" was used, but the important point
is that it looks like we most recently intended to go with all data-entry
dialogs going away after `OK'. In the back of my mind, I've been
thinking that data-entry dialogs stay up after `OK', because at some
point in the past that was the case. Anyway, I like the (seemingly latest)
idea of dialogs going away with `OK', but we need to be absolutely
clear that this is the case consistently throughout. Also, it's appropriate
either to have subsection here title "Precise Details of OK", or update the
extant subsection "Precise Details of Clear and Cancel" to "Precise Details of
OK, Clear and Cancel".
2.11.3. Comma-Separated Lists
May have any number of spaces around commas. In multi-line text input fields,
may have any number of newline characters around commas.
2.11.4. Typed Input
Typed input is confirmed by one of three user actions
Include min/max values for year, which within reason are 0 and 3000.
When a user enters a time or date in a format that is different than the current setting of the time or date display options, the system automatically converts the time or date to options-specified format when the user confirms the data entry. For example, suppose the current setting of date and time format is
and the user enters data as shown in the appointment scheduling dialog in Figure 324.ddmmmyy
Enter start and end dates in a couple of different formats, neither of which is the same as current date format option setting. Also, enter a time in 24-hour format, which is also different than current time format option setting.
Figure 324: Dates entered in different format than set in times and dates options.
Show all dates and times per current option settings.
Figure 325: Dates entered shown per current option setting.
Following input confirmation, the parsing rules for date input are the following:
When a date input is illegal, the system responds by highlighting the erroneous text and leaving the input field active with the typing cursor at the beginning of the text. This means that however the user confirmed the input, the original input field remains active, not the field to which the user moved by typing tab or clicking the mouse. If the user confirms an erroneous input by typing return, the `OK' or `Confirm' operation is not performed.
In the `Times and Dates' options tab,
2.11.6. Item Uniqueness Requirements
We don't need to include Sched-By, On, and/or Host as part of uniqueness as well, in case (rare) that two people schedule exactly the same meeting on two different hosts. This was addressed already in the meeting-scheduling section, here, and should be reiterated here.
For appts and meetings, go get it from whereever. I think we need to do a refinement of what we have so far, in that we have to unbundle recurring instances in order to make the check, or at least "conceptually" unbundle them. There's a modelling issue lurking here, viz., whether to model recurring items physically as single or multiple items. If we go with the single-item model, the logic like the last clause of the ScheduleAppt precond, q.v., needs to to be updated to deal properly with recurring items by somehow conceptually "generating" instances of recurring appts.
For events, I think it's gotta be name only, or name plus non-overlapping date. The deal is we need to be able to distinguish between a 3-day event versus 3 separate 1-day events, at least to some extent. It seems if we allow non-unique event names, then there's no way to distinguish multi-day from multiple consecutive 1-day events. I guess the same exact thing goes for an appointment.
A subtlety here is that changing the instance date of a single recurrig
item to the same date as another instance violates the uniqeness rule. It's
nice that the uniqueness rule covers this case in a general way, but I think it
is worth mentioning. Way better redundant than sorry.
2.11.7. Scheduling Dialogs and Item-Level Displays
Ed. Note: I think it would be quite good to summarize these requirements in tabular form, with one table for each class of dialog, with one table row for each data-entry field in the dialog.
The following data entry formats apply to any scheduling dialog or item-level display where the indicated field appears:
Figure 326: List of available locations.
Ref to two appropriate figures for meeting request and confirmation dialogs.
The precise data-entry rules for the fields that appear in both the scheduling request and confirmation dialogs are as follows:
The precise data-entry rules for fields that appear only in the scheduling request dialog are as follows:
The precise data-entry rules for fields that appear only in the confirmation dialog are as follows:
If the user specifies a recurring event without checking any box in the additional recurring information, the event will be set by default to recur weekly, on the day of the week that is specified for the start date of the event. [Sketch: some other defaults are made clear by default display of selection box.]
Also explain what the standard defaults are for the settings of all dialog
fields and note that these default settings can be changed in the by editing
preferences.
2.11.8. Required Fields
The discussion in the next paragraph needs to be more precise in specifying for which types of item which fields are required. In working on the custom lists section, I've been thinking about adding a table that there with an added third column indicating if the field value is required or optional. If this table is added here, it should probably be ref'd from the custom lists section instead of appearing directly there. The only question is that this complete table (with all three columns) is more that is need either in the custom lists section or here, but seems like a good thing that should appear somewhere. Perhaps it belongs in another place. Anyway, we'll figure it out eventually, if we live that long.
When scheduling or changing an item, the following fields are required to be
non-empty and properly formated: Title, (Start) Date, Start Time, and Duration.
If one or more of these fields is missing when the user presses the
`OK' or `Change' button, the system responds with the error
dialog shown in Figure 327.
-- To appear. --
Figure 327: Required fields error dialog.
23dec05 note: describe selecting multiple items with shift-click, including how multiple selections and span more than one window (if that's what we want), and reiterate how this applies to delete but not change.
20aug01 note: need to update this section to include target selection in list displays as well as calendar displays.
The first five commands in the `View' menu apply to a user-selected target in the calendar display, or to a default target. To select a viewing target, the user clicks on a desired location somewhere in the current display window. The "current display window" is defined precisely as the display window most recently generated by the system or the window most recently made current by the user having clicked on it or selecting it in the `View Windows' menu. The following are the specific details for how a viewing target is selected in the current display window:
For the `View Item' command, an item is selected as follows:
For the `View Day' command, a day is selected as follows:
For the `View Week' command, a week is selected as follows:
For the `View Month' command, a month is selected as follows:
In all of the cases where a name or numeric date is selected, the system
confirms the selection by highlighting the name or date in reverse video. For
example, Figure 328 shows how the system highlights the date of September 1
when the user clicks on that date number in the monthly display.
Figure 328: Reverse video selection highlighting.
The system provides a three-way option to control the scheduling of items with overlapping times. The option settings are the following:
Explain/illustrate the Delete and Change category commands in the edit- categories dialog of Figure 8.
Explain what happens when a user selects the `Edit ...'
item in the `Add Category' dialog. Here's a sketch:
2.11.13. String and Pattern Matching Rules
Dont forget to explain emacs-style reg expr search for the name lists that appear in the admin dialogs. An important detail is how the fuck the regular expression search is enacted, which is not at all clear from the discussion (actually mention) of it in the "other user" section. Presumably, it could work like emacs' incremental re search, but this needs to be clarified.
A really great motherfucking idea is to move re search to the future work section. I think I'll do it. (Good for you, motherfucker.)
OK, motherfucker, not motherfucking quite. RE search is pretty major part of
filtering. So, what we can do to speed things the fuck up here is to cite some
external source for the definition of regular expression, and be done with it.
We do still need to explain moby re search in the admin dialogs, or eliminate
it there, which would probably be just fine.
2.11.14. Regular Expression Filtering Patterns
2.11.15. Boolean Expression Filtering Patterns
2.11.16. System-Defined Events
While the soltice and time-change events may not strictly be considered
"holidays", they are none-the-less included in the `holiday' category.
2.11.17. Dialog State Details
22aug02 NOTE: Given the clarification default options, things may be easier here than the 1st sentence of the ne paragraph suggests.
This is the section where we define all of the horendously boring details
of what intial and historical states the various dialogs assume. Hopefully we
can batch bunches of them together under a single heading. Anyway, I think
it's pretty clear that such details are necessary, and I think this is the best
place to put them. The motivation for this section having come into existence
was slogging through the details of the custom list dialog states, and thinking
how boring it was to have all of those details piled up there.
2.11.17.1. Custom List Dialog
Dialog state rules:
The following is a way-too-complex version of things, which might be useful at some point as a class/book example, but maybe is best just nuked.
Dialog state is simply that the
A long text string is scrollable in the text box and truncated in the menu, based on how wide the menu otherwise is in the dialog.
This is originally from Section 2.3.3.6. and needs to be generalized here for all combo boxes:
When `specific date' is initially selected, the system clears the text box and the user types a specific date value into the text field. When `specific date' is subsequently selected, the system restores and highlights the most recently typed value. If any of the other menu entries is selected, typing is disabled in the text field.
Sketch: Form of default names is "New XXX", where XXX is the subject, e.g.,
"List", "Filter". Initially, we were going to say that "New XXX" form cannot
be used to save a filter, but is only displayed as the high-lighted name when
the user selects the `New' item in some name menu. Howerver, instead of this,
I think we should say the following. "New XXX" is the initial default name.
If the user uses it, so be it, becauuse "New XXX" will not appear again if and
until all extant filters are deleted. Sweet.
2.11.20. Name Completion
2.11.21. Meeting Minutes
2.11.22. Merging Scheduler Changes
Need to define precisely what "change" and "most recent" mean in terms of data field editing. It seems like we'll need to model this using time stamps for each meeting field. Here's an interesting scenario that we need to make sure is well understood and covered by our rules:
Things work like Emacs, not as hairy-assed as they could by coninuous diffing. Viz., as soon as an edit is made, `Change' gets enabled and `Delete' disabled. If the edit is reversed by further editing, the system does not notice that there are effectively no changes, and hence leaves the buttons in the changes-made state. If the user proceeds with a confirmed change at this point, the system goes throught the motions, but the change has no effect on the data. This just like adding a char, deleteing it, then saving in Emacs -- the same data get saved back on the file.
I believe what this means from the formal perspective is that we dont want the
precond on channge that says the two args must be different. If we do have
this, then we either need to enforce it with diff-style change button
enable/disable, or issue an error/warning when the change is confirmed. The
latter seems pretty useless, given this seems to be a "no harm done" case if we
let the nugatory change just happen.
2.11.24. Precise Details of Clear and Cancel
1aug02 -- OK, I'm thinking that the addtion of the "cleared" state, as alluded to below to be distinct from the "defaults" state, is probably overkill. I'm ready to go back in the appts-scheduling section to "... to their default states." from the recently updated "... to there cleared states", and deal with the meaning of `Clear' in the options dialog as a separate issue. Given that there are no option defaults, except in the standard Options file, and having `Clear' in the options dialog clear to the `Options file doesn't really make sense, given that the user can load that file if desired.
In addition, the idea that `Clear' can have the same conceptual meaning in all dialogs is I think wrong, given that it needs to mean "clear to defaults" in a first-time input (aka, create) dialog, versus "clear to state preceding any unsaved changes" in a second-and-beyond-time edit (aka, edit) dialog. And to deal with things consistently in this regard, we can consider the options dialog to be an edit not create dialog.
And to be fully precise, we should here, or perhaps elsewhere, specifically enumertate which dialogs are create and which are edit. You go, boy.
Finally for today, it's just occured to me (per the rename of this section from "... the Clear Command" to "... Clear and Cancel"), that we need to include here a precise general definition for the meaning of `Cancel', viz., that unless stated explicitly to the contrary, `Cancel' always implies clear, and maybe we don't even need the "unless ... to the contrary" part.
OLD and I think invalid stuff starts here.
Need to define "cleared" state for each form of widget, noting (as is done just below) that "cleared" is not equal to "default".
The `Cear' button behaves uniformly the same in all dialogs that contain it, by clearing all text-entry fields and setting other fields to there unset (not default) states. Note that even when the `defaults' selection is made for `Initial Values', and some fields have non-empty defaults, those non-empty values are not set when the clear button is pressed.
But wait -- this may not be the right way for `Clear' in the options dialog. We need to think about this, and make sure that whatever we say about `Clear' in the options section is consistent with what we say here.
For simplicity, there's no explicit `Defaults' button in any data-
entry dialog except for the the tabbed `Options' dialog. This means
there's no direct means to restore default settings to a dialog. This can be
accomplished explicitly as follows: (1) set `X.Defaults.Initial
Values' to `as specifed in default option settings'; (2) close
and re-open the dialog. The `Edit.Undo' command can also be used to
undo the effect of `Clear', but that may not lead directly to the
restoration of default values.
2.11.25. Add User and User Record Dialogs
I'm thinking that validation failure of the user's local computer information should probably not result in a fatal error, since an admin may adding or editing a user record when the user's host computer is down. So, the cal tool admin system will perform the validation, report the results, but not prevent the We might have the cal tool be out of the business of validating local computer user information altogether. What we can say is that it's up to the admin to use some external means to perform validation. However, this seems harsh.
Some fodder originally from admin section:
If communication cannot be established with the selecte host, the first line is changed to
If communcation can be established, but the host is not running a Calendar Tool server, the message isCommunication cannot be established with the selected host computer.
If the selected calendar file does not exist, is not readable, or not a valid Calendar Tool file, the the second line of the dialog is changed, respectively, to one of the following:The selected host computer is not currently running a Calendar Tool server.
The selected Calendar Tool file <file name> is not readable. The selected Calendar Tool file <file name> does not exist. The selected Calendar Tool file <file name> is not valid.
Put this here, or probably someplace else, but the bottom line is the "pixel"
must be defined as "the atomic unit of screen-size measure for a particular
display". This is the measure used by the underlying operating environment to
describe screen measurements, as in the screen size is 1024 x 768 "pixels".
2.11.27. Options Data
Hopefully in most cases, details have been covered in other dialogs to which otions apply. I believe the following are specific to options:
Unless stated explicilty to the contrary, all preceding refereneces to
"alphabetic order" mean case insesnitive order based on the lexical colating
sequence in use on a particular operating environment. Typical lexical
collating sequences are ASCII and UNICODE.
2.11.29. Dialog Memory
2.11.31. Unbounded Limits on Calendar Size and Numbers
2.11.32. Calendar Specificity and Modality of Dialog Windows
One way or another, include unprocessed meeting notifications in the category of pending edits. The term "pending edit" is used explicitly in the file section for the close (and exit) commands. The def there is this
A pending edit is any unconfirmed or unapplied change the user has made in one or more of these dialogs.The term should be defined more fully here, if necessary, in terms of the lowest level of dialog editing detail.
Here's a tad of fodder about reviewing unprocessed notifications that may require an explicit dialog of its own, but I think and hope the fuck not, instead piggy backing on the existing way that notifications are reviewed in the meetings section, and doin the thing about the system proceeding without further confirmation, answering affirmatively on the users behalf everywhere.
Here are non-model editing dialogs that are calendar-specific, one-per- calendar:
Here are non-modal selecting dialogs that are calendar-specific, one-per- session:
Here are non-modal viewing dialogs that are calendar-specific:
Here are the modal dialogs, all are calendar-specific:
OK, here's a semi-epiphany -- get rid of the Save button altogehter, but retain Save-As. The rationale is to have all non-scheduled-item data handled uniformly. Viz., we have the following calendar-specific non- scheduled-item data:
There are unsaved {category, custom list, custom filter, option} changes ...
Extracted from gui-details section:
If more than one calendar is open, only the current calendar is affected by
`Apply'. If no calendar is open, then the `Apply' button is
disabled.
Extracted from gui-details section:
Make sure the effect of window closing is 100% defined. Hopefully close ===
Cancel works most or all of the time.
Unless otherwise noted in the scenarios, all dialogs are non-modal. It would be prudent here to list exactly the (hopefully few) cases where modal behavior is enforced. We should also discuss what happens when would-be modal dialogs are closed, viz., and not necessisarily limited to, reminders and meeting notifications. Another interesting case is when the same user executes two or more `Schedule Meeting' operations while an original such operations is in the synchro stage. It seems clear that this should mean that the user is put in the queue behind himself (!).
I'm thinking that --maybe-- modal dialogs should never appear in the windows list, hence we don't need to mention window modality when we discuss the `View Windows Close' command, as we don't currently do. We do need to address the issue that any "pending" activities are canceled with a window is closed.
Somewhere we need to address what it means for the system to interrrupt a modal dialog, particularly with the proceed-to-schedule notification. In this case, I'm pretty sure that it should mean the modal dialog is canceled, which means we have to be careful to put a cancel button in all modal dialogs.
Extracted from window-viewing section:
I think the following paragraph is way too confusing and potentially error prone. Better is to have all calendar-specific data-entry dialogs apply to the calendar that is current when the dialog is originally opened. Now, this may well mean that when more than one calendar is open, all calendar-specific windows are unconditionally (i.e., not optionally not) labeled with the name of the calendar to which they apply. Also, we may want to allow more than one data-entry dialog for each type of command, for each calendar. The possibilities in this regard are the following:
OLDER STUFF:
All data-entry dialog windows are non-modal, calendar-specific, and unique.
"Non-modal" means ... . "Calendar-specific" means that when the operation of a
data-entry dialog is confirmed with `OK', the operation applies to the
current calendar. "Unique" means that exactly zero or one data-entry dialog of
each for data-entry command. [Enum all data-entry commands
explicitly.] For example, suppose a user has three calendars open, named
"A" and "B", and "C". With calendar A current, the user executes the
`Schedule Appointment' command, enters some values in the appointment
scheduling dialog, but does not press `OK'. The user then makes
calendar B active, executes a view command for it, and then re-executes the
`Schedule Appointment' command. At this point, the system does not
display a new appointment scheduling dialog, but moves the previously-displayed
dialog to the front of all windows. That dialog contains the values most-
recently entered by the user. If the user were to press `OK' in the
appointment scheduling dialog at this point, the appointment would be scheduled
on calendar B, even though the values were entered in the dialog when calendar
A was active. In this scenario, assmume that the user proceeds to make
calendar C current and executes one or more viewing commands for calendar C.
The user then makes the appointment scheduling dialog current by selecting its
window name in the `View Windows' menu. Since there is at most one
appointment scheduling dialog active at any time, selecting its name in the
`View Windows' menu has exactly the same effect as re-executing the
`Schedule Appointments' command, viz., the appointments scheduling
dialog is made active. The user now proceeds to enter additional information
in the appointments scheduling dialog and presses `OK'. If the
entered information is error free, the system schedules the appointment on
calendar C.
NOTE that the windowing mode is calendar-specific, meaning that each open calendar must have at least one open view window.
More details on window closing. Since scheduling dialogs are non- modal, the user could do this: Open a calendar, execute a schedule command, close all calendar view windows, then confirm the scheduling command. But hey, this ain't a problem, given that confirming (with `OK') does not close the scheduling, so it'll just stay open as the only window. It looks like we're OK here, given that all of the editing dialogs stay up until the user presses cancel (which closes) or closes explicitly. And it's at that point (i.e., close/cancel) that the following dialog comes up (before the close takes place):
This is the last open window for the calendar "name".
Closing this window will close the calendar.
NOTE: Fodder from options section follows.
NOTE: Rewrite all of the introduction to get rid of the long-winded calendar-specific biznis, moving it instead to the end, in the same that it's presented at or near the end of the categories, custom lists, and custom filter sections. Ditto for the revised Save-As and Load semantics. The deal there is that when the user switches calendars, the current options remains unchanged, but it does not belong to the current calendar.
... If more than one calendar is open, only the current calendar is affected by `Apply'. If no calendar is open, then the `Apply' button is disabled.
NOTE: The following paragraph needs to be updated per the most recent
banner policy, which is controlled by options.
Since options are calendar-specific, the banner of the options dialog indicates
which options settings are currently active, and therefore displayed in the
options dialog. In Figure XXX, for example, the options are those for the
CommunityCalendar file. When the user changes the current calendar
while the options dialog remains on the screen, the banner and contents of the
dialog are changed to reflect the options for the newly current calendar. When
no calendar file is open, the options dialog banner is "Options for new
calendars", meaning that the option dialog is operating on the settings in
the standard `Options' file.
Each and every calendar file has a separate copy of option settings. This
allows users to define different options for different calendars, as desired.
When more than one calendar is open, the active option settings are those of
the current calendar. If there is no open calendar, then the active options
are those defined in the standard options file named "Options". This
file is stored in the user's Calendar Tool directory, as described in
Section
The contents of the Options file are used as the default for all new
calendars. Whenever a new calendar is created, the contents of the
Options file are copied into the new calendar as the initial settings
for all options.