summaryrefslogtreecommitdiff
path: root/texmf-dist/doc/latex/datepicker-pro/datepickerpro_man.tex
blob: 19f5828a977d9649ffb74d05bebff202bc88d919 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
% http://livedocs.adobe.com/flex/3/html/help.html?content=controls_12.html
% http://livedocs.adobe.com/flex/3/html/help.html?content=formatters_4.html
% http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/DateFormatter.html
% http://blog.flexexamples.com/2008/02/12/changing-the-next-and-previous-year-navigation-icons-on-a-datechooser-control-in-flex/
% http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf626ae-7feb.html
% http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/DateBase.html
% http://blog.flexexamples.com/2007/12/11/using-the-datebase-class-in-flex/
% http://blog.flexexamples.com/2008/11/07/adding-custom-context-menu-items-to-a-flex-application/
% http://flexdevtips.blogspot.com/2010/01/flex-context-menus.html
% http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7d9b.html
% http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/DateChooser.html
% http://www.adobe.com/devnet/flash-builder.html
\documentclass{article}
\usepackage[fleqn]{amsmath}
\usepackage[
    web={centertitlepage,usetemplates,designv,
        forcolorpaper,tight*,latextoc,pro},%usesf,
    eforms,uselayers,graphicxsp={showembeds},aebxmp
]{aeb_pro}
%\usepackage{myriadpro} %[usecmtt]
\usepackage[altbullet]{lucidbry}
\usepackage{datepicker-pro}
\usepackage{aeb_mlink}
\definePath{\dppPath}{C:/Users/Public/Documents/My TeX Files/%
    tex/latex/aeb/aebpro/datepicker-pro/swf}
\setpickerIcon{../icons/dp_icon1.pdf}{date1,PickADate}
\setpickerIcon{../icons/dp_icon2.pdf}{GERDate}
\setlength{\marginparwidth}{2in}
%\usepackage{array}


%\usepackage{makeidx}
%\makeindex
\usepackage{acroman}
\usepackage[active]{srcltx}
\urlstyle{rm}

\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
\def\meta#1{\textit{\texttt{#1}}}
\def\darg#1{\{#1\}}
\def\oarg#1{[#1]}

\def\DM#1{\marginpar{\raggedleft\small\cs{#1}}}

\DeclareDocInfo
{
    university={\AcroTeX.Net},
    title={\texorpdfstring{datepicker-pro\\[1em]}
        {datepicker-pro: }Picking a date using Flash},
    author={D. P. Story},
    email={dpstory@acrotex.net},
    subject={Documentation of datepicker-pro from for AeB Pro},
    talksite={\url{www.acrotex.net}},
    version={1.0},
    keywords={AeB, Adobe Acrobat, JavaScript, datepicker, FLEX},
    copyrightStatus=True,
    copyrightNotice={Copyright (C) \the\year, D. P. Story},
    copyrightInfoURL={http://www.acrotex.net}
}

\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
   \kern-.6em \hbox{$\mathcal S$}}$}

\universityLayout{fontsize=Large}
\titleLayout{fontsize=LARGE}
\authorLayout{fontsize=Large}
\tocLayout{fontsize=Large,color=aeb}
\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb}
\subsectionLayout{indent=-31.25pt,color=aeb}
\subsubsectionLayout{indent=0pt,color=aeb}
\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}

%\pagestyle{empty}
%\parindent0pt\parskip\medskipamount

\begin{docassembly}
\addWatermarkFromFile({
    bOnTop:false,
%    cDIPath:"/C/AcroTeX/AcroTeX/ManualBGs/Manual_BG_Print_AeB.pdf"
    cDIPath:"C:/Users/Public/Documents/ManualBGs/Manual_BG_Print_AeB.pdf"
});
\executeSave();
\end{docassembly}

\begin{document}

\maketitle

\selectColors{linkColor=black}
\tableofcontents
\selectColors{linkColor=webgreen}

\section{Introduction}\label{s:intro}

% ff, fi, fl, ffl

Development for this work occurred in July 2013.\footnote{Then I forgot about it.} At that time a
cyber-colleague, G\"{u}nther F\"{u}llerer, sent me a \emph{date picker} he
had written using form fields. It was a very impressive work but created a
large number of form fields, one for each date in a calendar month. However,
instead of working on it myself, improving and generalizing it, I decided to
write a date picker package using a Flash window to display the dates, and
that is what I did. Below is the date picker without any options; it is set
up for English-style dates (MM/DD/YYYY).
\begin{quote} %\previewtrue
    Enter a date: \kern1bp\datepicker{date1}{1in}{11bp}\\[3bp]
    \phantom{Enter a date:} \kern1bp\verb!\datepicker{date1}{1in}{11bp}!
\end{quote}
Each use of the \cs{datepicker} command creates four PDF objects: (1) a
visible text field that displays the formatted date; (2) a visible push
button with an icon appearance; (3) a small hidden text field that
holds a ``shadow'' date, more on that later; and (4) a hidden rich media
annotation (RMA) which when activated creates a floating window that
displays a calendar.

The \cs{datepicker} command takes four arguments, the first of which is
optional. The first argument is used to modify the date picker, the second
is a unique name (\texttt{date1} in the above example), these are followed
by the width and height of the text input field.


\section{Requirements}

This package belongs to the high-class family of
\textsf{\textcolor{blue}{AeB~Pro}}, hence, the major requirement of this
package is that the PDF be created using \app{Adobe Distiller}, see
\hyperref[ss:PDFCreator]{Section~\ref*{ss:PDFCreator}} for details. Of course, if you have
\app{Distiller}, surely you have \app{Adobe Acrobat}, which is also
required in the workflow.

\subsection{{\LaTeX} package requirements}

 The package builds on packages developed as part of \textsf{AeB} or \textsf{AeB~Pro}:
\begin{itemize}
 \item\textsf{aeb\_pro}: supplies code to create icon appearances for the
 date picker push buttons.
 \item\textsf{rmannot}: the package for creating rich media annotations
 (SWF, FLV, etc); \textsf{rmannot} uses the \textsf{graphicxsp} package.
 \item\textsf{eforms}: used to create Acrobat form buttons and text
 fields, both hidden and visible. It also supplies JavaScript support as
 it imports the \textsf{insdljs} package.
\end{itemize}


\reversemarginpar

\subsection{PDF creator requirements}\label{ss:PDFCreator}

The big restriction on this package is the requirement to use
\app{Adobe Distiller} (version 6.0 or later). The package supports the
creation of PostScript using \textsf{dvips} and
\textsf{dvipsone}\marginpar{\raggedleft \textsf{dvipsone}\textsf{\\dvips}}. These
``drivers'' are defined through the required package \textsf{aeb\_pro}.

\subsection{Transparency requirements}

Transparency is only required to make the RMA transparent; unlike a form
field, a RMA does not have a hidden property, so we try to make it
transparent.

To get the transparency effect, you must distill using a JOBOPTIONS file
that supports transparency. The \pkg{datepicker-pro} package comes with an
\textbf{Distiller} job options file named
\texttt{Standard\_transparency.joboptions}. Instead of going through
the above rather tedious instructions, drop this file in the place
where Distiller expects to find its own {JOBOPTIONS}
files.\footnote{Go to Settings \texttt{>} Edit Adobe PDF Settings\dots
in the Distiller application window, then click the \texttt{SaveAs}
button. A \textsf{Save Adobe PDF Settings As} dialog box opens and
you can then see where \textbf{Distiller} likes to save its
\texttt{.joboptions} file. Copy the provided \texttt{.joboptions} to
the folder and restart Distiller, the \texttt{Standard\_transparency}
should now be visible in the drop down \textsf{Default Settings}
list.}

If you distill without this \texttt{Standard\_transparency}, you get an
error message in the \textbf{Distiller} log that reads like this:
\begin{small}
\begin{verbatim}
%%[Error: The PostScript contains Transparency pdfmark, job aborted.]%%
%%[ /AllowTransparency is false in job option settings.]%%
%%[ Error: undefined; OffendingCommand: pdfmark;
    ErrorInfo: Transparency Group ]%%
\end{verbatim}
\end{small}%
This suggests that you should use a JOBOPTIONS file that
supports transparency!

\subsection{Viewing requirements}

As with any document that contains more than just text content, \app{Adobe
Acrobat Reader} or \app{Adobe Acrobat} is required to actually see the
effects of the \pkg{datepicker-pro} package. Most third-party PDF readers do
not support interactive form fields, rich-media annotations, and Acrobat JavaScript API. Consumers
of your document need to use \app{Adobe Reader} or \app{Acrobat}.

\section{Options of this package}

There are no options for this package.

\section{The datepicker-pro commands}

\subsection{Commands for the preamble}

A typical preamble would contain the necessary packages required by
\pkg{datepicker-pro}:
\begin{minipage}[t]{\linewidth}\kern0pt
\begin{minipage}[t]{.5\linewidth}\kern0pt
\begin{Verbatim}[fontsize=\small,commandchars=!()]
\documentclass{article}
\usepackage[%
    driver=dvips,
    web={extended,tight*,usesf},
    eforms,graphicxsp={showembeds}
]{aeb_pro}
\usepackage{rmannot}
\usepackage{datepicker-pro}
\end{Verbatim}
\end{minipage}\hfill
\begin{minipage}[t]{.5\linewidth}\kern0pt
\begin{Verbatim}[fontsize=\small,commandchars=!()]
\documentclass{article}
\usepackage[%
    driver=dvips,
    web={extended,tight*,usesf},
    eforms,graphicxsp={showembeds},
    rmannot
]{aeb_pro}
\usepackage{datepicker-pro}
\end{Verbatim}
\end{minipage}
\end{minipage}
\newtopic\newtopic The use of the \pkg{web} package is optional. On the left is the
traditional way of using the \pkg{rmannot} package, followed by the
\pkg{datepicker-pro} package. More recently (2013/08/05), I've made
the \pkg{rmannot} an option of the \pkg{aeb\_pro} package. Shown on the right
is the \texttt{rmannot} option for \pkg{aeb\_pro}.


\bVerb\takeMeasure{\string\definePath\darg{\string\dppPath}\darg{\meta{path}}}%
\begin{dCmd}[commandchars=!()]{\bxSize}
\useFLEXVer{3|4}
\definePath{\dppPath}{!meta(path)}
\setpickerIcon{!meta(path)}{!meta(list)}
\end{dCmd}
\endgroup\noindent
The \cs{useFLEXVer}\DM{useFLEXVer} command declare what version of \EXT{FLEX}
is to be used, choices are 3 or 4, corresponding to \EXT{FLEX~3.6} and
\EXT{FLEX~4.5}, respectively. I've found the version~4 is very slow in
loading; not recommended. If \cs{useFLEXVer} is not present in the preamble,
version~3 is used by default.

The \cs{definePath\darg{\cs{dppPath}}}\DM{dppPath}
charts out the path to the date picker SWF file; there are two versions
\texttt{datepicker3.swf} and \texttt{datepicker4.swf}. The \cs{definePath}
command is defined in \pkg{eforms} is simply allows you construct paths
with normally forbidden characters. The \cs{dppPath} command is expected
by \pkg{datepicker-pro} to be defined; otherwise, the file will not
compile. The \meta{path} needs to be an \emph{absolute path} on your file
system that points to the location of the \EXT{SWF} files.

Finally, the \cs{setpickerIcon}\DM{setpickerIcon} declares the \meta{path} to
the date picker icon; this is a relative (or absolute) path and includes the
icon file in the path. The argument \meta{list} is a comma-delimited list of
names of each of the date picker fields created in the document. If you want
to have several date picker fields, some of which have different date picker
icons, then you need to declare additional icons using \cs{setpickerIcon}.
The dimensions of the icon are determined by the command declarations
\cs{setpickerIconWidth} and \cs{setpickerIconHeight}, these are discussed in
\hyperref[s:PB]{Section~\ref*{s:PB}}. These latter two commands may be
declared in the preamble or in the body of the document. This package
distribution provides to icon files \texttt{dp\_icon1.pdf} and
\texttt{dp\_icon2.pdf} found in the \texttt{icons} folder.


\newtopic\noindent
The following illustrates the above three commands.
\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
%\useFLEXVer{4} % 3 or 4
\definePath{\dppPath}{C:/Users/Public/Documents/My TeX Files/%
    tex/latex/aeb/aebpro/datepicker-pro/swf}
\setpickerIcon{../icons/dp_icon2.pdf}{date1,PickADate,GERDate}
\end{Verbatim}
In this example, there are three date fields created, each of them is
given the appearance of the icon file \texttt{dp\_icon2.pdf}.
Or, we can declare,
\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
\definePath{\dppPath}{C:/Users/Public/Documents/My TeX Files/%
    tex/latex/aeb/aebpro/datepicker-pro/swf}
\setpickerIcon{../icons/dp_icon1.pdf}{date1,PickADate}
\setpickerIcon{../icons/dp_icon2.pdf}{GERDate}
\end{Verbatim}
where a different icon is used for the \texttt{GerDate} date picker.

\subsection{Commands for the body of the document}

Within the body of the document, there is only one command, \cs{datepicker}:
\bVerb\takeMeasure{\cs{datepicker}[\meta{options}]\darg{\meta{name}}\darg{\meta{width}}\darg{\meta{height}}}%
\begin{dCmd}[commandchars=!()]{\bxSize}
\datepicker[!meta(options)]{!meta(name)}{!meta(width)}{!meta(height)}
\end{dCmd}
\endgroup\noindent
The \meta{name} argument should consist only of letters or numbers
(however, a number must not be the first character in the name); for
example, \texttt{date1} or \texttt{PickADate} are acceptable. The
\meta{name} argument is used to build names for the components of
the date picker field. The input text field, which is set to read only, is
named \texttt{txt\anglemeta{name}}, the push button is named
\texttt{btn\anglemeta{name}}, the hidden text field is named
\texttt{htxt\anglemeta{name}}, and finally, the RMA has a name of
\meta{name}. The \meta{width} and \meta{height} arguments are standard
to form fields, as defined by \pkg{eforms}. These two dimensions are applied
to the input text field only.

Now for the \meta{options} argument of \cs{datepicker}. The options consist
of key-value pairs (\texttt{key=value}) and are rather numerous.
\begin{itemize}\def\DescribeMacro#1{}
\item \textbf{Format date string.}
    \begin{itemize}
    \item\texttt{formatstring}: The value of the \texttt{formatstring} key
        uses various combinations of \texttt{M}, \texttt{D}, \texttt{Y},
        and possible \texttt{E} as well as spaces and delimiters to format
        the date string. The following table was extracted from the page:
\begin{quote}\raggedright\urlstyle{tt}
\mlurl{http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/DateFormatter.html}
\end{quote}\bigskip
\item[]\begin{tabular}{cp{1.4in}cp{1.4in}}
 \multicolumn{4}{c}{\bfseries Table of Formatting Patterns}\\\hline
 \textbf{Pattern} & \textbf{Examples} &\textbf{Pattern} & \textbf{Examples}\\
 \texttt{Y} & \texttt{YY = 05}\par \texttt{YYY=2005}\par\texttt{YYY=02005}&
 \texttt{D} &\texttt{D = 4}\par \texttt{DD=04}\\
 \texttt{M} &  \texttt{M = 7}\par \texttt{MM=07}\par\texttt{MMM=Jul}\par\texttt{MMMM=July}&
 \texttt{E} & \texttt{E = 1}\par \texttt{EE=01}\par\texttt{EEE=Mon}\par\texttt{EEEE=Monday}\\
\end{tabular}\bigskip
\item[] One example is \verb!formatstring={EEEE, DD. MMMM YYYY}!. The default
formatting string is \verb!formatstring={MM/DD/YYYY}!.
 \end{itemize}
%\define@key{ddp}{formatstring}[MM/DD/YYYY]{\def\dpp@FormatStr{#1}}
\item \textbf{Formatting the calendar.} The \textsf{dateChooser} control that
    is used in the \EXT{SWF} file contains the name of the month at the top
    and the names of the days of the week just below it. By default, the
    usual English month names are used (January, February, \dots,December)
    and the usual English days of the week names are used (Sunday, Monday,
    \dots,Saturday). However, these can be changed through the use of
    \texttt{monthnames} and \texttt{daynames} key.
    \begin{itemize}
        \item \texttt{daynames}: The names of the days that appear on the
            popup calendar. The value of \texttt{daynames} is a
            comma-delimited list of seven names for the days. The default
            is \verb!daynames={S,M,T,W,T,F,S}!. These labels appear if the
            \texttt{daynames} key is not used.
        \item \texttt{monthnames}: The names of the months
            that appear on the popup calendar. The value for
            \texttt{monthnames} is a comma-delimited list of twelve names
            of the months. The default is
            \verb!monthnames={January,February,...,December}!. These
            labels appear if the \texttt{monthnames} key is not used.
    See the initial date picker example on page~\pageref*{s:intro} for an
    example of these default values.
    \item[] Other possible values for these, in the English language, are
\begin{Verbatim}[xleftmargin=20pt]
monthnames={Jan,Feb,Mar,Apr,May,June,July,Aug,Sept,Oct,%
    Nov,Dec}.
daynames={Su,M,Tu,W,Th,F,Sa}
\end{Verbatim}
There should be no spurious spaces in the values of any of these keys; in
the listing above, I've wrapped the months around to a new line, and
inserted a comment character (\texttt{\%}) to kill any space that may be
generated.
\item[] The order must be the first month of the year (January, or the
    equivalent in another language) and the first day of the week (Sunday,
    or its equivalent). Some calendars consider Monday as the first day of
    the week, if this is so, \emph{still} place Sunday, or its local
    equivalent, as the first entry in the list. A different starting day
    is set using the \texttt{firstday} key.
    Setting \texttt{firstday=1} puts Monday as the first day of the week
    on the calendar.
\item \texttt{firstday}: The value of the key \texttt{firstday} is an integer, 0\dots7.
The default is~0.
\end{itemize}
\item[] Next is an example of some German names.
\begin{Verbatim}[xleftmargin=\amtIndent]
daynames={So,Mo,Di,Mi,Do,Fr,Sa},
monthnames={Jan,Febr,Mrz,Apr,Mai,Jun,Jul,Aug,Sept,Okt,%
    Nov,Dez},
firstday=1
\end{Verbatim}
On the German calendar, \emph{Montag} (\emph{Mo}) is the first day of the week.
 \item \textbf{Formatting the Month and Day in the return value.} When the
     date string is returned to the input text field it is formatted
     according to the value of the key \texttt{formatstring}. The keys is
     this section are useful only if your \texttt{formatstring} contains
     any of the formatting combinations \texttt{MMM}, \texttt{MMMM},
     \texttt{DDD}, or \texttt{DDDD}. These indicate you want the month or
     day word-names returned, rather than a numerical value.

     \item[] The four keys below take as a value of comma-delimited list of names.

%     These should be consistent with
%     the calendar headings as well. You don't want English days of the
%     week on a German calendar. The key
    \begin{itemize}
     \item\texttt{monthnamesLong}: The long name of the months and is used with
     \texttt{MMMM} formatting pattern.
     \item \texttt{monthnamesShort}: The short name of the months, used
     when \texttt{MMM} is the formatting pattern.
     \item \texttt{daynamesLong}: The long names for the days of the week,
         used for formatting \texttt{DDDD}.
     \item \texttt{daynamesShort}: The short names for the days of the
         week and is used with \texttt{DDD}.
    \end{itemize}
    \item[] The defaults are the English counterparts: January/Jan, Sunday/Sun.
    \item[] For the German language, we can set these values as follows:
\begin{Verbatim}[xleftmargin=20pt]
daynamesLong={Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,%
    Freitag,Samstag},
daynamesShort={So,Mo,Di,Mi,Do,Fr,Sa},
monthnamesLong={Januar,Februar,März,April,Mai,Juni,Juli,%
    August,September,Oktober,November,Dezember},
monthnamesShort={Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,%
    Okt,Nov,Dez},
\end{Verbatim}
\item[] Again, always list January (\textsl{Januar}/\textsl{Jan}) and
    Sunday (\textsl{Sonntag}/\textsl{So}) first.
\item \textbf{Positioning the floating window}.
 These keys determine the positioning of the floating windows when it
 opens. The default is the center of the window (for versions > 9), for
 version~9, this key is ignored and the window appears in the upper-right
 of the application window. See the documentation of the \texttt{rmannot}
 package for more detail.
 \begin{itemize}
    \item \texttt{halign}: The horizontal positioning of the floating
        window, permissible values are \texttt{near}, \texttt{center}, and
        \texttt{far}. The default is \texttt{center}.
    \item \texttt{valign}: The vertical positioning of the floating
        window, permissible values are \texttt{near}, \texttt{center}, and
        \texttt{far}. The default is \texttt{center}.
    \item \texttt{hoffset}: The amount of horizontal offset from the initial horizontal
    alignment (\texttt{halign}). See the documentation of the
 \texttt{rmannot} package for more detail. Measured in default user space
 units (pixels). The default is~0.
    \item \texttt{voffset}: The amount of vertical offset from the initial
        vertical alignment (\texttt{valign}). See the documentation of the
        \texttt{rmannot} package for more detail.  Measured in default
        user space units (pixels). The default is~0.
 \end{itemize}
\item \textbf{Setting the dimensions of the window.}
\begin{itemize}
    \item \texttt{widthOfWindow}: The width of the floating window as
        measured in default user space units (pixels). The default
    for this package is~180.
    \item \texttt{heightOfWindow}: The height of the floating window as
        measured in default user space units (pixels). The default
    for this package is~180.
\end{itemize}
\end{itemize}
Options can be bundled into a command and passed as the first argument, as this example
of the German calendar illustrates.

\newcommand{\germanDates}
{%
%    formatstring=DD.MM.YYYY,
    formatstring={EEEE, DD. MMMM YYYY},
    daynames={So,Mo,Di,Mi,Do,Fr,Sa},
    monthnames={Jan,Febr,Mrz,Apr,Mai,Jun,Jul,Aug,Sept,%
        Okt,Nov,Dez},
    daynamesLong={Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,%
        Freitag,Samstag},
    daynamesShort={So,Mo,Di,Mi,Do,Fr,Sa},
    monthnamesLong={Januar,Februar,März,April,Mai,Juni,Juli,%
        August,September,Oktober,November,Dezember},
    monthnamesShort={Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,%
        Sep,Okt,Nov,Dez},
    firstday=1,
    widthOfWindow=200,heightOfWindow=200,
}
\begin{flushleft}%\previewtrue
Wählen Sie ein Datum:\ \kern1bp\datepicker[\germanDates]{GERDate}{2in}{11bp}\quad
(EEEE, DD. MMMM YYYY)
\end{flushleft}

The verbatim listing of this last field is given below.
\begin{Verbatim}[xleftmargin=20pt,fontsize=\small]
\newcommand{\germanDates}
{%
%    formatstring=DD.MM.YYYY,
    formatstring={EEEE, DD. MMMM YYYY},
    daynames={So,Mo,Di,Mi,Do,Fr,Sa},
    monthnames={Jan,Febr,Mrz,Apr,Mai,Jun,Jul,Aug,Sept,%
        Okt,Nov,Dez},
    daynamesLong={Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,%
        Freitag,Samstag},
    daynamesShort={So,Mo,Di,Mi,Do,Fr,Sa},
    monthnamesLong={Januar,Februar,März,April,Mai,Juni,Juli,%
        August,September,Oktober,November,Dezember},
    monthnamesShort={Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,%
        Sep,Okt,Nov,Dez},
    firstday=1,
    widthOfWindow=200,heightOfWindow=200
}
\begin{flushleft}
Wählen Sie ein Datum:\ \kern1bp
\datepicker[\germanDates]{GERDate}{2in}{11bp}\quad(EEEE, DD. MMMM YYYY)
\end{flushleft}
\end{Verbatim}

\subsection{Commands for the preamble or the body}\label{s:PB}

\def\lp{(}\def\rp{)}

There are a few other commands to mention, the declaration or definition take effect
with the next date picker command \cs{datepicker}.
\bVerb\takeMeasure{\string\renewcommand\darg{\string\pickersep}\darg{\meta{length}}}%
\setlength\textscreenwidth{\bxSize-2\fboxsep}%
\def\1{\rlap{\hspace*{\textscreenwidth}\quad\normalfont(\texttt{3pt}\normalfont)}}%
\def\2{\rlap{\hspace*{\textscreenwidth}\quad\normalfont(\texttt{10pt}\normalfont)}}%
\def\3{\rlap{\hspace*{\textscreenwidth}\quad\normalfont(\texttt{12pt}\normalfont)}}%
\takeMeasure{\string\renewcommand\darg{\string\pickersep}\darg{\meta{length}}%
\quad\normalfont({\texttt{12bp}\normalfont)}}%
\begin{dCmd}[commandchars=!()]{\bxSize}
\dppToolTip{!meta(text)}
\pickerOpts{!meta(key-values)}
\pickerInputOpts{!meta(key-values)}
!1\renewcommand{\pickersep}{!meta(length)}
!2\pickerIconWidth{!meta(length)}
!3\pickerIconHeight{!meta(length)}
\end{dCmd}
\endgroup\noindent
The \cs{dppToolTip}\DM{dppToolTip} command is used to create a tool tip, text the user sees when
he/she rolls over the push button icon. The default is
\begin{Verbatim}[xleftmargin=20pt,commandchars=!()]
\dppToolTip{Date Picker\n Click to toggle open and close\n
    Shift-click to clear and close}
\end{Verbatim}
When the user click on the icon, and the calendar is not open, the floating window opens.
If the window is open and the user clicks on the icon, the window is closed. If the user
shift-clicks and the window, the date field is cleared and the window is closed, if open.

The \cs{pickerOpts}\DM{pickerOpts} command lets you
pass additional options to the RMAs created by this package. The default
is \cs{pickerOpts\darg{}}. See the documentation of the \pkg{rmannot}
package for more details.

The \cs{pickerInputOpts}\DM{pickerInputOpts} allows
you to pass additional options to the input text field. The default is
\cs{pickerInputOpts\darg{}}. See the documentation of the \pkg{eforms}
package for details. We illustrate this last feature:
\begin{quote}
    \pickerInputOpts{\BC{red}\textColor{blue}\Q{1}}%
    Pick a date: \kern1bp\datepicker{PickADate}{1in}{11bp}\\[3bp]
    \phantom{Enter a date:} \kern1bp\verb!\datepicker{PickADate}{1in}{11bp}!
\end{quote}
\begin{Verbatim}[xleftmargin=20pt]
\pickerInputOpts{\BC{red}\textColor{blue}\Q{1}}%
Pick a date: \kern1bp\datepicker{PickADate}{1in}{11bp}
\end{Verbatim}
Here, we use a red boundary, blue text color, and center the date.

Any changes to \cs{pickerOpts} and \cs{pickerInputOpts} are global unless expanded
within a group. Of course, you can bring these options back to their defaults by expanding
\cs{pickerOpts\darg{}} and \cs{pickerInputOpts\darg{}}.

The command \cs{pickersep}\DM{pickersep} sets the amount spacing between the right edge of the input
text field and the left edge of the picker push button. The default is \texttt{3bp}.

Finally, the command declarations, \cs{pickerIconWidth}\DM{pickerIconWidth} and
\cs{pickerIconHeight}\DM{pickerIconHeight}, determine the width and the height of the date
picker icon. The defaults for are shown in parentheses above.


\newtopic\noindent
That's all for now, I simply must get back to my retirement. \dps

\end{document}