<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Panarium</id>
		<title>EiffelStudio: an EiffelSoftware project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Panarium"/>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/Special:Contributions/Panarium"/>
		<updated>2026-05-17T10:38:01Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3775</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3775"/>
				<updated>2006-06-25T13:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
While using an editor like the one provided by EiffelStudio the actual area in a &lt;br /&gt;
text, in thsi case source code, that is actually being edited is restricted to a &lt;br /&gt;
small part of the entire document. Therefor being able to remove text sequences &lt;br /&gt;
from the display without changing the actual text sequence could increase &lt;br /&gt;
productivity. One such approach is to use folding, which is a line-based &lt;br /&gt;
technique that &amp;quot;folds&amp;quot; a block of lines into a single line that is then &lt;br /&gt;
displayed in addition to a special symbol that marks the line as actually being &lt;br /&gt;
a &amp;quot;pile&amp;quot; of lines, and which also serves as the interface to unfold the passage &lt;br /&gt;
back into it's original state (and subsequent fold/unfold operations).&lt;br /&gt;
&lt;br /&gt;
==The Goal==&lt;br /&gt;
The goal of this project was to implement folding support for the &lt;br /&gt;
EiffelStudio editor in order to be able to fold semantic blocks of code such as &lt;br /&gt;
entire features or loop blocks. The source text should however not be modified by this procedure in&lt;br /&gt;
the sense that folding or unfolding a text should not change the AST. In addition folding should also not&lt;br /&gt;
have any affects on any print output. A search for specific parts of code should also be able to enter &lt;br /&gt;
folded text areas. It is also critical that folded areas are always displayed to the user correctly. Nested folding &lt;br /&gt;
(e.g. a loop body in a feature, nested loops etc...) should also be possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Classes=&lt;br /&gt;
&lt;br /&gt;
See our class diagram:&lt;br /&gt;
&lt;br /&gt;
* [http://n.ethz.ch/student/sennol/download/folding_class_diagram.pdf Class diagram, pdf version]&lt;br /&gt;
* [http://n.ethz.ch/student/sennol/download/folding_class_diagram.odt Class diagram, odt (OpenOffice) version]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following testcases have been propsed:&lt;br /&gt;
- write a small application (source code to be provided by author) that includes multiple features, loops and nested loops&lt;br /&gt;
to check the correct creation and display of folded areas (ncl. nested folds).&lt;br /&gt;
&lt;br /&gt;
- print the source code of the application mentioned above with and without folding support. The output&lt;br /&gt;
should be identical.&lt;br /&gt;
&lt;br /&gt;
- compile and run both the source code with and without folding support. The applications behaviour should be identical.&lt;br /&gt;
&lt;br /&gt;
- search for specific words and text segments within folded areas of the source. The search should find such segments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TO DO=&lt;br /&gt;
&lt;br /&gt;
=== Part one :: generating the folding areas ===&lt;br /&gt;
This is the part where the data is gathered and put in to a datastructure to work on.&lt;br /&gt;
Assigned to&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Folding points of interests are gathered from the class ast via click_tool.current_class.ast. the of features of the class include&lt;br /&gt;
* next: EB_FOLDING_AREA&lt;br /&gt;
* previous: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to adjacent folding_areas&lt;br /&gt;
* hidden: BOOLEAN&amp;lt;br&amp;gt;-- flag to indicate if the feature is hidden or not&lt;br /&gt;
* show&lt;br /&gt;
* hide&lt;br /&gt;
* toggle_hidden_status&amp;lt;br&amp;gt;-- manipulate the hidden-flag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA_TREE&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
EB_FOLDING_AREAs are inserted stored in an avl-tree EB_FOLDING_AREA_TREE with doubly-linked leaves. features of the class include&lt;br /&gt;
* first: EB_FOLDING_AREA&lt;br /&gt;
* last: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to the very first and very last folding_areas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_SMART_EDITOR&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
The editor was enchanced to support the generation an maintaining of folding areas. properties and functions include&lt;br /&gt;
* folding_areas: EB_FOLDING_AREA_TREE&amp;lt;br&amp;gt;-- rooting point of the datastructure&lt;br /&gt;
* initialize_folding_areas&amp;lt;br&amp;gt;-- deletes any existing tree &amp;amp; builds it anew from the currently loaded classtext&lt;br /&gt;
* update_folding_areas&amp;lt;br&amp;gt;-- synchronizes with the shown/saved classtext. only executes if the syntax is correct.&lt;br /&gt;
&lt;br /&gt;
=== Part two :: graphical sidebar===&lt;br /&gt;
A breakpoint-sidebar like widget to display our folding-handles in.&lt;br /&gt;
Assigned to&lt;br /&gt;
* ledergec&lt;br /&gt;
* bru&lt;br /&gt;
* lord bubu&lt;br /&gt;
* salmanasar&lt;br /&gt;
* grippus&lt;br /&gt;
* thomas&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
* added grey bar containing EDITOR_TOKEN_FOLDING_POINTs (the thingies to click on)&lt;br /&gt;
* added menu entry to toggle folding-support (edit menu -&amp;gt; toggle folding points)&lt;br /&gt;
* added keyboard shortcut for toggling folding-support (ctrl + p)&lt;br /&gt;
* prepared interface for code-folding (see &amp;quot;part three&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====images speak a thousand words====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Basic bar&lt;br /&gt;
!Code-Folding bar with line numbers bar&lt;br /&gt;
!Code-Folding: menu entry&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Folding margin 1.png|code-folding: basic code-folding bar]]&lt;br /&gt;
|[[Image:Folding margin 2.png|code-folding: code-folding bar with line numbers]]&lt;br /&gt;
|[[Image:Folding_menu_1.png|code-folding: menu entry]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Part three :: text-manipulation===&lt;br /&gt;
* Perro&lt;br /&gt;
* Panarium&lt;br /&gt;
* Exception&lt;br /&gt;
&lt;br /&gt;
=== AST ===&lt;br /&gt;
To be familiar with ES' way of implementing the AST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==done==&lt;br /&gt;
* (half) ADT specified&lt;br /&gt;
* some specifications&lt;br /&gt;
* generation of points/areas-of-interest (aka folding-areas)&lt;br /&gt;
* graphical representation (aka folding bar)&lt;br /&gt;
* togglabillity (sp?) of graphical bar (aka ctrl-p)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
[http://www.moria.de/~michael/fe/folding.html What is a folding editor?]&lt;br /&gt;
&lt;br /&gt;
[http://jerry.cs.uiuc.edu/~plop/plop2003/Papers/Jones-ImplementingASTs.pdf How to implement an AST?]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Visitor_pattern What's the Visitor Design-Pattern?]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unm.edu/~crowley/papers/sds/sds.html A paper about ADT's and text editors] ([http://citeseer.ist.psu.edu/rd/0%2C162545%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/compress/0/papers/cs/1797/http:zSzzSzwww.bolthole.comzSzjwordzSzwppaper.ps.gz/crowley98data.ps download of the file with graphics])&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-ui-fold es-ui-fold@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| sanakan]] (Project leader)&lt;br /&gt;
* [[User:lord Bubu| Lord Bubu]] (Project leader)&lt;br /&gt;
* [[User:Bayt| Bayt]] (Project Supervisor)&lt;br /&gt;
* [[User:Bru| Bru]]&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Grippus| Grippus]]&lt;br /&gt;
* [[User:Ledergec| Ledergec]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Perro| Perro]]&lt;br /&gt;
* [[User:salmanasar| salmanasar]] (aka. David, Quality Checking)&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3774</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3774"/>
				<updated>2006-06-25T13:30:52Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
While using an editor like the one provided by EiffelStudio the actual area in a &lt;br /&gt;
text, in thsi case source code, that is actually being edited is restricted to a &lt;br /&gt;
small part of the entire document. Therefor being able to remove text sequences &lt;br /&gt;
from the display without changing the actual text sequence could increase &lt;br /&gt;
productivity. One such approach is to use folding, which is a line-based &lt;br /&gt;
technique that &amp;quot;folds&amp;quot; a block of lines into a single line that is then &lt;br /&gt;
displayed in addition to a special symbol that marks the line as actually being &lt;br /&gt;
a &amp;quot;pile&amp;quot; of lines, and which also serves as the interface to unfold the passage &lt;br /&gt;
back into it's original state (and subsequent fold/unfold operations).&lt;br /&gt;
&lt;br /&gt;
==The Goal==&lt;br /&gt;
The goal of this project was to implement folding support for the &lt;br /&gt;
EiffelStudio editor in order to be able to fold semantic blocks of code such as &lt;br /&gt;
entire features or loop blocks. The source text should however not be modified by this procedure in&lt;br /&gt;
the sense that folding or unfolding a text should not change the AST. In addition folding should also not&lt;br /&gt;
have any affects on any print output. A search for specific parts of code should also be able to enter &lt;br /&gt;
folded text areas. It is also critical that folded areas are always displayed to the user correctly. Nested folding &lt;br /&gt;
(e.g. a loop body in a feature, nested loops etc...) should also be possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Classes=&lt;br /&gt;
&lt;br /&gt;
See our class diagram:&lt;br /&gt;
&lt;br /&gt;
* [[http://n.ethz.ch/student/sennol/download/folding_class_diagram.pdf | Class diagram, pdf version]]&lt;br /&gt;
* [[http://n.ethz.ch/student/sennol/download/folding_class_diagram.odt | Class diagram, odt (OpenOffice) version]]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following testcases have been propsed:&lt;br /&gt;
- write a small application (source code to be provided by author) that includes multiple features, loops and nested loops&lt;br /&gt;
to check the correct creation and display of folded areas (ncl. nested folds).&lt;br /&gt;
&lt;br /&gt;
- print the source code of the application mentioned above with and without folding support. The output&lt;br /&gt;
should be identical.&lt;br /&gt;
&lt;br /&gt;
- compile and run both the source code with and without folding support. The applications behaviour should be identical.&lt;br /&gt;
&lt;br /&gt;
- search for specific words and text segments within folded areas of the source. The search should find such segments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TO DO=&lt;br /&gt;
&lt;br /&gt;
=== Part one :: generating the folding areas ===&lt;br /&gt;
This is the part where the data is gathered and put in to a datastructure to work on.&lt;br /&gt;
Assigned to&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Folding points of interests are gathered from the class ast via click_tool.current_class.ast. the of features of the class include&lt;br /&gt;
* next: EB_FOLDING_AREA&lt;br /&gt;
* previous: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to adjacent folding_areas&lt;br /&gt;
* hidden: BOOLEAN&amp;lt;br&amp;gt;-- flag to indicate if the feature is hidden or not&lt;br /&gt;
* show&lt;br /&gt;
* hide&lt;br /&gt;
* toggle_hidden_status&amp;lt;br&amp;gt;-- manipulate the hidden-flag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA_TREE&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
EB_FOLDING_AREAs are inserted stored in an avl-tree EB_FOLDING_AREA_TREE with doubly-linked leaves. features of the class include&lt;br /&gt;
* first: EB_FOLDING_AREA&lt;br /&gt;
* last: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to the very first and very last folding_areas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_SMART_EDITOR&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
The editor was enchanced to support the generation an maintaining of folding areas. properties and functions include&lt;br /&gt;
* folding_areas: EB_FOLDING_AREA_TREE&amp;lt;br&amp;gt;-- rooting point of the datastructure&lt;br /&gt;
* initialize_folding_areas&amp;lt;br&amp;gt;-- deletes any existing tree &amp;amp; builds it anew from the currently loaded classtext&lt;br /&gt;
* update_folding_areas&amp;lt;br&amp;gt;-- synchronizes with the shown/saved classtext. only executes if the syntax is correct.&lt;br /&gt;
&lt;br /&gt;
=== Part two :: graphical sidebar===&lt;br /&gt;
A breakpoint-sidebar like widget to display our folding-handles in.&lt;br /&gt;
Assigned to&lt;br /&gt;
* ledergec&lt;br /&gt;
* bru&lt;br /&gt;
* lord bubu&lt;br /&gt;
* salmanasar&lt;br /&gt;
* grippus&lt;br /&gt;
* thomas&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
* added grey bar containing EDITOR_TOKEN_FOLDING_POINTs (the thingies to click on)&lt;br /&gt;
* added menu entry to toggle folding-support (edit menu -&amp;gt; toggle folding points)&lt;br /&gt;
* added keyboard shortcut for toggling folding-support (ctrl + p)&lt;br /&gt;
* prepared interface for code-folding (see &amp;quot;part three&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====images speak a thousand words====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Basic bar&lt;br /&gt;
!Code-Folding bar with line numbers bar&lt;br /&gt;
!Code-Folding: menu entry&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Folding margin 1.png|code-folding: basic code-folding bar]]&lt;br /&gt;
|[[Image:Folding margin 2.png|code-folding: code-folding bar with line numbers]]&lt;br /&gt;
|[[Image:Folding_menu_1.png|code-folding: menu entry]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Part three :: text-manipulation===&lt;br /&gt;
* Perro&lt;br /&gt;
* Panarium&lt;br /&gt;
* Exception&lt;br /&gt;
&lt;br /&gt;
=== AST ===&lt;br /&gt;
To be familiar with ES' way of implementing the AST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==done==&lt;br /&gt;
* (half) ADT specified&lt;br /&gt;
* some specifications&lt;br /&gt;
* generation of points/areas-of-interest (aka folding-areas)&lt;br /&gt;
* graphical representation (aka folding bar)&lt;br /&gt;
* togglabillity (sp?) of graphical bar (aka ctrl-p)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
[http://www.moria.de/~michael/fe/folding.html What is a folding editor?]&lt;br /&gt;
&lt;br /&gt;
[http://jerry.cs.uiuc.edu/~plop/plop2003/Papers/Jones-ImplementingASTs.pdf How to implement an AST?]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Visitor_pattern What's the Visitor Design-Pattern?]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unm.edu/~crowley/papers/sds/sds.html A paper about ADT's and text editors] ([http://citeseer.ist.psu.edu/rd/0%2C162545%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/compress/0/papers/cs/1797/http:zSzzSzwww.bolthole.comzSzjwordzSzwppaper.ps.gz/crowley98data.ps download of the file with graphics])&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-ui-fold es-ui-fold@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| sanakan]] (Project leader)&lt;br /&gt;
* [[User:lord Bubu| Lord Bubu]] (Project leader)&lt;br /&gt;
* [[User:Bayt| Bayt]] (Project Supervisor)&lt;br /&gt;
* [[User:Bru| Bru]]&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Grippus| Grippus]]&lt;br /&gt;
* [[User:Ledergec| Ledergec]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Perro| Perro]]&lt;br /&gt;
* [[User:salmanasar| salmanasar]] (aka. David, Quality Checking)&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3773</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3773"/>
				<updated>2006-06-25T13:29:48Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
While using an editor like the one provided by EiffelStudio the actual area in a &lt;br /&gt;
text, in thsi case source code, that is actually being edited is restricted to a &lt;br /&gt;
small part of the entire document. Therefor being able to remove text sequences &lt;br /&gt;
from the display without changing the actual text sequence could increase &lt;br /&gt;
productivity. One such approach is to use folding, which is a line-based &lt;br /&gt;
technique that &amp;quot;folds&amp;quot; a block of lines into a single line that is then &lt;br /&gt;
displayed in addition to a special symbol that marks the line as actually being &lt;br /&gt;
a &amp;quot;pile&amp;quot; of lines, and which also serves as the interface to unfold the passage &lt;br /&gt;
back into it's original state (and subsequent fold/unfold operations).&lt;br /&gt;
&lt;br /&gt;
==The Goal==&lt;br /&gt;
The goal of this project was to implement folding support for the &lt;br /&gt;
EiffelStudio editor in order to be able to fold semantic blocks of code such as &lt;br /&gt;
entire features or loop blocks. The source text should however not be modified by this procedure in&lt;br /&gt;
the sense that folding or unfolding a text should not change the AST. In addition folding should also not&lt;br /&gt;
have any affects on any print output. A search for specific parts of code should also be able to enter &lt;br /&gt;
folded text areas. It is also critical that folded areas are always displayed to the user correctly. Nested folding &lt;br /&gt;
(e.g. a loop body in a feature, nested loops etc...) should also be possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Classes=&lt;br /&gt;
&lt;br /&gt;
See our class diagram:&lt;br /&gt;
&lt;br /&gt;
* [[http://n.ethz.ch/student/sennol/download/folding_class_diagram.pdf|Class diagram, pdf version]]&lt;br /&gt;
* [[http://n.ethz.ch/student/sennol/download/folding_class_diagram.odt|Class diagram, odt (OpenOffice) version]]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following testcases have been propsed:&lt;br /&gt;
- write a small application (source code to be provided by author) that includes multiple features, loops and nested loops&lt;br /&gt;
to check the correct creation and display of folded areas (ncl. nested folds).&lt;br /&gt;
&lt;br /&gt;
- print the source code of the application mentioned above with and without folding support. The output&lt;br /&gt;
should be identical.&lt;br /&gt;
&lt;br /&gt;
- compile and run both the source code with and without folding support. The applications behaviour should be identical.&lt;br /&gt;
&lt;br /&gt;
- search for specific words and text segments within folded areas of the source. The search should find such segments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TO DO=&lt;br /&gt;
&lt;br /&gt;
=== Part one :: generating the folding areas ===&lt;br /&gt;
This is the part where the data is gathered and put in to a datastructure to work on.&lt;br /&gt;
Assigned to&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Folding points of interests are gathered from the class ast via click_tool.current_class.ast. the of features of the class include&lt;br /&gt;
* next: EB_FOLDING_AREA&lt;br /&gt;
* previous: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to adjacent folding_areas&lt;br /&gt;
* hidden: BOOLEAN&amp;lt;br&amp;gt;-- flag to indicate if the feature is hidden or not&lt;br /&gt;
* show&lt;br /&gt;
* hide&lt;br /&gt;
* toggle_hidden_status&amp;lt;br&amp;gt;-- manipulate the hidden-flag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA_TREE&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
EB_FOLDING_AREAs are inserted stored in an avl-tree EB_FOLDING_AREA_TREE with doubly-linked leaves. features of the class include&lt;br /&gt;
* first: EB_FOLDING_AREA&lt;br /&gt;
* last: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to the very first and very last folding_areas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_SMART_EDITOR&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
The editor was enchanced to support the generation an maintaining of folding areas. properties and functions include&lt;br /&gt;
* folding_areas: EB_FOLDING_AREA_TREE&amp;lt;br&amp;gt;-- rooting point of the datastructure&lt;br /&gt;
* initialize_folding_areas&amp;lt;br&amp;gt;-- deletes any existing tree &amp;amp; builds it anew from the currently loaded classtext&lt;br /&gt;
* update_folding_areas&amp;lt;br&amp;gt;-- synchronizes with the shown/saved classtext. only executes if the syntax is correct.&lt;br /&gt;
&lt;br /&gt;
=== Part two :: graphical sidebar===&lt;br /&gt;
A breakpoint-sidebar like widget to display our folding-handles in.&lt;br /&gt;
Assigned to&lt;br /&gt;
* ledergec&lt;br /&gt;
* bru&lt;br /&gt;
* lord bubu&lt;br /&gt;
* salmanasar&lt;br /&gt;
* grippus&lt;br /&gt;
* thomas&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
* added grey bar containing EDITOR_TOKEN_FOLDING_POINTs (the thingies to click on)&lt;br /&gt;
* added menu entry to toggle folding-support (edit menu -&amp;gt; toggle folding points)&lt;br /&gt;
* added keyboard shortcut for toggling folding-support (ctrl + p)&lt;br /&gt;
* prepared interface for code-folding (see &amp;quot;part three&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====images speak a thousand words====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Basic bar&lt;br /&gt;
!Code-Folding bar with line numbers bar&lt;br /&gt;
!Code-Folding: menu entry&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Folding margin 1.png|code-folding: basic code-folding bar]]&lt;br /&gt;
|[[Image:Folding margin 2.png|code-folding: code-folding bar with line numbers]]&lt;br /&gt;
|[[Image:Folding_menu_1.png|code-folding: menu entry]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Part three :: text-manipulation===&lt;br /&gt;
* Perro&lt;br /&gt;
* Panarium&lt;br /&gt;
* Exception&lt;br /&gt;
&lt;br /&gt;
=== AST ===&lt;br /&gt;
To be familiar with ES' way of implementing the AST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==done==&lt;br /&gt;
* (half) ADT specified&lt;br /&gt;
* some specifications&lt;br /&gt;
* generation of points/areas-of-interest (aka folding-areas)&lt;br /&gt;
* graphical representation (aka folding bar)&lt;br /&gt;
* togglabillity (sp?) of graphical bar (aka ctrl-p)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
[http://www.moria.de/~michael/fe/folding.html What is a folding editor?]&lt;br /&gt;
&lt;br /&gt;
[http://jerry.cs.uiuc.edu/~plop/plop2003/Papers/Jones-ImplementingASTs.pdf How to implement an AST?]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Visitor_pattern What's the Visitor Design-Pattern?]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unm.edu/~crowley/papers/sds/sds.html A paper about ADT's and text editors] ([http://citeseer.ist.psu.edu/rd/0%2C162545%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/compress/0/papers/cs/1797/http:zSzzSzwww.bolthole.comzSzjwordzSzwppaper.ps.gz/crowley98data.ps download of the file with graphics])&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-ui-fold es-ui-fold@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| sanakan]] (Project leader)&lt;br /&gt;
* [[User:lord Bubu| Lord Bubu]] (Project leader)&lt;br /&gt;
* [[User:Bayt| Bayt]] (Project Supervisor)&lt;br /&gt;
* [[User:Bru| Bru]]&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Grippus| Grippus]]&lt;br /&gt;
* [[User:Ledergec| Ledergec]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Perro| Perro]]&lt;br /&gt;
* [[User:salmanasar| salmanasar]] (aka. David, Quality Checking)&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3772</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3772"/>
				<updated>2006-06-25T13:26:32Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
While using an editor like the one provided by EiffelStudio the actual area in a &lt;br /&gt;
text, in thsi case source code, that is actually being edited is restricted to a &lt;br /&gt;
small part of the entire document. Therefor being able to remove text sequences &lt;br /&gt;
from the display without changing the actual text sequence could increase &lt;br /&gt;
productivity. One such approach is to use folding, which is a line-based &lt;br /&gt;
technique that &amp;quot;folds&amp;quot; a block of lines into a single line that is then &lt;br /&gt;
displayed in addition to a special symbol that marks the line as actually being &lt;br /&gt;
a &amp;quot;pile&amp;quot; of lines, and which also serves as the interface to unfold the passage &lt;br /&gt;
back into it's original state (and subsequent fold/unfold operations).&lt;br /&gt;
&lt;br /&gt;
==The Goal==&lt;br /&gt;
The goal of this project was to implement folding support for the &lt;br /&gt;
EiffelStudio editor in order to be able to fold semantic blocks of code such as &lt;br /&gt;
entire features or loop blocks. The source text should however not be modified by this procedure in&lt;br /&gt;
the sense that folding or unfolding a text should not change the AST. In addition folding should also not&lt;br /&gt;
have any affects on any print output. A search for specific parts of code should also be able to enter &lt;br /&gt;
folded text areas. It is also critical that folded areas are always displayed to the user correctly. Nested folding &lt;br /&gt;
(e.g. a loop body in a feature, nested loops etc...) should also be possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Classes=&lt;br /&gt;
&lt;br /&gt;
See our class diagram:&lt;br /&gt;
&lt;br /&gt;
- [[class_diagram.pdf]]&lt;br /&gt;
&lt;br /&gt;
- [[class diagram, odt]]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following testcases have been propsed:&lt;br /&gt;
- write a small application (source code to be provided by author) that includes multiple features, loops and nested loops&lt;br /&gt;
to check the correct creation and display of folded areas (ncl. nested folds).&lt;br /&gt;
&lt;br /&gt;
- print the source code of the application mentioned above with and without folding support. The output&lt;br /&gt;
should be identical.&lt;br /&gt;
&lt;br /&gt;
- compile and run both the source code with and without folding support. The applications behaviour should be identical.&lt;br /&gt;
&lt;br /&gt;
- search for specific words and text segments within folded areas of the source. The search should find such segments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TO DO=&lt;br /&gt;
&lt;br /&gt;
=== Part one :: generating the folding areas ===&lt;br /&gt;
This is the part where the data is gathered and put in to a datastructure to work on.&lt;br /&gt;
Assigned to&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Folding points of interests are gathered from the class ast via click_tool.current_class.ast. the of features of the class include&lt;br /&gt;
* next: EB_FOLDING_AREA&lt;br /&gt;
* previous: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to adjacent folding_areas&lt;br /&gt;
* hidden: BOOLEAN&amp;lt;br&amp;gt;-- flag to indicate if the feature is hidden or not&lt;br /&gt;
* show&lt;br /&gt;
* hide&lt;br /&gt;
* toggle_hidden_status&amp;lt;br&amp;gt;-- manipulate the hidden-flag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA_TREE&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
EB_FOLDING_AREAs are inserted stored in an avl-tree EB_FOLDING_AREA_TREE with doubly-linked leaves. features of the class include&lt;br /&gt;
* first: EB_FOLDING_AREA&lt;br /&gt;
* last: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to the very first and very last folding_areas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_SMART_EDITOR&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
The editor was enchanced to support the generation an maintaining of folding areas. properties and functions include&lt;br /&gt;
* folding_areas: EB_FOLDING_AREA_TREE&amp;lt;br&amp;gt;-- rooting point of the datastructure&lt;br /&gt;
* initialize_folding_areas&amp;lt;br&amp;gt;-- deletes any existing tree &amp;amp; builds it anew from the currently loaded classtext&lt;br /&gt;
* update_folding_areas&amp;lt;br&amp;gt;-- synchronizes with the shown/saved classtext. only executes if the syntax is correct.&lt;br /&gt;
&lt;br /&gt;
=== Part two :: graphical sidebar===&lt;br /&gt;
A breakpoint-sidebar like widget to display our folding-handles in.&lt;br /&gt;
Assigned to&lt;br /&gt;
* ledergec&lt;br /&gt;
* bru&lt;br /&gt;
* lord bubu&lt;br /&gt;
* salmanasar&lt;br /&gt;
* grippus&lt;br /&gt;
* thomas&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
* added grey bar containing EDITOR_TOKEN_FOLDING_POINTs (the thingies to click on)&lt;br /&gt;
* added menu entry to toggle folding-support (edit menu -&amp;gt; toggle folding points)&lt;br /&gt;
* added keyboard shortcut for toggling folding-support (ctrl + p)&lt;br /&gt;
* prepared interface for code-folding (see &amp;quot;part three&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====images speak a thousand words====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Basic bar&lt;br /&gt;
!Code-Folding bar with line numbers bar&lt;br /&gt;
!Code-Folding: menu entry&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Folding margin 1.png|code-folding: basic code-folding bar]]&lt;br /&gt;
|[[Image:Folding margin 2.png|code-folding: code-folding bar with line numbers]]&lt;br /&gt;
|[[Image:Folding_menu_1.png|code-folding: menu entry]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Part three :: text-manipulation===&lt;br /&gt;
* Perro&lt;br /&gt;
* Panarium&lt;br /&gt;
* Exception&lt;br /&gt;
&lt;br /&gt;
=== AST ===&lt;br /&gt;
To be familiar with ES' way of implementing the AST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==done==&lt;br /&gt;
* (half) ADT specified&lt;br /&gt;
* some specifications&lt;br /&gt;
* generation of points/areas-of-interest (aka folding-areas)&lt;br /&gt;
* graphical representation (aka folding bar)&lt;br /&gt;
* togglabillity (sp?) of graphical bar (aka ctrl-p)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
[http://www.moria.de/~michael/fe/folding.html What is a folding editor?]&lt;br /&gt;
&lt;br /&gt;
[http://jerry.cs.uiuc.edu/~plop/plop2003/Papers/Jones-ImplementingASTs.pdf How to implement an AST?]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Visitor_pattern What's the Visitor Design-Pattern?]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unm.edu/~crowley/papers/sds/sds.html A paper about ADT's and text editors] ([http://citeseer.ist.psu.edu/rd/0%2C162545%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/compress/0/papers/cs/1797/http:zSzzSzwww.bolthole.comzSzjwordzSzwppaper.ps.gz/crowley98data.ps download of the file with graphics])&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-ui-fold es-ui-fold@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| sanakan]] (Project leader)&lt;br /&gt;
* [[User:lord Bubu| Lord Bubu]] (Project leader)&lt;br /&gt;
* [[User:Bayt| Bayt]] (Project Supervisor)&lt;br /&gt;
* [[User:Bru| Bru]]&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Grippus| Grippus]]&lt;br /&gt;
* [[User:Ledergec| Ledergec]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Perro| Perro]]&lt;br /&gt;
* [[User:salmanasar| salmanasar]] (aka. David, Quality Checking)&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3771</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3771"/>
				<updated>2006-06-25T13:21:48Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
While using an editor like the one provided by EiffelStudio the actual area in a &lt;br /&gt;
text, in thsi case source code, that is actually being edited is restricted to a &lt;br /&gt;
small part of the entire document. Therefor being able to remove text sequences &lt;br /&gt;
from the display without changing the actual text sequence could increase &lt;br /&gt;
productivity. One such approach is to use folding, which is a line-based &lt;br /&gt;
technique that &amp;quot;folds&amp;quot; a block of lines into a single line that is then &lt;br /&gt;
displayed in addition to a special symbol that marks the line as actually being &lt;br /&gt;
a &amp;quot;pile&amp;quot; of lines, and which also serves as the interface to unfold the passage &lt;br /&gt;
back into it's original state (and subsequent fold/unfold operations).&lt;br /&gt;
&lt;br /&gt;
==The Goal==&lt;br /&gt;
The goal of this project was to implement folding support for the &lt;br /&gt;
EiffelStudio editor in order to be able to fold semantic blocks of code such as &lt;br /&gt;
entire features or loop blocks. The source text should however not be modified by this procedure in&lt;br /&gt;
the sense that folding or unfolding a text should not change the AST. In addition folding should also not&lt;br /&gt;
have any affects on any print output. A search for specific parts of code should also be able to enter &lt;br /&gt;
folded text areas. It is also critical that folded areas are always displayed to the user correctly. Nested folding &lt;br /&gt;
(e.g. a loop body in a feature, nested loops etc...) should also be possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Classes=&lt;br /&gt;
&lt;br /&gt;
See our class diagram:&lt;br /&gt;
&lt;br /&gt;
- [[class diagram, pdf]]&lt;br /&gt;
&lt;br /&gt;
- [[class diagram, odt]]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following testcases have been propsed:&lt;br /&gt;
- write a small application (source code to be provided by author) that includes multiple features, loops and nested loops&lt;br /&gt;
to check the correct creation and display of folded areas (ncl. nested folds).&lt;br /&gt;
&lt;br /&gt;
- print the source code of the application mentioned above with and without folding support. The output&lt;br /&gt;
should be identical.&lt;br /&gt;
&lt;br /&gt;
- compile and run both the source code with and without folding support. The applications behaviour should be identical.&lt;br /&gt;
&lt;br /&gt;
- search for specific words and text segments within folded areas of the source. The search should find such segments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TO DO=&lt;br /&gt;
&lt;br /&gt;
=== Part one :: generating the folding areas ===&lt;br /&gt;
This is the part where the data is gathered and put in to a datastructure to work on.&lt;br /&gt;
Assigned to&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Folding points of interests are gathered from the class ast via click_tool.current_class.ast. the of features of the class include&lt;br /&gt;
* next: EB_FOLDING_AREA&lt;br /&gt;
* previous: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to adjacent folding_areas&lt;br /&gt;
* hidden: BOOLEAN&amp;lt;br&amp;gt;-- flag to indicate if the feature is hidden or not&lt;br /&gt;
* show&lt;br /&gt;
* hide&lt;br /&gt;
* toggle_hidden_status&amp;lt;br&amp;gt;-- manipulate the hidden-flag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA_TREE&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
EB_FOLDING_AREAs are inserted stored in an avl-tree EB_FOLDING_AREA_TREE with doubly-linked leaves. features of the class include&lt;br /&gt;
* first: EB_FOLDING_AREA&lt;br /&gt;
* last: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to the very first and very last folding_areas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_SMART_EDITOR&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
The editor was enchanced to support the generation an maintaining of folding areas. properties and functions include&lt;br /&gt;
* folding_areas: EB_FOLDING_AREA_TREE&amp;lt;br&amp;gt;-- rooting point of the datastructure&lt;br /&gt;
* initialize_folding_areas&amp;lt;br&amp;gt;-- deletes any existing tree &amp;amp; builds it anew from the currently loaded classtext&lt;br /&gt;
* update_folding_areas&amp;lt;br&amp;gt;-- synchronizes with the shown/saved classtext. only executes if the syntax is correct.&lt;br /&gt;
&lt;br /&gt;
=== Part two :: graphical sidebar===&lt;br /&gt;
A breakpoint-sidebar like widget to display our folding-handles in.&lt;br /&gt;
Assigned to&lt;br /&gt;
* ledergec&lt;br /&gt;
* bru&lt;br /&gt;
* lord bubu&lt;br /&gt;
* salmanasar&lt;br /&gt;
* grippus&lt;br /&gt;
* thomas&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
* added grey bar containing EDITOR_TOKEN_FOLDING_POINTs (the thingies to click on)&lt;br /&gt;
* added menu entry to toggle folding-support (edit menu -&amp;gt; toggle folding points)&lt;br /&gt;
* added keyboard shortcut for toggling folding-support (ctrl + p)&lt;br /&gt;
* prepared interface for code-folding (see &amp;quot;part three&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====images speak a thousand words====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Basic bar&lt;br /&gt;
!Code-Folding bar with line numbers bar&lt;br /&gt;
!Code-Folding: menu entry&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Folding margin 1.png|code-folding: basic code-folding bar]]&lt;br /&gt;
|[[Image:Folding margin 2.png|code-folding: code-folding bar with line numbers]]&lt;br /&gt;
|[[Image:Folding_menu_1.png|code-folding: menu entry]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Part three :: text-manipulation===&lt;br /&gt;
* Perro&lt;br /&gt;
* Panarium&lt;br /&gt;
* Exception&lt;br /&gt;
&lt;br /&gt;
=== AST ===&lt;br /&gt;
To be familiar with ES' way of implementing the AST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==done==&lt;br /&gt;
* (half) ADT specified&lt;br /&gt;
* some specifications&lt;br /&gt;
* generation of points/areas-of-interest (aka folding-areas)&lt;br /&gt;
* graphical representation (aka folding bar)&lt;br /&gt;
* togglabillity (sp?) of graphical bar (aka ctrl-p)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
[http://www.moria.de/~michael/fe/folding.html What is a folding editor?]&lt;br /&gt;
&lt;br /&gt;
[http://jerry.cs.uiuc.edu/~plop/plop2003/Papers/Jones-ImplementingASTs.pdf How to implement an AST?]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Visitor_pattern What's the Visitor Design-Pattern?]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unm.edu/~crowley/papers/sds/sds.html A paper about ADT's and text editors] ([http://citeseer.ist.psu.edu/rd/0%2C162545%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/compress/0/papers/cs/1797/http:zSzzSzwww.bolthole.comzSzjwordzSzwppaper.ps.gz/crowley98data.ps download of the file with graphics])&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-ui-fold es-ui-fold@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| sanakan]] (Project leader)&lt;br /&gt;
* [[User:lord Bubu| Lord Bubu]] (Project leader)&lt;br /&gt;
* [[User:Bayt| Bayt]] (Project Supervisor)&lt;br /&gt;
* [[User:Bru| Bru]]&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Grippus| Grippus]]&lt;br /&gt;
* [[User:Ledergec| Ledergec]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Perro| Perro]]&lt;br /&gt;
* [[User:salmanasar| salmanasar]] (aka. David, Quality Checking)&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3770</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=3770"/>
				<updated>2006-06-25T13:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
While using an editor like the one provided by EiffelStudio the actual area in a &lt;br /&gt;
text, in thsi case source code, that is actually being edited is restricted to a &lt;br /&gt;
small part of the entire document. Therefor being able to remove text sequences &lt;br /&gt;
from the display without changing the actual text sequence could increase &lt;br /&gt;
productivity. One such approach is to use folding, which is a line-based &lt;br /&gt;
technique that &amp;quot;folds&amp;quot; a block of lines into a single line that is then &lt;br /&gt;
displayed in addition to a special symbol that marks the line as actually being &lt;br /&gt;
a &amp;quot;pile&amp;quot; of lines, and which also serves as the interface to unfold the passage &lt;br /&gt;
back into it's original state (and subsequent fold/unfold operations).&lt;br /&gt;
&lt;br /&gt;
==The Goal==&lt;br /&gt;
The goal of this project was to implement folding support for the &lt;br /&gt;
EiffelStudio editor in order to be able to fold semantic blocks of code such as &lt;br /&gt;
entire features or loop blocks. The source text should however not be modified by this procedure in&lt;br /&gt;
the sense that folding or unfolding a text should not change the AST. In addition folding should also not&lt;br /&gt;
have any affects on any print output. A search for specific parts of code should also be able to enter &lt;br /&gt;
folded text areas. It is also critical that folded areas are always displayed to the user correctly. Nested folding &lt;br /&gt;
(e.g. a loop body in a feature, nested loops etc...) should also be possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Classes=&lt;br /&gt;
&lt;br /&gt;
See our class diagram:&lt;br /&gt;
- [[class diagram, pdf]]&lt;br /&gt;
- [[class diagram, odt]]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following testcases have been propsed:&lt;br /&gt;
- write a small application (source code to be provided by author) that includes multiple features, loops and nested loops&lt;br /&gt;
to check the correct creation and display of folded areas (ncl. nested folds).&lt;br /&gt;
&lt;br /&gt;
- print the source code of the application mentioned above with and without folding support. The output&lt;br /&gt;
should be identical.&lt;br /&gt;
&lt;br /&gt;
- compile and run both the source code with and without folding support. The applications behaviour should be identical.&lt;br /&gt;
&lt;br /&gt;
- search for specific words and text segments within folded areas of the source. The search should find such segments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TO DO=&lt;br /&gt;
&lt;br /&gt;
=== Part one :: generating the folding areas ===&lt;br /&gt;
This is the part where the data is gathered and put in to a datastructure to work on.&lt;br /&gt;
Assigned to&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
Folding points of interests are gathered from the class ast via click_tool.current_class.ast. the of features of the class include&lt;br /&gt;
* next: EB_FOLDING_AREA&lt;br /&gt;
* previous: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to adjacent folding_areas&lt;br /&gt;
* hidden: BOOLEAN&amp;lt;br&amp;gt;-- flag to indicate if the feature is hidden or not&lt;br /&gt;
* show&lt;br /&gt;
* hide&lt;br /&gt;
* toggle_hidden_status&amp;lt;br&amp;gt;-- manipulate the hidden-flag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_FOLDING_AREA_TREE&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt; &lt;br /&gt;
EB_FOLDING_AREAs are inserted stored in an avl-tree EB_FOLDING_AREA_TREE with doubly-linked leaves. features of the class include&lt;br /&gt;
* first: EB_FOLDING_AREA&lt;br /&gt;
* last: EB_FOLDING_AREA&amp;lt;br&amp;gt;-- links to the very first and very last folding_areas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EB_SMART_EDITOR&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
The editor was enchanced to support the generation an maintaining of folding areas. properties and functions include&lt;br /&gt;
* folding_areas: EB_FOLDING_AREA_TREE&amp;lt;br&amp;gt;-- rooting point of the datastructure&lt;br /&gt;
* initialize_folding_areas&amp;lt;br&amp;gt;-- deletes any existing tree &amp;amp; builds it anew from the currently loaded classtext&lt;br /&gt;
* update_folding_areas&amp;lt;br&amp;gt;-- synchronizes with the shown/saved classtext. only executes if the syntax is correct.&lt;br /&gt;
&lt;br /&gt;
=== Part two :: graphical sidebar===&lt;br /&gt;
A breakpoint-sidebar like widget to display our folding-handles in.&lt;br /&gt;
Assigned to&lt;br /&gt;
* ledergec&lt;br /&gt;
* bru&lt;br /&gt;
* lord bubu&lt;br /&gt;
* salmanasar&lt;br /&gt;
* grippus&lt;br /&gt;
* thomas&lt;br /&gt;
* sanakan&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
* added grey bar containing EDITOR_TOKEN_FOLDING_POINTs (the thingies to click on)&lt;br /&gt;
* added menu entry to toggle folding-support (edit menu -&amp;gt; toggle folding points)&lt;br /&gt;
* added keyboard shortcut for toggling folding-support (ctrl + p)&lt;br /&gt;
* prepared interface for code-folding (see &amp;quot;part three&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====images speak a thousand words====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Basic bar&lt;br /&gt;
!Code-Folding bar with line numbers bar&lt;br /&gt;
!Code-Folding: menu entry&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Folding margin 1.png|code-folding: basic code-folding bar]]&lt;br /&gt;
|[[Image:Folding margin 2.png|code-folding: code-folding bar with line numbers]]&lt;br /&gt;
|[[Image:Folding_menu_1.png|code-folding: menu entry]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Part three :: text-manipulation===&lt;br /&gt;
* Perro&lt;br /&gt;
* Panarium&lt;br /&gt;
* Exception&lt;br /&gt;
&lt;br /&gt;
=== AST ===&lt;br /&gt;
To be familiar with ES' way of implementing the AST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==done==&lt;br /&gt;
* (half) ADT specified&lt;br /&gt;
* some specifications&lt;br /&gt;
* generation of points/areas-of-interest (aka folding-areas)&lt;br /&gt;
* graphical representation (aka folding bar)&lt;br /&gt;
* togglabillity (sp?) of graphical bar (aka ctrl-p)&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
[http://www.moria.de/~michael/fe/folding.html What is a folding editor?]&lt;br /&gt;
&lt;br /&gt;
[http://jerry.cs.uiuc.edu/~plop/plop2003/Papers/Jones-ImplementingASTs.pdf How to implement an AST?]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Visitor_pattern What's the Visitor Design-Pattern?]&lt;br /&gt;
&lt;br /&gt;
[http://www.cs.unm.edu/~crowley/papers/sds/sds.html A paper about ADT's and text editors] ([http://citeseer.ist.psu.edu/rd/0%2C162545%2C1%2C0.25%2CDownload/http://citeseer.ist.psu.edu/compress/0/papers/cs/1797/http:zSzzSzwww.bolthole.comzSzjwordzSzwppaper.ps.gz/crowley98data.ps download of the file with graphics])&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-ui-fold es-ui-fold@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| sanakan]] (Project leader)&lt;br /&gt;
* [[User:lord Bubu| Lord Bubu]] (Project leader)&lt;br /&gt;
* [[User:Bayt| Bayt]] (Project Supervisor)&lt;br /&gt;
* [[User:Bru| Bru]]&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Grippus| Grippus]]&lt;br /&gt;
* [[User:Ledergec| Ledergec]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Perro| Perro]]&lt;br /&gt;
* [[User:salmanasar| salmanasar]] (aka. David, Quality Checking)&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=2001</id>
		<title>Folding support</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Folding_support&amp;diff=2001"/>
				<updated>2006-04-20T12:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:EiffelVision2]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
The aim of this project is to enhance Vision with a RichText control that supports folding. The goal is to make this surface in the editor windows of EiffelStudio.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M1: April 25th==&lt;br /&gt;
* set up mailinglist es-ui@origo.ethz.ch ([[User:Schoelle|Bernd]])&lt;br /&gt;
&lt;br /&gt;
==M2: May ??? ==&lt;br /&gt;
* implement support for word wrapping&lt;br /&gt;
* To be completed by the team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
Everyone intrested in this project is welcome to join our mailinglist es-ui@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* [[User:Sanakan| Sanakan]] (Project leader)&lt;br /&gt;
* TODO add 2nd project leader Mario Deuss (Project leader)&lt;br /&gt;
* TODO add project members&lt;br /&gt;
* [[User:Exception| Exception]]&lt;br /&gt;
* [[User:Panarium| Panarium]]&lt;br /&gt;
* [[User:Bayt| Bayt]]&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=2000</id>
		<title>User:Panarium</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=2000"/>
				<updated>2006-04-20T12:06:11Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Oliver Senn&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
email: oli@student.ethz.ch&lt;br /&gt;
skype: panarium&lt;br /&gt;
es project: folding support&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1999</id>
		<title>User:Panarium</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1999"/>
				<updated>2006-04-20T12:05:56Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Oliver Senn&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
email: oli@student.ethz.ch&lt;br /&gt;
skype: panarium&lt;br /&gt;
es project: [[folding]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1998</id>
		<title>User:Panarium</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1998"/>
				<updated>2006-04-20T12:05:23Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Oliver Senn&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
email: oli@student.ethz.ch&lt;br /&gt;
skype: panarium&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1997</id>
		<title>User:Panarium</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1997"/>
				<updated>2006-04-20T12:05:11Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&amp;gt; Oliver Senn&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
email: oli@student.ethz.ch&lt;br /&gt;
skype: panarium&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1996</id>
		<title>User:Panarium</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1996"/>
				<updated>2006-04-20T12:04:21Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;name : Oliver Senn&lt;br /&gt;
&lt;br /&gt;
email: oli 'at' student.ethz.ch&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1995</id>
		<title>User:Panarium</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User:Panarium&amp;diff=1995"/>
				<updated>2006-04-20T12:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;Panarium: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;name : Oliver Senn&lt;br /&gt;
email: oli 'at' student.ethz.ch&lt;/div&gt;</summary>
		<author><name>Panarium</name></author>	</entry>

	</feed>