Important Notice - Forums is archived

To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Product icon

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.

Nostalgia from 1.0...

Joonas Lehtinen
1 decade ago May 27, 2010 8:44am

Bumped into a really old early planning memo from 2001 on which UI components
should be included in "MillStone 1.0". The release was later renamed to be 0.2.
Also "MillStone" was later renamed to be "IT Mill Toolkit" and then again to
"Vaadin Framework". Fun to see that after the proposal declared - "naming of the
components is final" - almost all the names were changed based on the feedback ;)
Also it seems that an editor for Netbeans have been in the plans for quite a while...

In any case - here we go. Enjoy :)

- Joonas

Memo for MillStone UI component planning meeting (8,12.11.2001)
Joonas, SamiE, Jurka


Proposal for UI components to be included in MillStone version 1.0

Component, Label, Data, Link, TextEdit, TableLayout, CustomLayout,
MenuTree, TabSheet, Upload, Download, EmbeddedObject, Select, Grid

We also propose that no other UI components will be included and the
naming of the components is final. In addition to the proposed components,
some (yet undesigned) interfaces should be included:
ComponentContainer, Bindable

Package for all the components should be com.itmill.millstone.core.ui


Parent for all UI components. Includes the following properties:
Name, Caption (default ""), Style, Visible (Default visible), Enabled (default true),
Error (textual error state that can be shown to users for the component),
Description (Description of the component, which can be shown in api (as a tooltip
for example)).

Label (extends Component)

Container for static text. Do not contain formatting.

Data (extends Component)

Contains XML-formatted data, which follows some other namespace than the
namespace of the UI description language. This can be used for passing
SVG graphics, static XHTML contents, parameters for flash-generator, ...

Link (extends Component)

Link to some URL. This is needed as in some systems urls can be implemented as
urls with javascript submit, and some systems need usage of buttons.

TextExit (extends Component, implements Bindable)

Implements both one line textedit and multiline editor. Properties:
Multiline (default false), Lines (default 1).

TableLayout (extends Component, Implements ComponentContainer)

Table layout component implements layout component, which allows creation of nxm
table, where subcomponents can be added in specified positions (x,y-i,j). This
allows creation of layouts of components without modifying skins.

CustomLayout (extends Component, Implements ComponentContainer)

Custom layout allows transfer of named subcomponents to skin, where the layout
of the components is defined. (This is exactly the functionality of current
panel implementation)

MenuTree (extends Component, implements ComponentContainer)

Logical thee of subcomponents, where each branch can be visually opened or
closed. By default only one item can be selected, but multiselect can also
be enabled. This also implements URL-parsing, which can be enabled if needed.
All the items are MenuTreeItem-objects, which each can contain subcomponent.
Also MenuTreeItem objects can contain reference to connected object, which
can be queried.

TabSheet (extends Component, implements ComponentContainer)

TabSheet is a container, which contains ComponentContainers and connected labels.
Each label is by default the caption of the container, but can be overwritten.
By selecting the label, the connected container is shown.

Upload (extends Component)

Upload component is used fot receiving files from user. The received file can be
read from the component as a stream or as a whole.

Download (extends Component)

Download component provides files for download to user. The file can be given
to component as a stream or as a whole.

EmbeddedObject (extends Component)

Embeds an binary object and reference to final output. The type of the object
and reference to binary object must be given. Also width and height of the object
can be specified, but the usage of the propertied depend on the object type.
Most typically this is used to place banners or imaged from database to web-site.

Select (extends Component, implements Bindable)

Select component implements logical single and multiselection. User can
ask the select component to be visually of some type (dropdown / radiogroup / ..),
but the exact selection between different selector types is made by the component
and the skin.

Grid (extends Component, implements Bindable, implements ComponentContainer)

Grid component corresponds to Excel sheet, which can contain labels or other
UI components. Binding to POL:s are possible. Edition of bound attributes is
possible. Component implements column and row titles and scrolling of visible
area. Sorting by colums is possible.


Other observations from the meeting

Security framework implements login facility and basic permission editor. These
facilities are designed in separate security meetings.

We could add a editor wizard to netbeans. The purpose of the wizard is
to generate basic java code, which implements UI for editing properties of
a PO.