It should be able to show a tree structure (for example a directory structure).
Requirements
When the widget receives focus then it should the selected element highlighted.
The user should be able to navigate with the ARROW KEYS:
RIGHT should open a subtree if the current element has children.
LEFT should close the subtree of the current element if it has any and it is already opened or should jump to the parent otherwise.
UP should go the previous sibling or the parent if the current element is the first child or should remain at the same position if the current element is the root.
DOWN should jump to the next sibling or the next sibling if the parent or the next sibling of the grandparent (and so on) if the current is last sibling or should stay at the same position if there is no such next element.
PG-DOWN should jump to the last element.
PG-UP should go to the root.
It should be able to accept custom key event handlers: if the user press the predefined key then the given listeners should be notified with the current tree element.
Create a tabview in order to contain text editors and allow users to navigate among them.
Requirements
If there are now tabs then a default message should be shown.
If there are multiple tabs then a tab header are must be shown where the user can see each tab's name.
The active tab must be highlighted.
The tab headers have a minimum and a maximum width so that if there is not enough space they can shrink in size.
If there is not enough space to show all tab headers even on the minimum width then it must be indicated with a small arrow in the left or the right or both depending on where are additional tabs.
If there are multiple tabs and the user presses ALT+LEFT then the next tab left from the current tab must be activated; if the current tab is the leftmost then the rightmost tab should be activated.
If there are multiple tabs and the user presses ALT+RIGHT then the next tab right from the current tab must be activated; if the current is the rightmost then the leftmost tab should be activated.
If the user presses ALT-DOWN then a TypeInList selector should be shown with all the tab names in it and if the user selects one of the tabs then that tab should be activated.
The selected tab's header needs always be visible, so after changing tab the view might required to be changed.
It should provide a text field into which the user can type in the path and the name of the file which he/she would like to open.
Requirements
If the user hits TAB then a GridSelector should be shown with the filenames in the current working directory match the last path segment has already typed in.
If the user hits the ESC the GridSelector should disappear.
If the user hitsTAB again the focus should move to the first element in the GridSelector
In the GridSelector the user should be able to navigate among filenames with TAB, SHIFT+TAB and the ARROW- keys, and the selected filename should replace the last segment of the already typed in path inside the TextField.
If the user continues typing then the file names must be filtered accordingly even if the GridSelector has already been visible and the path's last segment must be restored and extended inside the TextField.
If the user hits ESC then the GridSelector must disappear and the value of last segments should be restored.
If the user selects a directory from the list and type / then the GridSelector should disappear and the current working directory should be changed.
If the user types in an invalid path it must be indicated by changing the TextField's text or background color
If the user hits ENTER on a valid path then the observers should be notified about the selection