Max Rydahl Andersen wrote:
I agree with lazy Visual Editor update idea, it should be implemented
some way, for example Swing also does it for painting swing Components.
It looks like now all events are processed in the same thread, where
they were fired.
    

Doing it in a seperate thread is a different enhancement I think, but definitly
also worth it. The current idea is just to not update on every stroke since users
would normally write more than one letter and while he is typing the visual view
does not need to be updated 100% live (especially not when its update seem to be 
so slow in special cases).

  
I have tried to separate of visual editor update on user input into different thread(you can see commnets for JBIDE-675),
and I founded following problems:
1) Modifications of nsIDOM* nodes can be done only in UI thread, if it's done in non UI thread it's crashes a
eclipse.
2)If we update nodes in UI thread, the user input thread are suspended.

Also i have tried to add some delay after change in source editor before update visual editor, I have experimented with different delay
intervals, but this doesn't changed the performance situation and  doesn't helped to make vpe more responsible for user.

Other way that can usefull for us to improve performance it's change event processing in VpeController.notifyChanged, for example
if we add 's' letter to '<te' and get '<tes' first event what we catch it's delete event and we removing all child nodes for '<te' tag, than we
catch add and doesn't processing it, and third event is update event which
we catch for parent node of '<tes' and we updating all children nodes and '<tes' too. Instead of all this for example we can collect all this events
and in result made   only  update  of '<te' to '<tes', and doesn't update parent node and all children nodes.This three modification event we catch in very short
interval.

Also applying cash for VpeCreation data can improve performance by my opinion.

  
I have one more idea about VPE layout. I have crazy idea about getting
rid of tabs at all. We have a Source/Visual part that have a split lets
just have button that can hide source part or visual it almost the same
like having source and visual tabs. You'll say, but we have preview tab.
Why we cannot just let user switch visual part from edit mode to preview
mode.
    

At first I liked this idea..but I actually think it has value to have multiple
tabs for things like preview and possible other types of preview, see e.g. 
http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-iphone/?ca=dgr-eclipse-1
where they have different types of preview.

That being said if we had the "hide/show" visual editor then Source/Visual, Source and Visual could
be collapsed into one - leaving Source/Visual and Preview - but then we should definitly 
find a good shortcut for toggling the visual part.

  
This way it could be any combination of source/visual editing/preview.
    

Yes, but sometime collapsing things too much can make users not realize the feature is there.

  
All actions to control the editor can be placed to Editor Related
toolbar it will contains:
1. Preview Mode toggle button with two states (preview/visual editing);
2. Show Source with two states (source visible/source invisible)
3. Show Visual (visual visible/visual invisible)
4. Enabling/disabling formatting toolbar
5. Refresh
7. Synchronize
4. Preferences
    

The problem with this is where should users click if they want the visual editor back ? 
That part will disappear when you click hide, how do you get it back ?

Maybe adding a simple toolbar to the editor that has:

1. the "selection bar" (the one that shows where you are in the xml)
2. Toggle for source/visual part (possibly let it be an dropdown button with option of what to show (Source only, Visual only, Visual/Source)

  
For asynchronous preview set Synchronize
    

I don't understand this last option ? 

  
So if we are generating ides about VPE, I also have some after playing with

http://jira.jboss.com/jira/browse/JBIDE-1304,
http://jira.jboss.com/jira/browse/JBIDE-1600,
http://jira.jboss.com/jira/browse/JBIDE-1227

I just have finished DocBook preview, it is preview because there are
actually some issues in VPE that doesn't allow me to say it is editor.
Short comment how to use it can be found here
http://jira.jboss.com/jira/browse/JBIDE-1304#action_12402618 with
several screen-shots.
    

Nice! I can use that for my Eclipsecon talk ;)

I think you should put these observations in to a VPE jira and we can take it from there.

/max

  
During my quest I realized there are several problems with  VPE:
1. It always handle tags without prefixes as HTML tags
2. all tags without prefix is stored in same hash map in
VpeTemplateManager and there is no way separate templates for html tags
from docbook tags. That means I can use html tags in DocBook XML and it
will work fine and vice versa.
3. It doesn't shows attributes for xml tags because some exceptions
4. There is no way to process <![CDATA[]> blocks

What would be nice to have:
1. There is dialog with settings for unknown tags, it would be nice not
only setup predefined parameters but do something meaningful: show
unknown tag as known html tag
2. It wold be nice to say VPE use this template from eclipse workspace
or local  file  system  or even load all templates from defined location
(related to http://jira.jboss.com/jira/browse/JBIDE-1600)
3. VPE should provide the way to change default template for unknown tags.
4. VPE should allow points to location where to save templates created
by Template Dialog mentioned above.
5. Combination of points 1 and 4 is a fast way to create simple
templates as I did for DocBook.
    



  
Regards
Denis

Snjezana Peco wrote:
    
Hi,

I have two suggestions for improving performance in the VPE editor:

- lazy Visual Editor update
The Visual editor is updated on every keystroke. I propose to postpone
the update for some time. This means - if a user enters a few keys
quickly, the Visual editor will be updated only once. There is the
org.eclipse.wst.sse.ui.sourcevalidation extenison point within the
Webtools project that can be used for adding this feature. It is also
possible to implement this feature using the code I added when fixing
http://jira.jboss.com/jira/browse/JBIDE-1479 (we could use 400 ms
during editing; this is the default value for the sourcevalidation
extenison point).

- adding the Link (Synchronize) action to the Visual editor next to
the Preferences, Refresh, Page Design Options actions.
This action would be a check box similar to the "Link with editor" in
the Package Explorer view. It would be checked/enabled by default. In
that case, the VPE would behave as it does now. If the user disables
the action, the VPE wouldn't be updated (VpeController.notifyChanged()
wouldn't be called). This would be very useful when editing large JSP
files. The user could always call Refresh (or check Link) to show the
visual part of the editor.

These features are easy to implement and don't require a lot of
changes in the code.

Snjeza






_______________________________________________
jbosstools-dev mailing list
jbosstools-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
      
_______________________________________________
jbosstools-dev mailing list
jbosstools-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev