Source:
<code>public EditableConfiguration( Configuration config, Collection<EditableIoc> iocs, Collection<Configuration> components, Collection<PV> pvs) { this.name = config.name(); this.description = config.description(); this.synoptic = config.synoptic(); this.isProtected = config.isProtected(); this.allIocs = new ArrayList<>(); this.managerMode = ManagerModeModel.getInstance(); <START> this.enableOrDisableSaveButton = true; <END> this.errorMessageVisibility = false; managerModePv = managerMode.getManagerModeObservable(); for (EditableIoc ioc : iocs) { EditableIoc newIoc = new EditableIoc(ioc, ioc.getDescription()); newIoc.setAvailableMacros(new ArrayList<>(ioc.getAvailableMacros())); this.allIocs.add(newIoc); } this.history = new ArrayList<>(); for (String date : config.getHistory()) { this.history.add(date); } this.pvs = new ArrayList<>(pvs); for (Block block : config.getBlocks()) { EditableBlock eb = new EditableBlock(block); allBlocks.add(eb); if (!block.inComponent()) { makeBlockAvailable(eb); } addRenameListener(eb); } for (Group group : config.getGroups()) { editableGroups.add(new EditableGroup(this, group)); } editableGroups = new ArrayList<>(DisplayUtils.removeOtherGroup(editableGroups)); for (EditableIoc ioc : allIocs) { iocMap.put(ioc.getName(), ioc); } initMacros(iocMap); for (Ioc ioc : config.getIocs()) { addIoc(convertIoc(ioc)); } Collection<Configuration> selectedComponents = getComponentDetails(config.getComponents(), components); editableComponents = new EditableComponents(selectedComponents, components); editableComponents.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { updateComponents(); } }); updateComponents(); setEnableOrDisableSaveButton(); addObserver(); }</code><technical_language>A name "saveButtonEnabled". is true button is enabled, is false is diabled</technical_language>

Target:
public EditableConfiguration( Configuration config, Collection<EditableIoc> iocs, Collection<Configuration> components, Collection<PV> pvs) { this.name = config.name(); this.description = config.description(); this.synoptic = config.synoptic(); this.isProtected = config.isProtected(); originalProtectedFlag = this.isProtected; this.allIocs = new ArrayList<>(); this.managerMode = ManagerModeModel.getInstance(); this.isSaveButtonEnabled = true; this.enableSaveAsButton = true; managerModePv = managerMode.getManagerModeObservable(); for (EditableIoc ioc : iocs) { EditableIoc newIoc = new EditableIoc(ioc, ioc.getDescription()); newIoc.setAvailableMacros(new ArrayList<>(ioc.getAvailableMacros())); this.allIocs.add(newIoc); } this.history = new ArrayList<>(); for (String date : config.getHistory()) { this.history.add(date); } this.pvs = new ArrayList<>(pvs); for (Block block : config.getBlocks()) { EditableBlock eb = new EditableBlock(block); allBlocks.add(eb); if (!block.inComponent()) { makeBlockAvailable(eb); } addRenameListener(eb); } for (Group group : config.getGroups()) { editableGroups.add(new EditableGroup(this, group)); } editableGroups = new ArrayList<>(DisplayUtils.removeOtherGroup(editableGroups)); for (EditableIoc ioc : allIocs) { iocMap.put(ioc.getName(), ioc); } initMacros(iocMap); for (Ioc ioc : config.getIocs()) { addIoc(convertIoc(ioc)); } Collection<Configuration> selectedComponents = getComponentDetails(config.getComponents(), components); editableComponents = new EditableComponents(selectedComponents, components); editableComponents.addPropertyChangeListener(evt -> updateComponents()); updateComponents(); setEnableSaveAsButton(); addObserver(); }