void (@Nullable InplaceContext inplaceContext) { try { List<RadComponent> selection = myDesigner.getSurfaceArea().getSelection(); if (selection.size() != 1) { return; } myRadComponent = selection.get(0); myProperties = myRadComponent.getInplaceProperties(); if (myProperties.isEmpty()) { myRadComponent = null; myProperties = null; return; } myInplaceComponent = new JPanel(new GridLayoutManager(myProperties.size(), 2)); myInplaceComponent.setBorder(new LineMarginBorder(5, 5, 5, 5)); new AnAction() { @Override public void actionPerformed(@NotNull AnActionEvent e) { finishEditing(false); } }.registerCustomShortcutSet(CommonShortcuts.ESCAPE, myInplaceComponent); myEditors = new ArrayList<>(); JComponent componentToFocus = null; Font font = null; if (inplaceContext == null) { inplaceContext = new InplaceContext(); } int row = 0; for (Property property : myProperties) { JLabel label = new JLabel(property.getName() + ":"); if (font == null) { font = label.getFont().deriveFont(Font.BOLD); } label.setFont(font); myInplaceComponent.add(label, new GridConstraints(row, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, 0, 0, null, null, null)); PropertyEditor editor = property.getEditor(); myEditors.add(editor); JComponent component = editor.getComponent(myRadComponent, myDesigner, property.getValue(myRadComponent), inplaceContext); myInplaceComponent.add(component, new GridConstraints(row++, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, 0, null, null, null)); if (componentToFocus == null) { componentToFocus = editor.getPreferredFocusedComponent(); } } for (PropertyEditor editor : myEditors) { editor.addPropertyEditorListener(myEditorListener); } Rectangle bounds = myRadComponent.getBounds(this); Dimension size = myInplaceComponent.getPreferredSize(); myPreferredWidth = Math.max(size.width, bounds.width); myInplaceComponent.setBounds(bounds.x, bounds.y, myPreferredWidth, size.height); add(myInplaceComponent); myDesigner.getSurfaceArea().addSelectionListener(mySelectionListener); if (componentToFocus == null) { componentToFocus = IdeFocusTraversalPolicy.getPreferredFocusedComponent(myInplaceComponent); } if (componentToFocus == null) { componentToFocus = myInplaceComponent; } if (componentToFocus.requestFocusInWindow()) { myFocusWatcher.install(myInplaceComponent); } else { grabFocus(); final JComponent finalComponentToFocus = componentToFocus; ApplicationManager.getApplication().invokeLater(() -> { finalComponentToFocus.requestFocusInWindow(); myFocusWatcher.install(myInplaceComponent); }); } enableEvents(AWTEvent.MOUSE_EVENT_MASK); repaint(); } catch (Throwable e) { LOG.error(e); } }