Hello Simon, Yeah. It's a littlehokey,but there is code in _getTrainState that
does something like below. So train.maxVisitedIndex is always set to the right
value. // get highest node in train visited train.maxVisitedIndex =
_getMaxVisitedIndex(); // default to selectedIndex if it wasn't set // or if
it was set to be greater than selectedIndex if (train.maxVisitedIndex ==
NO_CHILD_INDEX || train.maxVisitedIndex < train.selectedIndex) {
train.maxVisitedIndex = train.selectedIndex; } Ideally the train should not
care about maxVisited and should not have code that looks at maxVisited. It's
the responsibility of the model implementor to decide whether they want to use
the MaxVisited or the PlusOne or some other Foo behavior, that would eventually
influence the rendering of the train. All the train should care about is, if a
stop within the train is, "disabled", "readOnly" "selected" or "visited". It
may be a good idea to have a TrainModel interface that extends MenuModel
interface and supports the above methodsgetVisited, getActive, getReadOnly,
getDisabled and others. The individual train model implementations can support
behaviors like the "Max Visited" & "Plus One" cases, which then return the
right values for the above APIs. The TrainRenderer simply gets the EL values
and determines how to render the stops. Do you agree? - Pavitra From: Simon
Lessard [mailto:[EMAIL PROTECTED] Sent: Thursday, August 24, 2006 2:40 PM To:
[email protected]; [EMAIL PROTECTED] Subject: Re: ADFFACES-60
However maxVisitedIndex is always null currently and would be insanely harder
to determine as we don't force anything but a MenuModel as backing model for
process train. I think your idea of adding a visited attribute to
commandNavigationItem might be the best option. You guys/gals see another
possibility? Maybe redo ProcessModel, add much more options to it and force the
backing model to be an instance of ProcessModel? Anyone have another option
regarding this? Regards, ~ Simon On 8/24/06, Pavitra Subramaniam < [EMAIL
PROTECTED]> wrote: Comments below.. - Pavitra > -----Original Message----- >
From: Simon Lessard [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 24, 2006
1:08 PM > To: [email protected]; [EMAIL PROTECTED] > Subject:
Re: ADFFACES-60 > > Hello Pavitra, > > Yes it explain much, especially for
overflows. However, I > meant something slightly different about
visited/unvisited. > Imagine the max visited mode. > The user do the following
on a 5 steps train: > step 1 --> step 2 --> step 3 --> step 2. > > Now is step
3 visited or unvisited? I would tend toward > unvisited as it's the most common
behavior imho. - it depends on how the model the train binds to, works. We
provide 2 cases in trinidad - Max Visited and Plus One. In the Max Visited case
all stops until maxVisitedIndex appear as visited, even if you jump back. In
Plus One case, only the stop that follows the currently active stop appears
unvisited when you jump back. So, if user did step 1 --> step 2 --> step 3 -->
step 4 --> step 5 --> step 2), In Max Visited case, stops 3,4 are visited and
in the Plus One case only the step3 appears unvisited. And the train code,
assumes that all stops are visited if it's index is <= maxVisitedIndex. In
reality, I think we need to have a "visited" property on the component, that
will tell us if a stop needs to be in visited or unvisited state (instead of
making assumptions in the code, which assumes any stop before maxVisitedIndex
as visited) - The readOnly property that exists today, would determine whether
the stop can be clicked or not. > > > Regards, > > ~ Simon > > On 8/24/06,
Pavitra Subramaniam > < [EMAIL PROTECTED]> wrote: > > > > To answer your
question, > > > > >>Do we consider a station unvisited if it come after the
active > > >>station > > or simply if the user never visited it? The former
seems > more common > > as well as easier to implements. > > - A stop is
unvisited (and clickable) if it comes after an active > > stop, only if it's
not disabled. > > - If the user has never visited it (meaning readonly=true), >
then it's > > unvisited and not clickable. Please see more details on how the >
> various parts of the train and the states work. > > > > ::overflow-prev and
::overflow-next are not states, rather they are > > sub-parts of af|train. Like
a ::stop is. > > > > Stops and Overflow icons could exist in the following >
states :visited, > > :disabled, :unvisited, :read-only, :active (forget :rtl
for now). > > > > It's important to understand the difference between readOnly
and > > disabled properties currently supported on the > commandNavigationItem
> > component within the train. Disabled means the stop is disabled and > >
user cannot get to it at all. Readonly means that the stop > cannot be > >
clicked for the time being (but this can change as the user > progresses
through the train). > > > > 1. In the default case, a visited stop is always
assumed to > be clickable. > > An unvisited stop that immediately follows an
active stop is > > clickable. (In both cases, readOnly property will be
false). > > 2. Other unvisited stops cannot be reached (readOnly=true). > > 3.
Active stop cannot be clicked (readOnly is true). > > 4. Disabled stops can
appear anywhere is the train and are not > > clickable at all (and
disabled=true, in these cases). Left join of > > stops immediately following
disabled stops, will have their > joins disabled. > > > > Overflows have a
slightly different behavior. > > > > 1. Overflow-Next and overflow-prev are in
visited state if > there are > > visited stops in the next set. > > 2.
overflow-next appears in unvisited state, if there are unvisited > >
(reachable) stops in the next set. (this rule does not apply to > >
overflow-prev as you always proceed through the train in > order. There > > is
one exception, see item 3). > > 3. overflow-next appears disabled, if the stop
representing the > > overflow is disabled or if the stop before the overflow
is > disabled. > > Same for overflow-prev. > > 4. overflow-next appears
readOnly in all other cases. > > NOTE: Overflows, imo, can never be active. >
> > > Hope that explains it. > > > > - Pavitra > > > > -----Original
Message----- > > From: Simon Lessard [mailto: [EMAIL PROTECTED] > > Sent:
Thursday, August 24, 2006 11:49 AM > > To: [email protected] >
> Subject: Re: ADFFACES-60 > > > > Hello all once again, > > > > I finally
have the markup and CSS up and running for those > selectors. > > I have one
semantic issue left though. There's 5 stop states > > (:overflow-prev,
:overflow-next, :active, :visited, > :unvisited). The > > question is about
visited and unvisited, how should they be > defined? > > Do we consider a
station unvisited if it come after the > active station > > or simply if the
user never visited it? The former seems > more common as well as easier to
implements. > > Someone got a different opinion? > > > > > > Regards, > > > > ~
Simon > > > > On 8/23/06, Simon Lessard <[EMAIL PROTECTED]> wrote: > > > > > >
Sure, thanks Pavitra for that CSS and markup, it will > make it much > > >
easier and faster. > > > > > > ~ Simon > > > > > > > > > On 8/22/06, Jeanne
Waldman < [EMAIL PROTECTED]> wrote: > > > > > > > > And of course, when adding
styles to base-desktop.xss , > try to use > > > > the simplest style
definitions possible so a skin can > build on it, > > > > and use "includes"
for colors where possible so that a person > > > > skinning can change one of
the 'alias' color styles and > change the > > > > entire app's color-scheme,
including the train. > > > > > > > > - Jeanne > > > > > > > > Pavitra
Subramaniam wrote: > > > > > > > > >Actually I meant to say > > > > > > > > >
>2) :disabled, :active, :unvisited, :visited, :rtl are > > > > >pseudo-classes
> > > > that represent a state and > > > > >3) overflow-next and overflow-prev,
stop, join, > join-overflow etc > > > > >are > > > > pseudo elements. As you
mentioned all pseudo-elements > cansupport > > > > many states and can be in
one or more states at the same time. > > > > > > > > > >I have also attached a
sample css that uses the styles > referred > > > > >to by > > > > the HTML
below. These need to be defined in the > base-desktop.xss file. > > > > > > >
> > > > > > > >SAMPLE STYLES FOR TRAIN > > > > >----------------------- > > > >
> > > > > >/*********************************** > > > > >Train Styles > > > >
>***********************************/ > > > > >/* for the processTrain */ > >
> > >.af-train { > > > > >margin-left: auto; > > > > >margin-right: auto; > > >
> >font-size:11px; > > > > >font-family:Tahoma; > > > > >} > > > > > > > > >
>/*********************************** > > > > > Joins > > > >
>***********************************/ > > > > > > > > > >/* for joins between
the overflow icons and the stops */ > > > > >.af|train::join-overflow { > > > >
>min-width:20px; > > > > >width:100%; > > > > >height:1px; > > > > >} > > > >
>/* join (between overflow and stop icons) in disabled state */ > > > >
>.af|train::join-overflow:disabled { > > > > >background-color: #A6B3C8; > > >
> >} > > > > >/* join (between overflow and stop icons) in visited state */ > >
> > >.af|train::join-overflow:visited { > > > > >background-color: #72007C; >
> > > >} > > > > >/* join (between overflow and stop icons) in unvisited >
state */ > > > > >.af|train::join-overflow:unvisited { > > > >
>background-color: #3463D3; > > > > >} > > > > > > > > > >/* for joins between
stops */ > > > > >.af|train::join { > > > > >min-width:20px; > > > >
>width:100%; > > > > >height: 1px; > > > > >} > > > > >/* join in visited state
*/ > > > > >.af|train::join:visited { > > > > >background-color: #72007C; > > >
> >} > > > > >/* join in unvisited state */ > > > > >.af|train::join:unvisited
{ > > > > >background-color: #3463D3; > > > > >} > > > > >/* join in disabled
state */ > > > > >.af|train::join:disabled { > > > > >background-color:
#A6B3C8; > > > > >} > > > > > > > > > >/*********************************** >
> > > > Spacers > > > > >***********************************/ > > > > >/*
spacer used between stops */ > > > > >.af|train::stop-spacer { > > > >
>height: 1px; > > > > >width: 5px; > > > > >} > > > > >/* stop spacer in
visited state */ > .af|train::stop-spacer:visited > > > > >{ > > > >
>background-color: #72007C; > > > > >} > > > > >/* stop spacer in unvisited
state */ > > > > >.af|train::stop-spacer:unvisited { > > > > >background-color:
#3463D3; > > > > >} > > > > >/* stop spacer in disabled state */ > > > >
>.af|train::stop-spacer:disabled { > > > > >background-color: #A6B3C8; > > > >
>} > > > > >/* spacer used between parent train and stops */ > > > >
>.af|train::parent-spacer { > > > > >height: 1px; > > > > >width: 5px; > > > >
>} > > > > >/* spacer used for margins in the beginning and end of > the train
> > > > >*/ .af|train::margin-end, .af|train::margin-start { > > > > >height:
1px; > > > > >width: 1px; > > > > >} > > > > > > > > >
>/*************************************** > > > > >Icons: Parent Train, stop &
Overflow > > > > >***************************************/ > > > > >/* block
that displays the parent start icon*/ > > > >
>.af|train::parent-start-icon-block > > > > >{ > > > > >text-align:right; > >
> > >} > > > > >/* block that displays the parent start icon*/ > > > >
>.af|train::parent-end-icon-block { > > > > >text-align:left; > > > > >} > > >
> >/* icon to indicate a parent process in the beginning of a sub > > > >
>train */ .af|train::parent-start-icon { > > > > >height:13px; > > > >
>width:13px; > > > > >content:url(../images/stop-parent.png); > > > > >} > > >
> >/* icon to indicate a parent process in the end of a > sub train */ > > > >
>.af|train::parent-end-icon { > > > > >height:13px; > > > > >width:13px; > > >
> >content:url(../images/stop-parent-end.png ); > > > > >} > > > > > > > > >
>/* block that displays the overflow image */ > > > >
>.af|train::overflow-icon-block { > > > > >position:relative;top:-1px; > > > >
>} > > > > >/* overflow start icon in visited state (indicates presence of > >
> > >previous > > > > steps) */ > > > > >.af|train::overflow-start-icon:visited
> > > > >{ > > > > >height:13px; > > > > >width:13px; > > > >
>content:url(../images/overflow-start-visited.png); > > > > >} > > > > >/*
overflow start icon in disabled state (indicates presence of > > > > previous
stops) */ > > > > >.af|train::overflow-start-icon:disabled > > > > >{ > > > >
>height:13px; > > > > >width:13px; > > > >
>content:url(../images/overflow-start-disabled.png); > > > > >} > > > > >/*
overflow end icon in disabled state (indicates presence of > > > > >more > > >
> stops) */ > > > > >.af|train::overflow-end-icon:disabled > > > > >{ > > > >
>height:13px; > > > > >width:13px; > > > >
>content:url(../images/overflow-end-disabled.png); > > > > >} > > > > >/*
overflow end icon in unvisited state (indicates presence of > > > > >more > >
> > stops) */ > > > > >.af|train::overflow-end-icon:unvisited > > > > >{ > > >
> >height:13px; > > > > >width:13px; > > > > >content:url(../images/overflow-
end-unvisited.png); > > > > >} > > > > >/* overflow end icon in visited state
(indicates presence of > > > > >visited > > > > stops in the next set) */ > > >
> >.af|train::overflow-end-icon:visited > > > > >{ > > > > >height:13px; > > >
> >width:13px; > > > > >content:url(../images/overflow- end-unvisited.png); > >
> > >} > > > > > > > > > >/* block that displays a stop icon > > > >
>(active/disabled/visited/unvisited) > > > > */ > > > >
>.af|train::stop-icon-block > > > > >{ > > > > >} > > > > >/* stop icon in
visited state */ > > > > >.af|train::stop-icon:visited { > > > > >height:13px;
> > > > >width:13px; > > > > >content:url(../images/stop-visited.png ); } > > >
> >/* stop icon in active state */ > > > > >.af|train::stop-icon:active { > >
> > >height:13px; > > > > >width:13px; > > > >
>content:url(../images/stop-active.png); > > > > >} > > > > >/* stop icon in
unvisited state */ > .af|train::stop-icon:unvisited > > > > >{ > > > >
>height:13px; > > > > >width:13px; > > > >
>content:url(../images/stop-unvisited.png ); > > > > >} > > > > >/* stop icon
in disabled state */ > .af|train::stop-icon:disabled { > > > > >height:13px; >
> > > >width:13px; > > > > >content:url(../images/stop- disabled.png); > > > >
>} > > > > > > > > > >/************************************************ > > > >
> Labels and Links: parentTrain, overflow & stop > > > >
>************************************************/ > > > > >/* > > > > >content
area in the beginning of the train, to display the > > > > >parent > > > >
process > > > > >name > > > > >*/ > > > > >.af|train::parent-start-content > >
> > >{ > > > > >display:block; > > > > >padding-top:2px; > > > >
>padding-bottom:2px; > > > > >padding-left:1px; > > > > >padding-right:1px; > >
> > >text-align:right; > > > > >} > > > > >/* content area in the end of the
train, to display the parent > > > > >process > > > > name */ > > > >
>.af|train::parent-end-content > > > > >{ > > > > >display:block; > > > >
>padding-top:2px; > > > > >padding-bottom:2px; > > > > >padding-left:1px; > > >
> >padding-right:1px; > > > > >text-align:left; > > > > >} > > > > >/* > > > >
>content area to display the overflow label in the > beginning and > > > > >end
> > > > of the > > > > >train > > > > >*/ > > > >
>.af|train::overflow-start-content, > > > > >.af|train::overflow-end-content >
> > > >{ > > > > >display:block; > > > > >padding-top:2px; > > > >
>padding-bottom:2px; > > > > >padding-left:1px; > > > > >padding-right:1px; >
> > > >text-align:center; > > > > >} > > > > > > > > > >/* content area to
display the stop name */ > > > > >.af|train::stop-content { > > > >
>padding-left:2px; > > > > >padding-right:2px; > > > > >padding-top:2px; > > >
> >padding-bottom:2px; > > > > >text-align:center; > > > > >} > > > > > > > >
> >/* content area that displays the name of the stop in visited > > > > >state
*/ .af|train::stop-content:visited { } > > > > >/* block that displays the name
of the stop in > disabled state */ > > > > >.af|train::stop-content:disabled {
> > > > >color:#737373; > > > > >} > > > > >/* block that displays the name of
the stop in > unvisited state */ > > > > >.af|train::stop-content:unvisited > >
> > >{ > > > > >} > > > > >/* block that displays the name of the stop in
active state */ > > > > >.af|train::stop-content:active { > > > >
>font-weight:bold; > > > > >color:#000000; > > > > >text-align:center; > > > >
>padding-left:5px; > > > > >padding-right:5px; > > > > >} > > > > > > > > > >/*
link for a stop */ > > > > >.af|train::stop-link > > > > >{ > > > >
>text-decoration:none; > > > > >} > > > > > > > > > >/* link for an unvisited
stop */ > > > > >.af|train::stop-link:unvisited > > > > >{ > > > >
>text-decoration:underline; > > > > >color:#003399; > > > > >} > > > > >/* link
for an visited stop */ > > > > >.af|train::stop-link:visited > > > > >{ > > >
> >text-decoration:underline; > > > > >color:#72007C; > > > > >} > > > > > > >
> > >/* link for an active stop */ > > > > >.af|train::stop-link:active > > > >
>{ > > > > >color:#000000; > > > > >} > > > > >/* link for an disabled stop */
> > > > >.af|train::stop-link:disabled > > > > >{ > > > > >color:#737373; > > >
> >} > > > > > > > > > >/* link for an overflow in disabled state */ > > > >
>.af|train::overflow-link:disabled > > > > >{ > > > > >text-decoration:none; >
> > > >color:#737373; > > > > >} > > > > >/* link for an overflow in visited
state */ > > > > >.af|train::overflow-link:visited { > > > >
>text-decoration:underline; > > > > >color:#72007C; > > > > >} > > > > >/* link
for an overflow in unvisited state */ > > > >
>.af|train::overflow-link:unvisited > > > > >{ > > > >
>text-decoration:underline; > > > > >color:#003399; > > > > >} > > > > > > > >
> > > > > > >- Pavitra > > > > > > > > > >-----Original Message----- > > > >
>From: Simon Lessard [mailto: [EMAIL PROTECTED] > > > > >Sent: Tuesday, August
22, 2006 11:42 AM > > > > >To: [email protected]; > > > >
>[EMAIL PROTECTED] > > > > >Subject: Re: ADFFACES-60 > > > > > > > > > >Note
taken, thanks Pavitra. > > > > > > > > > >On 8/22/06, Pavitra Subramaniam >
<[EMAIL PROTECTED] > > > > > wrote: > > > > > > > > > > > > > > >>Hello Simon,
> > > > >> > > > > >>Simon, I am delayed in providing a fix on Trinidad. Please
go > > > > >>ahead with your solution but I would recommend we use > the skin
> > > > >>hooks we discussed earlier and agreed on (Email > titled: Process > >
> > >>Train Skin > > > > Selectors). > > > > >> > > > > >>1) Can we use the
word stop instead of station? > > > > >>2) :disabled, :visited, :unvisited,
:active are > states and not > > > > >>pseudo elements. > > > > >>3)
overflow-next and overflow-prev are pseudo elements and > > > > >>should follow
the convention - af|train::overflow-next, > > > > >>af|train::overflow-prev.
For a full list of pseudo-elements, > > > > >>af|refer to > > > > my earlier
email. > > > > >>4) I have markup that makes use of one stop icon instead of 2
> > > > >>(left and right). I think we should do that and the example I > > > >
>>have attached will provide a . Please see example for > train HTML > > > >
>>markup, below. If you need me to send you a sample CSS file, > > > > >>that
uses these skin hooks, please let me know. > > > > >> > > > > >>Thanks > > > >
>>Pavitra > > > > >> > > > > >>Sample HTML for train that uses one stop icon >
> > > >>--------------------------------------------- > > > > >><table
cellpadding="0" cellspacing="0" border="0" > > > > >>class="af_train"> > > > >
>><tbody> > > > > >><tr> > > > > >><!-- MARGIN --> > > > > >><td
rowspan="2"><div > > > >
>>class="af|train::margin-start"><span></span></div></td> > > > > >> > > > >
>><!-- PARENT START --> > > > > >><td> > > > > >><table cellpadding="0"
cellspacing="0" border="0" > > > > width="100%"> > > > > >><tbody> > > > >
>><tr> > > > > >><td> > > > > >><div >
class="af|train::parent-start-icon-block"> > > > > >> <!--
af|train::parent-start-icon --> > > > > >><img src="images\step_parent.png" >
alt="Process A: > > > > >>Step A" > > > > >>width="13px" height="13px"/> > > >
> >></div> > > > > >></td> > > > > >></tr> > > > > >></tbody> > > > >
>></table> > > > > >></td> > > > > >> > > > > >><td><div > > > >
>>class="af|train::parent-spacer"><span></span></div></td> > > > > >> > > > >
>><!-- OVERFLOW START --> > > > > >><td> > > > > >><table cellpadding="0"
cellspacing="0" border="0" > > > > width="100%"> > > > > >><tbody> > > > >
>><tr> > > > > >><td width="50%"> > > > > >><div > > > >
class="af|train::join-overflow"><span></span></div> > > > > >></td> > > > >
>><td> > > > > >><div class="af|train::overflow-icon-block"> > > > > >><!-- > >
> > >> af|processTrain::overflow-start-visited-icon > > > > --> > > > > >><img
src="images\overflow_start_visited.png" > > > > >>alt="Previous Steps" > > > >
>>width="7px" height="7px"/> > > > > >></div> > > > > >></td> > > > > >><td
width="50%"> > > > > >><div class="af|train::join-overflow > > > >
>>af|train::join-overflow:visited"> > > > > >><span></span></div></td> > > > >
>></tr> > > > > >></tbody> > > > > >></table> > > > > >></td> > > > > >> > > >
> >><td><div class="af|train::step-spacer > > > >
>>af|train::step-spacer:visited"><span></span></div></td> > > > > >> > > > >
>><!-- STEP --> > > > > >><td> > > > > >><table cellpadding="0"
cellspacing="0" border="0" > > > > width="100%"> > > > > >><tbody> > > > >
>><tr> > > > > >><td width="50%"> > > > > >><div class="af|train::join-overflow
> > > > >>af|train::join-overflow:visited"> > > > > >><span></span></div></td>
> > > > >><td> > > > > >><div class="af_train_step_icon_block"> > > > > >><img
src="images\step_visited.png" > > > > >> alt="Visited > > > > Step: > > > >
>>Step 1" > > > > >>width="13px" height="13px"/> > > > > >></div> > > > >
>></td> > > > > >><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_visited"> > > > > >><span></span> > > > > >></div> > > > >
>></td> > > > > >></tr> > > > > >></tbody> > > > > >></table> > > > > >></td>
> > > > >> > > > > >><!-- spacer --> > > > > >><td> > > > > >><div
class="af_train_step_spacer > > > > af_train_step_spacer_visited"> > > > >
>><span></span> > > > > >></div> > > > > >></td> > > > > >> > > > > >><!--
STEP --> > > > > >><td> > > > > >><table cellpadding="0" cellspacing="0"
border="0" > > > > width="100%"> > > > > >><tbody> > > > > >><tr> > > > >
>><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_visited"> > > > > >><span></span></div></td> > > > > >><td> > >
> > >><div class="af_train_step_icon_block"> > > > > >><img
src="images\step_active.png" > alt="Active > > Step: > > > > >>Step 2" > > > >
>>width="13px" height="13px"/> > > > > >></div> > > > > >></td> > > > > >><td
width="50%"> > > > > >><div class="af_train_join > af_train_join_unvisited"> >
> > > >><span></span> > > > > >></div> > > > > >></td> > > > > >></tr> > > > >
>></tbody> > > > > >></table> > > > > >></td> > > > > >> > > > > >><td> > > >
> >><div class="af_train_step_spacer > > > > af_train_step_spacer_unvisited"> >
> > > >><span></span> > > > > >></div> > > > > >></td> > > > > >> > > > >
>><!-- STEP --> > > > > >><td> > > > > >><table cellpadding="0"
cellspacing="0" border="0" > > > > width="100%"> > > > > >><tbody> > > > >
>><tr> > > > > >><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_unvisited"> > > > > >><span></span></div></td> > > > > >><td> >
> > > >><div class="af_train_step_icon_block"> > > > > >><img
src="images\step_unvisited.png" > > > > >>alt="Unvisited > > > > >>Step: Step
3" > > > > >>width="13px" height="13px"/> > > > > >></div> > > > > >></td> > >
> > >><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_disabled"> > > > > >><span></span> > > > > >></div> > > > >
>></td> > > > > >></tr> > > > > >></tbody> > > > > >></table> > > > > >></td>
> > > > >> > > > > >><td><div class="af_train_step_spacer > > > >
>>af_train_step_spacer_disabled"><span></span></div></td> > > > > >> > > > >
>><!-- STEP --> > > > > >><td> > > > > >><table cellpadding="0" cellspacing="0"
border="0" > > > > width="100%"> > > > > >><tbody> > > > > >><tr> > > > >
>><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_disabled"> > > > > >><span></span></div></td> > > > > >><td> > >
> > >><div class="af_train_step_icon_block"> > > > > >><img
src="images\step_disabled.png" > > > > >> alt="Disabled > > > > Step: > > > >
>>Step 4" > > > > >>width="13px" height="13px"/> > > > > >></div> > > > >
>></td> > > > > >><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_disabled"> > > > > >><span></span> > > > > >></div> > > > >
>></td> > > > > >></tr> > > > > >></tbody> > > > > >></table> > > > > >></td>
> > > > >> > > > > >><td> > > > > >><div class="af_train_step_spacer > > > >
af_train_step_spacer_disabled"> > > > > >><span></span> > > > > >></div> > > >
> >></td> > > > > >> > > > > >><!-- STEP --> > > > > >><td> > > > > >><table
cellpadding="0" cellspacing="0" border="0" > > > > width="100%"> > > > >
>><tbody> > > > > >><tr> > > > > >><td width="50%"> > > > > >><div
class="af_train_join > af_train_join_disabled"> > > > > >><span></span> > > >
> >></div> > > > > >></td> > > > > >><td> > > > > >><div
class="af_train_step_icon_block"> > > > > >><img src="images\step_disabled.png"
> > > > >> alt="Disabled > > > > Step: > > > > >>Step 5" > > > >
>>width="13px" height="13px"/> > > > > >></div> > > > > >></td> > > > > >><td
width="50%"> > > > > >><div class="af_train_join > af_train_join_disabled"> >
> > > >><span></span> > > > > >></div> > > > > >></td> > > > > >></tr> > > > >
>></tbody> > > > > >></table> > > > > >></td> > > > > >> > > > > >><td> > > >
> >><div class="af_train_step_spacer > > > > af_train_step_spacer_disabled"> >
> > > >><span></span> > > > > >></div> > > > > >></td> > > > > >> > > > >
>><!-- STEP --> > > > > >><td> > > > > >><table cellpadding="0" cellspacing="0"
border="0" > > > > width="100%"> > > > > >><tbody> > > > > >><tr> > > > >
>><td width="50%"> > > > > >><div class="af_train_join >
af_train_join_disabled"> > > > > >><span></span></div></td> > > > > >><td> > >
> > >><div class="af_train_step_icon_block"> > > > > >><img
src="images\step_disabled.png" > > > > >> alt="Disabled > > > > Step: > > > >
>>Step 5" > > > > >>width="13px" height="13px"/> > > > > >></div> > > > >
>></td> > > > > >><td width="50%"> > > > > >><div class="af_train_join_overflow
> > > > >>af_train_join_overflow_disabled"> > > > > >><span></span> > > > >
>></div> > > > > >></td> > > > > >></tr> > > > > >></tbody> > > > > >></table>
> > > > >></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_spacer > > > > af_train_step_spacer_disabled"> > > > >
>><span></span> > > > > >></div> > > > > >></td> > > > > >> > > > > >><!--
OVERFLOW END --> > > > > >><td> > > > > >><table cellpadding="0"
cellspacing="0" border="0" > > > > width="100%"> > > > > >><tbody> > > > >
>><tr> > > > > >><td width="50%"> > > > > >><div class="af_train_join_overflow
> > > > >>af_train_join_overflow_disabled"> > > > > >><span></span></div></td>
> > > > >><td style="width:1px;"> > > > > >><div
class="af_train_overflow_icon_block"> > > > > >><img
src="images\overflow_end_disabled.png" > > > > >>alt="Next Steps" > > > >
>>width="7px" height="7px"/> > > > > >></div> > > > > >></td> > > > > >><td
width="50%"> > > > > >><div class="af_train_join_overflow"> > > > >
>><span></span> > > > > >></div> > > > > >></td> > > > > >></tr> > > > >
>></tbody> > > > > >></table> > > > > >></td> > > > > >> > > > > >><td><div >
> > > >> class="af_train_parent_spacer"><span></span></div></td> > > > > >> >
> > > >><!-- PARENT END --> > > > > >><td> > > > > >><table cellpadding="0"
cellspacing="0" border="0" > > > > width="100%"> > > > > >><tbody> > > > >
>><tr> > > > > >><td> > > > > >><div class="af_train_parent_end_icon_block"> >
> > > >><img src="images\step_parent_end.png" > > > > >> alt="Process > > > >
A: > > > > >>Step A" > > > > >>width="13px" height="13px"/> > > > > >></div> >
> > > >></td> > > > > >></tr> > > > > >></tbody> > > > > >></table> > > > >
>></td> > > > > >> > > > > >><td rowspan="2"><div > > > >
>>class="af_train_margin_end"><span></span></div></td> > > > > >></tr> > > > >
>> > > > > >><tr> > > > > >><td> > > > > >><div
class="af_train_parent_start_content"></div> > > > > >></td> > > > >
>><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_overflow_start_content"> > > > > >><a href="" > > > >
class="af_train_overflow_link_visited">Previous</a> > > > > >></div> > > > >
>></td> > > > > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_content > > > > af_train_step_content_visited"> > > > >
>><a href="" class="af_train_step_link > > > >
>>af_train_step_link_visited">Step 1</a> > > > > >></div> > > > > >></td> > >
> > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_content > > > > af_train_step_content_active"> > > > >
>><a href="" class="af_train_step_link > > > >
>>af_train_step_link_active">StepStepStep 2</a> > > > > >></div> > > > >
>></td> > > > > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_content > > > > >>af_train_step_content_unvisited"> > > >
> >><a href="" class="af_train_step_link > > > >
>>af_train_step_link_unvisited">Step 3</a> > > > > >></div> > > > > >></td> > >
> > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_content > > > > af_train_step_content_disabled"> > > > >
>><a href="" class="af_train_step_link > > > >
>>af_train_step_link_disabled">Step 4</a> > > > > >></div> > > > > >></td> > >
> > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_content > > > > af_train_step_content_disabled"> > > > >
>><a href="" class="af_train_step_link > > > >
>>af_train_step_link_disabled">StepStepStep 5</a> > > > > >></div> > > > >
>></td> > > > > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_step_content > > > > af_train_step_content_disabled"> > > > >
>><a href="" class="af_train_step_link > > > >
>>af_train_step_link_disabled">StepStep 6</a> > > > > >></div> > > > > >></td>
> > > > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_overflow_end_content"> > > > > >><a href="" > >
class="af_train_overflow_link_disabled">More</a> > > > > >></div> > > > >
>></td> > > > > >><td></td> > > > > >> > > > > >><td> > > > > >><div
class="af_train_parent_end_content"></div> > > > > >></td> > > > > >> > > > >
>></tr> > > > > >></tbody> > > > > >></table> > > > > >> > > > > >></body> > >
> > >></html> > > > > >> > > > > >> > > > > >> > > > > >>- Pavitra > > > > >> >
> > > >>-----Original Message----- > > > > >>From: Simon Lessard
[mailto:[EMAIL PROTECTED] > > > > >>Sent: Tuesday, August 22, 2006 10:59 AM > >
> > >>To: Trinidad - Dev > > > > >>Subject: ADFFACES-60 > > > > >> > > > >
>>Hello, > > > > >> > > > > >>Anyone know if Pavitra is still working on the >
processTrain? If > > > > >>not I'll work on that issue and should be done with
> it tomorrow > > > > >>or > > so. > > > > >>I'll use the following hooks: > >
> > >> > > > > >>af|train > > > > >>af|train::station > > > >
>>af|train::station::join > > > > >>af|train::station::link > > > >
>>af|train::station::left-icon > > > > >>af|train::station::right-icon > > > >
>> > > > > >>The station will accept the following pseudoClass: > > > >
>>:active (except on ::station::join since joins can only be > > > > >>visited
or > > > > >>not) :disabled :overflow-next (except on > ::station::join since
> > > > >>joins can only be visited or > > > > >>not) > > > > >>:overflow-prev
(except on ::station::join since joins > can only > > > > >>be visited or > >
> > >>not) > > > > >>:unvisited > > > > >>:visited > > > > >> > > > > >>And
hopefully :disabled will be combinable with any > of the other > > > >
>>pseduClass. > > > > >> > > > > >>There's one thing I dislike though (and I
think Jeanne does as > > well): > > > > >>the ::left-icon and ::right-icon. A
single icon per station > > > > >>station would be far more interesting.
However, I > cannot find a > > > > >>way to generate markup code accepting one
and not > having a major > > > > >>drawback. So if someone feels inspired I
would be > glad to see a > > better solution. > > > > >> > > > > >>Note: I
already tried the following solution (extract showing > > > > >>only active
station code) <table class="af|train"> > > > > >><tr> > > > > >><td
class="af|train::station:visited::join"> </td> > > > > >><td
class="af|train::station:active" > style="width:1em;"><img > > > >
>>src="af|train::station:active::station-icon"/></td> > > > > >><td
class="af|train::station:unvisited::join"> </td> > > > > >></tr> > > > >
>><tr> > > > > >><td colspan="3" class="af|train::station:active"/> > > > >
>></tr> > > > > >></table> > > > > >> > > > > >>The above code won't work if
af|train::station:active > specifies > > > > >>a width (Which happen to be very
useful if you want > equidistant > > > > >>stations) > > > > >> > > > > >> > >
> > >>Regards, > > > > >> > > > > >>~ Simon > > > > >> > > > > >> > > > > >> >
> > > >> > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >