What's New in UI Designer in Demetra
New layout editing interface
- Automatic creation of grids when components are dropped on the form. No more "Lay Out in Grid / Break Layout" actions.
- Automatic insertion of grid cells when creating or moving components.
- Improved visual feedback when creating or moving components.
- Automatic deletion of empty grid cells after moving or deleting a component.
- Possibility to modify row/col span of components in a grid container by drag&drop resizing.
- Copying components by Ctrl-dragging.
- Resizable column and row captions for grid containers.
- Possibility to move grid rows and columns by drag & drop.
- Possibility to choose insert destination on paste action.
- Spacers are automatically added when the first component is dropped into a grid container.
- If Shift key is held while adding or moving a component, the insets in design time are extended in order to make it easier to choose the correct drop location for the component.
Complete support for Swing features
- Standard Swing layout managers supported:
- New property types supported:
- Font (with independent overriding of name, size and style)
- ListModel, ComboBoxModel
- Enum (Java 5)
- New components in default palette: JSeparator, JProgressBar, JToolBar, JScrollBar.
- Support for more border types (line and empty) and border properties (size, color, title color/font/position/justification).
- Support for more properties of JTabbedPane tabs: enabled, icon, disabled icon, tooltip.
- Design-time support for JToolBar.
- Support for button groups.
- Support for client properties, with the possibility to define which properties are available for a specific component class.
- "Stub" table model shown in JTable instances in design time.
- Support for nested forms. A form which has a binding for a top-level component can be added to another form even if the class bound to the nested form is not a JComponent.
- Support for indented components in GridLayoutManager (IntelliJ).
- Support for "Align grid with parent" layout option in GridLayoutManager (IntelliJ).
- Placement of components within grid cells is defined by "Horizontal Align" and "Vertical Align" properties, instead of Anchor and Fill.
- Support for custom component creation (components created by arbitrary Java code and not by a default constructor).
- ASM library used instead of BCEL for bytecode instrumentation.
JGoodies Forms support
- Support for FormLayout layout manager.
- Automatic insertion and deletion of gap rows and columns.
- Possibility to edit FormLayout-specific properties of a row or column by selecting the respective row or column caption.
- Support for grouping rows or columns to keep their size equal.
- Possibility to convert from other layout managers to JGoodies Forms.
- Possibility to capture part of the UI of a running Swing application as an UI Designer form.
- Missing mnemonic
- Quickfix: Assign mnemonic
- Duplicate mnemonic
- Quickfix: Assign unique mnemonic
- Radio button not in a group
- Quickfix: Group adjacent buttons
- Quickfix: Add to existing group
- Button group with one button
- No label for component
- Scrollable component not in ScrollPane
- Assignment to UI-bound field (in Java code)
- Support for inspection suppressions
- Increase/decrease indent (Tab, Shift-Tab)
- Surround With (Ctrl-Alt-T) - wraps the selected components in a JPanel, JScrollPane, JSplitPane or JTabbedPane.
- Flatten - the reverse of Surround With. Deletes a container and moves the components that were in the container to the container's parent.
- Duplicate (Ctrl-D) - creates a copy of selected components in the next row of the grid.
- Morph - changes the component to a component of a different class while preserving the values of common properties.
- Choose Locale - selects the locale used to load values of string properties from property files.
- Group/Ungroup Buttons - create or delete ButtonGroups for JRadioButtons.
- Show Grid - toggles visibility of the grid in the designer.
- Show Component Tags - toggles visibility of component tags (showing the field name and type) on large size controls.
- Generate / Form 'main' (in a Java class) - if the class is bound to a UI form, generates a default main() method for instantiating a JFrame and showing the form in it.
- "Navigate to Listener" action (Ctrl-Alt-B) - moves from a component on an UI form to a listener attached to it in a Java class
- "Create Listener" action (Ctrl-O) - generates an anonymous listener class for the component selected in the form.
- New palette implementation, with full drag & drop support and in-place editing.
- Possibility to drop components into a form without adding the component class to the palette ("Non-Palette Component..." option in the palette).
- Component tree and property inspector moved to a toolwindow.
- Drag&drop support in the component tree.
- Highlighting for modified properties with possibility to restore the default value of a modified property.
- Possibility to edit the properties of multiselected components.
- Possibility to edit the values of composite properties (Dimension, Insets) as text.
- Names of bound fields can be automatically generated from component text.
- Assorted minor usability and functionality improvements.
- Possibility to create components from keyboard (Alt+Ins, choose component class, choose insert location)
- Possibility to paste components from keyboard (Ctrl+V, then arrows or Shift+arrows)
- Possibility to select components from keyboard (arrows, Shift+arrows)
- Possibility to move components in a grid (Ctrl+arrows) and resize components (Ctrl+Shift+arrows).