Skip to content

Commit ebd9e82

Browse files
authored
Merge pull request #5967 from Jmr3366/jmr_Dev
Lock Player Context Menus
2 parents aa1a5a2 + 4e8a4c2 commit ebd9e82

14 files changed

Lines changed: 99 additions & 10 deletions

File tree

messages/src/main/proto/data_transfer_objects.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ message ServerPolicyDto {
3131
bool vbl_blocks_move = 15;
3232
bool hide_map_select_ui = 16;
3333
bool lock_player_library = 17;
34+
bool is_token_context_locked = 18;
3435
}
3536

3637
message CampaignDto {

src/main/java/net/rptools/maptool/client/AppActions.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1945,6 +1945,30 @@ protected void executeAction() {
19451945
}
19461946
};
19471947

1948+
public static final Action TOGGLE_TOKEN_CONTEXT_LOCK =
1949+
new TranslatedClientAction("action.toggleTokenContextMenuLock") {
1950+
1951+
@Override
1952+
public boolean isAvailable() {
1953+
return MapTool.getPlayer().isGM();
1954+
}
1955+
1956+
@Override
1957+
public boolean isSelected() {
1958+
return MapTool.getServerPolicy().isTokenContextLocked();
1959+
}
1960+
1961+
@Override
1962+
protected void executeAction() {
1963+
var client = MapTool.getClient();
1964+
1965+
ServerPolicy policy = client.getServerPolicy();
1966+
policy.setIsTokenContextLocked(!policy.isTokenContextLocked());
1967+
1968+
client.setServerPolicy(policy);
1969+
client.getServerCommand().setServerPolicy(policy);
1970+
}
1971+
};
19481972
public static final Action START_SERVER =
19491973
new TranslatedClientAction("action.serverStart") {
19501974

@@ -1985,6 +2009,7 @@ protected void executeAction() {
19852009
policy.setPlayersReceiveCampaignMacros(serverProps.getPlayersReceiveCampaignMacros());
19862010
policy.setHiddenMapSelectUI(serverProps.getMapSelectUIHidden());
19872011
policy.setIsTokenEditorLocked(serverProps.getLockTokenEditOnStart());
2012+
policy.setIsTokenContextLocked(serverProps.getLockTokenContextOnStart());
19882013
policy.setIsMovementLocked(serverProps.getLockPlayerMovementOnStart());
19892014
policy.setDisablePlayerAssetPanel(serverProps.getPlayerLibraryLock());
19902015

src/main/java/net/rptools/maptool/client/tool/PointerTool.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,9 @@ public void handleMousePressed(MouseEvent event) {
281281
}
282282
if (SwingUtilities.isRightMouseButton(event)) {
283283
Token token = getTokenAt(event.getX(), event.getY());
284-
if (token == null || !AppUtil.playerOwns(token)) {
284+
if (token == null
285+
|| !AppUtil.playerOwns(token)
286+
|| (!MapTool.getPlayer().isGM() && MapTool.getServerPolicy().isTokenContextLocked())) {
285287
return;
286288
}
287289
tokenUnderMouse = token;
@@ -568,6 +570,9 @@ public void mouseReleased(MouseEvent e) {
568570

569571
// POPUP MENU
570572
if (SwingUtilities.isRightMouseButton(e) && tokenDragOp == null && !isDraggingMap) {
573+
if (!MapTool.getPlayer().isGM() && MapTool.getServerPolicy().isTokenContextLocked()) {
574+
return;
575+
}
571576
final var selectionModel = renderer.getSelectionModel();
572577
if (tokenUnderMouse != null && !selectionModel.isSelected(tokenUnderMouse.getId())) {
573578
if (!SwingUtil.isShiftDown(e)) {

src/main/java/net/rptools/maptool/client/ui/AppMenuBar.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ protected JMenu createToolsMenu() {
191191
menu.add(new RPCheckBoxMenuItem(AppActions.TOGGLE_LINK_PLAYER_VIEW, menu));
192192
menu.add(new RPCheckBoxMenuItem(AppActions.TOGGLE_MOVEMENT_LOCK, menu));
193193
menu.add(new RPCheckBoxMenuItem(AppActions.TOGGLE_TOKEN_EDITOR_LOCK, menu));
194+
menu.add(new RPCheckBoxMenuItem(AppActions.TOGGLE_TOKEN_CONTEXT_LOCK, menu));
194195
menu.add(new RPCheckBoxMenuItem(AppActions.TOGGLE_ZOOM_LOCK, menu));
195196
menu.add(new RPCheckBoxMenuItem(AppActions.TOGGLE_ENFORCE_NOTIFICATION, menu));
196197

src/main/java/net/rptools/maptool/client/ui/MapToolFrame.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,6 +1399,10 @@ public void mousePressed(MouseEvent e) {
13991399
}
14001400
}
14011401
if (!selectedTokenSet.isEmpty()) {
1402+
if (!MapTool.getPlayer().isGM()
1403+
&& MapTool.getServerPolicy().isTokenContextLocked()) {
1404+
return;
1405+
}
14021406
try {
14031407
if (firstToken.getLayer().isStampLayer()) {
14041408
new StampPopupMenu(

src/main/java/net/rptools/maptool/client/ui/macrobuttons/buttongroups/AbstractButtonGroup.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,9 @@ public void mousePressed(MouseEvent event) {}
185185
public void mouseReleased(MouseEvent event) {
186186
Token token = getToken();
187187
if (SwingUtilities.isRightMouseButton(event)) {
188-
if (getPanelClass().equals("CampaignPanel") && !MapTool.getPlayer().isGM()) {
188+
if (!MapTool.getPlayer().isGM()
189+
&& ("CampaignPanel".equals(getPanelClass())
190+
|| MapTool.getServerPolicy().isTokenContextLocked())) {
189191
return;
190192
}
191193
// open button group menu
@@ -280,6 +282,9 @@ public void mouseReleased(MouseEvent event) {
280282
MapTool.getFrame()
281283
.showTokenPropertiesDialog(token, MapTool.getFrame().getCurrentZoneRenderer());
282284
} else if (SwingUtilities.isRightMouseButton(event)) {
285+
if (!MapTool.getPlayer().isGM() && MapTool.getServerPolicy().isTokenContextLocked()) {
286+
return;
287+
}
283288
// open token popup menu
284289
Set<GUID> GUIDSet = new HashSet<GUID>();
285290
GUIDSet.add(tokenId);

src/main/java/net/rptools/maptool/client/ui/macrobuttons/buttongroups/AreaGroup.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ public Dimension getPreferredSize() {
145145
public void mouseReleased(MouseEvent event) {
146146
Token token = getToken();
147147
if (SwingUtilities.isRightMouseButton(event)) {
148-
if ("CampaignPanel".equals(getPanelClass()) && !MapTool.getPlayer().isGM()) {
148+
if (!MapTool.getPlayer().isGM()
149+
&& ("CampaignPanel".equals(getPanelClass())
150+
|| MapTool.getServerPolicy().isTokenContextLocked())) {
149151
return;
150152
}
151153
// open button group menu

src/main/java/net/rptools/maptool/client/ui/macrobuttons/buttons/MacroButton.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ public void mouseReleased(MouseEvent event) {
204204
properties.executeMacro();
205205
}
206206
} else if (SwingUtilities.isRightMouseButton(event)) {
207+
if (!MapTool.getPlayer().isGM() && MapTool.getServerPolicy().isTokenContextLocked()) {
208+
return;
209+
}
207210
if (getPanelClass().equals("GlobalPanel")) {
208211
new MacroButtonPopupMenu(this, panelClass, false).show(this, event.getX(), event.getY());
209212
} else if (getPanelClass().equals("CampaignPanel")) {

src/main/java/net/rptools/maptool/client/ui/macrobuttons/panels/AbstractMacroPanel.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,9 @@ public void mousePressed(MouseEvent event) {}
173173

174174
public void mouseReleased(MouseEvent event) {
175175
if (SwingUtilities.isRightMouseButton(event)) {
176-
if ("CampaignPanel".equals(getPanelClass()) && !MapTool.getPlayer().isGM()) {
176+
if (!MapTool.getPlayer().isGM()
177+
&& ("CampaignPanel".equals(getPanelClass())
178+
|| MapTool.getServerPolicy().isTokenContextLocked())) {
177179
return;
178180
}
179181
// open button group menu

src/main/java/net/rptools/maptool/client/ui/startserverdialog/StartServerDialog.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public class StartServerDialog extends AbeillePanel<StartServerDialogPreferences
4949
private JCheckBox playersCanRevealVision;
5050
private JCheckBox hideMapSelectUI;
5151
private JCheckBox lockTokenEditOnStartup;
52+
private JCheckBox lockTokenContextOnStartup;
5253
private JCheckBox lockPlayerMoveOnStartup;
5354
private JCheckBox lockPlayerLibrary;
5455
private JButton generateGMPassword;
@@ -92,6 +93,7 @@ public String showDialog() {
9293
usePasswordFile = (JCheckBox) getComponent("@usePasswordFile");
9394
hideMapSelectUI = (JCheckBox) getComponent("@hideMapSelectUI");
9495
lockTokenEditOnStartup = (JCheckBox) getComponent("@lockTokenEditOnStartup");
96+
lockTokenContextOnStartup = (JCheckBox) getComponent("@lockTokenContextOnStartup");
9597
lockPlayerMoveOnStartup = (JCheckBox) getComponent("@lockPlayerMovementOnStartup");
9698
lockPlayerLibrary = (JCheckBox) getComponent("@disablePlayerLibrary");
9799

@@ -143,6 +145,7 @@ public String showDialog() {
143145
});
144146
hideMapSelectUI.setSelected(prefs.getMapSelectUIHidden());
145147
lockTokenEditOnStartup.setSelected(prefs.getLockTokenEditOnStart());
148+
lockTokenContextOnStartup.setSelected(prefs.getLockTokenContextOnStart());
146149
lockPlayerMoveOnStartup.setSelected(prefs.getLockPlayerMovementOnStart());
147150
lockPlayerLibrary.setSelected(prefs.getPlayerLibraryLock());
148151

@@ -265,6 +268,7 @@ public void initOKButton() {
265268
prefs.setUseEasyConnect(useEasyConnect.isSelected());
266269
prefs.setMapSelectUIHidden(hideMapSelectUI.isSelected());
267270
prefs.setLockTokenEditOnStart(lockTokenEditOnStartup.isSelected());
271+
prefs.setLockTokenContextOnStart(lockTokenContextOnStartup.isSelected());
268272
prefs.setLockPlayerMovementOnStart(lockPlayerMoveOnStartup.isSelected());
269273
prefs.setPlayerLibraryLock(lockPlayerLibrary.isSelected());
270274

0 commit comments

Comments
 (0)