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    public static final Permission PERMISSION_ROSTER_ADDED_COLUMNS =
022            new PermissionRosterAddedColumns();
023
024
025    @ServiceProvider(service = PermissionFactory.class)
026    public static class Factory implements PermissionFactory {
027
028        @Override
029        public void register(PermissionManager manager) {
030            manager.registerOwner(PERMISSION_OWNER_PROGRAMMING);
031            manager.registerPermission(PERMISSION_PROGRAMMING_TRACK);
032            manager.registerPermission(PERMISSION_PROGRAMMING_ON_MAIN);
033            manager.registerPermission(PERMISSION_ROSTER_ADDED_COLUMNS);
034        }
035
036    }
037
038
039    public static class PermissionOwnerProgramming implements PermissionOwner {
040
041        @Override
042        public String getName() {
043            return Bundle.getMessage("PermissionOwnerProgramming_PermissionOwnerProgramming");
044        }
045
046    }
047
048    public static class PermissionProgrammingTrack implements BooleanPermission {
049
050        @Override
051        public PermissionOwner getOwner() {
052            return PERMISSION_OWNER_PROGRAMMING;
053        }
054
055        @Override
056        public String getName() {
057            return Bundle.getMessage("PermissionOwnerProgramming_PermissionProgrammingTrack");
058        }
059
060        @Override
061        public BooleanValue getDefaultPermission(Role role) {
062            return BooleanValue.get(role.isAdminRole());
063        }
064
065    }
066
067    public static class PermissionProgrammingOnMain implements BooleanPermission {
068
069        @Override
070        public PermissionOwner getOwner() {
071            return PERMISSION_OWNER_PROGRAMMING;
072        }
073
074        @Override
075        public String getName() {
076            return Bundle.getMessage("PermissionOwnerProgramming_PermissionProgrammingOnMain");
077        }
078
079        @Override
080        public BooleanValue getDefaultPermission(Role role) {
081            return BooleanValue.get(role.isAdminRole());
082        }
083
084    }
085
086    public static class PermissionRosterAddedColumns implements BooleanPermission {
087
088        @Override
089        public PermissionOwner getOwner() {
090            return PERMISSION_OWNER_PROGRAMMING;
091        }
092
093        @Override
094        public String getName() {
095            return Bundle.getMessage("PermissionOwnerProgramming_PermissionRosterAddedColumns");
096        }
097
098        @Override
099        public BooleanValue getDefaultPermission(Role role) {
100            return BooleanValue.get(role.isAdminRole());
101        }
102
103    }
104
105    // This class should never be instantiated.
106    private PermissionsProgrammer() {}
107
108}