Hi Ralf,

Great discussion, this is really helpful.

A few comments below with some reply text dropped for compactness. In some 
cases I combined your replies out of order to form one topic to respond 
to.


> > I'm only a little familiar with use of attribute selectors. Would the 
> > equivalent HTML elements have these attributes to be selected?
> 
> Yes. See also http://www.w3.org/TR/CSS21/selector.html#matching-attrs
...
> > My understanding is that it isn't typical to use attribute selection. 
> >  Do you use it alot in RWT?
> 
> I guess attribute selection is not so popular because it is hardly 
> useful in HTML styling. We use it only for style flags so far. I think 
> it fits because it's a separate syntax that allows us not to mix 
> (static) styles with (dynamic) states or (user defined) classes.


Thanks. In my original reply, I had only seen a very small reference to 
this style, two pages, in the CSS book I use,
http://www.amazon.com/DHTML-Fourth-Visual-QuickStart-Guide/dp/032144325X/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1215615814&sr=8-1

(which, btw, I find to be a pretty good book).

Since I'm not a seasoned web hacker, I can't distinguish common usage 
strategies/best practice vs. cool mechanisms being exploited in new ways. 
But your explanation makes sense. Just want to ensure we'd be using the 
mechanisms "appropriately".

Its good that we can handle this style, it provides more expressiveness. 
Once we agree on a technology which meets our needs, we then need to agree 
on our best practice markup approach.  At this time I just want to make 
sure we *can* express our SWT/workbench usage cases (hence the Tab 
Folder/CTabFolder discussion). If it turns out we have several workable 
solutions then all the better, we can debate and agree on the right one 
after.  In the meantime the discussions are great in getting us all up to 
speed on CSS approaches!

 
> > I wonder though how we handle something that has more than one state 
> > variable. For example, our part tab folders have both focus (active) 
and 
> > selected states (CTabFolder only has selected though), which gives us 
> > four cases to style.  Yet I believe the following isn't legal syntax:
> > 
> >         TabFolder:active:selected {
> >         }
> > 
> > (or at least it didn't work way back when I tried it with Matt's 
> > EclipseCon code, the Steady State parser wouldn't handle).
> 
>  From my point of view, this should be valid CSS except the fact that 
> ":selected" is not defined and the CSS spec does not provide for custom 
> pseudo classes.
...
> Could it be that the reason this did not work with Matthew's code is 
> that this code only allows for a singe pseudo class per widget so far?

It was last summer that I did this so I can't recall, I'd need to dig up 
the code.  You're probably right.

> Given that my assumption about the legality of combined pseudo classes 
> is true I would prefer using a pseudo class for this. I'd somehow like 
> to reserve those uppercase attributes for style flags which are always 
> static, and use pseudo classes for changing states.

Agree. There's some important points in here to be debated though.

On the one hand I'm glad the parsers handle multiple pseudo-classes.  On 
the other, clearly this never occurs in normal/html driven CSS since the 
set of pseudo classes is relatively small and fixed (like a dozen), and 
this case of two pseudo classes for an element never comes up.  Plus as 
you point out, the CSS spec does not provide for custom pseudo classes. 

So do we think its the right approach to introducing our own pseudo 
classes?  I like the idea of using it for dynamic state selection since 
that seems its intention. And the fact that the CSS spec doesn't provide 
for new ones is likely more a reflection of its html context.  That is, it 
would only make sense in html if you could also add your own html element 
types.  Thus it seems we'd be following the intention of the feature but 
not the specification, in our own SWT world where perhaps being legal CSS 
isn't such a requirement.  The alternative would be attribute based 
selection but I like the syntax less and its mixing static and dynamic 
inapprorpiately, as you point out.

> We use the CSS parser from Apache Batik

Cool.  Can you provide some reasons why you chose Batik? 

I read that Batik is "smaller and faster than Flute" which is good. Steady 
State is LGPL which is somewhat of a problem for us.  Batik is Apache 
license v2 which I believe is good.  But none of them are 1.0.  Also one 
thing that confuses me about Batik is that its a sub component of an SVG 
toolkit. 

Things I care about, in order:
License
Degree of completion/hardening of the code
Existance of community supporting the code
Footprint and performance
Ease of programming

> > What I've been pondering is whether the tie-in to workbench parts is 
> > that the part names become the CSS class names.
> > ...
> 
> For me this sounds reasonable, after all, styles are always applied to 
> some SWT widget in the end. But I haven't really formed a view on the 
> workbench tie-in yet. Maybe its preferable to provide some higher level 
> styling for workbench parts that keeps the implementation exchangeable? 
> On the other hand, I cannot imagine such a "higher level CSS"...

Yes, so in the end the widgets are the only "real things", and the extent 
to which you can style the UI is exactly limited to the set of properties 
and capabilities of the widgets. But I see four things that can be 
happening in the workbench parts or the workbench model:

There's important semantic information captured in the workbench parts. 
They express our usage of the widgets. On the surface that seems to match 
the notion of a CSS class. 

The parts encode state that can't be extracted from the widgets, but that 
state is important in us making styling decisions.  An example is active 
state for folders, which is comes about through a combination of 
presentation elements DefaultTabFolder+PaneFolder which dynamically modify 
the styling of CTabFolder. What I'd like to see is four styles for 
CTabFolder which get selected based on this combination of workbench and 
widget state.  We can either argue that the state should've been in the 
widget (so say a modification of or subclass of CTabFolder), or we argue 
that there's some higher level component in the workbench that could be 
styled.  Not sure yet.

Its possible that in some cases we have workbench parts that really should 
be backed by a composite widget but instead manipulate the widget elements 
itself (CTabFolder vs. DefaultTabFolder could be one, there may be others, 
we should keep our eyes open for these cases).

I will briefly try to capture a hallway discussion with McQ and Eric 
Moffat (btw, I actually don't agree with this approach so I might not be 
presenting it well): 
The workbench model captures our structural elements and via the factories 
produce the widgets. In theory this allows different widgets to be 
substituted for the same model element (e.g. what was once a table can 
become a tree table).  The model elements define a set of visual 
properties which the factories pick up when creating the widgets.  The 
styling could be at the model level, since there's visual properties in 
the model, and thus you get the same advantage of substitutability of the 
widget (same style sheet gets reused). 
 

This area of workbench and model tie-in is for me still the biggest 
unknown.  Its also critical because it hinges around what value we believe 
the workbench parts provide over the widgets.

Best Regards,
Kevin
_______________________________________________
eclipse-incubator-e4-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev

Reply via email to