Hi,
On Thu, May 14, 2009 at 1:12 PM, Vincent Massol <vincent(a)massol.net> wrote:
On May 14, 2009, at 12:47 PM, Marius Dumitru
Florea wrote:
Hi Vincent,
Vincent Massol wrote:
On May 14, 2009, at 11:01 AM, Marius Dumitru
Florea wrote:
> Hi there,
>
> Right now the new WYSIWYG editor allows us to create simple lists
> like
> the following:
>
> ----------8<----------
> * plants
> * animals
> ** invertebrates
> ** vertebrates
> ---------->8----------
>
> By pressing just Enter when the caret is inside a list item we
> create a
> new list item. This is the basic mechanism. It's simple and it
> should
> remain so.
>
> If I want to make the previous list a bit more complex:
>
> ----------8<----------
> * (((= Plants =
>
> Plants are living organisms belonging to the kingdom Plantae.)))
> * (((= Animals =
>
> Animals are a major group of mostly multicellular, eukaryotic
> organisms
> of the kingdom Animalia or Metazoa.
>
> They are divided into:)))
> ** (((== Invertebrates ==
>
> An invertebrate is an animal lacking a vertebral column.)))
> ** (((== Vertebrates ==
>
> Vertebrates are members of the subphylum Vertebrata, chordates with
> backbones or spinal columns.)))
> ---------->8----------
>
> I have to be able to insert new lines inside a list item using the
> Enter
> key but without creating a new list item. Let's consider the
> following
> state:
>
> ----------8<----------
> * (((= Plants =)))
> ---------->8----------
>
> We have a level 1 heading inside a list item. The caret is inside
> the
> heading, at the end. Pressing Enter can have the following three
> outcomes:
>
> 1. Continue editing in the heading, but on a new line:
>
> ----------8<----------
> * (((= Title 1
> x =)))
> ---------->8----------
>
> 2. Continue editing in the same list item but after the heading,
> in a
> paragraph:
>
> ----------8<----------
> * (((= Title 1 =
>
> x)))
> ---------->8----------
>
> 3. Create a new list item:
>
> ----------8<----------
> * (((= Title 1 =)))
> * x
> ---------->8----------
>
> For the first outcome I think we all agree that the user has to
> press
> Shift+Enter. For the second and third outcomes I see two options:
>
> A) Enter for 2 and CTRL/META+Enter for 3
> B) Enter for 3 and CTRL/META+Enter for 2
> (if you see any other options please step up)
I don't think we need META.
I'd go with the simplest:
* when inside a group, use the normal enter behavior for the
underlying element. If you're in a header then enter create a new
paragraph, etc)
* you need to position the cursor after the group in the list item
and
press enter to get a new list item
The problem is that the list item wraps the
group and there's no
(easy)
way to place the caret after the group but in the list item.
That's why I
suggested a visual way to identify the group so it's easy
to see if the caret is inside or outside the group (ie. before the </
div> or after).
In fact the
WYSIWYG editor is not aware of a group: it simply sees a list item
with
content inside. But since the caret is inside a heading the Enter
key is
treated accordingly, even if the heading is inside a list item. That's
why I think we need a META+Enter to be able to get out of the list
item.
Note: another solution could allow to get out of
the group by
pressing
tab but we said we wanted to keep the standard browser tab behavior.
I don't
see how we could use the Tab key.
It would have the same effect as your META+Enter
and would go to the
next list item for example. But again since we don't want to us Tab
it's moot.
If we
really want to introduce a new META+Enter then I'd definitely
vote +1 for A).
BTW how are groups represented visually in the editor? Maybe this is
the real problem?
Groups are not represented visually in a special way. As I said,
the
editor is not aware of them right now. I don't see how drawing a
border
around the group would help (through CSS). Also, in this case the
XWiki
2.0 syntax user is forced to use the group notation in order to add
complex content inside a list item because there's no other means of
doing this so I don't think he would expect to see a border around the
content in the WYSIWYG editor.
I don't agree. For your description above of
the different uses case
you *do* want to differentiate where you're inside a group or not
since the behaviors are not the same. So it makes sense to me to have
some visual clue of a group so that the user knows what behavior he'll
get.
Well, there is no representation of a group per se in the WYSIWYG (you don't
have a visual clue as to whether the caret is **here|** or **here**| ) and
since you don't know where you are you can't get the caret in / out of the
group using the left / right arrow keys.
I'm not aware of any WYSIWYG editor that has such a way of displaying where
exactly the caret is in relation to groups (either in desktop or web WYSIWYG
editors). Additionally, I'm not sure we want to go into this direction since
it poses numerous UI & technical issues.