Skip to content

Feature Brainstorming

mthiede edited this page Sep 26, 2011 · 6 revisions

This is a page for brainstorming on new features for Concrete.

Preserve references when elements are renamed

Currently references break when the target element is renamed (i.e. when its identifier changes) and the user has to fix the references manually. The idea would be to keep the references even if the target identifier changes. This would mean that the representation of all affected references would change automatically.

Text Editing support

Here the focus is editing of larger text like sentences or paragraphs. In the simplest case, this could be realized by means of an HTML textarea. What would be even better though is to make any HTML element's content editable. This would mean that the editor automatically has the same look as the result. It means that any mixture of different fonts, markups, etc. could be edited and it would mean that the text could freely float and break lines according the HTML rules. The idea for implementing this is simply to draw (overlay) a cursor at the position to be edited and instantly modify the HTML element's content while the user types.

Taking this one step further, it should be possible to edit models which are "rich text", similar to a WYSIWYG HTML editor or MS Word. A metamodel could contain classes for paragraphs, sentences and words. Words could have attributes like "bold" or "emphasized", a font, font size, etc. Hyperlinks, images and mathematical formulas could be mixed into the text.

Expression support

Currently, expression like models like mathematical formulas are not very convenient to create. For example for creating "a * b + c", the user would have to create a "sum" node, then a "multiplication" node on the left, then a variable reference "a" and so on.

The desired behavior would be to just type "a * b + c" and the same model is create automatically in the background. This could be realized by triggering tree rewriting on special symbols (* and + in this case). So a "*" would replace the element on the left by a multiplication node and it would but the original element as the multiplications left operand. Then it would position the cursor on the multiplications right operand placeholder.

Another issue is automatic creation of "reference" nodes. In the example above "a" is probably a reference to a variable. In order to be a valid part of an expression, the reference must be wrapped by a special model element which is derived from the expression base element. Now, when the user types "a" this wrapped node should be created automatically in the background.

Better browser support

Currently there are problems with other browsers than Firefox and Chrome. Especially Internet Explorer support is desireable given that it is often still the only browser on many user machines, especially in larger companies.

Clone this wiki locally