├── AutoDrive Course Editor.iml
├── AutoDriveCourseEditor.iml
├── Open Editor with Console to see errors.cmd
├── history.xml
├── pom.xml
├── readme.md
├── src
└── main
│ ├── java
│ └── AutoDriveEditor
│ │ ├── AutoDriveEditor.java
│ │ ├── Classes
│ │ ├── CubicCurve.java
│ │ ├── LinearLine.java
│ │ ├── MapImage.java
│ │ ├── QuadCurve.java
│ │ └── Rotation.java
│ │ ├── GUI
│ │ ├── ButtonToolbar.java
│ │ ├── Buttons
│ │ │ ├── AddNodeBaseButton.java
│ │ │ ├── AlignBaseButton.java
│ │ │ ├── Alignment
│ │ │ │ ├── DepthAlignButton.java
│ │ │ │ ├── EditLocationButton.java
│ │ │ │ ├── HorizontalAlignButton.java
│ │ │ │ └── VerticalAlignButton.java
│ │ │ ├── BaseButton.java
│ │ │ ├── ConnectionSelectBaseButton.java
│ │ │ ├── CopyPasteBaseButton.java
│ │ │ ├── CurveBaseButton.java
│ │ │ ├── Curves
│ │ │ │ ├── CubicCurveButton.java
│ │ │ │ └── QuadCurveButton.java
│ │ │ ├── Display
│ │ │ │ ├── HideDualConnectionsButton.java
│ │ │ │ ├── HideNodeButton.java
│ │ │ │ ├── HideRegularConnectionsButton.java
│ │ │ │ ├── HideReverseConnectionsButton.java
│ │ │ │ └── HideSubprioConnectionsButton.java
│ │ │ ├── Edit
│ │ │ │ ├── CopySelectionButton.java
│ │ │ │ ├── CutSelectionButton.java
│ │ │ │ ├── MultiSelectButton.java
│ │ │ │ └── PasteSelectionButton.java
│ │ │ ├── LinerLineBaseButton.java
│ │ │ ├── MarkerBaseButton.java
│ │ │ ├── Markers
│ │ │ │ ├── AddMarkerButton.java
│ │ │ │ ├── DeleteMarkerButton.java
│ │ │ │ └── EditMarkerButton.java
│ │ │ ├── Nodes
│ │ │ │ ├── AddPrimaryNodeButton.java
│ │ │ │ ├── AddSecondaryNodeButton.java
│ │ │ │ ├── DeleteNodeButton.java
│ │ │ │ ├── DualConnectionButton.java
│ │ │ │ ├── FlipDirectionButton.java
│ │ │ │ ├── MoveNodeButton.java
│ │ │ │ ├── NormalConnectionButton.java
│ │ │ │ ├── ReverseConnectionButton.java
│ │ │ │ ├── RotationButton.java
│ │ │ │ └── SwapNodePriorityButton.java
│ │ │ ├── Options
│ │ │ │ ├── ContinuousConnectionButton.java
│ │ │ │ ├── GridDisplayButton.java
│ │ │ │ ├── GridSnapButton.java
│ │ │ │ ├── NodeSizeDownButton.java
│ │ │ │ ├── NodeSizeUpButton.java
│ │ │ │ ├── OpenConfigButton.java
│ │ │ │ └── SelectHiddenButton.java
│ │ │ ├── OptionsBaseButton.java
│ │ │ └── Testing
│ │ │ │ ├── RoadConnection.java
│ │ │ │ ├── ScaleButton.java
│ │ │ │ ├── TemplateButton.java
│ │ │ │ └── TestButton.java
│ │ ├── Config
│ │ │ ├── ColourPreviewPanel.java
│ │ │ ├── ConfigGUI.java
│ │ │ └── Tabs
│ │ │ │ ├── AutoSaveTab.java
│ │ │ │ ├── ColourSelectorTab.java
│ │ │ │ ├── ConnectionsTab.java
│ │ │ │ ├── CurvesTab.java
│ │ │ │ ├── ExperimentalTab.java
│ │ │ │ ├── KeybindsTab.java
│ │ │ │ ├── KeybindsTab2.java
│ │ │ │ └── MapPanelTab.java
│ │ ├── Curves
│ │ │ └── CurvePanel.java
│ │ ├── EditorImages.java
│ │ ├── MapPanel.java
│ │ ├── Menus
│ │ │ ├── DebugMenu
│ │ │ │ ├── Logging
│ │ │ │ │ ├── LogButtonInfoMenu.java
│ │ │ │ │ ├── LogConfigGUIInfoMenu.java
│ │ │ │ │ ├── LogConfigMenu.java
│ │ │ │ │ ├── LogConnectSelectionMenu.java
│ │ │ │ │ ├── LogCopyPasteMenu.java
│ │ │ │ │ ├── LogCurveInfoMenu.java
│ │ │ │ │ ├── LogFileIOMenu.java
│ │ │ │ │ ├── LogFlipConnectionMenu.java
│ │ │ │ │ ├── LogGUIInfoMenu.java
│ │ │ │ │ ├── LogHeightmapInfoMenu.java
│ │ │ │ │ ├── LogLinearLineInfoMenu.java
│ │ │ │ │ ├── LogListenerStateMenu.java
│ │ │ │ │ ├── LogMarkerInfoMenu.java
│ │ │ │ │ ├── LogMergeFunctionMenu.java
│ │ │ │ │ ├── LogMultiSelectInfoMenu.java
│ │ │ │ │ ├── LogRenderInfoMenu.java
│ │ │ │ │ ├── LogRouteManagerMenu.java
│ │ │ │ │ ├── LogScanManagerInfoMenu.java
│ │ │ │ │ ├── LogUndoRedoMenu.java
│ │ │ │ │ ├── LogZoomScaleMenu.java
│ │ │ │ │ └── ShowZoomLevelInfo.java
│ │ │ │ ├── MoveNodeToCentreMenu.java
│ │ │ │ ├── ShowAllNodeIDMenu.java
│ │ │ │ ├── ShowHeightMapInfo.java
│ │ │ │ ├── ShowNodeHeightMenu.java
│ │ │ │ ├── ShowNodeLocationInfo.java
│ │ │ │ └── ShowProfileInfo.java
│ │ │ ├── Display
│ │ │ │ ├── ShowMarkerIcons.java
│ │ │ │ ├── ShowMarkerNames.java
│ │ │ │ ├── ShowNodeID.java
│ │ │ │ └── ShowParkingIcons.java
│ │ │ ├── EditMenu
│ │ │ │ ├── CopyMenu.java
│ │ │ │ ├── CutMenu.java
│ │ │ │ ├── PasteMenu.java
│ │ │ │ ├── PasteOriginalLocationMenu.java
│ │ │ │ ├── RedoMenu.java
│ │ │ │ └── UndoMenu.java
│ │ │ ├── EditorMenu.java
│ │ │ ├── FileMenu
│ │ │ │ ├── ExitEditorMenu.java
│ │ │ │ ├── OpenConfigMenu.java
│ │ │ │ ├── RecentFilesMenu.java
│ │ │ │ ├── SaveAsConfigMenu.java
│ │ │ │ └── SaveConfigMenu.java
│ │ │ ├── HeightMapMenu
│ │ │ │ ├── ExportHeightMapMenu.java
│ │ │ │ ├── ImportHeightMapMenu.java
│ │ │ │ └── ShowHeightmapMenu.java
│ │ │ ├── HelpMenu
│ │ │ │ ├── AboutMenu.java
│ │ │ │ ├── ImagesLinkMenu.java
│ │ │ │ ├── ShowDEBUGMenu.java
│ │ │ │ └── ShowHistoryMenu.java
│ │ │ ├── JCheckBoxMenuItemBase.java
│ │ │ ├── JMenuBase.java
│ │ │ ├── JMenuItemBase.java
│ │ │ ├── MapImagesMenu
│ │ │ │ ├── ImportFS19DDSMenu.java
│ │ │ │ ├── ImportFS22DDSMenu.java
│ │ │ │ ├── LoadMapImageMenu.java
│ │ │ │ ├── MapZoomMenu.java
│ │ │ │ └── SaveMapImageMenu.java
│ │ │ ├── RoutesMenu
│ │ │ │ ├── OpenRoutesConfig.java
│ │ │ │ ├── OpenRoutesXML.java
│ │ │ │ └── SaveRoutesXML.java
│ │ │ └── ScanMenu
│ │ │ │ ├── FixNodesHeightMenu.java
│ │ │ │ ├── MergeNodesMenu.java
│ │ │ │ ├── OutOfBoundsFixMenu.java
│ │ │ │ └── ScanNetworkMenu.java
│ │ ├── RenderThreads
│ │ │ ├── ConnectionDrawThread.java
│ │ │ └── NodeDrawThread.java
│ │ ├── RoutesGUI
│ │ │ └── RoutesGUI.java
│ │ └── TextPanel.java
│ │ ├── Handlers
│ │ └── GlobalExceptionHandler.java
│ │ ├── Import
│ │ └── DDSReader.java
│ │ ├── Listeners
│ │ ├── ConfigListener.java
│ │ └── MouseListener.java
│ │ ├── Locale
│ │ └── LocaleManager.java
│ │ ├── Managers
│ │ ├── ButtonManager.java
│ │ ├── ChangeManager.java
│ │ ├── CopyPasteManager.java
│ │ ├── ImportManager.java
│ │ ├── MultiSelectManager.java
│ │ ├── ScanManager.java
│ │ └── VersionManager.java
│ │ ├── RoadNetwork
│ │ ├── MapNode.java
│ │ ├── MarkerGroup.java
│ │ └── RoadMap.java
│ │ ├── Utils
│ │ ├── Classes
│ │ │ ├── ButtonColumn.java
│ │ │ ├── EventTriggerNumberFilter.java
│ │ │ ├── KDTree2D.java
│ │ │ ├── KDTree2DNode.java
│ │ │ ├── KDTree3D.java
│ │ │ ├── KDTree3DNode.java
│ │ │ ├── LabelNumberFilter.java
│ │ │ ├── NameableThread.java
│ │ │ └── SimpleImageInfo.java
│ │ ├── ConversionUtils.java
│ │ ├── ExceptionUtils.java
│ │ ├── FileUtils.java
│ │ ├── GUIUtils.java
│ │ ├── HTMLUtils.java
│ │ ├── ImageUtils.java
│ │ ├── LoggerUtils.java
│ │ ├── MathUtils.java
│ │ ├── ProfileUtil.java
│ │ └── XMLUtils.java
│ │ └── XMLConfig
│ │ ├── AutoSave.java
│ │ ├── EditorXML.java
│ │ ├── GameXML.java
│ │ └── RoutesXML.java
│ └── resources
│ ├── META-INF
│ └── MANIFEST.MF
│ ├── editor
│ ├── Legacy
│ │ ├── curves
│ │ │ ├── controlpoint.png
│ │ │ ├── controlpoint_selected.png
│ │ │ └── curvenode.png
│ │ ├── gridsubtoggle.png
│ │ ├── node.png
│ │ ├── node_marker_blur.png
│ │ ├── node_marker_small.png
│ │ ├── node_parking_big.png
│ │ ├── node_selected.png
│ │ ├── subprionode.png
│ │ └── subprionode_selected.png
│ ├── buttons
│ │ ├── addmarker.png
│ │ ├── addmarker_selected.png
│ │ ├── conconnect.png
│ │ ├── conconnect_selected.png
│ │ ├── config.png
│ │ ├── config_selected.png
│ │ ├── connectdual.png
│ │ ├── connectdual_selected.png
│ │ ├── connectdual_subprio.png
│ │ ├── connectdual_subprio_selected.png
│ │ ├── connectregular.png
│ │ ├── connectregular_selected.png
│ │ ├── connectregular_subprio.png
│ │ ├── connectregular_subprio_selected.png
│ │ ├── connectreverse.png
│ │ ├── connectreverse_selected.png
│ │ ├── connectreverse_subprio.png
│ │ ├── connectreverse_subprio_selected.png
│ │ ├── connectroad.png
│ │ ├── connectroad_selected.png
│ │ ├── copy.png
│ │ ├── copy_selected.png
│ │ ├── createprimary.png
│ │ ├── createprimary_selected.png
│ │ ├── createsecondary.png
│ │ ├── createsecondary_selected.png
│ │ ├── cubiccurve.png
│ │ ├── cubiccurve_selected.png
│ │ ├── cut.png
│ │ ├── cut_selected.png
│ │ ├── deletemarker.png
│ │ ├── deletemarker_selected.png
│ │ ├── deletenodes.png
│ │ ├── deletenodes_selected.png
│ │ ├── depthalign.png
│ │ ├── depthalign_selected.png
│ │ ├── editlocation.png
│ │ ├── editlocation_selected.png
│ │ ├── editmarker.png
│ │ ├── editmarker_selected.png
│ │ ├── flip.png
│ │ ├── flip_selected.png
│ │ ├── gridsnaptoggle.png
│ │ ├── gridsnaptoggle_selected.png
│ │ ├── gridsubtoggle_selected.png
│ │ ├── gridtoggle.png
│ │ ├── gridtoggle_selected.png
│ │ ├── hidden.png
│ │ ├── hidden_selected.png
│ │ ├── hide_connect_dual.png
│ │ ├── hide_connect_dual_selected.png
│ │ ├── hide_connect_regular.png
│ │ ├── hide_connect_regular_selected.png
│ │ ├── hide_connect_reverse.png
│ │ ├── hide_connect_reverse_selected.png
│ │ ├── hide_connect_subprio.png
│ │ ├── hide_connect_subprio_selected.png
│ │ ├── hide_node.png
│ │ ├── hide_node_selected.png
│ │ ├── horizontalalign.png
│ │ ├── horizontalalign_selected.png
│ │ ├── movenode.png
│ │ ├── movenode_selected.png
│ │ ├── networkinfo.png
│ │ ├── networkinfo_selected.png
│ │ ├── nodeminus.png
│ │ ├── nodeminus_selected.png
│ │ ├── nodeplus.png
│ │ ├── nodeplus_selected.png
│ │ ├── paste.png
│ │ ├── paste_selected.png
│ │ ├── quadcurve.png
│ │ ├── quadcurve_selected.png
│ │ ├── rotatenode.png
│ │ ├── rotatenode_selected.png
│ │ ├── scale.png
│ │ ├── scale_selected.png
│ │ ├── select_freeform.png
│ │ ├── select_freeform_selected.png
│ │ ├── select_rectangle.png
│ │ ├── select_rectangle_selected.png
│ │ ├── swappriority.png
│ │ ├── swappriority_selected.png
│ │ ├── unknown.png
│ │ ├── unknown_selected.png
│ │ ├── verticalalign.png
│ │ └── verticalalign_selected.png
│ ├── curvepanel
│ │ ├── cancel.png
│ │ ├── cancel_select.png
│ │ ├── confirm.png
│ │ └── confirm_select.png
│ ├── gameIcon.png
│ ├── marker.png
│ ├── nodes
│ │ ├── node_marker2.png
│ │ ├── node_marker_small2.png
│ │ ├── node_parking_small.png
│ │ ├── node_warning.png
│ │ └── node_warning_y.png
│ ├── routeIcon.png
│ ├── tractor.png
│ └── update.png
│ ├── locale
│ └── AutoDriveEditor_en_US.properties
│ ├── log4j2.xml
│ └── mapImages
│ └── Blank.png
└── version.xml
/AutoDrive Course Editor.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/AutoDriveCourseEditor.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Open Editor with Console to see errors.cmd:
--------------------------------------------------------------------------------
1 | java.exe -jar -Xms1024m -Xmx1024m .\AutoDriveEditor.Jar
2 | pause
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
4 | 4.0.0
5 |
6 | AutoDriveEditor
7 | AutoDriveCourseEditor
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 | AutoDriveCourseEditor
12 |
13 |
14 | UTF-8
15 | 11
16 | 11
17 |
18 |
19 |
20 |
21 |
22 | org.apache.maven.plugins
23 | maven-compiler-plugin
24 | 3.8.1
25 |
26 |
27 | org.apache.maven.plugins
28 | maven-assembly-plugin
29 | 3.2.0
30 |
31 |
32 |
33 |
34 | AutoDriveEditor
35 |
36 |
37 |
38 | jar-with-dependencies
39 |
40 |
41 |
42 |
43 | make-assembly
44 | package
45 |
46 | single
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | org.apache.logging.log4j
58 | log4j-api
59 | 2.20.0
60 | compile
61 |
62 |
63 | org.apache.logging.log4j
64 | log4j-core
65 | 2.20.0
66 |
67 |
68 | org.apache.logging.log4j
69 | log4j-slf4j-impl
70 | 2.20.0
71 |
72 |
73 | com.vdurmont
74 | semver4j
75 | 3.1.0
76 |
77 |
78 | org.drjekyll
79 | colorpicker
80 | 1.4.5
81 |
82 |
83 | junit
84 | junit
85 | 4.13.2
86 | test
87 |
88 |
89 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ## Java
2 | A Java version **greater than 11** is required. ( JRE or JDK are both possible )
3 | Current Java versions can be downloaded [here](https://www.oracle.com/java/technologies/javase-downloads.html) and installation instructions can be found [here](https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html)
4 |
5 | ## Compatibility
6 | The editor works with configs generated by the [FS19](https://github.com/Stephan-S/FS19_AutoDrive) / [FS22](https://github.com/Stephan-S/FS22_AutoDrive) / [FS25](https://github.com/Stephan-S/FS25_AutoDrive) versions of AutoDrive.
7 |
8 | ## Starting the AutoDrive Course Editor
9 | The editor can be started multiple ways.
10 | - Using the supplied CMD file: "Open Editor with Console to see errors.cmd".
11 | - Directly from a command line: java -jar -Xms1024m -Xmx1024m .\AutoDriveEditor.Jar
12 | - Directly from a command line: java -jar .\AutoDriveEditor.jar (**Use this only for importing map DDS files that fail using normal run arguments**)
13 |
14 | The editor will automatically create a log file autoDriveEditor.log, which can be used for later troubleshooting.
15 | The log file has a maximum size of 20MB and a maximum of 3 files are then created.
16 |
17 | ## Bug Reports
18 |
19 | Please use the "Issues" section to report any bugs, I will try to respond as soon as humanly possible, but bear in mind
20 | real life doesn't always allow for quick answers.
21 |
22 | ## Map Images
23 |
24 | I maintain another GitHub repository of map images that the editor can automatically download when needed [here](https://github.com/KillBait/AutoDrive_MapImages)
25 | If you want to create images for yourself, you can find a guide [here](https://github.com/KillBait/AutoDrive_MapImages/discussions/20)
26 |
27 | ## Map Image Requests
28 |
29 | Do you have any map images that are not on the repository?, please consider doing a pull request to add to
30 | the collection, it will help other people.
31 |
32 | Help with pull requests can be found on [GitHub Docs](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
33 |
34 | **Not familiar with GitHub.. go over to the [Discussion](https://github.com/KillBait/AutoDrive_MapImages/discussions) section of the map image repository and create a request**
35 |
36 |
37 | ## License
38 |
39 | The Editor does not currently have a license attached to it.
40 |
41 | ## Credits
42 |
43 | **@Stephan_S** - The creator of the AutoDrive mod and original editor, with his permission, I have taken over maintaining this editor.
44 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/AddNodeBaseButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons;
2 |
3 | import AutoDriveEditor.Managers.ChangeManager;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 | import AutoDriveEditor.RoadNetwork.RoadMap;
6 | import AutoDriveEditor.Utils.ExceptionUtils;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
9 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
10 | import static AutoDriveEditor.GUI.MapPanel.*;
11 | import static AutoDriveEditor.Managers.ScanManager.checkNodeOverlap;
12 | import static AutoDriveEditor.RoadNetwork.RoadMap.createNewNetworkNode;
13 | import static AutoDriveEditor.RoadNetwork.RoadMap.showMismatchedIDError;
14 | import static AutoDriveEditor.XMLConfig.AutoSave.resumeAutoSaving;
15 | import static AutoDriveEditor.XMLConfig.AutoSave.suspendAutoSaving;
16 |
17 | public abstract class AddNodeBaseButton extends BaseButton {
18 |
19 | public static MapNode createNode(double worldX, double worldZ, int flag) {
20 | if (roadMap != null) {
21 | suspendAutoSaving();
22 | MapNode newNode = createNewNetworkNode(worldX, worldZ, flag, false, false);
23 | getMapPanel().repaint();
24 | changeManager.addChangeable(new AddNodeChanger(newNode));
25 | setStale(true);
26 | resumeAutoSaving();
27 | return newNode;
28 | }
29 | return null;
30 | }
31 |
32 | //
33 | // Add node
34 | //
35 |
36 | public static class AddNodeChanger implements ChangeManager.Changeable {
37 | private final MapNode storeNode;
38 | private final boolean isStale;
39 |
40 | public AddNodeChanger(MapNode node){
41 | super();
42 | this.storeNode = node;
43 | this.isStale = isStale();
44 | }
45 |
46 | public void undo(){
47 | for (MapNode mapNode : storeNode.getWarningNodes()) {
48 | mapNode.getWarningNodes().remove(storeNode);
49 | if (mapNode.getWarningNodes().size() == 0) mapNode.clearWarningNodes();
50 | }
51 | if (hoveredNode == storeNode) hoveredNode = null;
52 | RoadMap.removeMapNode(storeNode);
53 | getMapPanel().repaint();
54 | setStale(this.isStale);
55 | }
56 |
57 | public void redo(){
58 | try {
59 | roadMap.insertMapNode(storeNode, null, null);
60 | checkNodeOverlap(storeNode);
61 | getMapPanel().repaint();
62 | setStale(true);
63 | } catch (ExceptionUtils.MismatchedIdException e) {
64 | showMismatchedIDError("AddNodeChanger redo()", e);
65 | }
66 |
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Alignment/DepthAlignButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Alignment;
2 |
3 | import AutoDriveEditor.GUI.Buttons.AlignBaseButton;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 |
6 | import javax.swing.*;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
9 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
10 | import static AutoDriveEditor.Managers.MultiSelectManager.multiSelectList;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
13 |
14 | public class DepthAlignButton extends AlignBaseButton {
15 |
16 | public DepthAlignButton(JPanel panel) {
17 | button = makeImageToggleButton("buttons/depthalign","buttons/depthalign_selected", null,"align_depth_tooltip","align_depth_alt", panel, false, false, null, false, this);
18 | }
19 |
20 | @Override
21 | public String getButtonID() { return "DepthAlignButton"; }
22 |
23 | @Override
24 | public String getButtonAction() { return "ActionButton"; }
25 |
26 | @Override
27 | public String getButtonPanel() { return "Alignment"; }
28 |
29 | @Override
30 | public String getInfoText() { return getLocaleString("align_depth_tooltip"); }
31 |
32 | @Override
33 | protected void adjustNodesTo(MapNode toNode) {
34 | LOG.info("Depth Aligning {} nodes at world y coordinate {}",multiSelectList.size(), toNode.y);
35 | changeManager.addChangeable( new AlignmentChanger(multiSelectList, 0, toNode.y, 0));
36 | for (MapNode node : multiSelectList) {
37 | node.y = toNode.y;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Alignment/EditLocationButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Alignment;
2 |
3 | import AutoDriveEditor.AutoDriveEditor;
4 | import AutoDriveEditor.GUI.Buttons.BaseButton;
5 | import AutoDriveEditor.RoadNetwork.MapNode;
6 | import AutoDriveEditor.Utils.Classes.LabelNumberFilter;
7 |
8 | import javax.swing.*;
9 | import javax.swing.text.PlainDocument;
10 | import java.awt.*;
11 | import java.awt.event.MouseEvent;
12 |
13 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
14 | import static AutoDriveEditor.GUI.MapPanel.getNodeAtScreenPosition;
15 | import static AutoDriveEditor.GUI.MapPanel.mapScale;
16 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
17 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
18 | import static AutoDriveEditor.Utils.MathUtils.roundUpDoubleToDecimalPlaces;
19 |
20 | public class EditLocationButton extends BaseButton {
21 |
22 | public EditLocationButton(JPanel panel) {
23 | button = makeImageToggleButton("buttons/editlocation","buttons/editlocation_selected", null,"align_node_edit_tooltip","align_node_edit_alt", panel, false, false, null, false, this);
24 | }
25 |
26 | @Override
27 | public String getButtonID() { return "EditLocationButton"; }
28 |
29 | @Override
30 | public String getButtonAction() { return "ActionButton"; }
31 |
32 | @Override
33 | public String getButtonPanel() { return "Alignment"; }
34 |
35 | @Override
36 | public String getInfoText() { return getLocaleString("align_node_edit_tooltip"); }
37 |
38 | @Override
39 | public void mouseClicked(MouseEvent e) {
40 | MapNode clickedNode = getNodeAtScreenPosition(e.getX(), e.getY());
41 | if (clickedNode != null) showEditNodeLocationDialog(clickedNode);
42 | }
43 |
44 | //
45 | // Dialog for Edit Node position
46 | //
47 |
48 | public void showEditNodeLocationDialog(MapNode node) {
49 |
50 | JTextField posX = new JTextField(String.valueOf((float)node.x));
51 | JLabel labelPosX = new JLabel(" ");
52 | PlainDocument docX = (PlainDocument) posX.getDocument();
53 | docX.setDocumentFilter(new LabelNumberFilter(labelPosX, -1024 * mapScale, 1024 * mapScale, true, true));
54 |
55 | JTextField posZ = new JTextField(String.valueOf((float)node.z));
56 | JLabel labelPosZ = new JLabel(" ");
57 | PlainDocument docZ = (PlainDocument) posZ.getDocument();
58 | docZ.setDocumentFilter(new LabelNumberFilter(labelPosZ, -1024 * mapScale, 1024 * mapScale, true, true));
59 |
60 | JTextField posY = new JTextField(String.valueOf((float)node.y));
61 | JLabel labelPosY = new JLabel(" ");
62 | if (node.y < 0 ) {
63 | labelPosY.setForeground(Color.RED);
64 | labelPosY.setText("* Invalid Y location");
65 | }
66 | PlainDocument docY = (PlainDocument) posY.getDocument();
67 | docY.setDocumentFilter(new LabelNumberFilter(labelPosY, 0, 1024 * mapScale, true, false));
68 |
69 |
70 | Object[] inputFields = {getLocaleString("dialog_node_position_x"), posX, labelPosX,
71 | getLocaleString("dialog_node_position_y"), posY, labelPosY,
72 | getLocaleString("dialog_node_position_z"), posZ, labelPosZ};
73 |
74 | int option = JOptionPane.showConfirmDialog(AutoDriveEditor.editor, inputFields, ""+ getLocaleString("dialog_node_title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
75 |
76 | if (option == JOptionPane.OK_OPTION) {
77 | node.x = roundUpDoubleToDecimalPlaces(Double.parseDouble(posX.getText()), 3);
78 | node.y = roundUpDoubleToDecimalPlaces(Double.parseDouble(posY.getText()), 3);
79 | node.z = roundUpDoubleToDecimalPlaces(Double.parseDouble(posZ.getText()), 3);
80 | getMapPanel().repaint();
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Alignment/HorizontalAlignButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Alignment;
2 |
3 | import AutoDriveEditor.GUI.Buttons.AlignBaseButton;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 |
6 | import javax.swing.*;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
9 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
10 | import static AutoDriveEditor.Managers.MultiSelectManager.multiSelectList;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
13 |
14 | public class HorizontalAlignButton extends AlignBaseButton {
15 |
16 | public HorizontalAlignButton(JPanel panel) {
17 | button = makeImageToggleButton("buttons/horizontalalign","buttons/horizontalalign_selected", null,"align_horizontal_tooltip","align_horizontal_alt", panel, false, false, null, false, this);
18 | }
19 |
20 | @Override
21 | public String getButtonID() { return "HorizontalAlignButton"; }
22 |
23 | @Override
24 | public String getButtonAction() { return "ActionButton"; }
25 |
26 | @Override
27 | public String getButtonPanel() { return "Alignment"; }
28 |
29 | @Override
30 | public String getInfoText() { return getLocaleString("align_horizontal_tooltip"); }
31 |
32 | @Override
33 | protected void adjustNodesTo(MapNode toNode) {
34 | LOG.info("Horizontally Aligning {} nodes at world Z coordinate {}",multiSelectList.size(), toNode.z);
35 | changeManager.addChangeable( new AlignmentChanger(multiSelectList, 0, 0, toNode.z));
36 | for (MapNode node : multiSelectList) {
37 | node.z = toNode.z;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Alignment/VerticalAlignButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Alignment;
2 |
3 | import AutoDriveEditor.GUI.Buttons.AlignBaseButton;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 |
6 | import javax.swing.*;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
9 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
10 | import static AutoDriveEditor.Managers.MultiSelectManager.multiSelectList;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
13 |
14 | public class VerticalAlignButton extends AlignBaseButton {
15 |
16 | public VerticalAlignButton(JPanel panel) {
17 | button = makeImageToggleButton("buttons/verticalalign","buttons/verticalalign_selected", null,"align_vertical_tooltip","align_vertical_alt", panel, false, false, null, false, this);
18 | }
19 |
20 | @Override
21 | public String getButtonID() { return "VerticalAlignButton"; }
22 |
23 | @Override
24 | public String getButtonAction() { return "ActionButton"; }
25 |
26 | @Override
27 | public String getButtonPanel() { return "Alignment"; }
28 |
29 | @Override
30 | public String getInfoText() { return getLocaleString("align_vertical_tooltip"); }
31 |
32 | @Override
33 | protected void adjustNodesTo(MapNode toNode) {
34 | LOG.info("Vertically Aligning {} nodes at world X coordinate {}",multiSelectList.size(), toNode.x);
35 | changeManager.addChangeable( new AlignmentChanger(multiSelectList, toNode.x, 0, 0));
36 | for (MapNode node : multiSelectList) {
37 | node.x = toNode.x;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/CopyPasteBaseButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons;
2 |
3 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
4 | import static AutoDriveEditor.GUI.MapPanel.cnpManager;
5 | import static AutoDriveEditor.Managers.MultiSelectManager.isMultipleSelected;
6 | import static AutoDriveEditor.Managers.MultiSelectManager.multiSelectList;
7 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
8 | import static AutoDriveEditor.XMLConfig.AutoSave.resumeAutoSaving;
9 | import static AutoDriveEditor.XMLConfig.AutoSave.suspendAutoSaving;
10 |
11 | public abstract class CopyPasteBaseButton extends BaseButton {
12 |
13 | public static void cutSelected() {
14 | suspendAutoSaving();
15 | if (isMultipleSelected && multiSelectList.size() > 0 ) {
16 | cnpManager.CutSelection(multiSelectList);
17 | getMapPanel().repaint();
18 |
19 | } else {
20 | LOG.info("Nothing to Cut");
21 | }
22 | resumeAutoSaving();
23 | }
24 |
25 | public static void copySelected() {
26 | suspendAutoSaving();
27 | if (isMultipleSelected && multiSelectList.size() > 0 ) {
28 | cnpManager.CopySelection(multiSelectList);
29 |
30 | } else {
31 | LOG.info("Nothing to Copy");
32 | }
33 | getMapPanel().repaint();
34 | resumeAutoSaving();
35 | }
36 |
37 | public static void pasteSelected() {
38 | suspendAutoSaving();
39 | cnpManager.PasteSelection(false);
40 | getMapPanel().repaint();
41 | resumeAutoSaving();
42 | }
43 |
44 | public static void pasteSelectedInOriginalLocation() {
45 | cnpManager.PasteSelection(true);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Display/HideDualConnectionsButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Display;
2 |
3 | import AutoDriveEditor.GUI.Buttons.ConnectionSelectBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.GUI.Buttons.LinerLineBaseButton.CONNECTION_DUAL;
10 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 |
13 | public class HideDualConnectionsButton extends ConnectionSelectBaseButton {
14 |
15 | public HideDualConnectionsButton(JPanel panel) {
16 | button = makeImageToggleButton("buttons/hide_connect_dual","buttons/hide_connect_dual_selected", null,"display_toggle_connect_dual_tooltip","display_toggle_connect_dual_alt", panel, false, false, null, false, this);
17 | }
18 |
19 | @Override
20 | public String getButtonID() { return "HideDualConnectionsButton"; }
21 | @Override
22 | public String getButtonAction() { return "ActionButton"; }
23 | @Override
24 | public String getButtonPanel() { return "Display"; }
25 | @Override
26 | public String getInfoText() { return getLocaleString("display_toggle_connect_dual_tooltip"); }
27 |
28 | @Override
29 | public boolean detectRegularConnections() { return false; }
30 | @Override
31 | public boolean detectSubprioConnections() { return false; }
32 | @Override
33 | public boolean detectReverseConnections() { return false; }
34 |
35 | @Override
36 | public Integer getLineDetectionInterval() { return 20; }
37 |
38 | @Override
39 | public Boolean previewConnectionHiddenChange() { return true; }
40 |
41 | @Override
42 | public void mouseClicked(MouseEvent e) {
43 | if (e.getButton() == MouseEvent.BUTTON3) {
44 | resetHiddenStatusForAll(CONNECTION_DUAL);
45 | getMapPanel().repaint();
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Display/HideNodeButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Display;
2 |
3 | import AutoDriveEditor.GUI.Buttons.BaseButton;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 | import AutoDriveEditor.RoadNetwork.RoadMap;
6 |
7 | import javax.swing.*;
8 | import java.awt.event.MouseEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
11 | import static AutoDriveEditor.GUI.MapPanel.getNodeAtScreenPosition;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.Managers.MultiSelectManager.getSelectedNodes;
14 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
15 |
16 | public class HideNodeButton extends BaseButton {
17 |
18 | public HideNodeButton(JPanel panel) {
19 | button = makeImageToggleButton("buttons/hide_node","buttons/hide_node_selected", null,"display_toggle_node_tooltip","display_toggle_node_alt", panel, false, false, null, false, this);
20 | }
21 |
22 | @Override
23 | public String getButtonID() { return "NodeHideButton"; }
24 |
25 | @Override
26 | public String getButtonAction() { return "ActionButton"; }
27 |
28 | @Override
29 | public String getButtonPanel() { return "Display"; }
30 |
31 | @Override
32 | public String getInfoText() { return getLocaleString("display_toggle_node_tooltip"); }
33 |
34 | @Override
35 | public Boolean showHoverNodeSelect() { return false; }
36 |
37 | @Override
38 | public Boolean useMultiSelection() { return true; }
39 |
40 | @Override
41 | public Boolean addSelectedToMultiSelectList() { return false; }
42 |
43 | @Override
44 | public Boolean alwaysSelectHidden() { return true; }
45 |
46 | @Override
47 | public Boolean previewNodeSelectionChange() { return false; }
48 |
49 | @Override
50 | public Boolean previewNodeHiddenChange() { return true; }
51 |
52 |
53 | @Override
54 | public void mouseReleased(MouseEvent e) {
55 | if (e.getButton() == MouseEvent.BUTTON3) {
56 | if (getSelectedNodes().size() >0 ) {
57 | for (MapNode nodeList: getSelectedNodes()) {
58 | nodeList.setNodeHidden(!nodeList.isNodeHidden());
59 | }
60 | getMapPanel().repaint();
61 | }
62 | } else if (e.getButton() == MouseEvent.BUTTON1) {
63 | MapNode selectedNode = getNodeAtScreenPosition(e.getX(), e.getY());
64 | if (selectedNode != null) {
65 | selectedNode.setNodeHidden(!selectedNode.isNodeHidden());
66 | getMapPanel().repaint();
67 | }
68 | }
69 | }
70 |
71 | @Override
72 | public void mouseClicked(MouseEvent e) {
73 | if (e.getButton() == MouseEvent.BUTTON3) {
74 | for (MapNode node: RoadMap.networkNodesList) {
75 | node.setNodeHidden(false);
76 | }
77 | getMapPanel().repaint();
78 | }
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Display/HideRegularConnectionsButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Display;
2 |
3 | import AutoDriveEditor.GUI.Buttons.ConnectionSelectBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.GUI.Buttons.LinerLineBaseButton.CONNECTION_STANDARD;
10 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 |
13 | public class HideRegularConnectionsButton extends ConnectionSelectBaseButton {
14 |
15 | public HideRegularConnectionsButton(JPanel panel) {
16 | button = makeImageToggleButton("buttons/hide_connect_regular","buttons/hide_connect_regular_selected", null,"display_toggle_connect_regular_tooltip","display_toggle_connect_regular_alt", panel, false, false, null, false, this);
17 | }
18 |
19 | @Override
20 | public String getButtonID() { return "HideRegularConnectionsButton"; }
21 |
22 | @Override
23 | public String getButtonAction() { return "ActionButton"; }
24 |
25 | @Override
26 | public String getButtonPanel() { return "Display"; }
27 |
28 | @Override
29 | public String getInfoText() { return getLocaleString("display_toggle_connect_regular_tooltip"); }
30 |
31 | @Override
32 | public boolean detectSubprioConnections() { return false; }
33 | @Override
34 | public boolean detectReverseConnections() { return false; }
35 | @Override
36 | public boolean detectDualConnections() { return false; }
37 |
38 | @Override
39 | public Integer getLineDetectionInterval() { return 10; }
40 |
41 | @Override
42 | public Boolean previewConnectionHiddenChange() { return true; }
43 |
44 | @Override
45 | public void mouseClicked(MouseEvent e) {
46 | if (e.getButton() == MouseEvent.BUTTON3) {
47 | resetHiddenStatusForAll(CONNECTION_STANDARD);
48 | getMapPanel().repaint();
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Display/HideReverseConnectionsButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Display;
2 |
3 | import AutoDriveEditor.GUI.Buttons.ConnectionSelectBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.GUI.Buttons.LinerLineBaseButton.CONNECTION_REVERSE;
10 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 |
13 | public class HideReverseConnectionsButton extends ConnectionSelectBaseButton {
14 |
15 | public HideReverseConnectionsButton(JPanel panel) {
16 | button = makeImageToggleButton("buttons/hide_connect_reverse","buttons/hide_connect_reverse_selected", null,"display_toggle_connect_reverse_tooltip","display_toggle_connect_reverse_alt", panel, false, false, null, false, this);
17 | }
18 |
19 | @Override
20 | public String getButtonID() { return "HideReverseConnectionsButton"; }
21 |
22 | @Override
23 | public String getButtonAction() { return "ActionButton"; }
24 |
25 | @Override
26 | public String getButtonPanel() { return "Display"; }
27 |
28 | @Override
29 | public String getInfoText() { return getLocaleString("display_toggle_connect_reverse_tooltip"); }
30 |
31 | @Override
32 | public boolean detectRegularConnections() { return false; }
33 | @Override
34 | public boolean detectSubprioConnections() { return false; }
35 | @Override
36 | public boolean detectDualConnections() { return false; }
37 |
38 | @Override
39 | public Integer getLineDetectionInterval() { return 20; }
40 |
41 | @Override
42 | public Boolean previewConnectionHiddenChange() { return true; }
43 |
44 | @Override
45 | public void mouseClicked(MouseEvent e) {
46 | if (e.getButton() == MouseEvent.BUTTON3) {
47 | resetHiddenStatusForAll(CONNECTION_REVERSE);
48 | getMapPanel().repaint();
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Display/HideSubprioConnectionsButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Display;
2 |
3 | import AutoDriveEditor.GUI.Buttons.ConnectionSelectBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.GUI.Buttons.LinerLineBaseButton.CONNECTION_STANDARD_SUBPRIO;
10 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
11 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
12 |
13 | public class HideSubprioConnectionsButton extends ConnectionSelectBaseButton {
14 |
15 | public HideSubprioConnectionsButton(JPanel panel) {
16 | button = makeImageToggleButton("buttons/hide_connect_subprio","buttons/hide_connect_subprio_selected", null,"display_toggle_connect_subprio_tooltip","display_toggle_connect_subprio_alt", panel, false, false, null, false, this);
17 | }
18 |
19 | @Override
20 | public String getButtonID() { return "HideSubprioConnectionsButton"; }
21 |
22 | @Override
23 | public String getButtonAction() { return "ActionButton"; }
24 |
25 | @Override
26 | public String getButtonPanel() { return "Display"; }
27 |
28 | @Override
29 | public String getInfoText() { return getLocaleString("display_toggle_connect_subprio_tooltip"); }
30 |
31 |
32 | @Override
33 | public boolean detectRegularConnections() { return false; }
34 | @Override
35 | public boolean detectReverseConnections() { return false; }
36 | @Override
37 | public boolean detectDualConnections() { return false; }
38 |
39 | @Override
40 | public Integer getLineDetectionInterval() { return 20; }
41 |
42 | @Override
43 | public Boolean previewConnectionHiddenChange() { return true; }
44 |
45 | @Override
46 | public void mouseClicked(MouseEvent e) {
47 | if (e.getButton() == MouseEvent.BUTTON3) {
48 | resetHiddenStatusForAll(CONNECTION_STANDARD_SUBPRIO);
49 | getMapPanel().repaint();
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Edit/CopySelectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Edit;
2 |
3 | import AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogCopyPasteMenu.bDebugLogCopyPasteInfo;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeImageButton;
10 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
11 |
12 | public class CopySelectionButton extends CopyPasteBaseButton {
13 |
14 | public CopySelectionButton(JPanel panel) {
15 | button = makeImageButton("buttons/copy", "buttons/copy_selected", null, "copypaste_copy_tooltip","copypaste_copy_alt", panel, false, this);
16 | }
17 |
18 | @Override
19 | public String getButtonID() { return "CopySelectionButton"; }
20 |
21 | @Override
22 | public String getButtonAction() { return "ActionButton"; }
23 |
24 | @Override
25 | public String getButtonPanel() { return "Edit"; }
26 |
27 | @Override
28 | public Boolean ignoreButtonDeselect() { return true; }
29 |
30 | @Override
31 | public void actionPerformed(ActionEvent e) {
32 | super.actionPerformed(e);
33 | if (bDebugLogCopyPasteInfo) LOG.info("CopySelectionButton > Button Pressed");
34 | copySelected();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Edit/CutSelectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Edit;
2 |
3 | import AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogCopyPasteMenu.bDebugLogCopyPasteInfo;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeImageButton;
10 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
11 |
12 | public class CutSelectionButton extends CopyPasteBaseButton {
13 |
14 | public CutSelectionButton(JPanel panel) {
15 | button = makeImageButton("buttons/cut", "buttons/cut_selected", null, "copypaste_cut_tooltip","copypaste_cut_alt", panel, false, this);
16 | }
17 |
18 | @Override
19 | public String getButtonID() { return "CutSelectionButton"; }
20 |
21 | @Override
22 | public String getButtonAction() { return "ActionButton"; }
23 |
24 | @Override
25 | public String getButtonPanel() { return "Edit"; }
26 |
27 | @Override
28 | public Boolean ignoreButtonDeselect() { return true; }
29 |
30 | @Override
31 | public void actionPerformed(ActionEvent e) {
32 | super.actionPerformed(e);
33 | if (bDebugLogCopyPasteInfo) LOG.info("CutSelectionButton > Button Pressed");
34 | cutSelected();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Edit/PasteSelectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Edit;
2 |
3 | import AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton;
4 | import AutoDriveEditor.Managers.ChangeManager;
5 | import AutoDriveEditor.RoadNetwork.MapNode;
6 | import AutoDriveEditor.RoadNetwork.RoadMap;
7 |
8 | import javax.swing.*;
9 | import java.awt.event.ActionEvent;
10 | import java.util.ArrayList;
11 | import java.util.LinkedList;
12 |
13 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
14 | import static AutoDriveEditor.GUI.MapPanel.isStale;
15 | import static AutoDriveEditor.GUI.MapPanel.setStale;
16 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogCopyPasteMenu.bDebugLogCopyPasteInfo;
17 | import static AutoDriveEditor.Managers.MultiSelectManager.clearMultiSelection;
18 | import static AutoDriveEditor.Utils.GUIUtils.makeImageButton;
19 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
20 |
21 | public class PasteSelectionButton extends CopyPasteBaseButton {
22 |
23 | public PasteSelectionButton(JPanel panel) {
24 | button = makeImageButton("buttons/paste", "buttons/paste_selected", null, "copypaste_paste_tooltip","copypaste_paste_alt", panel, false, this);
25 | }
26 |
27 | @Override
28 | public String getButtonID() { return "PasteSelectionButton"; }
29 |
30 | @Override
31 | public String getButtonAction() { return "ActionButton"; }
32 |
33 | @Override
34 | public String getButtonPanel() { return "Edit"; }
35 |
36 | @Override
37 | public Boolean ignoreButtonDeselect() { return true; }
38 |
39 | @Override
40 | public void actionPerformed(ActionEvent e) {
41 | super.actionPerformed(e);
42 | if (bDebugLogCopyPasteInfo) LOG.info("PasteSelectionButton > Button Pressed");
43 | pasteSelected();
44 | }
45 |
46 | //
47 | // Paste selection changer
48 | //
49 |
50 | public static class PasteSelectionChanger implements ChangeManager.Changeable {
51 | //private final LinkedList storeNodes;
52 | private final ArrayList storeNodes;
53 | private final boolean isStale;
54 |
55 | public PasteSelectionChanger(LinkedList nodes){
56 | super();
57 | this.storeNodes = new ArrayList<>(nodes);
58 | this.isStale = isStale();
59 | }
60 |
61 | public void undo(){
62 | clearMultiSelection();
63 | RoadMap.networkNodesList.removeAll(this.storeNodes);
64 | getMapPanel().repaint();
65 | setStale(this.isStale);
66 | }
67 |
68 | public void redo(){
69 | RoadMap.networkNodesList.addAll(this.storeNodes);
70 | getMapPanel().repaint();
71 | setStale(true);
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/MarkerBaseButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons;
2 |
3 | public abstract class MarkerBaseButton extends BaseButton {
4 |
5 | public static class markerDestinationInfo {
6 | private final String name;
7 | private final String group;
8 | public markerDestinationInfo(String destName, String groupName){
9 | name = destName;
10 | group = groupName;
11 | }
12 |
13 | //
14 | // getter setters
15 | //
16 |
17 | public String getName() {
18 | return name;
19 | }
20 |
21 | public String getGroup() {
22 | return group;
23 | }
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Markers/DeleteMarkerButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Markers;
2 |
3 | import AutoDriveEditor.GUI.Buttons.MarkerBaseButton;
4 | import AutoDriveEditor.Managers.ChangeManager;
5 | import AutoDriveEditor.RoadNetwork.MapNode;
6 |
7 | import javax.swing.*;
8 | import java.awt.event.MouseEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
11 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
12 | import static AutoDriveEditor.GUI.MapPanel.*;
13 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
14 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
15 | import static AutoDriveEditor.XMLConfig.AutoSave.resumeAutoSaving;
16 | import static AutoDriveEditor.XMLConfig.AutoSave.suspendAutoSaving;
17 |
18 | public class DeleteMarkerButton extends MarkerBaseButton {
19 |
20 | public DeleteMarkerButton(JPanel panel) {
21 | button = makeImageToggleButton("buttons/deletemarker","buttons/deletemarker_selected", null,"markers_delete_tooltip","markers_delete_alt", panel, false, false, null, false, this);
22 | }
23 |
24 | @Override
25 | public String getButtonID() { return "DeleteMarkerButton"; }
26 |
27 | @Override
28 | public String getButtonAction() { return "ActionButton"; }
29 |
30 | @Override
31 | public String getButtonPanel() { return "Markers"; }
32 |
33 | @Override
34 | public String getInfoText() { return getLocaleString("markers_delete_tooltip"); }
35 |
36 | @Override
37 | public void mouseClicked(MouseEvent e) {
38 | if (e.getButton() == MouseEvent.BUTTON1) {
39 | MapNode selectedNode = getNodeAtScreenPosition(e.getX(), e.getY());
40 | if (selectedNode != null) {
41 | if (selectedNode.hasMapMarker()) {
42 | removeMarkerFromNode(selectedNode);
43 | }
44 | }
45 | }
46 | }
47 |
48 | public void removeMarkerFromNode(MapNode fromMapNode) {
49 | suspendAutoSaving();
50 | changeManager.addChangeable( new MarkerRemoveChanger(fromMapNode));
51 | fromMapNode.removeMapMarker();
52 | setStale(true);
53 | getMapPanel().repaint();
54 | resumeAutoSaving();
55 | }
56 |
57 | public static class MarkerRemoveChanger implements ChangeManager.Changeable {
58 | private final MapNode markerNode;
59 | private final String markerName;
60 | private final String markerGroup;
61 | private final Boolean isStale;
62 |
63 | public MarkerRemoveChanger(MapNode mapnode){
64 | this.markerNode = mapnode;
65 | this.markerName = mapnode.getMarkerName();
66 | this.markerGroup = mapnode.getMarkerGroup();
67 | this.isStale = isStale();
68 | }
69 |
70 | public void undo(){
71 | this.markerNode.createMapMarker(this.markerName, this.markerGroup);
72 | getMapPanel().repaint();
73 | setStale(this.isStale);
74 | }
75 |
76 | public void redo(){
77 | this.markerNode.removeMapMarker();
78 | getMapPanel().repaint();
79 | setStale(true);
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Nodes/AddPrimaryNodeButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Nodes;
2 |
3 | import AutoDriveEditor.GUI.Buttons.AddNodeBaseButton;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 |
6 | import javax.swing.*;
7 | import java.awt.event.MouseEvent;
8 | import java.awt.geom.Point2D;
9 |
10 | import static AutoDriveEditor.GUI.MapPanel.screenPosToWorldPos;
11 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
12 | import static AutoDriveEditor.Managers.ScanManager.checkAreaForNodeOverlap;
13 | import static AutoDriveEditor.RoadNetwork.MapNode.NODE_FLAG_REGULAR;
14 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
15 |
16 | public class AddPrimaryNodeButton extends AddNodeBaseButton {
17 |
18 | public AddPrimaryNodeButton(JPanel panel) {
19 | button = makeImageToggleButton("buttons/createprimary","buttons/createprimary_selected", null, "nodes_create_primary_node_tooltip", "nodes_create_primary_node_alt", panel, false, false, null, false, this);
20 | }
21 |
22 | @Override
23 | public String getButtonID() { return "AddPrimaryNodeButton"; }
24 |
25 | @Override
26 | public String getButtonAction() { return "ActionButton"; }
27 |
28 | @Override
29 | public String getButtonPanel() { return "Nodes"; }
30 |
31 | @Override
32 | public String getInfoText() { return getLocaleString("nodes_create_primary_node_tooltip"); }
33 |
34 | @Override
35 | public void mouseReleased(MouseEvent e) {
36 | if (e.getButton() == MouseEvent.BUTTON1) {
37 | Point2D worldPos = screenPosToWorldPos(e.getX(), e.getY());
38 | MapNode newNode = createNode(worldPos.getX(), worldPos.getY(), NODE_FLAG_REGULAR);
39 | checkAreaForNodeOverlap(newNode);
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Nodes/AddSecondaryNodeButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Nodes;
2 |
3 | import AutoDriveEditor.GUI.Buttons.AddNodeBaseButton;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 |
6 | import javax.swing.*;
7 | import java.awt.event.MouseEvent;
8 | import java.awt.geom.Point2D;
9 |
10 | import static AutoDriveEditor.GUI.MapPanel.screenPosToWorldPos;
11 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
12 | import static AutoDriveEditor.Managers.ScanManager.checkAreaForNodeOverlap;
13 | import static AutoDriveEditor.RoadNetwork.MapNode.NODE_FLAG_SUBPRIO;
14 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
15 |
16 | public class AddSecondaryNodeButton extends AddNodeBaseButton {
17 |
18 | public AddSecondaryNodeButton(JPanel panel) {
19 | button = makeImageToggleButton("buttons/createsecondary","buttons/createsecondary_selected", null, "nodes_create_secondary_node_tooltip", "nodes_create_secondary_node_alt", panel, false, false, null, false, this);
20 | }
21 |
22 | @Override
23 | public String getButtonID() { return "AddSecondaryNodeButton"; }
24 |
25 | @Override
26 | public String getButtonAction() { return "ActionButton"; }
27 |
28 | @Override
29 | public String getButtonPanel() { return "Nodes"; }
30 |
31 | @Override
32 | public String getInfoText() { return getLocaleString("nodes_create_secondary_node_tooltip"); }
33 |
34 | @Override
35 | public void mouseReleased(MouseEvent e) {
36 | if (e.getButton() == MouseEvent.BUTTON1) {
37 | Point2D worldPos = screenPosToWorldPos(e.getX(), e.getY());
38 | MapNode newNode = createNode(worldPos.getX(), worldPos.getY(), NODE_FLAG_SUBPRIO);
39 | checkAreaForNodeOverlap(newNode);
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Nodes/DualConnectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Nodes;
2 |
3 | import AutoDriveEditor.GUI.Buttons.LinerLineBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseListener;
7 |
8 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeStateChangeImageToggleButton;
10 | import static AutoDriveEditor.Utils.ImageUtils.loadImageIcon;
11 |
12 | public class DualConnectionButton extends LinerLineBaseButton implements MouseListener {
13 |
14 | private final ImageIcon dualConnectionIcon;
15 | private final ImageIcon dualConnectionSelectedIcon;
16 | private final ImageIcon dualConnectionSubPrioIcon;
17 | private final ImageIcon dualConnectionSubPrioSelectedIcon;
18 |
19 |
20 | public DualConnectionButton(JPanel panel) {
21 | dualConnectionIcon = loadImageIcon("editor/buttons/connectdual.png");
22 | dualConnectionSelectedIcon = loadImageIcon("editor/buttons/connectdual_selected.png");
23 | dualConnectionSubPrioIcon = loadImageIcon("editor/buttons/connectdual_subprio.png");
24 | dualConnectionSubPrioSelectedIcon = loadImageIcon("editor/buttons/connectdual_subprio_selected.png");
25 |
26 | button = makeStateChangeImageToggleButton("buttons/connectdual","buttons/connectdual_selected", null, "nodes_create_dual_connection_tooltip", "nodes_create_dual_connection_alt", panel, false, false, null, false, this);
27 | //add Mouse Listener to detect right click on button to change between normal/subprio nodes
28 | button.addMouseListener(this);
29 | connectionType = CONNECTION_DUAL;
30 | }
31 |
32 | @Override
33 | public String getButtonID() { return "DualConnectionButton"; }
34 |
35 | @Override
36 | public String getButtonAction() { return "ActionButton"; }
37 |
38 | @Override
39 | public String getButtonPanel() { return "Nodes"; }
40 |
41 | @Override
42 | public String getInfoText() { return getLocaleString("nodes_create_dual_connection_tooltip"); }
43 |
44 | @Override
45 | protected void setNormalStateIcons() {
46 | button.setIcon(dualConnectionIcon);
47 | button.setSelectedIcon(dualConnectionSelectedIcon);
48 | }
49 |
50 | @Override
51 | protected void setAlternateStateIcons() {
52 | button.setIcon(dualConnectionSubPrioIcon);
53 | button.setSelectedIcon(dualConnectionSubPrioSelectedIcon);
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Nodes/NormalConnectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Nodes;
2 |
3 | import AutoDriveEditor.GUI.Buttons.LinerLineBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseListener;
7 |
8 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeStateChangeImageToggleButton;
10 | import static AutoDriveEditor.Utils.ImageUtils.loadImageIcon;
11 |
12 | public class NormalConnectionButton extends LinerLineBaseButton implements MouseListener {
13 |
14 | private final ImageIcon normalConnectionIcon;
15 | private final ImageIcon normalConnectionSelectedIcon;
16 | private final ImageIcon normalConnectionSubPrioIcon;
17 | private final ImageIcon normalConnectionSubPrioSelectedIcon;
18 |
19 |
20 | public NormalConnectionButton(JPanel panel) {
21 | normalConnectionIcon = loadImageIcon("editor/buttons/connectregular.png");
22 | normalConnectionSelectedIcon = loadImageIcon("editor/buttons/connectregular_selected.png");
23 | normalConnectionSubPrioIcon = loadImageIcon("editor/buttons/connectregular_subprio.png");
24 | normalConnectionSubPrioSelectedIcon = loadImageIcon("editor/buttons/connectregular_subprio_selected.png");
25 |
26 | button = makeStateChangeImageToggleButton("buttons/connectregular", "buttons/connectregular_selected", null,"nodes_create_regular_connection_tooltip","nodes_create_regular_connection_alt", panel, false, false, null, false, this);
27 | //add Mouse Listener to detect right click on button to change between normal/subprio nodes
28 | button.addMouseListener(this);
29 | connectionType = CONNECTION_STANDARD;
30 | }
31 |
32 | @Override
33 | public String getButtonID() { return "NormalConnectionButton"; }
34 |
35 | @Override
36 | public String getButtonAction() { return "ActionButton"; }
37 |
38 | @Override
39 | public String getButtonPanel() { return "Nodes"; }
40 |
41 | @Override
42 | public String getInfoText() { return getLocaleString("nodes_create_regular_connection_tooltip"); }
43 |
44 | @Override
45 | protected void setNormalStateIcons() {
46 | button.setIcon(normalConnectionIcon);
47 | button.setSelectedIcon(normalConnectionSelectedIcon);
48 | }
49 |
50 | @Override
51 | protected void setAlternateStateIcons() {
52 | button.setIcon(normalConnectionSubPrioIcon);
53 | button.setSelectedIcon(normalConnectionSubPrioSelectedIcon);
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Nodes/ReverseConnectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Nodes;
2 |
3 | import AutoDriveEditor.GUI.Buttons.LinerLineBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.MouseListener;
7 |
8 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeStateChangeImageToggleButton;
10 | import static AutoDriveEditor.Utils.ImageUtils.loadImageIcon;
11 |
12 | public class ReverseConnectionButton extends LinerLineBaseButton implements MouseListener {
13 |
14 | private final ImageIcon reverseConnectionIcon;
15 | private final ImageIcon reverseConnectionSelectedIcon;
16 | private final ImageIcon reverseConnectionSubPrioIcon;
17 | private final ImageIcon reverseConnectionSubPrioSelectedIcon;
18 |
19 | public ReverseConnectionButton(JPanel panel) {
20 | reverseConnectionIcon = loadImageIcon("editor/buttons/connectreverse.png");
21 | reverseConnectionSelectedIcon = loadImageIcon("editor/buttons/connectreverse_selected.png");
22 | reverseConnectionSubPrioIcon = loadImageIcon("editor/buttons/connectreverse_subprio.png");
23 | reverseConnectionSubPrioSelectedIcon = loadImageIcon("editor/buttons/connectreverse_subprio_selected.png");
24 |
25 | button = makeStateChangeImageToggleButton("buttons/connectreverse","buttons/connectreverse_selected", null, "nodes_create_reverse_connection_tooltip", "nodes_create_reverse_connection_alt", panel, false, false, null, false, this);
26 | button.addMouseListener(this);
27 | connectionType = CONNECTION_REVERSE;
28 | }
29 |
30 | @Override
31 | public String getButtonID() { return "ReverseConnectionButton"; }
32 |
33 | @Override
34 | public String getButtonAction() { return "ActionButton"; }
35 |
36 | @Override
37 | public String getButtonPanel() { return "Nodes"; }
38 |
39 | @Override
40 | public String getInfoText() { return getLocaleString("nodes_create_reverse_connection_tooltip"); }
41 |
42 | @Override
43 | protected void setNormalStateIcons() {
44 | button.setIcon(reverseConnectionIcon);
45 | button.setSelectedIcon(reverseConnectionSelectedIcon);
46 | }
47 |
48 | @Override
49 | protected void setAlternateStateIcons() {
50 | button.setIcon(reverseConnectionSubPrioIcon);
51 | button.setSelectedIcon(reverseConnectionSubPrioSelectedIcon);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Options/ContinuousConnectionButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Options;
2 |
3 | import AutoDriveEditor.GUI.Buttons.OptionsBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.GUI.TextPanel.showInTextArea;
9 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
10 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
11 | import static AutoDriveEditor.XMLConfig.EditorXML.bContinuousConnections;
12 |
13 | public class ContinuousConnectionButton extends OptionsBaseButton {
14 |
15 | public ContinuousConnectionButton(JPanel panel) {
16 | String tooltip;
17 | boolean isSelected;
18 |
19 | if (bContinuousConnections) {
20 | tooltip = "options_con_connect_enabled_tooltip";
21 | isSelected = false;
22 | } else {
23 | tooltip = "options_con_connect_disabled_tooltip";
24 | isSelected = true;
25 | }
26 | button = makeImageToggleButton("buttons/conconnect", "buttons/conconnect_selected", null, tooltip, "options_con_connect_alt", panel, !bContinuousConnections, false, null, false, this);
27 | button.setSelected(isSelected);
28 | }
29 |
30 | @Override
31 | public String getButtonID() { return "ContinuousConnectionButton"; }
32 |
33 | @Override
34 | public String getInfoText() { return null; }
35 |
36 | @Override
37 | public void actionPerformed(ActionEvent e) {
38 | super.actionPerformed(e);
39 | bContinuousConnections = !bContinuousConnections;
40 | if (bContinuousConnections) {
41 | button.setToolTipText(getLocaleString("options_con_connect_enabled_tooltip"));
42 | showInTextArea(getLocaleString("options_con_connect_enabled_tooltip"), true, false);
43 | } else {
44 | button.setToolTipText(getLocaleString("options_con_connect_disabled_tooltip"));
45 | showInTextArea(getLocaleString("options_con_connect_disabled_tooltip"), true, false);
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Options/NodeSizeDownButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Options;
2 |
3 | import AutoDriveEditor.GUI.Buttons.OptionsBaseButton;
4 |
5 | import javax.swing.*;
6 |
7 | import static AutoDriveEditor.Utils.GUIUtils.makeImageButton;
8 | import static AutoDriveEditor.XMLConfig.EditorXML.nodeSize;
9 | import static AutoDriveEditor.XMLConfig.EditorXML.setNewNodeSize;
10 |
11 | public class NodeSizeDownButton extends OptionsBaseButton {
12 |
13 | public NodeSizeDownButton(JPanel panel) {
14 | button = makeImageButton("buttons/nodeminus", "buttons/nodeminus_selected", null,"options_node_size_minus_tooltip","options_node_size_minus_alt", panel, false, this);
15 | Timer nodeDownButtonTimer = new Timer(75, e -> {
16 | if (nodeSize > 0.1) setNewNodeSize(nodeSize - 0.10f);
17 | });
18 | nodeDownButtonTimer.setCoalesce(true);
19 | nodeDownButtonTimer.setRepeats(true);
20 |
21 | button.getModel().addChangeListener(e -> {
22 | if (button.getModel().isPressed()) {
23 | nodeDownButtonTimer.start();
24 | } else {
25 | nodeDownButtonTimer.stop();
26 | }
27 | });
28 | }
29 |
30 | @Override
31 | public String getButtonID() { return "NodeSizeDownButton"; }
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Options/NodeSizeUpButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Options;
2 |
3 | import AutoDriveEditor.GUI.Buttons.OptionsBaseButton;
4 |
5 | import javax.swing.*;
6 |
7 | import static AutoDriveEditor.Utils.GUIUtils.makeImageButton;
8 | import static AutoDriveEditor.XMLConfig.EditorXML.nodeSize;
9 | import static AutoDriveEditor.XMLConfig.EditorXML.setNewNodeSize;
10 |
11 | public class NodeSizeUpButton extends OptionsBaseButton {
12 |
13 | public NodeSizeUpButton(JPanel panel) {
14 | button = makeImageButton("buttons/nodeplus", "buttons/nodeplus_selected", null,"options_node_size_plus_tooltip","options_node_size_plus_alt", panel, false, this);
15 | Timer nodeUpButtonTimer = new Timer(75, e -> setNewNodeSize(nodeSize + 0.10f));
16 | nodeUpButtonTimer.setCoalesce(true);
17 | nodeUpButtonTimer.setRepeats(true);
18 |
19 | button.getModel().addChangeListener(e -> {
20 | if (button.getModel().isPressed()) {
21 | nodeUpButtonTimer.start();
22 | } else {
23 | nodeUpButtonTimer.stop();
24 | }
25 | });
26 | }
27 |
28 | @Override
29 | public String getButtonID() { return "NodeSizeUpButton"; }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Options/OpenConfigButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Options;
2 |
3 | import AutoDriveEditor.GUI.Buttons.OptionsBaseButton;
4 | import AutoDriveEditor.GUI.Config.ConfigGUI;
5 | import AutoDriveEditor.Listeners.ConfigListener;
6 |
7 | import javax.swing.*;
8 | import java.awt.event.ActionEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 | import static AutoDriveEditor.GUI.Config.ConfigGUI.configGUI;
12 | import static AutoDriveEditor.GUI.Config.ConfigGUI.createConfigGUI;
13 | import static AutoDriveEditor.Utils.GUIUtils.makeImageButton;
14 |
15 | public class OpenConfigButton extends OptionsBaseButton {
16 |
17 | public static ConfigListener configListener;
18 |
19 | public OpenConfigButton(JPanel panel) {
20 | button = makeImageButton("buttons/config", "buttons/config_selected", null, "options_config_open_tooltip","options_config_open_alt", panel, true, this);
21 | configListener = new ConfigListener();
22 | }
23 |
24 | @Override
25 | public String getButtonID() { return "OpenConfigButton"; }
26 |
27 | @Override
28 | public void actionPerformed(ActionEvent e) {
29 | super.actionPerformed(e);
30 | if (!ConfigGUI.isConfigWindowOpen) {
31 | createConfigGUI(editor);
32 | } else {
33 | configGUI.toFront();
34 | }
35 | }
36 |
37 | // Override base function - ignore any enabled/disabled messages as we want it available at all times
38 | @Override
39 | public void setEnabled(boolean enabled) {}
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Options/SelectHiddenButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Options;
2 |
3 | import AutoDriveEditor.GUI.Buttons.OptionsBaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.GUI.TextPanel.showInTextArea;
9 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
10 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
11 | import static AutoDriveEditor.XMLConfig.EditorXML.bSelectHidden;
12 |
13 | public class SelectHiddenButton extends OptionsBaseButton {
14 |
15 | public SelectHiddenButton(JPanel panel) {
16 | String tooltip;
17 | boolean isSelected;
18 |
19 | if (bSelectHidden) {
20 | tooltip = "display_select_hidden_enabled_tooltip";
21 | isSelected = false;
22 | } else {
23 | tooltip = "display_select_hidden_disabled_tooltip";
24 | isSelected = true;
25 | }
26 |
27 | button = makeImageToggleButton("buttons/hidden","buttons/hidden_selected", null, tooltip, tooltip, panel, false, false, null, false, this);
28 | button.setSelected(isSelected);
29 | }
30 |
31 | @Override
32 | public String getButtonID() { return "SelectHiddenButton"; }
33 |
34 | @Override
35 | public String getButtonAction() { return "ActionButton"; }
36 |
37 | @Override
38 | public String getButtonPanel() { return "Options"; }
39 |
40 | @Override
41 | public String getInfoText() { return getLocaleString("nodes_create_primary_node_tooltip"); }
42 |
43 | @Override
44 | public void actionPerformed(ActionEvent e) {
45 | super.actionPerformed(e);
46 | bSelectHidden = !bSelectHidden;
47 | if (bSelectHidden) {
48 | button.setToolTipText(getLocaleString("display_select_hidden_enabled_tooltip"));
49 | showInTextArea(getLocaleString("display_select_hidden_enabled_tooltip"), true, false);
50 | } else {
51 | button.setToolTipText(getLocaleString("display_select_hidden_disabled_tooltip"));
52 | showInTextArea(getLocaleString("display_select_hidden_disabled_tooltip"), true, false);
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/OptionsBaseButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons;
2 |
3 | public abstract class OptionsBaseButton extends BaseButton{
4 |
5 | @Override
6 | public String getButtonAction() { return "OptionButton"; }
7 |
8 | @Override
9 | public String getButtonPanel() { return "Options"; }
10 |
11 | @Override
12 | public String getInfoText() { return null; }
13 |
14 | @Override
15 | public Boolean ignoreButtonDeselect() { return true; }
16 |
17 | @Override
18 | public void setSelected(boolean selected) {}
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Testing/TemplateButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Testing;
2 |
3 | import AutoDriveEditor.GUI.Buttons.BaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.*;
7 | import java.awt.event.ActionEvent;
8 | import java.awt.event.MouseEvent;
9 | import java.awt.event.MouseWheelEvent;
10 |
11 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
12 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
13 |
14 | @SuppressWarnings("unused")
15 | public class TemplateButton extends BaseButton {
16 |
17 | //
18 | //
19 | //
20 |
21 | public TemplateButton(JPanel panel) {
22 |
23 | // create your button, the pointer to it must be assigned to the button variable
24 | //
25 | // e.g.
26 | // button = new JButton()
27 | // button = new JToggleButton()
28 |
29 | button = makeImageToggleButton( "buttons/unknown", "buttons/unknown_selected", null, "nodes_test_tooltip", "options_con_connect_alt", panel, true, true, null, false, this);
30 | }
31 |
32 | @Override
33 | public String getButtonID() { return "TemplateButton"; }
34 |
35 | @Override
36 | public String getButtonAction() { return "TemplateAction"; }
37 |
38 | @Override
39 | public String getButtonPanel() { return "Template"; }
40 |
41 | @Override
42 | public String getInfoText() { return getLocaleString("nodes_template_tooltip"); }
43 |
44 | @Override
45 | public Boolean ignoreButtonDeselect() { return false; }
46 |
47 | @Override
48 | public Boolean useMultiSelection() { return true; }
49 |
50 | @Override
51 | public Boolean previewNodeSelectionChange() { return true; }
52 |
53 | @Override
54 | public void setEnabled(boolean selected) {}
55 |
56 | @Override
57 | public void setSelected(boolean selected) {}
58 |
59 | @Override
60 | public void actionPerformed(ActionEvent e) {}
61 |
62 | @Override
63 | public void mouseClicked(MouseEvent e) {}
64 |
65 | @Override
66 | public void mousePressed(MouseEvent e) {}
67 |
68 | @Override
69 | public void mouseReleased(MouseEvent e) {}
70 |
71 | @Override
72 | public void mouseDragged(MouseEvent e) {}
73 |
74 | @Override
75 | public void mouseMoved(MouseEvent e) {}
76 |
77 | @Override
78 | public void mouseWheelMoved(MouseWheelEvent e) {}
79 |
80 | @Override
81 | public void drawToScreen(Graphics g) {}
82 |
83 |
84 |
85 |
86 | }
87 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Buttons/Testing/TestButton.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Buttons.Testing;
2 |
3 | import AutoDriveEditor.GUI.Buttons.BaseButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeImageToggleButton;
10 |
11 | public class TestButton extends BaseButton {
12 |
13 | public static boolean bTestButton;
14 |
15 | // test overrides
16 |
17 | public TestButton(JPanel panel) {
18 | button = makeImageToggleButton( "buttons/unknown", "buttons/unknown_selected", null, "nodes_test_tooltip", "options_con_connect_alt", panel, bTestButton, true, null, false, this);
19 | }
20 |
21 | @Override
22 | public String getButtonID() { return "TestButton"; }
23 |
24 | @Override
25 | public String getButtonAction() { return "ActionButton"; }
26 |
27 | @Override
28 | public String getButtonPanel() { return "Test"; }
29 |
30 | @Override
31 | public String getInfoText() { return getLocaleString("nodes_test_tooltip"); }
32 |
33 | @Override
34 | public Boolean ignoreButtonDeselect() { return true; }
35 |
36 | @Override
37 | public void setSelected(boolean selected) {}
38 |
39 |
40 | @Override
41 | public void actionPerformed(ActionEvent e) {
42 | super.actionPerformed(e);
43 | bTestButton = !bTestButton;
44 | /*if (bTestButton) {
45 | if (bIsDebugEnabled) LOG.info("TestButton = {}", true);
46 | String mainText = "FATAL Sequence Error detected
" + "e.getMessage()" + "
" + "See AutoDriveEditor.log for more info";
47 | JOptionPane.showMessageDialog(editor, mainText, "FATAL Sequence Error!!", JOptionPane.ERROR_MESSAGE);
48 | }*/
49 |
50 | /*if (multiSelectList.size() > 0) {
51 | for (MapNode node: multiSelectList) {
52 | LOG.info("ID {}", node.id);
53 | }
54 | Collections.sort(multiSelectList, (nl1, nl2) -> Integer.compare(nl1.id, nl2.id));
55 | for (MapNode node: multiSelectList) {
56 | LOG.info("ID {}", node.id);
57 | }
58 |
59 | } else {
60 | LOG.info("list empty");
61 | }*/
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Config/Tabs/ExperimentalTab.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Config.Tabs;
2 |
3 | import javax.swing.*;
4 | import java.awt.*;
5 | import java.awt.event.ItemEvent;
6 |
7 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
8 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeCheckBox;
10 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowSelectionBounds;
11 |
12 | public class ExperimentalTab extends JPanel {
13 | public ExperimentalTab() {
14 |
15 | setLayout(new GridLayout(1,2,0,5));
16 |
17 | // Show Selection Bounds checkbox
18 |
19 | JLabel showSelectionBoundsLabel = new JLabel(getLocaleString("panel_config_tab_mappanel_show_selection_bounds") + " ", JLabel.TRAILING);
20 | JCheckBox cbShowSelectionBounds = makeCheckBox(showSelectionBoundsLabel, "ShowSelectionBounds", null, true, bShowSelectionBounds);
21 | cbShowSelectionBounds.addItemListener(e -> {
22 | bShowSelectionBounds = e.getStateChange() == ItemEvent.SELECTED;
23 | getMapPanel().repaint();
24 | });
25 | showSelectionBoundsLabel.setLabelFor(cbShowSelectionBounds);
26 | add(showSelectionBoundsLabel);
27 | add(cbShowSelectionBounds);
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Config/Tabs/MapPanelTab.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Config.Tabs;
2 |
3 | import javax.swing.*;
4 | import javax.swing.border.EmptyBorder;
5 | import java.awt.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
9 | import static AutoDriveEditor.Utils.GUIUtils.makeCheckBox;
10 | import static AutoDriveEditor.XMLConfig.EditorXML.*;
11 |
12 | public class MapPanelTab extends JPanel {
13 |
14 | public MapPanelTab() {
15 |
16 | setLayout(new GridLayout(6,2,0,5));
17 |
18 | // Use online images checkbox
19 |
20 | JLabel enableOnlineImagesLabel = new JLabel(getLocaleString("panel_config_tab_mappanel_online_images") + " ", JLabel.TRAILING);
21 | JCheckBox cbEnableOnlineImages = makeCheckBox(enableOnlineImagesLabel, getLocaleString("panel_config_tab_mappanel_online_images"), null, true, bUseOnlineMapImages);
22 | cbEnableOnlineImages.addItemListener(e -> bUseOnlineMapImages = e.getStateChange() == ItemEvent.SELECTED);
23 | enableOnlineImagesLabel.setLabelFor(cbEnableOnlineImages);
24 | add(enableOnlineImagesLabel);
25 | add(cbEnableOnlineImages);
26 |
27 | // Middle mouse button move checkbox
28 |
29 | JLabel middleMouseMoveLabel = new JLabel(getLocaleString("panel_config_tab_mappanel_middle_mouse_move") + " ", JLabel.TRAILING);
30 | JCheckBox cbMiddleMouseMove = makeCheckBox(middleMouseMoveLabel, getLocaleString("panel_config_tab_mappanel_middle_mouse_move"), null, true, bMiddleMouseMove);
31 | cbMiddleMouseMove.addItemListener(e -> bMiddleMouseMove = e.getStateChange() == ItemEvent.SELECTED);
32 | middleMouseMoveLabel.setLabelFor(cbMiddleMouseMove);
33 | add(middleMouseMoveLabel);
34 | add(cbMiddleMouseMove);
35 |
36 | // Lock toolbar checkbox
37 |
38 | JLabel lockToolbarLabel = new JLabel(getLocaleString("panel_config_tab_mappanel_lock_toolbar") + " ", JLabel.TRAILING);
39 | JCheckBox cbLockToolbar = makeCheckBox(lockToolbarLabel, getLocaleString("panel_config_tab_mappanel_lock_toolbar"), null, true, bLockToolbarPosition);
40 | cbLockToolbar.addItemListener(e -> bLockToolbarPosition = e.getStateChange() == ItemEvent.SELECTED);
41 | lockToolbarLabel.setLabelFor(cbLockToolbar);
42 | add(lockToolbarLabel);
43 | add(cbLockToolbar);
44 |
45 | cbLockToolbar.addPropertyChangeListener(evt -> {
46 | if ("UNCHECKEDHOT".equals(evt.getNewValue())) {
47 | bLockToolbarPosition = false;
48 | } else if ("CHECKEDHOT".equals(evt.getNewValue())) {
49 | bLockToolbarPosition = true;
50 | }
51 | });
52 |
53 | // Zoom interpolation checkbox
54 |
55 | JLabel smoothZoomLabel = new JLabel(getLocaleString("panel_config_tab_mappanel_interpolate_zoom") + " ", JLabel.TRAILING);
56 | JCheckBox cbSmoothZoom = makeCheckBox(middleMouseMoveLabel, getLocaleString("panel_config_tab_mappanel_interpolate_zoom"), null, true, bMiddleMouseMove);
57 | cbSmoothZoom.addItemListener(e -> bInterpolateZoom = e.getStateChange() == ItemEvent.SELECTED);
58 | smoothZoomLabel.setLabelFor(cbSmoothZoom);
59 | add(smoothZoomLabel);
60 | add(cbSmoothZoom);
61 |
62 | // Maximum zoom level text field and buttons
63 |
64 | JPanel zoomPanel = new JPanel();
65 | zoomPanel.setBorder(new EmptyBorder(new Insets(3,0,0,0)));
66 | zoomPanel.setLayout(new FlowLayout(FlowLayout.LEADING));
67 |
68 | JLabel maxZoomLabel = new JLabel(getLocaleString("panel_config_tab_mappanel_max_zoom") + " ", JLabel.TRAILING);
69 |
70 | SpinnerModel spinnerValue = new SpinnerNumberModel(maxZoomLevel, 1, 250, 1);
71 | JSpinner spinner = new JSpinner(spinnerValue);
72 | spinner.setPreferredSize(new Dimension(50,20));
73 |
74 | // TODO fix changing zoomLevel to below current level locking zooming
75 |
76 | spinner.addChangeListener(e -> {
77 | JSpinner spinner1 = (JSpinner) e.getSource();
78 | maxZoomLevel = (int) spinner1.getValue();
79 | });
80 |
81 | add(maxZoomLabel);
82 | zoomPanel.add(spinner);
83 | add(zoomPanel);
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/EditorImages.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI;
2 |
3 | import javax.swing.*;
4 | import java.awt.image.BufferedImage;
5 |
6 | import static AutoDriveEditor.Utils.ImageUtils.loadImage;
7 | import static AutoDriveEditor.Utils.ImageUtils.loadImageIcon;
8 |
9 |
10 | public class EditorImages {
11 |
12 | private static BufferedImage tractorImage;
13 | private static BufferedImage overlapWarningImage;
14 | private static BufferedImage negativeHeightWarningImage;
15 | private static BufferedImage parkingImage;
16 | private static BufferedImage markerImage;
17 | private static ImageIcon updateIcon;
18 | private static ImageIcon markerIcon;
19 | private static ImageIcon gameIcon;
20 | private static ImageIcon routeIcon;
21 |
22 |
23 |
24 |
25 | public static void loadIcons() {
26 |
27 | updateIcon = loadImageIcon("editor/update.png");
28 | markerIcon = loadImageIcon("editor/marker.png");
29 | gameIcon = loadImageIcon("editor/gameIcon.png");
30 | routeIcon = loadImageIcon("editor/routeIcon.png");
31 |
32 | tractorImage = loadImage("editor/tractor.png");
33 | markerImage = loadImage("editor/nodes/node_marker_small2.png");
34 | parkingImage = loadImage("editor/nodes/node_parking_small.png");
35 | overlapWarningImage = loadImage("editor/nodes/node_warning.png");
36 | negativeHeightWarningImage = loadImage("editor/nodes/node_warning_y.png");
37 | }
38 |
39 | public static ImageIcon getUpdateIcon() { return updateIcon; }
40 | public static ImageIcon getMarkerIcon() { return markerIcon; }
41 | public static ImageIcon getGameIcon() { return gameIcon; }
42 | public static ImageIcon getRouteIcon() { return routeIcon; }
43 |
44 | public static BufferedImage getMarkerImage() { return markerImage; }
45 | public static BufferedImage getTractorImage() { return tractorImage; }
46 | public static BufferedImage getOverlapWarningImage() { return overlapWarningImage; }
47 | public static BufferedImage getNegativeHeightWarningImage() { return negativeHeightWarningImage; }
48 | public static BufferedImage getParkingImage() { return parkingImage; }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogButtonInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogButtonInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogButton;
11 |
12 | public LogButtonInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_button_state", "menu_debug_log_button_state_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogButton = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogConfigGUIInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogConfigGUIInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogConfigGUIInfo;
11 |
12 | public LogConfigGUIInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_config_gui_info", "menu_debug_log_config_gui_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogConfigGUIInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogConfigMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogConfigMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogXMLInfo;
11 |
12 | public LogConfigMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_config", "menu_debug_log_config_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogXMLInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogConnectSelectionMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogConnectSelectionMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugConnectSelection;
11 |
12 | public LogConnectSelectionMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_connection_selection_info", "menu_debug_log_connection_selection_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugConnectSelection = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogCopyPasteMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogCopyPasteMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogCopyPasteInfo;
11 |
12 | public LogCopyPasteMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_copypaste_info", "menu_debug_log_copypaste_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogCopyPasteInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogCurveInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogCurveInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogCurveInfo;
11 |
12 | public LogCurveInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_curve_info", "menu_debug_log_curve_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogCurveInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogFileIOMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogFileIOMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogFileIO;
11 |
12 | public LogFileIOMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_fileio", "menu_debug_log_fileio_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogFileIO = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogFlipConnectionMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogFlipConnectionMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogFlipConnection;
11 |
12 | public LogFlipConnectionMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_flip_connection_info", "menu_debug_log_flip_connection_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogFlipConnection = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogGUIInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogGUIInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogGUIInfo;
11 |
12 | public LogGUIInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_gui_info", "menu_debug_log_gui_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogGUIInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogHeightmapInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogHeightmapInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogHeightMapInfo;
11 |
12 | public LogHeightmapInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_heightmap_info", "menu_debug_log_heightmap_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogHeightMapInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogLinearLineInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogLinearLineInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogLinearlineInfo;
11 |
12 | public LogLinearLineInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_linearline_info", "menu_debug_log_linearline_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogLinearlineInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogListenerStateMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogListenerStateMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugMenuState;
11 |
12 | public LogListenerStateMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_menu", "menu_debug_log_menu_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugMenuState = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogMarkerInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogMarkerInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogMarkerInfo;
11 |
12 | public LogMarkerInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_marker_info", "menu_debug_log_marker_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogMarkerInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogMergeFunctionMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogMergeFunctionMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogMerge;
11 |
12 | public LogMergeFunctionMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_merge", "menu_debug_log_merge_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogMerge = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogMultiSelectInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogMultiSelectInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogMultiSelectInfo;
11 |
12 | public LogMultiSelectInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_multiselect", "menu_debug_log_multiselect_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogMultiSelectInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogRenderInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogRenderInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogRenderInfo;
11 |
12 | public LogRenderInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_render_info", "menu_debug_log_render_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogRenderInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogRouteManagerMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogRouteManagerMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogRouteManager;
11 |
12 | public LogRouteManagerMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_routemanager", "menu_debug_log_routemanager_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogRouteManager = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogScanManagerInfoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogScanManagerInfoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogScanManagerInfo;
11 |
12 | public LogScanManagerInfoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_scanmanager_info", "menu_debug_log_scanmanager_info_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogScanManagerInfo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogUndoRedoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogUndoRedoMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogUndoRedo;
11 |
12 | public LogUndoRedoMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_undo_redo", "menu_debug_log_undo_redo_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogUndoRedo = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/LogZoomScaleMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | public class LogZoomScaleMenu extends JCheckBoxMenuItemBase {
9 |
10 | public static boolean bDebugLogZoomScale;
11 |
12 | public LogZoomScaleMenu() {
13 | makeCheckBoxMenuItem("menu_debug_log_zoom", "menu_debug_log_zoom_accstring", false, true);
14 | }
15 |
16 | @Override
17 | public void itemStateChanged(ItemEvent e) {
18 | super.itemStateChanged(e);
19 | AbstractButton menuItem = (AbstractButton) e.getItem();
20 | bDebugLogZoomScale = menuItem.isSelected();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/Logging/ShowZoomLevelInfo.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu.Logging;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 |
10 | public class ShowZoomLevelInfo extends JCheckBoxMenuItemBase {
11 |
12 | public static boolean bDebugShowZoomLevelInfo;
13 | public ShowZoomLevelInfo() {
14 | makeCheckBoxMenuItem("menu_debug_zoomlevel", "menu_debug_zoomlevel_accstring", false, true);
15 | }
16 |
17 | @Override
18 | public void itemStateChanged(ItemEvent e) {
19 | super.itemStateChanged(e);
20 | AbstractButton menuItem = (AbstractButton) e.getItem();
21 | bDebugShowZoomLevelInfo = menuItem.isSelected();
22 | getMapPanel().repaint();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/MoveNodeToCentreMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 | import AutoDriveEditor.RoadNetwork.RoadMap;
6 | import AutoDriveEditor.Utils.Classes.LabelNumberFilter;
7 |
8 | import javax.swing.*;
9 | import javax.swing.text.PlainDocument;
10 | import java.awt.event.ActionEvent;
11 | import java.awt.geom.Point2D;
12 |
13 | import static AutoDriveEditor.AutoDriveEditor.editor;
14 | import static AutoDriveEditor.AutoDriveEditor.mapPanel;
15 | import static AutoDriveEditor.Classes.MapImage.pdaImage;
16 | import static AutoDriveEditor.GUI.MapPanel.*;
17 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
18 | import static AutoDriveEditor.XMLConfig.EditorXML.maxZoomLevel;
19 |
20 | public class MoveNodeToCentreMenu extends JMenuItemBase {
21 | public MoveNodeToCentreMenu() {
22 | makeMenuItem("menu_debug_movetonode", "menu_debug_movetonode_accstring", true);
23 | }
24 |
25 | @Override
26 | public void actionPerformed(ActionEvent e) {
27 | super.actionPerformed(e);
28 |
29 | if (roadMap != null && pdaImage != null ) {
30 | JTextField centreNode = new JTextField(String.valueOf(1));
31 | JLabel labelNode = new JLabel(" ");
32 | PlainDocument docX = (PlainDocument) centreNode.getDocument();
33 | docX.setDocumentFilter(new LabelNumberFilter(labelNode, 0, RoadMap.networkNodesList.size(), false, false));
34 |
35 | Object[] inputFields = {getLocaleString("dialog_centre_node"), centreNode, labelNode};
36 |
37 | int option = JOptionPane.showConfirmDialog( editor, inputFields, ""+ getLocaleString("dialog_centre_node_title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
38 |
39 | if (option == JOptionPane.OK_OPTION) {
40 | zoomLevel = maxZoomLevel;
41 | updateNodeScaling();
42 | MapNode node = RoadMap.networkNodesList.get(Integer.parseInt(centreNode.getText()) - 1);
43 | Point2D target = worldPosToScreenPos(node.x, node.z);
44 | double x = (mapPanel.getWidth() >> 1) - target.getX();
45 | double y = (mapPanel.getHeight() >> 1) - target.getY();
46 | moveMapBy((int)x,(int)y);
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/ShowAllNodeIDMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.InputEvent;
7 | import java.awt.event.ItemEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
11 | public class ShowAllNodeIDMenu extends JCheckBoxMenuItemBase {
12 |
13 | public static boolean bDebugShowAllNodeID;
14 |
15 | public ShowAllNodeIDMenu() {
16 | makeCheckBoxMenuItem("menu_debug_show_all_node_ID", "menu_debug_show_all_node_ID_accstring", KeyEvent.VK_6, InputEvent.ALT_DOWN_MASK, false,true);
17 | }
18 |
19 | @Override
20 | public void itemStateChanged(ItemEvent e) {
21 | super.itemStateChanged(e);
22 | AbstractButton menuItem = (AbstractButton) e.getItem();
23 | bDebugShowAllNodeID = menuItem.isSelected();
24 | getMapPanel().repaint();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/ShowHeightMapInfo.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.GUI.TextPanel.showInTextArea;
10 |
11 | public class ShowHeightMapInfo extends JCheckBoxMenuItemBase {
12 |
13 | public static boolean bDebugShowHeightMapInfo;
14 | public ShowHeightMapInfo() {
15 | makeCheckBoxMenuItem("menu_debug_heightmap", "menu_debug_heightmap_accstring", false, true);
16 | }
17 |
18 | @Override
19 | public void itemStateChanged(ItemEvent e) {
20 | super.itemStateChanged(e);
21 | AbstractButton menuItem = (AbstractButton) e.getItem();
22 | bDebugShowHeightMapInfo = menuItem.isSelected();
23 | if (!menuItem.isSelected()) showInTextArea("", true, false);
24 | getMapPanel().repaint();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/ShowNodeHeightMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 |
10 | public class ShowNodeHeightMenu extends JCheckBoxMenuItemBase {
11 |
12 | public static boolean bDebugShowHeight;
13 | public ShowNodeHeightMenu() {
14 | makeCheckBoxMenuItem("menu_debug_showheight", "menu_debug_showheight_accstring", false, true);
15 | }
16 |
17 | @Override
18 | public void itemStateChanged(ItemEvent e) {
19 | super.itemStateChanged(e);
20 | AbstractButton menuItem = (AbstractButton) e.getItem();
21 | bDebugShowHeight = menuItem.isSelected();
22 | getMapPanel().repaint();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/ShowNodeLocationInfo.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.InputEvent;
7 | import java.awt.event.ItemEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
11 |
12 | public class ShowNodeLocationInfo extends JCheckBoxMenuItemBase {
13 |
14 | public static boolean bDebugShowNodeLocationInfo;
15 |
16 | public ShowNodeLocationInfo() {
17 | makeCheckBoxMenuItem("menu_debug_shownodelocationinfo", "menu_debug_shownodelocationinfo_accstring", KeyEvent.VK_7, InputEvent.ALT_DOWN_MASK, false, true);
18 | }
19 |
20 | @Override
21 | public void itemStateChanged(ItemEvent e) {
22 | super.itemStateChanged(e);
23 | AbstractButton menuItem = (AbstractButton) e.getItem();
24 | bDebugShowNodeLocationInfo = menuItem.isSelected();
25 | getMapPanel().repaint();
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/DebugMenu/ShowProfileInfo.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.DebugMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 |
10 | public class ShowProfileInfo extends JCheckBoxMenuItemBase {
11 |
12 | public static boolean bDebugShowProfileInfo;
13 | public ShowProfileInfo() {
14 | makeCheckBoxMenuItem("menu_debug_profile", "menu_debug_profile_accstring", false, true);
15 | }
16 |
17 | @Override
18 | public void itemStateChanged(ItemEvent e) {
19 | super.itemStateChanged(e);
20 | AbstractButton menuItem = (AbstractButton) e.getItem();
21 | bDebugShowProfileInfo = menuItem.isSelected();
22 | getMapPanel().repaint();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/Display/ShowMarkerIcons.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.Display;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowMarkerIcons;
10 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowMarkerNames;
11 |
12 | public class ShowMarkerIcons extends JCheckBoxMenuItemBase {
13 |
14 | public ShowMarkerIcons() {
15 | makeCheckBoxMenuItem("menu_display_show_marker_icons", "menu_display_show_marker_icons_accstring", bShowMarkerNames, true);
16 | }
17 |
18 | @Override
19 | public void itemStateChanged(ItemEvent e) {
20 | super.itemStateChanged(e);
21 | AbstractButton menuItem = (AbstractButton) e.getItem();
22 | bShowMarkerIcons = menuItem.isSelected();
23 | getMapPanel().repaint();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/Display/ShowMarkerNames.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.Display;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowMarkerNames;
10 |
11 | public class ShowMarkerNames extends JCheckBoxMenuItemBase {
12 |
13 | public ShowMarkerNames() {
14 | makeCheckBoxMenuItem("menu_display_show_marker_names", "menu_display_show_marker_names_accstring", bShowMarkerNames, true);
15 | }
16 |
17 | @Override
18 | public void itemStateChanged(ItemEvent e) {
19 | super.itemStateChanged(e);
20 | AbstractButton menuItem = (AbstractButton) e.getItem();
21 | bShowMarkerNames = menuItem.isSelected();
22 | getMapPanel().repaint();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/Display/ShowNodeID.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.Display;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.Utils.GUIUtils.InputEvent_NONE;
10 | import static AutoDriveEditor.Utils.GUIUtils.KeyEvent_NONE;
11 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowSelectedNodeID;
12 |
13 | public class ShowNodeID extends JCheckBoxMenuItemBase {
14 |
15 | public ShowNodeID() {
16 | makeCheckBoxMenuItem("menu_display_showID", "menu_display_showID_accstring", KeyEvent_NONE, InputEvent_NONE, bShowSelectedNodeID,true);
17 | }
18 |
19 | public void itemStateChanged(ItemEvent e) {
20 | super.itemStateChanged(e);
21 | AbstractButton menuItem = (AbstractButton) e.getItem();
22 | bShowSelectedNodeID = menuItem.isSelected();
23 | getMapPanel().repaint();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/Display/ShowParkingIcons.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.Display;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.getMapPanel;
9 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowMarkerNames;
10 | import static AutoDriveEditor.XMLConfig.EditorXML.bShowParkingIcons;
11 |
12 | public class ShowParkingIcons extends JCheckBoxMenuItemBase {
13 |
14 | public ShowParkingIcons() {
15 | makeCheckBoxMenuItem("menu_display_show_parking_icons", "menu_display_show_parking_icons_accstring", bShowMarkerNames, true);
16 | }
17 |
18 | @Override
19 | public void itemStateChanged(ItemEvent e) {
20 | super.itemStateChanged(e);
21 | AbstractButton menuItem = (AbstractButton) e.getItem();
22 | bShowParkingIcons = menuItem.isSelected();
23 | getMapPanel().repaint();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/EditMenu/CopyMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.EditMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton.copySelected;
11 |
12 | public class CopyMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_Copy;
15 |
16 | public CopyMenu() {
17 | menu_Copy = makeMenuItem("menu_edit_copy", "menu_edit_copy_accstring", KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | copySelected();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/EditMenu/CutMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.EditMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton.cutSelected;
11 |
12 | public class CutMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_Cut;
15 |
16 | public CutMenu() {
17 | menu_Cut = makeMenuItem("menu_edit_cut", "menu_edit_cut_accstring", KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | cutSelected();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/EditMenu/PasteMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.EditMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton.pasteSelected;
11 |
12 | public class PasteMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_Paste;
15 |
16 | public PasteMenu() {
17 | menu_Paste = makeMenuItem("menu_edit_paste", "menu_edit_paste_accstring", KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | pasteSelected();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/EditMenu/PasteOriginalLocationMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.EditMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.GUI.Buttons.CopyPasteBaseButton.pasteSelectedInOriginalLocation;
11 |
12 | public class PasteOriginalLocationMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_PasteOriginalLocation;
15 |
16 | public PasteOriginalLocationMenu() {
17 | menu_PasteOriginalLocation = makeMenuItem("menu_edit_paste_original_location", "menu_edit_paste_original_location_accstring", KeyEvent.VK_V, InputEvent.SHIFT_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | pasteSelectedInOriginalLocation();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/EditMenu/RedoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.EditMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
11 |
12 | public class RedoMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_Redo;
15 |
16 | public RedoMenu() {
17 | menu_Redo = makeMenuItem("menu_edit_redo", "menu_edit_redo_accstring", KeyEvent.VK_Z, InputEvent.SHIFT_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | changeManager.redo();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/EditMenu/UndoMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.EditMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.changeManager;
11 |
12 | public class UndoMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_Undo;
15 |
16 | public UndoMenu() {
17 | menu_Undo = makeMenuItem("menu_edit_undo", "menu_edit_undo_accstring", KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | changeManager.undo();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/FileMenu/ExitEditorMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.FileMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import java.awt.event.ActionEvent;
6 | import java.awt.event.InputEvent;
7 | import java.awt.event.KeyEvent;
8 | import java.awt.event.WindowEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 |
12 | public class ExitEditorMenu extends JMenuItemBase {
13 |
14 | public ExitEditorMenu() {
15 | makeMenuItem("menu_file_exit", "menu_file_exit_accstring", KeyEvent.VK_Q, InputEvent.ALT_DOWN_MASK, true );
16 | }
17 |
18 | @Override
19 | public void actionPerformed(ActionEvent e) {
20 | super.actionPerformed(e);
21 | editor.dispatchEvent(new WindowEvent(editor, WindowEvent.WINDOW_CLOSING));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/FileMenu/OpenConfigMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.FileMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.event.ActionEvent;
8 | import java.awt.event.InputEvent;
9 | import java.awt.event.KeyEvent;
10 | import java.io.File;
11 |
12 | import static AutoDriveEditor.AutoDriveEditor.editor;
13 | import static AutoDriveEditor.GUI.MapPanel.checkIfConfigIsStaleAndConfirmSave;
14 | import static AutoDriveEditor.Utils.FileUtils.createFileChooser;
15 | import static AutoDriveEditor.XMLConfig.AutoSave.resumeAutoSaving;
16 | import static AutoDriveEditor.XMLConfig.AutoSave.suspendAutoSaving;
17 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
18 | import static AutoDriveEditor.XMLConfig.GameXML.loadGameConfig;
19 |
20 | public class OpenConfigMenu extends JMenuItemBase {
21 |
22 | public OpenConfigMenu() {
23 | makeMenuItem("menu_file_loadconfig", "menu_file_loadconfig_accstring", KeyEvent.VK_L, InputEvent.ALT_DOWN_MASK, true );
24 | }
25 |
26 | @Override
27 | public void actionPerformed(ActionEvent e) {
28 | super.actionPerformed(e);
29 | // check if the current config has been changed a confirm save before loading a new config
30 | checkIfConfigIsStaleAndConfirmSave();
31 |
32 | JFileChooser lfc = createFileChooser("dialog_load_config_xml_title", JFileChooser.FILES_ONLY, true, lastUsedLocation, new FileFilter() {
33 | @Override
34 | public boolean accept(File f) {
35 | // always show folders/directory's
36 | if (f.isDirectory()) return true;
37 | // files only that end with the specific extension
38 | return f.getName().contains(".xml");
39 | }
40 |
41 | @Override
42 | public String getDescription() {
43 | return "AutoDrive Config (.xml)";
44 | }
45 | });
46 |
47 | suspendAutoSaving();
48 |
49 | if (lfc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
50 | lastUsedLocation = lfc.getCurrentDirectory().getAbsolutePath();
51 | loadGameConfig(lfc.getSelectedFile());
52 | }
53 |
54 | resumeAutoSaving();
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/FileMenu/SaveAsConfigMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.FileMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.event.ActionEvent;
8 | import java.awt.event.InputEvent;
9 | import java.awt.event.KeyEvent;
10 | import java.io.File;
11 |
12 | import static AutoDriveEditor.AutoDriveEditor.editor;
13 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
14 | import static AutoDriveEditor.Utils.FileUtils.getSelectedFileWithExtension;
15 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
16 | import static AutoDriveEditor.XMLConfig.GameXML.*;
17 |
18 | public class SaveAsConfigMenu extends JMenuItemBase {
19 |
20 | public static JMenuItem menu_SaveConfigAs;
21 |
22 | public SaveAsConfigMenu() {
23 | menu_SaveConfigAs = makeMenuItem("menu_file_saveasconfig", "menu_file_saveasconfig_accstring", KeyEvent.VK_A, InputEvent.ALT_DOWN_MASK, false);
24 | }
25 |
26 | @Override
27 | public void actionPerformed(ActionEvent e) {
28 | super.actionPerformed(e);
29 |
30 | JFileChooser fc = new JFileChooser(lastUsedLocation);
31 |
32 | if (xmlConfigFile == null) return;
33 | fc.setDialogTitle(getLocaleString("dialog_save_destination"));
34 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
35 | fc.setFileFilter(new FileFilter() {
36 | @Override
37 | public boolean accept(File f) {
38 | // always accept directory's
39 | if (f.isDirectory()) return true;
40 | // but only files with a specific name
41 | return f.getName().contains(".xml");
42 | }
43 |
44 | @Override
45 | public String getDescription() {
46 | return "AutoDrive Config (.xml)";
47 | }
48 | });
49 | fc.setSelectedFile(xmlConfigFile);
50 |
51 | if (fc.showSaveDialog(editor) == JFileChooser.APPROVE_OPTION) {
52 | lastUsedLocation = fc.getCurrentDirectory().getAbsolutePath();
53 | LOG.info("{} {}", getLocaleString("console_config_save_as"), getSelectedFileWithExtension(fc));
54 | saveGameConfig(getSelectedFileWithExtension(fc).toString(), false, false);
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/FileMenu/SaveConfigMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.FileMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.InputEvent;
8 | import java.awt.event.KeyEvent;
9 |
10 | import static AutoDriveEditor.XMLConfig.GameXML.saveGameConfig;
11 |
12 | public class SaveConfigMenu extends JMenuItemBase {
13 |
14 | public static JMenuItem menu_SaveConfig;
15 |
16 | public SaveConfigMenu() {
17 | menu_SaveConfig = makeMenuItem("menu_file_saveconfig", "menu_file_saveconfig_accstring", KeyEvent.VK_S, InputEvent.ALT_DOWN_MASK, false);
18 | }
19 |
20 | @Override
21 | public void actionPerformed(ActionEvent e) {
22 | super.actionPerformed(e);
23 | saveGameConfig(null, false, false);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/HeightMapMenu/ImportHeightMapMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.HeightMapMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.event.ActionEvent;
8 | import java.io.File;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 | import static AutoDriveEditor.Classes.MapImage.manualLoadHeightMap;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
14 |
15 | public class ImportHeightMapMenu extends JMenuItemBase {
16 |
17 | public static JMenuItem menu_ImportHeightMap;
18 |
19 | public ImportHeightMapMenu() {
20 | menu_ImportHeightMap = makeMenuItem("menu_heightmap_import", "menu_heightmap_import_accstring", false);
21 | }
22 |
23 | @Override
24 | public void actionPerformed(ActionEvent e) {
25 | super.actionPerformed(e);
26 | JFileChooser fc = new JFileChooser(lastUsedLocation);
27 | fc.setDialogTitle(getLocaleString("dialog_heightmap_load_title"));
28 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
29 | fc.setFileFilter(new FileFilter() {
30 | @Override
31 | public boolean accept(File f) {
32 | // always accept directory's
33 | if (f.isDirectory()) return true;
34 | // but only files with a specific name
35 | return f.getName().equals("terrain.heightmap.png");
36 | }
37 |
38 | @Override
39 | public String getDescription() {
40 | return "FS HeightMap File (terrain.heightmap.png)";
41 | }
42 | });
43 | if (fc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
44 | File fileName = fc.getSelectedFile();
45 | manualLoadHeightMap(fileName);
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/HeightMapMenu/ShowHeightmapMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.HeightMapMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.Classes.MapImage.*;
9 | import static AutoDriveEditor.GUI.MapPanel.forceMapImageRedraw;
10 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
11 |
12 | public class ShowHeightmapMenu extends JCheckBoxMenuItemBase {
13 |
14 | public static JCheckBoxMenuItem menu_ShowHeightMap;
15 | public static boolean bShowHeightMap;
16 | public ShowHeightmapMenu() {
17 | menu_ShowHeightMap = makeCheckBoxMenuItem("menu_heightmap_show", "menu_heightmap_show_accstring", false, true);
18 | }
19 |
20 | @Override
21 | public void itemStateChanged(ItemEvent e) {
22 | super.itemStateChanged(e);
23 | AbstractButton menuItem = (AbstractButton) e.getItem();
24 | bShowHeightMap = menuItem.isSelected();
25 | if (bShowHeightMap) {
26 | LOG.info("displaying height map image");
27 | if (heightMapImage != null ) {
28 | setMapPanelImage(heightMapImage, true);
29 | } else {
30 | LOG.info("heightMapImage = null");
31 | }
32 | } else {
33 | if (mapPanelImage != null ) {
34 | LOG.info("displaying map image");
35 | setMapPanelImage(pdaImage, false);
36 | } else {
37 | LOG.info("map image is NULL, setting to default mapImage");
38 | useDefaultMapImage();
39 | }
40 | }
41 | forceMapImageRedraw();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/HelpMenu/AboutMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.HelpMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.*;
9 | import static AutoDriveEditor.Utils.HTMLUtils.createHyperLink;
10 |
11 | public class AboutMenu extends JMenuItemBase {
12 |
13 | public AboutMenu() {
14 | makeMenuItem("menu_help_about", "menu_help_about_accstring", true);
15 | }
16 |
17 | @Override
18 | public void actionPerformed(ActionEvent e) {
19 | super.actionPerformed(e);
20 |
21 | String mainText = "Editor version : " + COURSE_EDITOR_VERSION + " by KillBait!
" +
22 | "Build info : " + COURSE_EDITOR_BUILD_INFO + "
" +
23 | "Many thanks to the following people
" +
24 | "@rhaetional (GitHub) :- Code submission for Parking Destinations/out-of-bounds code & macOS fix
" +
25 | "Everybody for the suggestions and bug reports :-)
" +
26 | "AutoDrive Development Team
" +
27 | "Stephan (Founder/Modder and Original Editor Author)
" +
28 | "TyKonKet (Modder)
Oliver (Modder)
Axel (Co-Modder)
" +
29 | "Aletheist (Co-Modder)
Willi (Supporter & Tester)
" +
30 | "Iwan1803 (Community Manager & Supporter)
" +
31 | "Many thanks goto Stephan for allowing me to take over the development of this editor";
32 | String linkText = "
Visit AutoDrive Editor HomePage";
33 | JEditorPane editorLink = createHyperLink(mainText,linkText, "https://github.com/KillBait/AutoDrive_Course_Editor");
34 | JOptionPane.showMessageDialog(editor, editorLink, "About AutoDrive Editor", JOptionPane.PLAIN_MESSAGE);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/HelpMenu/ImagesLinkMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.HelpMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.*;
9 | import static AutoDriveEditor.Utils.HTMLUtils.createHyperLink;
10 |
11 | public class ImagesLinkMenu extends JMenuItemBase {
12 |
13 | public ImagesLinkMenu() {
14 | makeMenuItem("menu_help_images", "menu_help_images_accstring", true);
15 | }
16 |
17 | @Override
18 | public void actionPerformed(ActionEvent e) {
19 | super.actionPerformed(e);
20 |
21 | String mainText = "AutoDrive Course Editor version : " + COURSE_EDITOR_VERSION + " by KillBait!
" +
22 | "(Build info : " + COURSE_EDITOR_BUILD_INFO + ")
" +
23 | "I maintain a GitHub repository of map images that the editor
" +
24 | "can automatically download and use when needed here
" +
25 | "Do you want to create your own images?, follow the link below
";
26 | String linkText = "How to create your own Images (GitHub Page)";
27 | JEditorPane editorLink = createHyperLink(mainText,linkText, "https://github.com/KillBait/AutoDrive_MapImages/discussions/20");
28 | JOptionPane.showMessageDialog(editor, editorLink, "AutoDrive Editor Images", JOptionPane.PLAIN_MESSAGE);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/HelpMenu/ShowDEBUGMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.HelpMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JCheckBoxMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ItemEvent;
7 |
8 | import static AutoDriveEditor.AutoDriveEditor.bIsDebugEnabled;
9 | import static AutoDriveEditor.GUI.Menus.EditorMenu.menu_DEBUG;
10 |
11 | public class ShowDEBUGMenu extends JCheckBoxMenuItemBase {
12 |
13 | public ShowDEBUGMenu() {
14 | makeCheckBoxMenuItem("menu_help_debug", "menu_help_debug_accstring", false, true);
15 | }
16 |
17 | @Override
18 | public void itemStateChanged(ItemEvent e) {
19 | super.itemStateChanged(e);
20 | AbstractButton menuItem = (AbstractButton) e.getItem();
21 | menu_DEBUG.setVisible(menuItem.isSelected());
22 | bIsDebugEnabled = menuItem.isSelected();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/HelpMenu/ShowHistoryMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.HelpMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import java.awt.event.ActionEvent;
6 |
7 | import static AutoDriveEditor.Managers.VersionManager.showVersionHistory;
8 |
9 | public class ShowHistoryMenu extends JMenuItemBase {
10 | public ShowHistoryMenu() {
11 | makeMenuItem("menu_help_history", "menu_help_history_accstring");
12 | }
13 |
14 | @Override
15 | public void actionPerformed(ActionEvent e) {
16 | super.actionPerformed(e);
17 | showVersionHistory();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/JCheckBoxMenuItemBase.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus;
2 |
3 | import javax.swing.*;
4 | import javax.swing.event.ChangeEvent;
5 | import javax.swing.event.ChangeListener;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.ActionListener;
8 | import java.awt.event.ItemEvent;
9 | import java.awt.event.ItemListener;
10 |
11 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogListenerStateMenu.bDebugMenuState;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.Utils.GUIUtils.InputEvent_NONE;
14 | import static AutoDriveEditor.Utils.GUIUtils.KeyEvent_NONE;
15 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
16 |
17 | public abstract class JCheckBoxMenuItemBase extends JCheckBoxMenuItem implements ActionListener, ItemListener, ChangeListener {
18 |
19 | @SuppressWarnings("SameParameterValue")
20 | protected JCheckBoxMenuItem makeCheckBoxMenuItem(String text, String accString, Boolean isSelected, Boolean enabled) {
21 | return makeCheckBoxMenuItem(text, accString, KeyEvent_NONE, InputEvent_NONE, isSelected, enabled);
22 | }
23 |
24 | protected JCheckBoxMenuItem makeCheckBoxMenuItem(String text, String accString, int keyEvent, Boolean isSelected, Boolean enabled) {
25 | return makeCheckBoxMenuItem(text, accString, keyEvent, InputEvent_NONE, isSelected, enabled);
26 | }
27 |
28 | protected JCheckBoxMenuItem makeCheckBoxMenuItem (String text, String accString, int keyEvent, int inputEvent, Boolean isSelected, Boolean enabled) {
29 | setText(getLocaleString(text));
30 | if (keyEvent != KeyEvent_NONE && inputEvent != InputEvent_NONE) {
31 | setAccelerator(KeyStroke.getKeyStroke(keyEvent, inputEvent));
32 | setMnemonic(keyEvent);
33 | } else if (inputEvent == InputEvent_NONE && keyEvent != 0){
34 | setAccelerator(KeyStroke.getKeyStroke(keyEvent, 0));
35 | }
36 | setSelected(isSelected);
37 | getAccessibleContext().setAccessibleDescription(getLocaleString(accString));
38 | addItemListener(this);
39 | setEnabled(enabled);
40 |
41 | return this;
42 | }
43 |
44 | @Override
45 | public void actionPerformed(ActionEvent e) {
46 | if (bDebugMenuState) logMenuEventFor("actionPerformed()");
47 | }
48 |
49 | @Override
50 | public void itemStateChanged(ItemEvent e) {
51 | if (bDebugMenuState) logMenuEventFor("itemStateChanged()");
52 | }
53 |
54 | @Override
55 | public void stateChanged(ChangeEvent e) { if (bDebugMenuState) logMenuEventFor("stateChanged()");
56 | }
57 |
58 | private void logMenuEventFor(String function) {
59 | LOG.info("Menu:- ({}) - {}",this.getText(), function);
60 |
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/JMenuBase.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus;
2 |
3 | import javax.swing.*;
4 | import javax.swing.event.ChangeEvent;
5 | import javax.swing.event.ChangeListener;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.ActionListener;
8 | import java.awt.event.ItemEvent;
9 | import java.awt.event.ItemListener;
10 |
11 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogListenerStateMenu.bDebugMenuState;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
14 |
15 | public abstract class JMenuBase extends JMenu implements ActionListener, ItemListener, ChangeListener {
16 |
17 | protected JMenu makeMenu(String menuName, int keyEvent, String accString, JMenuBar parentMenu, boolean isVisible) {
18 | setText(getLocaleString(menuName));
19 | setMnemonic(keyEvent);
20 | getAccessibleContext().setAccessibleDescription(getLocaleString(accString));
21 | setVisible(isVisible);
22 | parentMenu.add(this);
23 | return this;
24 | }
25 |
26 | protected JMenu makeSubMenu(String menuName, String accString) {
27 | return makeSubMenu(menuName, accString, true);
28 | }
29 |
30 | @SuppressWarnings("SameParameterValue")
31 | protected JMenu makeSubMenu(String menuName, String accString, boolean enabled) {
32 | setText(getLocaleString(menuName));
33 | getAccessibleContext().setAccessibleDescription(getLocaleString(accString));
34 | setEnabled(enabled);
35 | addActionListener(this);
36 | return this;
37 | }
38 |
39 | @Override
40 | public void actionPerformed(ActionEvent e) {
41 | if (bDebugMenuState) logMenuEventFor("actionPerformed()");
42 | }
43 |
44 | @Override
45 | public void itemStateChanged(ItemEvent e) {
46 | if (bDebugMenuState) logMenuEventFor("itemStateChanged()");
47 | }
48 |
49 | @Override
50 | public void stateChanged(ChangeEvent e) { if (bDebugMenuState) logMenuEventFor("stateChanged()");
51 | }
52 |
53 | private void logMenuEventFor(String function) {
54 | LOG.info("Menu:- ({}) - {}",this.getText(), function);
55 |
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/JMenuItemBase.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus;
2 |
3 | import javax.swing.*;
4 | import javax.swing.event.ChangeEvent;
5 | import javax.swing.event.ChangeListener;
6 | import java.awt.event.ActionEvent;
7 | import java.awt.event.ActionListener;
8 | import java.awt.event.ItemEvent;
9 | import java.awt.event.ItemListener;
10 |
11 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogListenerStateMenu.bDebugMenuState;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.Utils.GUIUtils.InputEvent_NONE;
14 | import static AutoDriveEditor.Utils.GUIUtils.KeyEvent_NONE;
15 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
16 |
17 | public abstract class JMenuItemBase extends JMenuItem implements ActionListener, ItemListener, ChangeListener {
18 |
19 | @SuppressWarnings({"SameParameterValue", "UnusedReturnValue"})
20 | protected JMenuItemBase makeMenuItem(String menuName, String accString) {
21 | return makeMenuItem(menuName, accString, KeyEvent_NONE, InputEvent_NONE, true);
22 | }
23 |
24 | protected JMenuItemBase makeMenuItem(String menuName, String accString, boolean enabled) {
25 | return makeMenuItem(menuName, accString, KeyEvent_NONE, InputEvent_NONE, enabled);
26 | }
27 |
28 | protected JMenuItemBase makeMenuItem(String menuName, String accString, int keyEvent, int inputEvent, boolean enabled) {
29 | setText(getLocaleString(menuName));
30 | if (keyEvent != 0) {
31 | setAccelerator(KeyStroke.getKeyStroke(keyEvent, inputEvent));
32 | }
33 | getAccessibleContext().setAccessibleDescription(getLocaleString(accString));
34 | setEnabled(enabled);
35 | addActionListener(this);
36 | return this;
37 | }
38 |
39 | protected JCheckBoxMenuItem makeCheckBoxMenuItem(String text, String accString, Boolean isSelected, Boolean enabled) {
40 | return makeCheckBoxMenuItem(text, accString, KeyEvent_NONE, InputEvent_NONE, isSelected, enabled);
41 | }
42 |
43 | @SuppressWarnings("SameParameterValue")
44 | protected JCheckBoxMenuItem makeCheckBoxMenuItem (String text, String accString, int keyEvent, int inputEvent, Boolean isSelected, Boolean enabled) {
45 | JCheckBoxMenuItem cbMenuItem = new JCheckBoxMenuItem(getLocaleString(text));
46 | if (keyEvent != KeyEvent_NONE && inputEvent != InputEvent_NONE) {
47 | cbMenuItem.setAccelerator(KeyStroke.getKeyStroke(keyEvent, inputEvent));
48 | cbMenuItem.setMnemonic(keyEvent);
49 | } else if (inputEvent == InputEvent_NONE && keyEvent != 0){
50 | cbMenuItem.setAccelerator(KeyStroke.getKeyStroke(keyEvent, 0));
51 | }
52 | cbMenuItem.setSelected(isSelected);
53 | cbMenuItem.getAccessibleContext().setAccessibleDescription(getLocaleString(accString));
54 | cbMenuItem.addItemListener(this);
55 | cbMenuItem.setEnabled(enabled);
56 |
57 | return cbMenuItem;
58 | }
59 |
60 | @Override
61 | public void actionPerformed(ActionEvent e) {
62 | if (bDebugMenuState) logMenuEventFor("actionPerformed()");
63 | }
64 |
65 | @Override
66 | public void itemStateChanged(ItemEvent e) {
67 | if (bDebugMenuState) logMenuEventFor("itemStateChanged()");
68 | }
69 |
70 | @Override
71 | public void stateChanged(ChangeEvent e) { if (bDebugMenuState) logMenuEventFor("stateChanged()");
72 | }
73 |
74 | private void logMenuEventFor(String function) {
75 | LOG.info("Menu:- ({}) - {}",this.getText(), function);
76 |
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/MapImagesMenu/ImportFS19DDSMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.MapImagesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.*;
8 | import java.awt.event.ActionEvent;
9 | import java.awt.event.InputEvent;
10 | import java.awt.event.KeyEvent;
11 | import java.io.File;
12 |
13 | import static AutoDriveEditor.AutoDriveEditor.editor;
14 | import static AutoDriveEditor.GUI.Menus.EditorMenu.saveImageEnabled;
15 | import static AutoDriveEditor.GUI.TextPanel.setImageLoadedLabel;
16 | import static AutoDriveEditor.GUI.TextPanel.showInTextArea;
17 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
18 | import static AutoDriveEditor.Managers.ImportManager.importFromFS19;
19 | import static AutoDriveEditor.Managers.ImportManager.setIsEditorUsingImportedImage;
20 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
21 |
22 | public class ImportFS19DDSMenu extends JMenuItemBase {
23 |
24 | public static JMenuItem menu_ImportFS19DDS;
25 | public ImportFS19DDSMenu() {
26 | menu_ImportFS19DDS = makeMenuItem("menu_import_fs19_dds", "menu_import_fs19_dds_accstring", KeyEvent.VK_I, InputEvent.ALT_DOWN_MASK,false);
27 | }
28 |
29 | @Override
30 | public void actionPerformed(ActionEvent e) {
31 | super.actionPerformed(e);
32 | JFileChooser fc = new JFileChooser(lastUsedLocation);
33 | fc.setDialogTitle(getLocaleString("dialog_import_FS19_dds_image_title"));
34 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
35 | fc.setFileFilter(new FileFilter() {
36 | @Override
37 | public boolean accept(File f) {
38 | // always accept directory's
39 | if (f.isDirectory()) return true;
40 | // but only files with a specific name
41 | return f.getName().equals("pda_map_H.dds");
42 | }
43 |
44 | @Override
45 | public String getDescription() {
46 | return "FS19 PDA Image (pda_map_H.dds)";
47 | }
48 | });
49 | if (fc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
50 | if (!fc.getSelectedFile().getName().equals("pda_map_H.dds") && !fc.getSelectedFile().getName().endsWith(".dds")) {
51 | JOptionPane.showMessageDialog(editor, "The file " + fc.getSelectedFile() + " is not a valid dds file.", "FileType Error", JOptionPane.ERROR_MESSAGE);
52 | return;
53 | }
54 |
55 | boolean importResult = importFromFS19(fc.getSelectedFile().getAbsoluteFile().toString());
56 | if (importResult) {
57 | setIsEditorUsingImportedImage(true);
58 | saveImageEnabled(true);
59 | setImageLoadedLabel("Imported", new Color(191, 56, 14));
60 | showInTextArea("Import of FS19 mapImage '" + fc.getSelectedFile().getName() + "' Successful", true, true);
61 | }
62 | } else {
63 | showInTextArea("Cancelled import of FS19 PDA Image", true, true);
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/MapImagesMenu/ImportFS22DDSMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.MapImagesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.*;
8 | import java.awt.event.ActionEvent;
9 | import java.awt.event.InputEvent;
10 | import java.awt.event.KeyEvent;
11 | import java.io.File;
12 |
13 | import static AutoDriveEditor.AutoDriveEditor.editor;
14 | import static AutoDriveEditor.GUI.Menus.EditorMenu.saveImageEnabled;
15 | import static AutoDriveEditor.GUI.TextPanel.setImageLoadedLabel;
16 | import static AutoDriveEditor.GUI.TextPanel.showInTextArea;
17 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
18 | import static AutoDriveEditor.Managers.ImportManager.importFromFS22;
19 | import static AutoDriveEditor.Managers.ImportManager.setIsEditorUsingImportedImage;
20 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
21 |
22 | public class ImportFS22DDSMenu extends JMenuItemBase {
23 |
24 | public static JMenuItem menu_ImportFS22DDS;
25 | public ImportFS22DDSMenu() {
26 | menu_ImportFS22DDS = makeMenuItem("menu_import_fs22_dds", "menu_import_fs22_dds_accstring", KeyEvent.VK_P, InputEvent.ALT_DOWN_MASK,false);
27 | }
28 |
29 | @Override
30 | public void actionPerformed(ActionEvent e) {
31 | super.actionPerformed(e);
32 | JFileChooser fc = new JFileChooser(lastUsedLocation);
33 | fc.setDialogTitle(getLocaleString("dialog_import_FS22_dds_image_title"));
34 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
35 | fc.setFileFilter(new FileFilter() {
36 | @Override
37 | public boolean accept(File f) {
38 | // always accept directory's
39 | if (f.isDirectory()) return true;
40 | // but only files with a specific name
41 | return f.getName().equals("overview.dds");
42 | }
43 |
44 | @Override
45 | public String getDescription() {
46 | return "FS22 PDA image (overview.dds)";
47 | }
48 | });
49 | if (fc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
50 | if (!fc.getSelectedFile().getName().equals("overview.dds") && !fc.getSelectedFile().getName().endsWith(".dds")) {
51 | JOptionPane.showMessageDialog(editor, "The file " + fc.getSelectedFile() + " is not a valid dds file.", "FileType Error", JOptionPane.ERROR_MESSAGE);
52 | return;
53 | }
54 |
55 | boolean importResult = importFromFS22(fc.getSelectedFile().getAbsoluteFile().toString());
56 | if (importResult) {
57 | setIsEditorUsingImportedImage(true);
58 | saveImageEnabled(true);
59 | setImageLoadedLabel("Imported", new Color(191, 56, 14));
60 | showInTextArea("Import of FS22 mapImage '" + fc.getSelectedFile().getName() + "' Successful", true, true);
61 | }
62 | } else {
63 | showInTextArea("Cancelled import of FS22 PDA Image", true, true);
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/MapImagesMenu/LoadMapImageMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.MapImagesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.imageio.ImageIO;
6 | import javax.swing.*;
7 | import javax.swing.filechooser.FileFilter;
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 | import java.awt.event.InputEvent;
11 | import java.awt.event.KeyEvent;
12 | import java.awt.image.BufferedImage;
13 | import java.io.File;
14 | import java.io.IOException;
15 |
16 | import static AutoDriveEditor.AutoDriveEditor.editor;
17 | import static AutoDriveEditor.Classes.MapImage.setMapPanelImage;
18 | import static AutoDriveEditor.GUI.MapPanel.forceMapImageRedraw;
19 | import static AutoDriveEditor.GUI.TextPanel.setImageLoadedLabel;
20 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
21 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
22 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
23 |
24 | public class LoadMapImageMenu extends JMenuItemBase {
25 |
26 | public static JMenuItem menu_LoadMapImage;
27 | public LoadMapImageMenu() {
28 | menu_LoadMapImage = makeMenuItem("menu_map_loadimage", "menu_map_loadimage_accstring", KeyEvent.VK_M, InputEvent.ALT_DOWN_MASK, false);
29 | }
30 |
31 | @Override
32 | public void actionPerformed(ActionEvent e) {
33 | super.actionPerformed(e);
34 | JFileChooser fc = new JFileChooser(lastUsedLocation);
35 | fc.setDialogTitle(getLocaleString("dialog_load_image_title"));
36 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
37 | fc.setFileFilter(new FileFilter() {
38 | @Override
39 | public boolean accept(File f) {
40 | // always accept directory's
41 | if (f.isDirectory()) return true;
42 | // but only files with a specific name
43 | return f.getName().contains(".png");
44 | }
45 |
46 | @Override
47 | public String getDescription() {
48 | return "AutoDriveEditor MapImage (.png)";
49 | }
50 | });
51 |
52 | if (fc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
53 | LOG.info("Manual loading of map image setSelected");
54 | File fileName;
55 | try {
56 | fileName = fc.getSelectedFile();
57 | BufferedImage mapImage = ImageIO.read(fileName);
58 | if (mapImage != null) {
59 | setMapPanelImage(mapImage, false);
60 | forceMapImageRedraw();
61 | setImageLoadedLabel("Manual Load", new Color(150,100,20));
62 | }
63 | } catch (IOException e1) {
64 | LOG.error(e1.getMessage(), e1);
65 | }
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/MapImagesMenu/MapZoomMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.MapImagesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.util.Enumeration;
8 |
9 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogListenerStateMenu.bDebugMenuState;
10 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
11 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
12 | import static AutoDriveEditor.XMLConfig.EditorXML.setNewMapScale;
13 |
14 | public class MapZoomMenu extends JMenuBase {
15 |
16 | static final ButtonGroup zoomGroup = new ButtonGroup();
17 | final boolean bShowExtendedMapSizes = true;
18 |
19 | public MapZoomMenu() {
20 |
21 | String nameString;
22 |
23 | makeSubMenu("menu_map_scale","menu_map_scale_accstring", true);
24 | int maxItems = (bShowExtendedMapSizes) ? 24 : 9;
25 |
26 | for (int i=1; i <= maxItems; i++) {
27 | nameString = i*2 + "km";
28 | if (i <= 10) {
29 | nameString+= " ( " + Math.pow(2,(i)) + "x )";
30 | }
31 | makeSimpleRadioButton(nameString, "menu_map_scale_simplebutton_accstring", true, zoomGroup, i, i == 0);
32 | }
33 | }
34 |
35 | @SuppressWarnings("SameParameterValue")
36 | private void makeSimpleRadioButton(String text, String accString, Boolean enabled, ButtonGroup buttonGroup, int mnemonic, boolean isGroupDefault) {
37 | JRadioButtonMenuItem menuItem = new JRadioButtonMenuItem(text);
38 | menuItem.getAccessibleContext().setAccessibleDescription(getLocaleString(accString) + " " + text);
39 | menuItem.setEnabled(enabled);
40 | menuItem.addActionListener(this);
41 | menuItem.setMnemonic(mnemonic);
42 | if (buttonGroup != null) {
43 | buttonGroup.add(menuItem);
44 | if (isGroupDefault) {
45 | buttonGroup.setSelected(menuItem.getModel(), true);
46 | }
47 | }
48 | add(menuItem);
49 | }
50 |
51 | @Override
52 | public void actionPerformed(ActionEvent e) {
53 | //super.actionPerformed(e);
54 | int mnemonic = zoomGroup.getSelection().getMnemonic();
55 | if (bDebugMenuState) LOG.info("Selected = {}", mnemonic);
56 | setNewMapScale(mnemonic);
57 | }
58 |
59 | public static void updateMapScaleMenu(int selection) {
60 | if (bDebugMenuState) LOG.info("## updateMapScaleMenu ## newMapScale = {}km", selection * 2);
61 | for (Enumeration e = zoomGroup.getElements(); e.hasMoreElements();) {
62 | AbstractButton button = e.nextElement();
63 | if (button.getMnemonic() == selection) {
64 | button.setSelected(true);
65 | if (bDebugMenuState) LOG.info("## updateMapScaleMenu ## setting menu {} ('{}') to True", button.getMnemonic(), button.getText());
66 | break;
67 | }
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/RoutesMenu/OpenRoutesConfig.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.RoutesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.event.ActionEvent;
8 | import java.io.File;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 | import static AutoDriveEditor.GUI.RoutesGUI.RoutesGUI.createRoutesGUI;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.XMLConfig.AutoSave.resumeAutoSaving;
14 | import static AutoDriveEditor.XMLConfig.AutoSave.suspendAutoSaving;
15 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
16 |
17 | public class OpenRoutesConfig extends JMenuItemBase {
18 |
19 | public static JMenuItem menu_OpenRoutesConfig
20 | ;
21 | public OpenRoutesConfig() {
22 | menu_OpenRoutesConfig = makeMenuItem("menu_routes_load_config", "menu_routes_load_config_accstring", true );
23 | }
24 |
25 | @Override
26 | public void actionPerformed(ActionEvent e) {
27 | super.actionPerformed(e);
28 | JFileChooser fc = new JFileChooser(lastUsedLocation);
29 | fc.setDialogTitle(getLocaleString("dialog_load_routemanager_config_title"));
30 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
31 | fc.setFileFilter(new FileFilter() {
32 | @Override
33 | public boolean accept(File f) {
34 | // always accept directory's
35 | if (f.isDirectory()) return true;
36 | // but only files with a specific name
37 | return f.getName().equals("routes.xml");
38 | }
39 |
40 | @Override
41 | public String getDescription() {
42 | return "AutoDrive RouteManager Config (.xml)";
43 | }
44 | });
45 |
46 | suspendAutoSaving();
47 | if (fc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
48 | lastUsedLocation = fc.getCurrentDirectory().getAbsolutePath();
49 | File fileName = fc.getSelectedFile();
50 | createRoutesGUI(fileName, editor);
51 | }
52 | resumeAutoSaving();
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/RoutesMenu/OpenRoutesXML.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.RoutesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import javax.swing.filechooser.FileFilter;
7 | import java.awt.event.ActionEvent;
8 | import java.io.File;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 | import static AutoDriveEditor.GUI.MapPanel.isStale;
12 | import static AutoDriveEditor.GUI.Menus.EditorMenu.saveImageEnabled;
13 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
14 | import static AutoDriveEditor.Managers.ImportManager.setIsEditorUsingImportedImage;
15 | import static AutoDriveEditor.XMLConfig.AutoSave.resumeAutoSaving;
16 | import static AutoDriveEditor.XMLConfig.AutoSave.suspendAutoSaving;
17 | import static AutoDriveEditor.XMLConfig.GameXML.lastUsedLocation;
18 | import static AutoDriveEditor.XMLConfig.GameXML.saveGameConfig;
19 | import static AutoDriveEditor.XMLConfig.RoutesXML.loadRouteManagerXML;
20 |
21 | public class OpenRoutesXML extends JMenuItemBase {
22 |
23 | public OpenRoutesXML() { makeMenuItem("menu_routes_load_xml", "menu_routes_load_xml_accstring", true );}
24 |
25 | @Override
26 | public void actionPerformed(ActionEvent e) {
27 | super.actionPerformed(e);
28 |
29 | //checkIfConfigIsStaleAndConfirmSave();
30 |
31 | JFileChooser fc = new JFileChooser(lastUsedLocation);
32 | if (isStale()) {
33 | int response = JOptionPane.showConfirmDialog(editor, getLocaleString("dialog_exit_unsaved"), "AutoDrive", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
34 | if (response == JOptionPane.YES_OPTION) {
35 | saveGameConfig(null, false, false);
36 | }
37 | }
38 | fc.setDialogTitle(getLocaleString("dialog_load_route_xml_title"));
39 | fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
40 | fc.setFileFilter(new FileFilter() {
41 | @Override
42 | public boolean accept(File f) {
43 | // always accept directory's
44 | if (f.isDirectory()) return true;
45 | // but only files with a specific name
46 | return f.getName().contains(".xml") && !f.getName().equals("routes.xml");
47 | }
48 |
49 | @Override
50 | public String getDescription() {
51 | return "AutoDrive Route XML (.xml)";
52 | }
53 | });
54 |
55 | suspendAutoSaving();
56 |
57 | if (fc.showOpenDialog(editor) == JFileChooser.APPROVE_OPTION) {
58 | lastUsedLocation = fc.getCurrentDirectory().getAbsolutePath();
59 | File fileName = fc.getSelectedFile();
60 | if (loadRouteManagerXML(fileName, false, null)) {
61 | setIsEditorUsingImportedImage(false);
62 | saveImageEnabled(false);
63 | }
64 | }
65 |
66 | resumeAutoSaving();
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/RoutesMenu/SaveRoutesXML.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.RoutesMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.XMLConfig.RoutesXML.saveRouteManagerXML;
9 |
10 | public class SaveRoutesXML extends JMenuItemBase {
11 |
12 | public static JMenuItem menu_SaveRoutesXML;
13 |
14 | public SaveRoutesXML() {
15 | menu_SaveRoutesXML = makeMenuItem("menu_routes_save_xml", "menu_routes_save_xml_accstring", false);
16 | }
17 |
18 | @Override
19 | public void actionPerformed(ActionEvent e) {
20 | super.actionPerformed(e);
21 | saveRouteManagerXML(null, false, false);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/ScanMenu/FixNodesHeightMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.ScanMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 | import AutoDriveEditor.RoadNetwork.MapNode;
5 | import AutoDriveEditor.RoadNetwork.RoadMap;
6 |
7 | import javax.swing.*;
8 | import java.awt.event.ActionEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 | import static AutoDriveEditor.GUI.MapPanel.getYValueFromHeightMap;
12 | import static AutoDriveEditor.GUI.MapPanel.roadMap;
13 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
14 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
15 |
16 | public class FixNodesHeightMenu extends JMenuItemBase {
17 |
18 | public static JMenuItem menu_FixNodesHeight;
19 |
20 | public FixNodesHeightMenu() {
21 | menu_FixNodesHeight = makeMenuItem("menu_heightmap_fix_nodes", "menu_heightmap_fix_nodes_accstring", false);
22 | }
23 |
24 | @Override
25 | public void actionPerformed(ActionEvent e) {
26 | super.actionPerformed(e);
27 | if (roadMap != null) {
28 | int result = JOptionPane.showConfirmDialog(editor, getLocaleString("dialog_fix_node_height"), "AutoDrive Editor", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
29 | if (result == JOptionPane.OK_OPTION) {
30 | for (MapNode node : RoadMap.networkNodesList) {
31 | double heightMapY = getYValueFromHeightMap(node.x, node.z);
32 | if (node.y == -1) {
33 | node.y = heightMapY;
34 | }
35 | }
36 | } else {
37 | LOG.info("Cancelled node fix");
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/ScanMenu/MergeNodesMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.ScanMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 |
8 | import static AutoDriveEditor.Managers.ScanManager.mergeOverlappingNodes;
9 |
10 | public class MergeNodesMenu extends JMenuItemBase {
11 |
12 | public static JMenuItem menu_MergeNodes;
13 |
14 | public MergeNodesMenu() {
15 | menu_MergeNodes = makeMenuItem("menu_scan_merge", "menu_scan_merge_accstring", false);
16 | }
17 |
18 | @Override
19 | public void actionPerformed(ActionEvent e) {
20 | super.actionPerformed(e);
21 | mergeOverlappingNodes();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/GUI/Menus/ScanMenu/ScanNetworkMenu.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.GUI.Menus.ScanMenu;
2 |
3 | import AutoDriveEditor.GUI.Menus.JMenuItemBase;
4 | import AutoDriveEditor.Utils.Classes.LabelNumberFilter;
5 |
6 | import javax.swing.*;
7 | import javax.swing.text.PlainDocument;
8 | import java.awt.event.ActionEvent;
9 |
10 | import static AutoDriveEditor.AutoDriveEditor.editor;
11 | import static AutoDriveEditor.GUI.MapPanel.mapScale;
12 | import static AutoDriveEditor.Locale.LocaleManager.getLocaleString;
13 | import static AutoDriveEditor.Managers.ScanManager.scanNetworkForOverlapNodes;
14 | import static AutoDriveEditor.Managers.ScanManager.searchDistance;
15 |
16 | public class ScanNetworkMenu extends JMenuItemBase {
17 |
18 | public static JMenuItem menu_ScanNetwork;
19 |
20 | public ScanNetworkMenu() {
21 | menu_ScanNetwork = makeMenuItem("menu_scan_overlap", "menu_scan_overlap_accstring", false);
22 | }
23 |
24 | @Override
25 | public void actionPerformed(ActionEvent e) {
26 | super.actionPerformed(e);
27 | JTextField mergeDistance = new JTextField(String.valueOf(searchDistance));
28 | JLabel labelDistance = new JLabel(" ");
29 | PlainDocument docX = (PlainDocument) mergeDistance.getDocument();
30 | docX.setDocumentFilter(new LabelNumberFilter(labelDistance, 0, 2048 * mapScale, true, false));
31 |
32 | Object[] inputFields = {getLocaleString("dialog_scan_area"), mergeDistance, labelDistance};
33 |
34 | int option = JOptionPane.showConfirmDialog(editor, inputFields, ""+ getLocaleString("dialog_scan_title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
35 |
36 | if (option == JOptionPane.OK_OPTION) {
37 | scanNetworkForOverlapNodes(Double.parseDouble(mergeDistance.getText()));
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Handlers/GlobalExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Handlers;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 |
6 | public class GlobalExceptionHandler implements Thread.UncaughtExceptionHandler{
7 |
8 | private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);
9 |
10 | public void uncaughtException(Thread t, Throwable e) { LOGGER.info(e.getMessage(), e); }
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/RoadNetwork/MarkerGroup.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.RoadNetwork;
2 |
3 | //
4 | // Used for storing all the marker groups and ID's in Route config files
5 | //
6 |
7 | @SuppressWarnings("rawtypes")
8 | public class MarkerGroup implements Comparable{
9 |
10 | public final int groupIndex;
11 | public final String groupName;
12 |
13 | public MarkerGroup(int index, String name) {
14 | this.groupIndex = index;
15 | this.groupName = name;
16 | }
17 |
18 | @SuppressWarnings("ComparatorMethodParameterNotUsed")
19 | @Override
20 | public int compareTo(Object o) {
21 | if (o instanceof MarkerGroup) {
22 | MarkerGroup other = (MarkerGroup) o;
23 | if (other.groupName.equals(groupName) && other.groupIndex == groupIndex) {
24 | return 0;
25 | }
26 | }
27 | return 1;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/Classes/EventTriggerNumberFilter.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils.Classes;
2 |
3 | import javax.swing.event.ChangeEvent;
4 | import javax.swing.event.ChangeListener;
5 | import javax.swing.text.AttributeSet;
6 | import javax.swing.text.BadLocationException;
7 | import javax.swing.text.DocumentFilter;
8 |
9 | public class EventTriggerNumberFilter extends DocumentFilter {
10 |
11 | private final ChangeListener changeListener;
12 | private final int maxValue;
13 | private final int minValue;
14 | private final boolean useDecimalPlaces;
15 |
16 | private final boolean canBeNegative;
17 |
18 | public EventTriggerNumberFilter(int min, int max, boolean allowDecimalPlaces, boolean canBeNegative, ChangeListener changeListener) {
19 | super();
20 | this.minValue = min;
21 | this.maxValue = max;
22 | this.useDecimalPlaces = allowDecimalPlaces;
23 | this.canBeNegative = canBeNegative;
24 | this.changeListener = changeListener;
25 | }
26 |
27 | @Override
28 | public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
29 | super.remove(fb, offset, length);
30 | if (fb.getDocument().getLength() != 0) {
31 | this.changeListener.stateChanged(new ChangeEvent(Integer.parseInt(fb.getDocument().getText(0, fb.getDocument().getLength()))));
32 | }
33 | }
34 |
35 | @Override
36 | public void insertString(FilterBypass fb, int offset,String string, AttributeSet attr) {
37 | try {
38 | if (this.useDecimalPlaces) {
39 | if (string.equals(".") && !fb.getDocument().getText(0, fb.getDocument().getLength()).contains(".")) {
40 | super.insertString(fb, offset, string, attr);
41 | return;
42 | }
43 | }
44 | if (this.canBeNegative) {
45 | if (string.equals("-") && !fb.getDocument().getText(0, fb.getDocument().getLength()).contains("-")) {
46 | super.insertString(fb, offset, string, attr);
47 | return;
48 | }
49 | }
50 | Integer.parseInt(string);
51 | super.insertString(fb, offset, string, attr);
52 | } catch (Exception ignored) {
53 | // this will only trigger if an unwanted key is pressed i.e. not a numeric 0 - 9
54 | }
55 | }
56 |
57 | @Override
58 | public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) {
59 | try {
60 | if (this.useDecimalPlaces) {
61 | if (text.equals(".") && !fb.getDocument().getText(0, fb.getDocument().getLength()).contains(".")) {
62 | super.insertString(fb, offset, text, attrs);
63 | return;
64 | }
65 | }
66 | if (this.canBeNegative) {
67 | if (text.equals("-") && !fb.getDocument().getText(0, fb.getDocument().getLength()).contains("-")) {
68 | super.insertString(fb, offset, text, attrs);
69 | return;
70 | }
71 | }
72 | Integer.parseInt(text);
73 | super.replace(fb, offset, length, text, attrs);
74 | int value = Integer.parseInt(fb.getDocument().getText(0, fb.getDocument().getLength()));
75 | if ( value > this.maxValue) {
76 | super.replace(fb, offset, length +1, "", attrs);
77 | this.changeListener.stateChanged(new ChangeEvent(fb.getDocument().getText(0, fb.getDocument().getLength())));
78 | } else if ( value < this.minValue) {
79 | super.replace(fb, offset, length -1, "", attrs);
80 | this.changeListener.stateChanged(new ChangeEvent(fb.getDocument().getText(0, fb.getDocument().getLength())));
81 | } else {
82 | this.changeListener.stateChanged(new ChangeEvent(value));
83 | }
84 | } catch (Exception ignored) {
85 | // this will only trigger if an unwanted key is pressed i.e. not a numeric 0 - 9
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/Classes/KDTree2DNode.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils.Classes;
2 |
3 | import AutoDriveEditor.RoadNetwork.MapNode;
4 |
5 | public class KDTree2DNode {
6 |
7 | public final MapNode mapNode;
8 | KDTree2DNode left, right;
9 |
10 | public KDTree2DNode(MapNode mapNode) {
11 | this.mapNode = mapNode;
12 | left = right = null;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/Classes/KDTree3DNode.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils.Classes;
2 |
3 | import AutoDriveEditor.RoadNetwork.MapNode;
4 |
5 | public class KDTree3DNode {
6 | MapNode mapNode;
7 | KDTree3DNode left;
8 | KDTree3DNode right;
9 |
10 | KDTree3DNode(MapNode mapNode) {
11 | this.mapNode = mapNode;
12 | this.left = null;
13 | this.right = null;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/Classes/NameableThread.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils.Classes;
2 |
3 | import java.util.concurrent.ThreadFactory;
4 |
5 | public class NameableThread implements ThreadFactory{
6 | private final ThreadFactory threadFactory;
7 | private final String name;
8 |
9 | public NameableThread(final ThreadFactory threadFactory, final String name) {
10 | this.threadFactory = threadFactory;
11 | this.name = name;
12 | }
13 |
14 | @Override
15 | public Thread newThread(final Runnable r) {
16 | final Thread thread = threadFactory.newThread(r);
17 | thread.setName(name);
18 | return thread;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/ConversionUtils.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils;
2 |
3 | import java.awt.*;
4 |
5 | public class ConversionUtils {
6 |
7 | public static Color HexToColor(String hexColour) {
8 | int r = Integer.valueOf(hexColour.substring(1, 3), 16);
9 | int g = Integer.valueOf(hexColour.substring(3, 5), 16);
10 | int b = Integer.valueOf(hexColour.substring(5, 7), 16);
11 | return new Color(r,g,b);
12 | }
13 |
14 | public static String ColorToHex(Color color, boolean toUpperCase) {
15 | String hex = String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue());
16 | if (toUpperCase) hex = hex.toUpperCase();
17 | return hex;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/HTMLUtils.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils;
2 |
3 | import javax.swing.*;
4 | import javax.swing.event.HyperlinkEvent;
5 | import java.awt.*;
6 | import java.io.IOException;
7 | import java.net.URISyntaxException;
8 |
9 | public class HTMLUtils {
10 |
11 | public static JEditorPane createHyperLink(String text, String linkText, String URL) {
12 | JLabel label = new JLabel();
13 | label.setHorizontalAlignment(SwingConstants.CENTER);
14 | Font font = label.getFont();
15 |
16 | // create some css from the label's font
17 | String style = "font-family:" + font.getFamily() + ";" + "font-weight:" + (font.isBold() ? "bold" : "normal") + ";" +
18 | "font-size:" + font.getSize() + "pt;" +
19 | "text-align: centre";
20 |
21 | // html content
22 | JEditorPane ep = new JEditorPane("text/html", "" //
23 | + text + " " + linkText + "" //
24 | + "");
25 |
26 | // handle link events
27 | ep.addHyperlinkListener(e -> {
28 | if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
29 | try {
30 | Desktop.getDesktop().browse(e.getURL().toURI()); // roll your own link launcher or use Desktop if J6+
31 | } catch (IOException | URISyntaxException ex) {
32 | ex.printStackTrace();
33 | }
34 | }
35 | });
36 | ep.setEditable(false);
37 | ep.setBackground(label.getBackground());
38 | return ep;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/ImageUtils.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils;
2 |
3 | import AutoDriveEditor.AutoDriveEditor;
4 |
5 | import javax.imageio.ImageIO;
6 | import javax.swing.*;
7 | import java.awt.*;
8 | import java.awt.image.BufferedImage;
9 | import java.io.IOException;
10 | import java.net.URL;
11 |
12 | import static AutoDriveEditor.GUI.Menus.DebugMenu.Logging.LogRenderInfoMenu.bDebugLogRenderInfo;
13 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
14 |
15 | public class ImageUtils {
16 |
17 | public static BufferedImage getNewBufferImage(int width, int height, int transparency) {
18 | GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
19 | GraphicsDevice gd = ge.getDefaultScreenDevice();
20 | GraphicsConfiguration gc = gd.getDefaultConfiguration();
21 | BufferedImage bufferImage = gc.createCompatibleImage(width, height, transparency);
22 | bufferImage.setAccelerationPriority(1);
23 | if (bDebugLogRenderInfo) LOG.info("Accelerated bufferImage = {}", bufferImage.getAccelerationPriority());
24 | return bufferImage;
25 | }
26 |
27 | public static BufferedImage loadImage(String fileName) {
28 | try {
29 | URL url = AutoDriveEditor.class.getResource("/" + fileName);
30 | if (url != null) {
31 |
32 | BufferedImage file = ImageIO.read(url);
33 | BufferedImage image = getNewBufferImage(file.getWidth(), file.getHeight(), Transparency.BITMASK);
34 | Graphics2D g = (Graphics2D) image.getGraphics();
35 | g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
36 | g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
37 | g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);
38 | g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
39 | g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
40 | g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
41 | g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
42 | g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
43 | g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
44 | g.drawImage(file,0,0,null);
45 | g.dispose();
46 | return image;
47 | }
48 | } catch (IOException e) {
49 | LOG.error(e.getMessage(), e);
50 | }
51 | return null;
52 | }
53 |
54 | public static ImageIcon loadImageIcon(String name) {
55 | String fileName = "/" + name;
56 | try {
57 | URL url = AutoDriveEditor.class.getResource(fileName);
58 | if (url != null) {
59 | BufferedImage newImage = ImageIO.read(url);
60 | return new ImageIcon(newImage);
61 | } else {
62 | LOG.info("## loadImageIcon Error ## Unable to load image {}", fileName);
63 | }
64 | } catch (IOException ignored) {}
65 | return null;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/LoggerUtils.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils;
2 |
3 | import AutoDriveEditor.AutoDriveEditor;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 |
7 | public class LoggerUtils {
8 |
9 | public static final Logger LOG = LoggerFactory.getLogger(AutoDriveEditor.class);
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/MathUtils.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils;
2 |
3 | import java.awt.geom.Point2D;
4 | import java.awt.geom.Rectangle2D;
5 | import java.math.BigDecimal;
6 | import java.math.RoundingMode;
7 |
8 | @SuppressWarnings("unused")
9 | public class MathUtils {
10 |
11 | /**
12 | * Given two points that describe the start and end locations of a rectangle, will return
13 | * a rectangle2D with normalized co-ordinates ( i.e. start location will always be the top-Left
14 | * of the rectangle and the size and width will always be positive numbers.
15 | *
16 | * @param startPoint Point2D containing the start location
17 | * @param endPoint Point2D containing the end location
18 | * @return Rectangle2D containing the normalized X,Y,Width,Height or null if the startPoint
19 | * or endPoint is invalid
20 | */
21 | public static Rectangle2D getNormalizedRectangle(Point2D startPoint, Point2D endPoint) {
22 | if (startPoint != null && endPoint != null) {
23 | double x1 = Math.min(startPoint.getX(), endPoint.getX());
24 | double y1 = Math.min(startPoint.getY(), endPoint.getY());
25 | double x2 = Math.max(startPoint.getX(), endPoint.getX());
26 | double y2 = Math.max(startPoint.getY(), endPoint.getY());
27 |
28 | // Ensure coordinates are in the correct order for the top-left and bottom-right corners
29 | if (x1 > x2) {
30 | double temp = x1;
31 | x1 = x2;
32 | x2 = temp;
33 | }
34 | if (y1 > y2) {
35 | double temp = y1;
36 | y1 = y2;
37 | y2 = temp;
38 | }
39 |
40 | // Ensure the width and height are non-negative
41 | double width = Math.max(0, x2 - x1);
42 | double height = Math.max(0, y2 - y1);
43 |
44 | return new Rectangle2D.Double(x1, y1, width, height);
45 | }
46 | return null;
47 | }
48 |
49 |
50 | /**
51 | *
52 | * takes an input representing a (double) angle in radians and normalizes it
53 | * to be within the range [0, 2π) or [0, 360 degrees)
54 | *
55 | * @param input in radians
56 | * @return normalized angle as a (double)
57 | */
58 | public static double normalizeAngle(double input) {
59 | double xPI = 2 * Math.PI;
60 | return (input % xPI + xPI) % xPI;
61 | }
62 |
63 | public static double roundUpDoubleToDecimalPlaces(double value, int places) {
64 | if (!Double.isNaN(value)) {
65 | BigDecimal bd = new BigDecimal(value);
66 | bd = bd.setScale(places, RoundingMode.HALF_UP);
67 | return bd.doubleValue();
68 | } else {
69 | return 0;
70 | }
71 | }
72 |
73 | public static float roundUpFloatToDecimalPlaces(float value, int places) {
74 | if (!Float.isNaN(value)) {
75 | BigDecimal bd = new BigDecimal(value);
76 | bd = bd.setScale(places, RoundingMode.HALF_UP);
77 | return (float) bd.doubleValue();
78 | } else {
79 | return 0;
80 | }
81 | }
82 |
83 | public static double limitDoubleToDecimalPlaces(double value, int places, RoundingMode roundingMode) {
84 | if (!Double.isNaN(value)) {
85 | BigDecimal bd = new BigDecimal(value);
86 | bd = bd.setScale(places, roundingMode);
87 | return bd.doubleValue();
88 | } else {
89 | return 0;
90 | }
91 | }
92 |
93 | public static float limitFloatToDecimalPlaces(float value, int places, RoundingMode roundingMode) {
94 | if (!Float.isNaN(value)) {
95 | BigDecimal bd = new BigDecimal(value);
96 | bd = bd.setScale(places, roundingMode);
97 | return (float) bd.doubleValue();
98 | } else {
99 | return 0;
100 | }
101 | }
102 |
103 | public static double linearInterpolate(double n0, double n1, double a) {
104 | return (1.0 - a) * n0 + (a * n1);
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/Utils/ProfileUtil.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.Utils;
2 |
3 | import java.math.RoundingMode;
4 |
5 | import static AutoDriveEditor.Utils.MathUtils.limitDoubleToDecimalPlaces;
6 |
7 | public class ProfileUtil {
8 |
9 | private long time;
10 | private long startTime = 0;
11 |
12 | public ProfileUtil() {
13 | this.time = 0;
14 | }
15 |
16 | public void startTimer() {
17 | this.startTime = System.nanoTime();
18 | }
19 |
20 | public void pauseTimer() {
21 | this.time += System.nanoTime() - this.startTime;
22 | }
23 |
24 | public void restartTimer() {
25 | startTimer();
26 | }
27 |
28 | public void stopTimer() {
29 | pauseTimer();
30 | }
31 |
32 | public void resetTimer() {
33 | this.time = 0;
34 | }
35 |
36 | public double getTime(int decimalPrecision) {
37 | return limitDoubleToDecimalPlaces((double)this.time / 1000000, decimalPrecision , RoundingMode.HALF_UP);
38 | }
39 | }
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/main/java/AutoDriveEditor/XMLConfig/AutoSave.java:
--------------------------------------------------------------------------------
1 | package AutoDriveEditor.XMLConfig;
2 |
3 | import AutoDriveEditor.Utils.Classes.NameableThread;
4 |
5 | import java.util.concurrent.Executors;
6 | import java.util.concurrent.ScheduledExecutorService;
7 | import java.util.concurrent.ScheduledFuture;
8 | import java.util.concurrent.TimeUnit;
9 |
10 | import static AutoDriveEditor.GUI.MapPanel.*;
11 | import static AutoDriveEditor.GUI.TextPanel.updateAutosaveStatusLabel;
12 | import static AutoDriveEditor.RoadNetwork.RoadMap.getRoadMap;
13 | import static AutoDriveEditor.Utils.LoggerUtils.LOG;
14 | import static AutoDriveEditor.XMLConfig.EditorXML.autoSaveInterval;
15 | import static AutoDriveEditor.XMLConfig.EditorXML.maxAutoSaveSlots;
16 | import static AutoDriveEditor.XMLConfig.GameXML.autoSaveGameConfigFile;
17 | import static AutoDriveEditor.XMLConfig.RoutesXML.autoSaveRouteManagerXML;
18 |
19 | public class AutoSave {
20 |
21 |
22 | public static ScheduledExecutorService scheduledExecutorService;
23 | @SuppressWarnings("rawtypes")
24 | public static ScheduledFuture scheduledFuture;
25 |
26 | public static boolean bSuspendAutoSave;
27 |
28 | public static void startAutoSaveThread() {
29 | LOG.info("Starting AutoSave Thread");
30 |
31 | scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(new NameableThread(Executors.defaultThreadFactory(), "AutoSave"));
32 | scheduledFuture = scheduledExecutorService.scheduleAtFixedRate(() -> {
33 | if (getRoadMap() != null) {
34 | if (configType == CONFIG_SAVEGAME) {
35 | autoSaveGameConfigFile();
36 | } else if (configType == CONFIG_ROUTEMANAGER) {
37 | autoSaveRouteManagerXML();
38 | }
39 | }
40 | }, autoSaveInterval, autoSaveInterval, TimeUnit.MINUTES);
41 | //
42 | LOG.info("Started AutoSave Thread ( Interval in Minutes {} , Max Slots {} )", autoSaveInterval, maxAutoSaveSlots);
43 | }
44 |
45 | public static void stopAutoSaveThread() {
46 | if (scheduledExecutorService != null) {
47 | scheduledExecutorService.shutdown();
48 | try {
49 | if (!scheduledExecutorService.awaitTermination(2, TimeUnit.SECONDS)) {
50 | scheduledExecutorService.shutdownNow();
51 | if (!scheduledExecutorService.awaitTermination(3, TimeUnit.SECONDS)) {
52 | LOG.info("AutoSave thread failed to shut down after 5 seconds");
53 | }
54 | } else {
55 | LOG.info("AutoSave thread stopped");
56 | }
57 | updateAutosaveStatusLabel();
58 | //setAutosaveStatusLabel("Disabled", new Color(200, 0, 0));
59 | } catch (InterruptedException e) {
60 | e.printStackTrace();
61 | scheduledExecutorService.shutdownNow();
62 | }
63 | }
64 | }
65 |
66 | public static void restartAutoSaveThread() {
67 | LOG.info("Restarting AutoSave Thread");
68 | if (scheduledExecutorService != null) {
69 | stopAutoSaveThread();
70 | startAutoSaveThread();
71 | } else {
72 | LOG.info("Failed to restart AutoSave Thread ( Thread not active )");
73 | }
74 | }
75 |
76 | public static void suspendAutoSaving() { bSuspendAutoSave = true; }
77 |
78 | public static void resumeAutoSaving() { bSuspendAutoSave = false; }
79 |
80 | @SuppressWarnings("BooleanMethodIsAlwaysInverted")
81 | public static boolean canAutoSave() { return !bSuspendAutoSave; }
82 |
83 | }
--------------------------------------------------------------------------------
/src/main/resources/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: AutoDriveEditor.AutoDriveEditor
3 |
4 |
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/curves/controlpoint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/curves/controlpoint.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/curves/controlpoint_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/curves/controlpoint_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/curves/curvenode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/curves/curvenode.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/gridsubtoggle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/gridsubtoggle.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/node.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/node.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/node_marker_blur.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/node_marker_blur.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/node_marker_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/node_marker_small.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/node_parking_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/node_parking_big.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/node_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/node_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/subprionode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/subprionode.png
--------------------------------------------------------------------------------
/src/main/resources/editor/Legacy/subprionode_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/Legacy/subprionode_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/addmarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/addmarker.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/addmarker_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/addmarker_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/conconnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/conconnect.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/conconnect_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/conconnect_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/config.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/config_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/config_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectdual.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectdual.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectdual_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectdual_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectdual_subprio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectdual_subprio.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectdual_subprio_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectdual_subprio_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectregular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectregular.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectregular_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectregular_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectregular_subprio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectregular_subprio.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectregular_subprio_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectregular_subprio_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectreverse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectreverse.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectreverse_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectreverse_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectreverse_subprio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectreverse_subprio.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectreverse_subprio_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectreverse_subprio_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectroad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectroad.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/connectroad_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/connectroad_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/copy.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/copy_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/copy_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/createprimary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/createprimary.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/createprimary_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/createprimary_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/createsecondary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/createsecondary.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/createsecondary_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/createsecondary_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/cubiccurve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/cubiccurve.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/cubiccurve_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/cubiccurve_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/cut.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/cut_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/cut_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/deletemarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/deletemarker.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/deletemarker_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/deletemarker_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/deletenodes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/deletenodes.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/deletenodes_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/deletenodes_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/depthalign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/depthalign.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/depthalign_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/depthalign_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/editlocation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/editlocation.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/editlocation_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/editlocation_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/editmarker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/editmarker.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/editmarker_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/editmarker_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/flip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/flip.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/flip_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/flip_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/gridsnaptoggle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/gridsnaptoggle.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/gridsnaptoggle_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/gridsnaptoggle_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/gridsubtoggle_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/gridsubtoggle_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/gridtoggle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/gridtoggle.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/gridtoggle_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/gridtoggle_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hidden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hidden.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hidden_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hidden_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_dual.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_dual.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_dual_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_dual_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_regular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_regular.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_regular_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_regular_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_reverse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_reverse.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_reverse_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_reverse_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_subprio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_subprio.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_connect_subprio_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_connect_subprio_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_node.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_node.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/hide_node_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/hide_node_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/horizontalalign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/horizontalalign.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/horizontalalign_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/horizontalalign_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/movenode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/movenode.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/movenode_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/movenode_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/networkinfo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/networkinfo.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/networkinfo_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/networkinfo_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/nodeminus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/nodeminus.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/nodeminus_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/nodeminus_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/nodeplus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/nodeplus.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/nodeplus_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/nodeplus_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/paste.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/paste_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/paste_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/quadcurve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/quadcurve.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/quadcurve_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/quadcurve_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/rotatenode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/rotatenode.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/rotatenode_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/rotatenode_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/scale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/scale.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/scale_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/scale_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/select_freeform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/select_freeform.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/select_freeform_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/select_freeform_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/select_rectangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/select_rectangle.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/select_rectangle_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/select_rectangle_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/swappriority.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/swappriority.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/swappriority_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/swappriority_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/unknown.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/unknown_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/unknown_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/verticalalign.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/verticalalign.png
--------------------------------------------------------------------------------
/src/main/resources/editor/buttons/verticalalign_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/buttons/verticalalign_selected.png
--------------------------------------------------------------------------------
/src/main/resources/editor/curvepanel/cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/curvepanel/cancel.png
--------------------------------------------------------------------------------
/src/main/resources/editor/curvepanel/cancel_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/curvepanel/cancel_select.png
--------------------------------------------------------------------------------
/src/main/resources/editor/curvepanel/confirm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/curvepanel/confirm.png
--------------------------------------------------------------------------------
/src/main/resources/editor/curvepanel/confirm_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/curvepanel/confirm_select.png
--------------------------------------------------------------------------------
/src/main/resources/editor/gameIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/gameIcon.png
--------------------------------------------------------------------------------
/src/main/resources/editor/marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/marker.png
--------------------------------------------------------------------------------
/src/main/resources/editor/nodes/node_marker2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/nodes/node_marker2.png
--------------------------------------------------------------------------------
/src/main/resources/editor/nodes/node_marker_small2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/nodes/node_marker_small2.png
--------------------------------------------------------------------------------
/src/main/resources/editor/nodes/node_parking_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/nodes/node_parking_small.png
--------------------------------------------------------------------------------
/src/main/resources/editor/nodes/node_warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/nodes/node_warning.png
--------------------------------------------------------------------------------
/src/main/resources/editor/nodes/node_warning_y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/nodes/node_warning_y.png
--------------------------------------------------------------------------------
/src/main/resources/editor/routeIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/routeIcon.png
--------------------------------------------------------------------------------
/src/main/resources/editor/tractor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/tractor.png
--------------------------------------------------------------------------------
/src/main/resources/editor/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/editor/update.png
--------------------------------------------------------------------------------
/src/main/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/main/resources/mapImages/Blank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KillBait/AutoDrive_Course_Editor/f7064ee9d9ebf8f73640260ecc096439c5ee8876/src/main/resources/mapImages/Blank.png
--------------------------------------------------------------------------------
/version.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 1.0.9
4 |
5 |
6 | Version Notes
7 |
8 |
9 | Update to v1.0.9
10 |
Fixed
11 |
12 | - Fixed FS25 config crash when reading Parking Spots ( FS25 changed how vehicle ID's are stored in vehicles.xml
13 |
14 | Visit the Release Page Here.
15 |
16 | ]]>
17 |
18 |
19 |
--------------------------------------------------------------------------------