Skip to content

Commit 76079a9

Browse files
authored
Refactor key-combinations into separate class (#136)
* Refactor key-combinations into separate class. * Add license header.
1 parent 3cc364b commit 76079a9

File tree

8 files changed

+147
-120
lines changed

8 files changed

+147
-120
lines changed

src/main/java/com/github/mfl28/boundingboxeditor/controller/Controller.java

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,63 +1617,4 @@ private void setupStage() {
16171617
}
16181618
});
16191619
}
1620-
1621-
/**
1622-
* Class containing possible key-combinations.
1623-
*/
1624-
public static class KeyCombinations {
1625-
public static final KeyCombination navigateNext = new KeyCodeCombination(KeyCode.D,
1626-
KeyCombination.SHORTCUT_DOWN);
1627-
public static final KeyCombination navigatePrevious = new KeyCodeCombination(KeyCode.A,
1628-
KeyCombination.SHORTCUT_DOWN);
1629-
1630-
public static final List<KeyCode> navigationReleaseKeyCodes = List.of(
1631-
KeyCode.A, KeyCode.D);
1632-
public static final KeyCombination showAllBoundingShapes =
1633-
new KeyCodeCombination(KeyCode.V, KeyCombination.SHORTCUT_DOWN, KeyCombination.ALT_DOWN);
1634-
public static final KeyCombination hideAllBoundingShapes =
1635-
new KeyCodeCombination(KeyCode.H, KeyCombination.SHORTCUT_DOWN, KeyCombination.ALT_DOWN);
1636-
public static final KeyCombination showSelectedBoundingShape =
1637-
new KeyCodeCombination(KeyCode.V, KeyCombination.SHORTCUT_DOWN);
1638-
public static final KeyCombination hideSelectedBoundingShape =
1639-
new KeyCodeCombination(KeyCode.H, KeyCombination.SHORTCUT_DOWN);
1640-
1641-
public static final KeyCombination resetSizeAndCenterImage =
1642-
new KeyCodeCombination(KeyCode.R, KeyCombination.SHORTCUT_DOWN);
1643-
public static final KeyCombination focusCategoryNameTextField =
1644-
new KeyCodeCombination(KeyCode.N, KeyCombination.SHORTCUT_DOWN);
1645-
public static final KeyCombination focusCategorySearchField =
1646-
new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN);
1647-
public static final KeyCombination focusTagTextField =
1648-
new KeyCodeCombination(KeyCode.T, KeyCombination.SHORTCUT_DOWN);
1649-
public static final KeyCombination focusFileSearchField =
1650-
new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN, KeyCombination.ALT_DOWN);
1651-
public static final KeyCombination deleteSelectedBoundingShape = new KeyCodeCombination(KeyCode.DELETE);
1652-
public static final KeyCombination selectRectangleDrawingMode =
1653-
new KeyCodeCombination(KeyCode.DIGIT1, KeyCombination.SHORTCUT_DOWN);
1654-
public static final KeyCombination selectPolygonDrawingMode =
1655-
new KeyCodeCombination(KeyCode.DIGIT2, KeyCombination.SHORTCUT_DOWN);
1656-
public static final KeyCombination selectFreehandDrawingMode =
1657-
new KeyCodeCombination(KeyCode.DIGIT3, KeyCombination.SHORTCUT_DOWN);
1658-
public static final KeyCombination removeEditingVerticesWhenBoundingPolygonSelected =
1659-
new KeyCodeCombination(KeyCode.DELETE, KeyCombination.SHIFT_DOWN);
1660-
public static final KeyCombination addVerticesToPolygon =
1661-
KeyCombination.keyCombination("Shift + Middle-Click inside Polygon");
1662-
public static final KeyCombination changeSelectedBoundingShapeCategory =
1663-
new KeyCodeCombination(KeyCode.C, KeyCombination.SHIFT_DOWN);
1664-
public static final KeyCombination hideNonSelectedBoundingShapes =
1665-
new KeyCodeCombination(KeyCode.H, KeyCombination.SHIFT_DOWN);
1666-
1667-
public static final KeyCombination simplifyPolygon =
1668-
new KeyCodeCombination(KeyCode.S, KeyCombination.SHIFT_DOWN);
1669-
public static final KeyCombination saveBoundingShapeAsImage =
1670-
new KeyCodeCombination(KeyCode.I, KeyCombination.SHIFT_DOWN);
1671-
1672-
public static final KeyCombination openSettings =
1673-
new KeyCodeCombination(KeyCode.COMMA, KeyCombination.SHORTCUT_DOWN);
1674-
1675-
private KeyCombinations() {
1676-
throw new IllegalStateException("Key Combination Class");
1677-
}
1678-
}
16791620
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Copyright (C) 2024 Markus Fleischhacker <[email protected]>
3+
*
4+
* This file is part of Bounding Box Editor
5+
*
6+
* Bounding Box Editor is free software: you can redistribute it and/or modify
7+
* it under the terms of the GNU General Public License as published by
8+
* the Free Software Foundation, either version 3 of the License, or
9+
* (at your option) any later version.
10+
*
11+
* Bounding Box Editor is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
* GNU General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU General Public License
17+
* along with Bounding Box Editor. If not, see <http://www.gnu.org/licenses/>.
18+
*/
19+
package com.github.mfl28.boundingboxeditor.controller;
20+
21+
import javafx.scene.input.KeyCode;
22+
import javafx.scene.input.KeyCodeCombination;
23+
import javafx.scene.input.KeyCombination;
24+
25+
import java.util.List;
26+
27+
/**
28+
* Class containing possible key-combinations.
29+
*/
30+
public class KeyCombinations {
31+
public static final KeyCombination navigateNext = new KeyCodeCombination(KeyCode.D,
32+
KeyCombination.SHORTCUT_DOWN);
33+
public static final KeyCombination navigatePrevious = new KeyCodeCombination(KeyCode.A,
34+
KeyCombination.SHORTCUT_DOWN);
35+
36+
public static final List<KeyCode> navigationReleaseKeyCodes = List.of(
37+
KeyCode.A, KeyCode.D);
38+
public static final KeyCombination showAllBoundingShapes =
39+
new KeyCodeCombination(KeyCode.V, KeyCombination.SHORTCUT_DOWN, KeyCombination.ALT_DOWN);
40+
public static final KeyCombination hideAllBoundingShapes =
41+
new KeyCodeCombination(KeyCode.H, KeyCombination.SHORTCUT_DOWN, KeyCombination.ALT_DOWN);
42+
public static final KeyCombination showSelectedBoundingShape =
43+
new KeyCodeCombination(KeyCode.V, KeyCombination.SHORTCUT_DOWN);
44+
public static final KeyCombination hideSelectedBoundingShape =
45+
new KeyCodeCombination(KeyCode.H, KeyCombination.SHORTCUT_DOWN);
46+
47+
public static final KeyCombination resetSizeAndCenterImage =
48+
new KeyCodeCombination(KeyCode.R, KeyCombination.SHORTCUT_DOWN);
49+
public static final KeyCombination focusCategoryNameTextField =
50+
new KeyCodeCombination(KeyCode.N, KeyCombination.SHORTCUT_DOWN);
51+
public static final KeyCombination focusCategorySearchField =
52+
new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN);
53+
public static final KeyCombination focusTagTextField =
54+
new KeyCodeCombination(KeyCode.T, KeyCombination.SHORTCUT_DOWN);
55+
public static final KeyCombination focusFileSearchField =
56+
new KeyCodeCombination(KeyCode.F, KeyCombination.SHORTCUT_DOWN, KeyCombination.ALT_DOWN);
57+
public static final KeyCombination deleteSelectedBoundingShape = new KeyCodeCombination(KeyCode.DELETE);
58+
public static final KeyCombination selectRectangleDrawingMode =
59+
new KeyCodeCombination(KeyCode.DIGIT1, KeyCombination.SHORTCUT_DOWN);
60+
public static final KeyCombination selectPolygonDrawingMode =
61+
new KeyCodeCombination(KeyCode.DIGIT2, KeyCombination.SHORTCUT_DOWN);
62+
public static final KeyCombination selectFreehandDrawingMode =
63+
new KeyCodeCombination(KeyCode.DIGIT3, KeyCombination.SHORTCUT_DOWN);
64+
public static final KeyCombination removeEditingVerticesWhenBoundingPolygonSelected =
65+
new KeyCodeCombination(KeyCode.DELETE, KeyCombination.SHIFT_DOWN);
66+
public static final KeyCombination addVerticesToPolygon =
67+
KeyCombination.keyCombination("Shift + Middle-Click inside Polygon");
68+
public static final KeyCombination changeSelectedBoundingShapeCategory =
69+
new KeyCodeCombination(KeyCode.C, KeyCombination.SHIFT_DOWN);
70+
public static final KeyCombination hideNonSelectedBoundingShapes =
71+
new KeyCodeCombination(KeyCode.H, KeyCombination.SHIFT_DOWN);
72+
73+
public static final KeyCombination simplifyPolygon =
74+
new KeyCodeCombination(KeyCode.S, KeyCombination.SHIFT_DOWN);
75+
public static final KeyCombination saveBoundingShapeAsImage =
76+
new KeyCodeCombination(KeyCode.I, KeyCombination.SHIFT_DOWN);
77+
78+
public static final KeyCombination openSettings =
79+
new KeyCodeCombination(KeyCode.COMMA, KeyCombination.SHORTCUT_DOWN);
80+
81+
private KeyCombinations() {
82+
throw new IllegalStateException("Key Combination Class");
83+
}
84+
}

src/main/java/com/github/mfl28/boundingboxeditor/ui/EditorToolBarView.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package com.github.mfl28.boundingboxeditor.ui;
2020

2121
import com.github.mfl28.boundingboxeditor.controller.Controller;
22+
import com.github.mfl28.boundingboxeditor.controller.KeyCombinations;
2223
import com.github.mfl28.boundingboxeditor.utils.UiUtils;
2324
import javafx.beans.binding.Bindings;
2425
import javafx.geometry.Pos;
@@ -309,11 +310,11 @@ private ToggleButton createDrawModeButton(String text, String iconCssId) {
309310
private void setUpButtonsAndLabels() {
310311
nextButton.setId(NEXT_BUTTON_ID);
311312
nextButton.setTooltip(UiUtils.createTooltip(NEXT_BUTTON_TOOLTIP_TEXT,
312-
Controller.KeyCombinations.navigateNext));
313+
KeyCombinations.navigateNext));
313314

314315
previousButton.setId(PREVIOUS_BUTTON_ID);
315316
previousButton.setTooltip(UiUtils.createTooltip(PREVIOUS_BUTTON_TOOLTIP_TEXT,
316-
Controller.KeyCombinations.navigatePrevious));
317+
KeyCombinations.navigatePrevious));
317318

318319
brightnessLabel.setId(BRIGHTNESS_LABEL_ID);
319320
brightnessLabel.setTooltip(UiUtils.createTooltip(BRIGHTNESS_LABEL_TOOLTIP));
@@ -328,23 +329,23 @@ private void setUpButtonsAndLabels() {
328329
imageSettingsToolBox.setId(BOUNDING_SHAPE_EDITOR_TOOLBOX_ID);
329330

330331
showBoundingShapesButton.setTooltip(UiUtils.createTooltip(SHOW_BOUNDING_BOXES_BUTTON_TOOLTIP_TEXT,
331-
Controller.KeyCombinations.showAllBoundingShapes));
332+
KeyCombinations.showAllBoundingShapes));
332333
hideBoundingShapesButton.setTooltip(UiUtils.createTooltip(HIDE_BOUNDING_BOXES_BUTTON_TOOLTIP,
333-
Controller.KeyCombinations.hideAllBoundingShapes));
334+
KeyCombinations.hideAllBoundingShapes));
334335
resetSizeAndCenterImageButton.setTooltip(UiUtils.createTooltip(RESET_IMAGE_SIZE_BUTTON_TOOLTIP,
335-
Controller.KeyCombinations.resetSizeAndCenterImage));
336+
KeyCombinations.resetSizeAndCenterImage));
336337

337338
rectangleModeButton.setToggleGroup(modeToggleGroup);
338339
polygonModeButton.setToggleGroup(modeToggleGroup);
339340
freehandModeButton.setToggleGroup(modeToggleGroup);
340341

341342
rectangleModeButton.setTooltip(UiUtils.createTooltip(RECTANGLE_DRAWING_MODE_TOOLTIP_TEXT,
342-
Controller.KeyCombinations.selectRectangleDrawingMode));
343+
KeyCombinations.selectRectangleDrawingMode));
343344
polygonModeButton.setTooltip(UiUtils.createTooltip(POLYGON_DRAWING_MODE_TOOLTIP_TEXT,
344-
Controller.KeyCombinations.selectPolygonDrawingMode));
345+
KeyCombinations.selectPolygonDrawingMode));
345346

346347
freehandModeButton.setTooltip(UiUtils.createTooltip(FREEHAND_DRAWING_MODE_TOOLTIP_TEXT,
347-
Controller.KeyCombinations.selectFreehandDrawingMode));
348+
KeyCombinations.selectFreehandDrawingMode));
348349

349350
modeToggleGroup.selectToggle(rectangleModeButton);
350351

src/main/java/com/github/mfl28/boundingboxeditor/ui/EditorsSplitPaneView.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package com.github.mfl28.boundingboxeditor.ui;
2020

2121
import com.github.mfl28.boundingboxeditor.controller.Controller;
22+
import com.github.mfl28.boundingboxeditor.controller.KeyCombinations;
2223
import com.github.mfl28.boundingboxeditor.utils.ColorUtils;
2324
import com.github.mfl28.boundingboxeditor.utils.UiUtils;
2425
import javafx.geometry.Orientation;
@@ -249,7 +250,7 @@ private VBox createTagBox() {
249250
private void setUpButtonsAndTextFields() {
250251
categoryNameTextField.setId(CATEGORY_INPUT_FIELD_ID);
251252
categoryNameTextField
252-
.setTooltip(UiUtils.createFocusTooltip(Controller.KeyCombinations.focusCategoryNameTextField));
253+
.setTooltip(UiUtils.createFocusTooltip(KeyCombinations.focusCategoryNameTextField));
253254

254255
categoryColorPicker.getStyleClass().add(OBJECT_CATEGORY_COLOR_PICKER_STYLE);
255256
categoryColorPicker.setValue(ColorUtils.createRandomColor());
@@ -258,7 +259,7 @@ private void setUpButtonsAndTextFields() {
258259
addCategoryButton.setId(ADD_BUTTON_ID);
259260
addCategoryButton.setTooltip(UiUtils.createTooltip(ADD_CATEGORY_BUTTON_TOOLTIP));
260261

261-
categorySearchField.setTooltip(UiUtils.createFocusTooltip(Controller.KeyCombinations.focusCategorySearchField));
262+
categorySearchField.setTooltip(UiUtils.createFocusTooltip(KeyCombinations.focusCategorySearchField));
262263

263264
collapseTreeItemsButton.setTooltip(UiUtils.createTooltip(COLLAPSE_TREE_ITEMS_BUTTON_TOOLTIP));
264265

src/main/java/com/github/mfl28/boundingboxeditor/ui/ImageFileExplorerView.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
package com.github.mfl28.boundingboxeditor.ui;
2020

21-
import com.github.mfl28.boundingboxeditor.controller.Controller;
21+
import com.github.mfl28.boundingboxeditor.controller.KeyCombinations;
2222
import com.github.mfl28.boundingboxeditor.model.data.ImageMetaData;
2323
import com.github.mfl28.boundingboxeditor.utils.UiUtils;
2424
import javafx.collections.FXCollections;
@@ -104,7 +104,7 @@ private HBox createImageFileSearchBox() {
104104

105105
imageFileSearchField.setPromptText(IMAGE_FILE_SEARCH_PROMPT_TEXT);
106106
imageFileSearchField.setFocusTraversable(false);
107-
imageFileSearchField.setTooltip(UiUtils.createFocusTooltip(Controller.KeyCombinations.focusFileSearchField));
107+
imageFileSearchField.setTooltip(UiUtils.createFocusTooltip(KeyCombinations.focusFileSearchField));
108108

109109
Region searchIcon = new Region();
110110
searchIcon.setId(IMAGE_FILE_SEARCH_ICON_ID);

src/main/java/com/github/mfl28/boundingboxeditor/ui/ObjectTreeElementCell.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
package com.github.mfl28.boundingboxeditor.ui;
2020

21-
import com.github.mfl28.boundingboxeditor.controller.Controller;
21+
import com.github.mfl28.boundingboxeditor.controller.KeyCombinations;
2222
import com.github.mfl28.boundingboxeditor.model.data.ObjectCategory;
2323
import com.github.mfl28.boundingboxeditor.utils.UiUtils;
2424
import javafx.beans.binding.Bindings;
@@ -299,7 +299,7 @@ private MenuItem createShowAllBoundingShapesMenuItem() {
299299
showAllMenuItem.setId(SHOW_ALL_CONTEXT_MENU_ID);
300300
Tooltip.install(showAllMenuItem.getContent(),
301301
UiUtils.createTooltip("",
302-
Controller.KeyCombinations.showAllBoundingShapes));
302+
KeyCombinations.showAllBoundingShapes));
303303
return showAllMenuItem;
304304
}
305305

@@ -308,7 +308,7 @@ private MenuItem createShowBoundingShapeMenuItem() {
308308
showMenuItem.setId(SHOW_CONTEXT_MENU_ITEM_ID);
309309
Tooltip.install(showMenuItem.getContent(),
310310
UiUtils.createTooltip("",
311-
Controller.KeyCombinations.showSelectedBoundingShape));
311+
KeyCombinations.showSelectedBoundingShape));
312312
return showMenuItem;
313313
}
314314

@@ -317,7 +317,7 @@ private MenuItem createHideAllBoundingShapesMenuItem() {
317317
hideAllMenuItem.setId(HIDE_ALL_CONTEXT_MENU_ITEM_ID);
318318
Tooltip.install(hideAllMenuItem.getContent(),
319319
UiUtils.createTooltip("",
320-
Controller.KeyCombinations.hideAllBoundingShapes));
320+
KeyCombinations.hideAllBoundingShapes));
321321
return hideAllMenuItem;
322322
}
323323

@@ -326,7 +326,7 @@ private MenuItem createHideOtherBoundingShapesMenuItem() {
326326
hideOthersMenuItem.setId(HIDE_OTHERS_CONTEXT_MENU_ITEM_ID);
327327
Tooltip.install(hideOthersMenuItem.getContent(),
328328
UiUtils.createTooltip("",
329-
Controller.KeyCombinations.hideNonSelectedBoundingShapes));
329+
KeyCombinations.hideNonSelectedBoundingShapes));
330330
return hideOthersMenuItem;
331331
}
332332

@@ -401,7 +401,7 @@ private MenuItem createDeleteBoundingShapeMenuItem() {
401401
deleteMenuItem.setId(DELETE_CONTEXT_MENU_ITEM_ID);
402402
Tooltip.install(deleteMenuItem.getContent(),
403403
UiUtils.createTooltip("",
404-
Controller.KeyCombinations.deleteSelectedBoundingShape));
404+
KeyCombinations.deleteSelectedBoundingShape));
405405
return deleteMenuItem;
406406
}
407407

@@ -410,7 +410,7 @@ private MenuItem createHideBoundingShapeMenuItem() {
410410
hideMenuItem.setId(HIDE_BOUNDING_SHAPE_CONTEXT_MENU_ITEM_ID);
411411
Tooltip.install(hideMenuItem.getContent(),
412412
UiUtils.createTooltip("",
413-
Controller.KeyCombinations.hideSelectedBoundingShape));
413+
KeyCombinations.hideSelectedBoundingShape));
414414
return hideMenuItem;
415415
}
416416

@@ -420,7 +420,7 @@ private MenuItem createRefineMenuItem() {
420420

421421
Tooltip.install(menuItem.getContent(),
422422
UiUtils.createTooltip(REFINE_MENU_ITEM_TOOLTIP_TEXT,
423-
Controller.KeyCombinations.addVerticesToPolygon));
423+
KeyCombinations.addVerticesToPolygon));
424424
return menuItem;
425425
}
426426

@@ -430,7 +430,7 @@ private MenuItem createDeleteVerticesMenuItem() {
430430

431431
Tooltip.install(menuItem.getContent(),
432432
UiUtils.createTooltip(DELETE_VERTICES_MENU_ITEM_TOOLTIP_TEXT,
433-
Controller.KeyCombinations.removeEditingVerticesWhenBoundingPolygonSelected));
433+
KeyCombinations.removeEditingVerticesWhenBoundingPolygonSelected));
434434
return menuItem;
435435
}
436436

@@ -439,7 +439,7 @@ private MenuItem createSimplifyMenuItem() {
439439
menuItem.setId(SIMPLIFY_CONTEXT_MENU_ITEM_ID);
440440

441441
Tooltip.install(menuItem.getContent(), UiUtils.createTooltip(SIMPLIFY_POLYGON_MENU_ITEM_TOOLTIP_TEXT,
442-
Controller.KeyCombinations.simplifyPolygon));
442+
KeyCombinations.simplifyPolygon));
443443

444444
return menuItem;
445445
}
@@ -449,7 +449,7 @@ private MenuItem createChangeObjectCategoryMenuItem() {
449449
menuItem.setId(CHANGE_CATEGORY_CONTEXT_MENU_ITEM_ID);
450450

451451
Tooltip.install(menuItem.getContent(),
452-
UiUtils.createTooltip("", Controller.KeyCombinations.changeSelectedBoundingShapeCategory));
452+
UiUtils.createTooltip("", KeyCombinations.changeSelectedBoundingShapeCategory));
453453
return menuItem;
454454
}
455455

@@ -458,7 +458,7 @@ private MenuItem createSaveAsImageMenuItem() {
458458
menuItem.setId(SAVE_AS_IMAGE_MENU_ITEM_ID);
459459

460460
Tooltip.install(menuItem.getContent(),
461-
UiUtils.createTooltip("", Controller.KeyCombinations.saveBoundingShapeAsImage));
461+
UiUtils.createTooltip("", KeyCombinations.saveBoundingShapeAsImage));
462462

463463
return menuItem;
464464
}

src/main/java/com/github/mfl28/boundingboxeditor/ui/TagScrollPaneView.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919
package com.github.mfl28.boundingboxeditor.ui;
2020

21-
import com.github.mfl28.boundingboxeditor.controller.Controller;
21+
import com.github.mfl28.boundingboxeditor.controller.KeyCombinations;
2222
import com.github.mfl28.boundingboxeditor.utils.UiUtils;
2323
import javafx.application.Platform;
2424
import javafx.beans.property.SimpleListProperty;
@@ -143,7 +143,7 @@ private TextField createTagInputField() {
143143
TextField textField = new TextField();
144144
textField.setId(TAG_INPUT_FIELD_ID);
145145
textField.setPromptText(TEXT_FIELD_PROMPT_TEXT);
146-
textField.setTooltip(UiUtils.createFocusTooltip(Controller.KeyCombinations.focusTagTextField));
146+
textField.setTooltip(UiUtils.createFocusTooltip(KeyCombinations.focusTagTextField));
147147
// Will be enabled if a tag-list is registered with the tagLists-property.
148148
textField.setDisable(true);
149149

0 commit comments

Comments
 (0)