boolean (final GuiEditor editor, final RadComponent oldComponent, ComponentItem targetItem) { targetItem = InsertComponentProcessor.replaceAnyComponentItem(editor, targetItem, UIDesignerBundle.message("morph.non.palette.component")); if (targetItem == null) { return false; } final RadComponent newComponent = InsertComponentProcessor.createInsertedComponent(editor, targetItem); if (newComponent == null) return false; newComponent.setBinding(oldComponent.getBinding()); newComponent.setCustomLayoutConstraints(oldComponent.getCustomLayoutConstraints()); newComponent.getConstraints().restore(oldComponent.getConstraints()); updateBoundFieldType(editor, oldComponent, targetItem); final IProperty[] oldProperties = oldComponent.getModifiedProperties(); final Palette palette = Palette.getInstance(editor.getProject()); for(IProperty prop: oldProperties) { IntrospectedProperty newProp = palette.getIntrospectedProperty(newComponent, prop.getName()); if (newProp == null || !prop.getClass().equals(newProp.getClass())) continue; Object oldValue = prop.getPropertyValue(oldComponent); try { //noinspection unchecked newProp.setValue(newComponent, oldValue); } catch (Exception e) { // ignore } } retargetComponentProperties(editor, oldComponent, newComponent); final RadContainer parent = oldComponent.getParent(); int index = parent.indexOfComponent(oldComponent); parent.removeComponent(oldComponent); parent.addComponent(newComponent, index); newComponent.setSelected(true); if (oldComponent.isDefaultBinding()) { final String text = FormInspectionUtil.getText(newComponent.getModule(), newComponent); if (text != null) { String binding = BindingProperty.suggestBindingFromText(newComponent, text); if (binding != null) { new BindingProperty(newComponent.getProject()).setValueEx(newComponent, binding); } } newComponent.setDefaultBinding(true); } return true; }