001package jmri;
002
003import org.openide.util.lookup.ServiceProvider;
004
005/**
006 * Permissions for the Programmers.
007 *
008 * @author Daniel Bergqvist (C) 2025
009 */
010public class PermissionsProgrammer {
011
012    public static final PermissionOwner PERMISSION_OWNER_PROGRAMMING =
013            new PermissionOwnerProgramming();
014
015    public static final Permission PERMISSION_PROGRAMMING_TRACK =
016            new PermissionProgrammingTrack();
017
018    public static final Permission PERMISSION_PROGRAMMING_ON_MAIN =
019            new PermissionProgrammingOnMain();
020
021
022    @ServiceProvider(service = PermissionFactory.class)
023    public static class Factory implements PermissionFactory {
024
025        @Override
026        public void register(PermissionManager manager) {
027            manager.registerOwner(PERMISSION_OWNER_PROGRAMMING);
028            manager.registerPermission(PERMISSION_PROGRAMMING_TRACK);
029            manager.registerPermission(PERMISSION_PROGRAMMING_ON_MAIN);
030        }
031
032    }
033
034
035    public static class PermissionOwnerProgramming implements PermissionOwner {
036
037        @Override
038        public String getName() {
039            return Bundle.getMessage("PermissionOwnerProgramming_PermissionOwnerProgramming");
040        }
041
042    }
043
044    public static class PermissionProgrammingTrack implements BooleanPermission {
045
046        @Override
047        public PermissionOwner getOwner() {
048            return PERMISSION_OWNER_PROGRAMMING;
049        }
050
051        @Override
052        public String getName() {
053            return Bundle.getMessage("PermissionOwnerProgramming_PermissionProgrammingTrack");
054        }
055
056        @Override
057        public BooleanValue getDefaultPermission(Role role) {
058            return BooleanValue.get(role.isAdminRole());
059        }
060
061    }
062
063    public static class PermissionProgrammingOnMain implements BooleanPermission {
064
065        @Override
066        public PermissionOwner getOwner() {
067            return PERMISSION_OWNER_PROGRAMMING;
068        }
069
070        @Override
071        public String getName() {
072            return Bundle.getMessage("PermissionOwnerProgramming_PermissionProgrammingOnMain");
073        }
074
075        @Override
076        public BooleanValue getDefaultPermission(Role role) {
077            return BooleanValue.get(role.isAdminRole());
078        }
079
080    }
081
082    // This class should never be instantiated.
083    private PermissionsProgrammer() {}
084
085}