Child pages
  • What's New in UI Designer in Demetra

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

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:
    • GridBagLayout
    • CardLayout
    • BorderLayout
    • FlowLayout
  • New property types supported:
    • Component
    • Icon,
    • Color
    • 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.

Layout support

  • 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.

Code Generation

  • 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.

Form Snapshots

  • Possibility to capture part of the UI of a running Swing application as an UI Designer form.

UI Inspections

  • 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

New Actions

  • 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.

Listener Support

  • "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.

Interface Improvements

  • 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.

Keyboard Support

  • 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).