UI Enhancements provides support for selectable user interface themes in Morphic, extra widgets to support a consistent look-and-feel and a framework for easily creating UIs in code.
Where to find the UI Enhancements
From the Package Universes browser in the category: "User Interface"
It has also appeared at least in the beta of Damien Cassou's Squeak Dev pre-built image on Squeak.org
Installation
Via Package Universes (Development universe) is easiest. Choose "User Interface > ToolBuilder Integration" from the left-hand pane. Press the "select package" button then "Install Selections" (at the bottom. Then you might want to use Monticello (see below) to get the latest updates.
Manually via Monticello. Open a Monticello browser, click the "+Repository" button and choose HTTP from the menu. Change the location to 'http://www.squeaksource.com/UIEnhancements' and leave the user and password as squeak ('squeak'). Accept that then click the "Open" button. In the new window (repository inspector), select "Pinesoft-Widgets" in the left-hand pane then the topmost entry (the version) in the right-hand pane. Click the "Load" button and wait until loaded. Repeat, back in the repository inspector, selecting "Pinesoft-ToolBuilder" in the left-hand pane and, again, the topmost version in the right-hand pane. Click the "Load" button and wait. That's it... move on to the next section for how to use it.
Using the UI Enhancements package
Select your preferred theme by using the Squeak Preference Browser (Left-click on your desktop and choose "open..." then select "Preference Browser" from the popup menu. Select the "windows" category to the left then, in the right-hand preferences pane, scroll down and select one of the uiTheme options.
(Alt or Ctrl) with Left/Right arrow buttons will popup a task switcher,
Under MS Windows: releasing the cmd key will remove the popup and switch to the selected window.
Under Linux: you need to move the mouse to generate another event.
Tab/shift-tabs will move focus to next window within System Window applications (except for text editors only shift-tab.)
There are a number of new options in the preferences browser. The description for each should help you.
externalFocusForPluggableText provides keyboard focus indication around the whole pane rather than the actual text
mouseClickForKeyboardFocus requires you to click in a morph for it to take keyboard focus, rather than moving the mouse over it (best if mouseOverForKeyboardFocus is disabled)
windowsActiveOnFirstClick means that when you click an inactive window your mouse click will be passed on to the morph under the mouse cursor as if the window were active at that moment
fadedBackgroundWindows means that inactive windows will appear more "washed out" than the current active window
windowAnimation when enabled shows an animation of the window frame when minimising, maximizing, restoring and closing
noWindowAnimationForClosing overrides the previous setting for closing of windows
windowAnimationDelay is the time, in milliseconds, between each frame of the animation
windowAnimationSteps is the number of animation steps to take (the frame positions are non-linear!).
useThemeSounds enables or disables theme sounds for window events (closing, minimise etc.) currently no sounds are installed for any theme (advanced users only)
showWorldTaskbar hides or shows the "task bar" at the bottom of the screen. Currently, for new/embedded projects, this must be selected on a per-project basis (local mode not functional).
generalizedYellowButtonMenu though an existing preference, should be disabled if you want the right-click (yellow button) menu for tasks in the taskbar
Find a class, say "test". The dialog for the entry of the classname fragment is a new dialog (escape to cancel, or 'n' on the keyboard. Return to accept). The list of classes with "test" in the name is extensive, but now fits neatly on the screen. (OmniBrowser still doesn't use the UIManager unfortunately).
Comments, defects and possible improvements:
Task bar does not work in a Project (see above and below "the UITheme preference must be toggled to see the SystemWindow bar in a new project")
Task bar continually eats up desk space as more and more applications are started (changed to shrink things a bit as more "tasks" accumulate")
Under Linux need to generate another event for Task Switcher to work. (Although, Brad hasn't seen the Task Switcher work on Linux)
User text focus follows the mouse cursor. There has been a proposed fix from Gary C. in the latest UIEnhancments (on SqueakSource only.) Two extra preferences added:
mouseClickForKeyboardFocus: changes for making the #mouseEnter behaviour (i.e take keyboard focus) optional for most basic morphs.
windowsActiveOnFirstClick: allows the first click on an inactive window to properly propagate to the clicked morph after activating its containing window.
Should the UIThemes be available as selections in the usually places: e.g. the Squeak Tab on the left or the Theme... button in the Preference Browser and Preferences window?
A dotted border indicates the current keyboard focus... Currently in an empty text pane a dotted line (to indicate current keyboard focus) appears around a single line instead of the entire text pane.
When opening a new morphic project, the UITheme preference must be toggled to see the SystemWindow bar in a new project. - "Has van der Krieken" (will be looking into that soon)
Suggest a preference to turn on/off the taskbar option. showWorldTaskbar only hides the task bar, it doesn't restore windows to their traditional position on the desktop (although new windows work.)
When right clicking on a window in the task bar, the menu of the task bar appears rather than a "maximize, min, close" dialog of the window, as one would expect (when generalizedYellowButtonMenu is enabled).