package com.arm.cmsis.pack.project.ui; import org.eclipse.core.expressions.PropertyTester; import org.eclipse.core.resources.IFile; import com.arm.cmsis.pack.common.CmsisConstants; import com.arm.cmsis.pack.enums.EFileRole; import com.arm.cmsis.pack.info.ICpFileInfo; import com.arm.cmsis.pack.project.utils.ProjectUtils; public class RteUpdateConfigFileTester extends PropertyTester { @Override public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { if (property.equalsIgnoreCase("canupdate") || //$NON-NLS-1$ property.equalsIgnoreCase("canmerge")) { //$NON-NLS-1$ IFile file = ProjectUtils.getRteFileResource(receiver); if (file == null || file.isLinked()) { return false; } if(CmsisConstants.RTECONFIG.equals(file.getFileExtension()) || CmsisConstants.RTE_RTE_Components_h.equals(file.getProjectRelativePath().toString())) { return false; } ICpFileInfo fi = ProjectUtils.getCpFileInfo(file); if (fi == null) { return false; } if (property.equalsIgnoreCase("canmerge") && fi.getRole() != EFileRole.CONFIG) { //$NON-NLS-1$ return false; } int versionDiff = fi.getVersionDiff(); if (versionDiff > 2 || versionDiff < 0) { return true; } } return false; } }