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