public void startEditing(@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);
    }
  }
public void startEditing(@Nullable InplaceContext inplaceContext)