private PropertyEditor makeOrResetPropertyEditor()

in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/editor/panel/inspector/InspectorPanelController.java [1748:1978]


    private PropertyEditor makeOrResetPropertyEditor(
            Class<? extends Editor> editorClass, ValuePropertyMetadata propMeta, PropertyEditor propertyEditor) {
        PropertyEditor createdPropertyEditor = propertyEditor;
        if (createdPropertyEditor != null) {
            createdPropertyEditor.setUpdateFromModel(true);
        }
        Set<Class<?>> selectedClasses = getSelectedClasses();
        if (editorClass == I18nStringEditor.class) {
            if (createdPropertyEditor != null) {
                ((I18nStringEditor) createdPropertyEditor).reset(propMeta, selectedClasses, isMultiLinesSupported(selectedClasses, propMeta));
            } else {
                createdPropertyEditor = new I18nStringEditor(propMeta, selectedClasses, isMultiLinesSupported(selectedClasses, propMeta));
            }
        } else if (editorClass == StringEditor.class) {
            if (createdPropertyEditor != null) {
                ((StringEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new StringEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == DoubleEditor.class) {
            assert propMeta instanceof DoublePropertyMetadata;
            DoublePropertyMetadata doublePropMeta = (DoublePropertyMetadata) propMeta;
            if (createdPropertyEditor != null) {
                ((DoubleEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getConstants(doublePropMeta));
            } else {
                createdPropertyEditor = new DoubleEditor(propMeta, selectedClasses, getConstants(doublePropMeta));
            }
        } else if (editorClass == IntegerEditor.class) {
            assert propMeta instanceof IntegerPropertyMetadata;
            IntegerPropertyMetadata integerPropMeta = (IntegerPropertyMetadata) propMeta;
            if (createdPropertyEditor != null) {
                ((IntegerEditor) createdPropertyEditor).reset(propMeta, selectedClasses,
                        getConstants(integerPropMeta), getMin(integerPropMeta), getMax(integerPropMeta));
            } else {
                createdPropertyEditor = new IntegerEditor(propMeta, selectedClasses,
                        getConstants(integerPropMeta), getMin(integerPropMeta), getMax(integerPropMeta));
            }
        } else if (editorClass == BooleanEditor.class) {
            if (createdPropertyEditor != null) {
                ((BooleanEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new BooleanEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == EnumEditor.class) {
            if (createdPropertyEditor != null) {
                ((EnumEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new EnumEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == InsetsEditor.class) {
            if (createdPropertyEditor != null) {
                ((InsetsEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new InsetsEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == BoundedDoubleEditor.class) {
            assert propMeta instanceof DoublePropertyMetadata;
            DoublePropertyMetadata doublePropMeta = (DoublePropertyMetadata) propMeta;
            if (createdPropertyEditor != null) {
                ((BoundedDoubleEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getSelectedInstances(), getConstants(doublePropMeta));
            } else {
                createdPropertyEditor = new BoundedDoubleEditor(propMeta, selectedClasses, getSelectedInstances(), getConstants(doublePropMeta));
            }
        } else if (editorClass == RotateEditor.class) {
            if (createdPropertyEditor != null) {
                ((RotateEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new RotateEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == StyleEditor.class) {
            if (createdPropertyEditor != null) {
                ((StyleEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getEditorController());
            } else {
                createdPropertyEditor = new StyleEditor(propMeta, selectedClasses, getEditorController());
            }
        } else if (editorClass == StyleClassEditor.class) {
            if (createdPropertyEditor != null) {
                ((StyleClassEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getSelectedInstances(), getEditorController());
            } else {
                createdPropertyEditor = new StyleClassEditor(propMeta, selectedClasses, getSelectedInstances(), getEditorController());
            }
        } else if (editorClass == StylesheetEditor.class) {
            if (createdPropertyEditor != null) {
                ((StylesheetEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getEditorController().getFxmlLocation());
            } else {
                createdPropertyEditor = new StylesheetEditor(propMeta, selectedClasses, getEditorController().getFxmlLocation());
            }
        } else if (editorClass == StringListEditor.class) {
            if (createdPropertyEditor != null) {
                ((StringListEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new StringListEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == FxIdEditor.class) {
            String controllerClass = getControllerClass();
            if (createdPropertyEditor != null) {
                ((FxIdEditor) createdPropertyEditor).reset(getSuggestedFxIds(controllerClass), getEditorController());
            } else {
                createdPropertyEditor = new FxIdEditor(getSuggestedFxIds(controllerClass), getEditorController());
            }
        } else if (editorClass == CursorEditor.class) {
            if (createdPropertyEditor != null) {
                ((CursorEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new CursorEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == EventHandlerEditor.class) {
            if (createdPropertyEditor != null) {
                ((EventHandlerEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getSuggestedEventHandlers(getControllerClass()));
            } else {
                createdPropertyEditor = new EventHandlerEditor(propMeta, selectedClasses, getSuggestedEventHandlers(getControllerClass()));
            }
        } else if (editorClass == FunctionalInterfaceEditor.class) {
            if (createdPropertyEditor != null) {
                // "getSuggestedEventHandlers" (a method that already existed in SB code) isn't working right. It simply
                // returns all the methods in the Controller class regardless of if they are good candidates for
                // EventHandlers. We use if because at least this way we'll present all the methods available as
                // auto-suggestions.
                ((FunctionalInterfaceEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getSuggestedEventHandlers(getControllerClass()));
            } else {
                createdPropertyEditor = new FunctionalInterfaceEditor(propMeta, selectedClasses, getSuggestedEventHandlers(getControllerClass()));
            }
        } else if (editorClass == EffectPopupEditor.class) {
            if (createdPropertyEditor != null) {
                ((EffectPopupEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new EffectPopupEditor(propMeta, selectedClasses, getEditorController());
            }
        } else if (editorClass == FontPopupEditor.class) {
            if (createdPropertyEditor != null) {
                ((FontPopupEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getEditorController());
            } else {
                createdPropertyEditor = new FontPopupEditor(propMeta, selectedClasses, getEditorController());
            }
        } else if (editorClass == PaintPopupEditor.class) {
            if (createdPropertyEditor != null) {
                ((PaintPopupEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new PaintPopupEditor(propMeta, selectedClasses, getEditorController());
            }
        } else if (editorClass == ImageEditor.class) {
            if (createdPropertyEditor != null) {
                ((ImageEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getEditorController().getFxmlLocation());
            } else {
                createdPropertyEditor = new ImageEditor(propMeta, selectedClasses, getEditorController().getFxmlLocation());
            }
        } else if (editorClass == BoundsPopupEditor.class) {
            if (createdPropertyEditor != null) {
                ((BoundsPopupEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new BoundsPopupEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == Point3DEditor.class) {
            if (createdPropertyEditor != null) {
                ((Point3DEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new Point3DEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == DividerPositionsEditor.class) {
            if (createdPropertyEditor != null) {
                ((DividerPositionsEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new DividerPositionsEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == TextAlignmentEditor.class) {
            if (createdPropertyEditor != null) {
                ((TextAlignmentEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new TextAlignmentEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == KeyCombinationPopupEditor.class) {
            if (createdPropertyEditor != null) {
                ((KeyCombinationPopupEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getEditorController());
            } else {
                createdPropertyEditor = new KeyCombinationPopupEditor(propMeta, selectedClasses, getEditorController());
            }
        } else if (editorClass == ColumnResizePolicyEditor.class) {
            if (createdPropertyEditor != null) {
                ((ColumnResizePolicyEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new ColumnResizePolicyEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == Rectangle2DPopupEditor.class) {
            if (createdPropertyEditor != null) {
                ((Rectangle2DPopupEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new Rectangle2DPopupEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == ToggleGroupEditor.class) {
            if (createdPropertyEditor != null) {
                ((ToggleGroupEditor) createdPropertyEditor).reset(propMeta, selectedClasses, getSuggestedToggleGroups());
            } else {
                createdPropertyEditor = new ToggleGroupEditor(propMeta, selectedClasses, getSuggestedToggleGroups());
            }
        } else if (editorClass == ButtonTypeEditor.class) {
            if (createdPropertyEditor != null) {
                ((ButtonTypeEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new ButtonTypeEditor(propMeta, selectedClasses);
            }
        } else if (editorClass == DurationEditor.class) {
            if (createdPropertyEditor != null) {
                ((DurationEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new DurationEditor(propMeta, selectedClasses);
            }
        }
        else if(editorClass == IncludeFxmlEditor.class) {
            createdPropertyEditor = createOrResetIncludeFxmlEditor(createdPropertyEditor, selectedClasses, propMeta);
        }
        else if(editorClass == CharsetEditor.class) {
            createdPropertyEditor = createOrResetCharsetEditor(createdPropertyEditor, selectedClasses, propMeta);
        } else if (editorClass == ColorPopupEditor.class) {
            if (createdPropertyEditor != null) {
                createdPropertyEditor.reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new ColorPopupEditor(propMeta, selectedClasses, getEditorController());
            }
        }
        else {
            if (createdPropertyEditor != null) {
                ((GenericEditor) createdPropertyEditor).reset(propMeta, selectedClasses);
            } else {
                createdPropertyEditor = new GenericEditor(propMeta, selectedClasses);
            }
        }
        if(createdPropertyEditor != null)
            createdPropertyEditor.setUpdateFromModel(false);

        return createdPropertyEditor;
    }