{"action":"created","comment":{"url":"https://api.github.com/repos/triplea-game/triplea/pulls/comments/54356898","id":54356898,"diff_hunk":"@@ -0,0 +1,839 @@\n+package util.triplea.MapXMLCreator;\r\n+\r\n+import games.strategy.engine.framework.GameRunner2;\r\n+\r\n+import java.awt.BorderLayout;\r\n+import java.awt.Color;\r\n+import java.awt.Component;\r\n+import java.awt.ComponentOrientation;\r\n+import java.awt.Dimension;\r\n+import java.awt.FlowLayout;\r\n+import java.awt.Font;\r\n+import java.awt.GridBagConstraints;\r\n+import java.awt.GridBagLayout;\r\n+import java.awt.GridLayout;\r\n+import java.awt.Insets;\r\n+import java.awt.event.ActionEvent;\r\n+import java.awt.event.ActionListener;\r\n+import java.awt.event.FocusEvent;\r\n+import java.awt.event.FocusListener;\r\n+import java.awt.event.InputEvent;\r\n+import java.awt.event.KeyEvent;\r\n+import java.awt.event.MouseEvent;\r\n+import java.awt.event.MouseListener;\r\n+import java.io.File;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Iterator;\r\n+import java.util.Set;\r\n+\r\n+import javax.swing.AbstractAction;\r\n+import javax.swing.Action;\r\n+import javax.swing.Box;\r\n+import javax.swing.BoxLayout;\r\n+import javax.swing.JButton;\r\n+import javax.swing.JEditorPane;\r\n+import javax.swing.JFrame;\r\n+import javax.swing.JLabel;\r\n+import javax.swing.JMenu;\r\n+import javax.swing.JMenuBar;\r\n+import javax.swing.JMenuItem;\r\n+import javax.swing.JOptionPane;\r\n+import javax.swing.JPanel;\r\n+import javax.swing.JScrollPane;\r\n+import javax.swing.JTabbedPane;\r\n+import javax.swing.JTextArea;\r\n+import javax.swing.KeyStroke;\r\n+import javax.swing.SwingUtilities;\r\n+import javax.swing.border.EmptyBorder;\r\n+import javax.swing.border.MatteBorder;\r\n+import javax.swing.text.Document;\r\n+import javax.swing.text.html.HTMLEditorKit;\r\n+\r\n+/**\r\n+ * A frame that will show the different steps creating a game XML.\r\n+ * \r\n+ * @author Erik von der Osten\r\n+ * \r\n+ */\r\n+public class MapXMLCreator extends JFrame\r\n+{\r\n+\tprivate static final long serialVersionUID = 3593102638082774498L;\r\n+\tpublic static final String TRIPLEA_MAP_FOLDER = \"triplea.map.folder\";\r\n+\tpublic static final String TRIPLEA_UNIT_ZOOM = \"triplea.unit.zoom\";\r\n+\tpublic static final String TRIPLEA_UNIT_WIDTH = \"triplea.unit.width\";\r\n+\tpublic static final String TRIPLEA_UNIT_HEIGHT = \"triplea.unit.height\";\r\n+\t\r\n+\tprivate int m_highest_step = 1;\r\n+\r\n+\tstatic File s_mapImageFile = null;\r\n+\tstatic File s_mapCentersFile = null;\r\n+\tstatic File s_mapPolygonsFile = null;\r\n+\tstatic String s_waterFilterString = \"\";\r\n+\tstatic File s_mapFolderLocation = null;\r\n+\t\r\n+\tfinal JPanel m_mainPanel;\r\n+\tfinal JPanel m_sidePanel;\r\n+\tfinal JPanel m_stepPanel = new JPanel();\r\n+\tfinal JPanel m_panel2 = new JPanel();\r\n+\tfinal JPanel m_panel3 = new JPanel();\r\n+\tfinal JPanel m_panel4 = new JPanel();\r\n+\tprivate JPanel stepListPanel;\r\n+\tprivate ArrayList<JLabel> m_stepList = new ArrayList<JLabel>();\r\n+\tprivate final JPanel m_southPanel = new JPanel();\r\n+\tprivate JPanel southLeftPanel;\r\n+\tprivate JPanel southRightPanel;\r\n+\tprivate JPanel southCenterPanel;\r\n+\tprivate JButton m_bHelp;\r\n+\tprivate JButton m_bAvailableChoices;\r\n+\tJButton m_bBack;\r\n+\tJButton m_bAuto;\r\n+\tJButton m_bNext;\r\n+\tprivate JPanel m_stepActionPanel;\r\n+\tprivate JLabel m_lStepTitle;\r\n+\tprivate JPanel m_actionPanel;\r\n+\tprivate int m_currentStep;\r\n+\t\r\n+\tpublic static String[] getProperties()\r\n+\t{\r\n+\t\treturn new String[] { TRIPLEA_MAP_FOLDER, TRIPLEA_UNIT_ZOOM, TRIPLEA_UNIT_WIDTH, TRIPLEA_UNIT_HEIGHT };\r\n+\t}\r\n+\t\r\n+\tpublic static void main(final String[] args)\r\n+\t{\r\n+\t\tSystem.out.println(\"Starting MapXMLCreator\");\r\n+//\t\thandleCommandLineArgs(args);\r\n+\t\tGameRunner2.setupLookAndFeel();\r\n+\t\tSwingUtilities.invokeLater(new Runnable()\r\n+\t\t{\r\n+\t\t\tpublic void run()\r\n+\t\t\t{\r\n+\t\t\t\tfinal MapXMLCreator creator = new MapXMLCreator();\r\n+\t\t\t\tcreator.setSize(800, 600);\r\n+\t\t\t\tcreator.setPreferredSize(creator.getSize());\r\n+\t\t\t\tcreator.goToStep(1);\r\n+\t\t\t\tcreator.setLocationRelativeTo(null);\r\n+\t\t\t\tcreator.setVisible(true);\r\n+\t\t\t}\r\n+\t\t});\r\n+\t}\r\n+\r\n+\tpublic MapXMLCreator()\r\n+\t{\r\n+\t\tsuper(\"TripleA Map XML Creator\");\r\n+\t\t\r\n+\t\ts_mapFolderLocation = new File(\"C:\\\\Users\\\\evdO\\\\triplea\\\\triplea_1_7_0_3\\\\maps\\\\minimap\");\r\n+\t\t// s_mapFolderLocation = new File(\"C:\\\\Users\\\\User\\\\workspace\\\\triplea\\\\maps\\\\minimap\");\r\n+\t\tMapXMLHelper.s_mapXMLFile = new File(s_mapFolderLocation.getAbsolutePath() + \"\\\\..\\\\new_world_order\\\\games\\\\new_world_order.xml\");\r\n+\t\t\r\n+\t\tsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n+\t\t\r\n+\t\t// set up the actions\r\n+\t\tfinal Action openAction = new AbstractAction(\"Load Map XML\")\r\n+\t\t{\r\n+\t\t\tprivate static final long serialVersionUID = -3135749471880991185L;\r\n+\t\t\t\r\n+\t\t\tpublic void actionPerformed(final ActionEvent event)\r\n+\t\t\t{\r\n+\t\tfinal int goToStep = MapXMLHelper.loadXML();\r\n+\t\t\t\tm_highest_step = 1;\r\n+\t\t\t\tDynamicRowsPanel.s_me = null;\r\n+\t\tif (goToStep > 0)\r\n+\t\t{\r\n+\t\t\tSwingUtilities.invokeLater(new Runnable()\r\n+\t\t\t{\r\n+\t\t\t\t@Override\r\n+\t\t\t\tpublic void run()\r\n+\t\t\t\t{\r\n+\t\t\t\t\tgoToStep(goToStep);\r\n+\t\t\t\t}\r\n+\t\t\t});\r\n+\t\t}\r\n+\t\t\t\tsetWidgetActivation();\r\n+\t\t\t}\r\n+\t\t};\r\n+\t\topenAction.putValue(Action.SHORT_DESCRIPTION, \"Load an existing Map XML File\");\r\n+\t\tfinal Action saveAction = new AbstractAction(\"Save Map XML\")\r\n+\t\t{\r\n+\t\t\tprivate static final long serialVersionUID = -5608941822299486808L;\r\n+\t\t\t\r\n+\t\t\tpublic void actionPerformed(final ActionEvent event)\r\n+\t\t\t{\r\n+\t\t\t\tm_stepActionPanel.requestFocus();\r\n+\t\t\t\tif (DynamicRowsPanel.s_me == null || DynamicRowsPanel.s_me.dataIsConsistent())\r\n+\t\t\t\t\tMapXMLHelper.saveXML();\r\n+\t\t\t}\r\n+\t\t};\r\n+\t\tsaveAction.putValue(Action.SHORT_DESCRIPTION, \"Save the Map XML to File\");\r\n+\t\tfinal Action exitAction = new AbstractAction(\"Exit\")\r\n+\t\t{\r\n+\t\t\tprivate static final long serialVersionUID = -9212762817640498442L;\r\n+\t\t\t\r\n+\t\t\tpublic void actionPerformed(final ActionEvent event)\r\n+\t\t\t{\r\n+\t\t\t\tSystem.exit(0);\r\n+\t\t\t}\r\n+\t\t};\r\n+\t\texitAction.putValue(Action.SHORT_DESCRIPTION, \"Exit The Program\");\r\n+\t\t// set up the menu items\r\n+\t\tfinal JMenuItem openItem = new JMenuItem(openAction);\r\n+\t\topenItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));\r\n+\t\tfinal JMenuItem saveItem = new JMenuItem(saveAction);\r\n+\t\tsaveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));\r\n+\t\tfinal JMenuItem exitItem = new JMenuItem(exitAction);\r\n+\t\t// set up the menu bar\r\n+\t\tfinal JMenuBar menuBar = new JMenuBar();\r\n+\t\tsetJMenuBar(menuBar);\r\n+\t\tfinal JMenu fileMenu = new JMenu(\"File\");\r\n+\t\tfileMenu.setMnemonic('F');\r\n+\t\tfileMenu.add(openItem);\r\n+\t\tfileMenu.add(saveItem);\r\n+\t\tfileMenu.addSeparator();\r\n+\t\tfileMenu.add(exitItem);\r\n+\t\tmenuBar.add(fileMenu);\r\n+\t\t// components\r\n+\t\tm_mainPanel = new JPanel();\r\n+\t\tm_sidePanel = new JPanel();\r\n+\t\tstepListPanel = new JPanel();\r\n+\t\t\r\n+\t\tm_sidePanel.setLayout(new BoxLayout(m_sidePanel, BoxLayout.Y_AXIS));\r\n+\t\tm_sidePanel.add(Box.createVerticalStrut(2));\r\n+\t\tm_sidePanel.add(stepListPanel);\r\n+\t\tm_sidePanel.add(Box.createVerticalGlue());\r\n+\t\t\r\n+\t\tm_stepList.add(new JLabel(\"1: Map Properties\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"2: Territory Definitions\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"3: Territory Connections\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"4: Players and Alliances\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"5: Unit Definitions\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"6: Gameplay Sequence\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"7: Player Sequence\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"8: Technology Definitions\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"9: Production Frontiers\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"10: Unit Attachments\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"11: Territory Production\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"12: Canal Definitions\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"13: Territory Ownership\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"14: Unit Placements\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"15: Game Settings\"));\t\t\r\n+\t\tm_stepList.add(new JLabel(\"16: Map finished!\"));\r\n+\t\t\r\n+\t\tstepListPanel.setLayout(new GridLayout(m_stepList.size(), 1, 0, 10));\r\n+\t\tstepListPanel.setBorder(new EmptyBorder(10, 2, 0, 5));\r\n+\t\tstepListPanel.setPreferredSize(new Dimension(170, 410));\r\n+\r\n+\t\tint current_label = 1;\r\n+\t\tfor (final Iterator<JLabel> iter = m_stepList.iterator(); iter.hasNext();)\r\n+\t\t{\r\n+\t\t\tfinal JLabel lStep = iter.next();\r\n+\t\t\tfinal int label_order = current_label;\r\n+\t\t\tlStep.addMouseListener(new MouseListener()\r\n+\t\t\t{\r\n+\t\t\t\t\r\n+\t\t\t\t@Override\r\n+\t\t\t\tpublic void mouseReleased(MouseEvent e)\r\n+\t\t\t\t{\r\n+\t\t\t\t}\r\n+\t\t\t\t\r\n+\t\t\t\t@Override\r\n+\t\t\t\tpublic void mousePressed(MouseEvent e)\r\n+\t\t\t\t{\r\n+\t\t\t\t}\r\n+\t\t\t\t\r\n+\t\t\t\t@Override\r\n+\t\t\t\tpublic void mouseExited(MouseEvent e)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tif (label_order <= m_highest_step && label_order != m_currentStep)\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tlStep.setOpaque(false);\r\n+\t\t\t\t\t\tlStep.setBackground(lStep.getBackground().darker().darker());\r\n+\t\t\t\t\t\tlStep.updateUI();\r\n+\t\t\t\t\t}\r\n+\t\t\t\t}\r\n+\t\t\t\t\r\n+\t\t\t\t@Override\r\n+\t\t\t\tpublic void mouseEntered(MouseEvent e)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tif (label_order <= m_highest_step && label_order != m_currentStep)\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tlStep.setOpaque(true);\r\n+\t\t\t\t\t\tlStep.setBackground(lStep.getBackground().brighter().brighter());\r\n+\t\t\t\t\t\tlStep.updateUI();\r\n+\t\t\t\t\t}\r\n+\t\t\t\t}\r\n+\t\t\t\t\r\n+\t\t\t\t@Override\r\n+\t\t\t\tpublic void mouseClicked(MouseEvent e)\r\n+\t\t\t\t{\r\n+\t\t\t\t\tlStep.requestFocus();\r\n+\t\t\t\t\tif (label_order <= m_highest_step && label_order != m_currentStep && (DynamicRowsPanel.s_me == null || DynamicRowsPanel.s_me.dataIsConsistent()))\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tlStep.setOpaque(false);\r\n+\t\t\t\t\t\tgoToStep(label_order);\r\n+\t\t\t\t\t}\r\n+\t\t\t\t}\r\n+\t\t\t});\r\n+\t\t\tstepListPanel.add(lStep);\r\n+\t\t\t++current_label;\r\n+\t\t}\r\n+\t\t\r\n+\t\t// set up the layout manager\r\n+\t\tthis.getContentPane().setLayout(new BorderLayout());\r\n+\t\tfinal JScrollPane scrollPane = new JScrollPane(m_sidePanel);\r\n+\t\tscrollPane.setBorder(new MatteBorder(1, 1, 1, 1, Color.DARK_GRAY));\r\n+\t\tthis.getContentPane().add(scrollPane, BorderLayout.WEST);\r\n+\t\tthis.getContentPane().add(m_mainPanel, BorderLayout.CENTER);\r\n+\t\t\r\n+\t\t// now set up the main screen\r\n+\t\tsetupMainPanel(m_stepPanel);\r\n+\t\tm_stepPanel.setLayout(new BoxLayout(m_stepPanel, BoxLayout.PAGE_AXIS));\r\n+\t\t\r\n+\t\tm_stepPanel.add(Box.createVerticalStrut(20));\r\n+\t\t\r\n+\t\tm_lStepTitle = new JLabel(\"Map Properties\");\r\n+\t\tm_lStepTitle.setFont(new Font(\"Tahoma\", Font.BOLD, 12));\r\n+\t\tm_lStepTitle.setAlignmentX(Component.CENTER_ALIGNMENT);\r\n+\t\tm_stepPanel.add(m_lStepTitle);\r\n+\t\t\r\n+\t\tm_stepPanel.add(Box.createVerticalStrut(20));\r\n+\t\t\r\n+\t\tm_actionPanel = new JPanel();\r\n+\t\tm_actionPanel.setLayout(new BorderLayout());\r\n+\t\tm_actionPanel.setBorder(new MatteBorder(1, 0, 0, 0, Color.DARK_GRAY));\r\n+\t\tm_stepActionPanel = new JPanel();\r\n+\t\tm_stepPanel.add(m_actionPanel);\r\n+\r\n+\t\tm_actionPanel.add(m_stepActionPanel,BorderLayout.CENTER);\r\n+\t\t\r\n+\t\tlayoutSouthPanel();\r\n+\r\n+\t\topenAction.actionPerformed(null);\r\n+\t}\r\n+\r\n+\tprivate void layoutSouthPanel() {\r\n+\t\tm_mainPanel.add(m_southPanel, BorderLayout.SOUTH);\r\n+\t\tm_southPanel.setLayout(new BoxLayout(m_southPanel, BoxLayout.X_AXIS));\r\n+\t\t\r\n+\t\tsouthLeftPanel = new JPanel();\r\n+\t\tsouthLeftPanel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);\r\n+\t\tFlowLayout fl_southLeftPanel = (FlowLayout) southLeftPanel.getLayout();\r\n+\t\tfl_southLeftPanel.setAlignment(FlowLayout.LEFT);\r\n+\t\tsouthLeftPanel.setBorder(null);\r\n+\t\tm_southPanel.add(southLeftPanel);\r\n+\t\t\r\n+\t\tm_southPanel.add(Box.createHorizontalGlue());\r\n+\t\t\r\n+\t\tm_bHelp = new JButton(\"Help\");\r\n+\t\tm_bHelp.setMnemonic('H');\r\n+\t\tm_bHelp.setFont(new Font(\"Tahoma\", Font.PLAIN, 11));\r\n+\t\tm_bHelp.addActionListener(new ActionListener() {\r\n+\t\t\tpublic void actionPerformed(ActionEvent e) {\r\n+\t\t\t\tswitch (m_currentStep) {\r\n+\t\t\t\tcase 1:\t showInfoMessage(\"Map Name: The map name that is displayed in the New Game window in TripleA. Examples: Revised, Classic, Big World, and Great War\\r\\n\\r\\nMap Version: The version of the map's xml file. Examples: 0.0.1, 1.0.0.1, and 1.1\\r\\n\\r\\nResource Name: The name of the resource used in the map. Resources can be thought of as buying tokens or currency used to buy units, technology, etc. 'IPCs' have recently been replaced by 'PUs'. 'IPCs' will no longer work as the map resource. \\r\\n\\r\\nMap Image Location: The location of the map image. Example: C:/My Maps/Sleeping Giant/full_map.png\\r\\n\\r\\nMap Centers File: The location of the centers file produced by the 'Center Picker' program. The centers file is used to automatically add the map's territories. Example: C:/My Maps/Sleeping Giant/centers.txt\\r\\n\\r\\nWater Territory Filter: An optional setting that makes the program automatically apply the 'Is Water' property to every territory that contains the filter text. Examples: SZ, Sea Zone, Pacific, and Atlantic.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 2: //showInfoMessage(\"To add a new territory, click somewhere on the map and enter a name for the territory in the window that appears. \\r\\n If you want to change the properties of a territory, left click on it and answer each question. The color of the territory label changes for each property that is applies. If you want to remove a territory label, right click on it and click yes when it asks for confirmation.\", \"Help For Current Step\");\r\n+\t\t        \tshowInfoMessage(\"Right click to rename a territory. \\r\\n If you want to change the properties of a territory, left click on it. \\r\\n The color of the territory label changes for each property that is applied.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 3: showInfoMessage(\"To add a connection between two territories, click on the first territory in the connection and then the second. To remove all the connections from a certain territory, right click on it and click yes.\\r\\n\\r\\nNote: To have the program find the connections automatically, click the 'Auto-Fill' button between the Back and Next buttons.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 4: showInfoMessage(\"Player Name: The name of the player. Examples: Russians, Germans, British, Americans, Chinese, and Italians.\\r\\n\\r\\nPlayer Alliance: The name of the alliance that the player is part of. Examples: Allies, and Axis.\\r\\n\\r\\nInitial Resources: The amount of resources(PUs) the player begins with when the map is started.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 5: showInfoMessage(\"Unit Name: The name of the unit. Examples: infantry, artillery, armour, fighter, bomber, and transport.\\r\\n\\r\\nBuy Cost: The amount of resources it takes to buy the unit.\\r\\n\\r\\nBuy Quantity: The amount of units to be placed with each purchase of the unit.\\r\\n\\r\\nTo have the program automatically enter some of the commonly used units, click the 'Auto-Fill' button between the Back and Next buttons.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 6: showInfoMessage(\"Sequence Name: The name of the sequence. Examples(Typical): tech, techActivation, battle, move, place, purchase, endTurn, placeBid, bid.\\r\\n\\r\\nClass Name: The name of the java delegate. Examples(Typical): TechnologyDelegate, TechActivationDelegate, BattleDelegate, MoveDelegate, PlaceDelegate, PurchaseDelegate, EndTurnDelegate, BidPlaceDelegate, BidPurchaseDelegate.\\r\\n\\r\\nDisplay: The text displayed for the delegate in TripleA. Examples(Typical): Research Technology, Activate Technology, Combat, Combat Move, Place Units, Purchase Units, Turn Complete, Bid Placement, and Bid Purchase\\r\\n\\r\\nTo have the program automatically enter the default Gameplay Sequences, click the 'Auto-Fill' button between the Back and Next buttons.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 7: showInfoMessage(\"Sequence Name: The name of the sequence. Examples: russianBid, germanBidPlace, chineseTech, americanCombatMove, and germanPlace.\\r\\n\\r\\nGameplay Sequence: The name of the Gameplay Sequence that the player sequence uses. Examples: bid, tech, move, place, endTurn.\\r\\n\\r\\nPlayer: The name of the player that the Player Delegate is attached to. Examples: Russians, Germans, Americans, and Chinese.\\r\\n\\r\\nMax Run Count: The maximum number of times the Sequence can be used in the game. (You can set this value to 0 if you do not want the sequence to have a run limit).\\r\\n\\r\\nTo have the program automatically enter the default Player Sequences, click the 'Auto-Fill' button between the Back and Next buttons.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 8: showInfoMessage(\"Technology Name: The name of the technology that can be researched and unlocked by the player. Examples(Typical): heavyBomber, jetPower, industrialTechnology, superSub, rocket, and longRangeAir.\\r\\n\\r\\nPlayer: The name of the player that is able to research the technology. Examples: Russians, Germans, Americans, and Chinese.\\r\\n\\r\\nAlready Enabled: Determines if the technology should be unlocked for the selected player when the game first starts.\\r\\n\\r\\nTo have the program automatically enter some of the commonly used technologies, click the 'Auto-Fill' button between the Back and Next buttons.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 9: showInfoMessage(\"Unit Name: The name of the unit that is included in the production frontier. Examples: infantry, artillery, and armour.\\r\\n\\r\\nTo have the program automatically add all the units to the production frontier being shown, click the 'Auto-Fill' button between the Back and Next buttons.\\r\\n\\r\\nNote: A production frontier is just a list of units that a player is allowed to purchase.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 10: showInfoMessage(\"Attachment Name: The name of the unit attachment that is applied to the unit. Examples: movement, attack, defense, isAir, isSea, and isStrategicBomber.\\r\\n\\r\\nValue: The attachment value. Examples: True, False, 1, 2\\r\\n\\r\\nTo have the program automatically enter the default attachments for the units that are commonly used, click the 'Auto-Fill' button between the Back and Next buttons.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 11: showInfoMessage(\"To change the production value of a territory, click on the territory and enter the territory's new production value in the window that appears.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 12: showInfoMessage(\"To add a new canal, click on both of the land territories that form the canal(Touch the canal) and click yes when it asks for confirmation. To remove all the canals from the map, right click on one of the territories and click 'Yes' to confirm.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 13: showInfoMessage(\"To change the initial owner of a territory, click on the territory and type in its new owner when it asks for it.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 14: showInfoMessage(\"To change the units that a territory begins with, click on the territory and use the window that opens to set the territory's units. To do so, use the + and - buttons below each unit's name to change the quantity of each unit in the territory. You can also edit the text in the result textbox directly to change the territory units. Just type the name of each unit you want to add, followed by ':', followed by the unit quantitiy: Example: 'infantry: 1, artillery: 3, armour: 2, fighter: 1'.\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t\t\t\tcase 15:\r\n+\t\t\t\t\t\tfinal String[] settings = GameSettingsPanel.s_allSettings.split(\", \");\r\n+\t\t\t\t\t\tStringBuilder sb = new StringBuilder();\r\n+\t\t\t\t\t\tsb.append(\"<html><table border=0><tr>\");\r\n+\t\t\t\t\t\tint setting_nr = 1;\r\n+\t\t\t\t\t\tfor (final String setting : settings)\r\n+\t\t\t\t\t\t{\r\n+\t\t\t\t\t\t\tsb.append(\"<td>\" + setting + \"</td>\");\r\n+\t\t\t\t\t\t\tif (setting_nr % 3 == 0)\r\n+\t\t\t\t\t\t\t\tsb.append(\"</tr><tr>\");\r\n+\t\t\t\t\t\t\t++setting_nr;\r\n+\t\t\t\t\t\t}\r\n+\t\t\t\t\t\tsb.append(\"</tr></table></html>\");\r\n+\t\t\t\t\t\tshowInfoMessage(\r\n+\t\t\t\t\t\t\t\t\t\"Setting Name: The name of the setting that is applied to the map. Examples: Always on AA, Two hit battleship, and Japanese bid.\\r\\n\\r\\nValue: The value of the game setting. Examples: true, false, 0, 5, 32.\\r\\n\\r\\nEditable: Whether players are allowed to change the value of the setting when the map is being started.\\r\\n\\r\\nMin. N. (Optional): The lowest number that the value can be set to when the user sets the game options in TripleA. Only change this if the setting is a number.\\r\\n\\r\\nMax. N.(Optional): The highest number that the value can be set to when the user sets the game options in TripleA. Only change this if the setting is a number.\\r\\n\\r\\nTo have the program automatically enter some of the commonly used Game Settings, click the 'Auto-Fill' button between the Back and Next buttons.\",\r\n+\t\t\t\t\t\t\t\t\t\"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t        case 16: showInfoMessage(\"The map notes can be entered in the textbox. You can enter plain text or html code. Then just click the 'Save Map To File' button, and save the file in the map's 'games' folder. (Create the 'games' folder if not already created)\", \"Help For Current Step\");\r\n+\t\t        break;\r\n+\t\t\t\t}\r\n+\t\t\t}\r\n+\t\t});\r\n+\t\tsouthLeftPanel.add(m_bHelp);\r\n+\t\t\r\n+\t\tsouthCenterPanel = new JPanel();\r\n+\t\tm_southPanel.add(southCenterPanel);\r\n+\t\t\r\n+\t\tm_southPanel.add(Box.createHorizontalGlue());\r\n+\t\t\r\n+\t\tm_bBack = new JButton(\"Back\");\r\n+\t\tm_bBack.setMnemonic(KeyEvent.VK_B);\r\n+\t\tm_bBack.setFont(new Font(\"Tahoma\", Font.PLAIN, 11));\r\n+\t\tm_bBack.addActionListener(new AbstractAction(\"Previous Step\")\r\n+\t\t{\t\t\r\n+\t\t\tprivate static final long serialVersionUID = -8623081809358073307L;\r\n+\r\n+\t\t\tpublic void actionPerformed(final ActionEvent e)\r\n+\t\t\t{\r\n+\t\t\t\tSwingUtilities.invokeLater(new Runnable()\r\n+\t\t\t\t{\r\n+\t\t\t\t\tpublic void run()\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tif (m_currentStep > 1)\r\n+\t\t\t\t\t\t\tgoToStep(m_currentStep-1);\r\n+\t\t\t\t\t\tm_actionPanel.validate();\r\n+\t\t\t\t\t\tm_actionPanel.repaint();\r\n+\t\t\t\t\t}\r\n+\t\t\t\t});\r\n+\t\t\t}\r\n+\t\t});\r\n+\t\tsouthCenterPanel.add(m_bBack);\r\n+\t\t\r\n+\t\tm_bAuto = new JButton(\"Auto-Fill\");\r\n+\t\tm_bAuto.setMnemonic('A');\r\n+\t\tm_bAuto.setFont(new Font(\"Tahoma\", Font.PLAIN, 11));\r\n+\t\tm_bAuto.setMargin(new Insets(2, 5, 2, 5));\r\n+\t\tm_bAuto.setMinimumSize(new Dimension(50, 23));\r\n+\t\tm_bAuto.setMaximumSize(new Dimension(50, 23));\r\n+\t\tsouthCenterPanel.add(m_bAuto);\r\n+\t\t\r\n+\t\tm_bNext = new JButton(\"Next\");\r\n+\t\tm_bNext.setMnemonic(KeyEvent.VK_N);\r\n+\t\tm_bNext.setFont(new Font(\"Tahoma\", Font.PLAIN, 11));\r\n+\t\tm_bNext.addActionListener(new AbstractAction(\"Next Step\")\r\n+\t\t{\r\n+\t\t\tprivate static final long serialVersionUID = 6322566373692205163L;\r\n+\r\n+\t\t\tpublic void actionPerformed(final ActionEvent e)\r\n+\t\t\t{\r\n+\t\t\t\tSwingUtilities.invokeLater(new Runnable()\r\n+\t\t\t\t{\r\n+\t\t\t\t\tpublic void run()\r\n+\t\t\t\t\t{\r\n+\t\t\t\t\t\tif (m_currentStep < m_stepList.size())\r\n+\t\t\t\t\t\t{\r\n+\t\t\t\t\t\t\tgoToStep(m_currentStep+1);\r\n+\t\t\t\t\t\t\tm_actionPanel.validate();\r\n+\t\t\t\t\t\t\tm_actionPanel.repaint();\r\n+\t\t\t\t\t\t}\r\n+\t\t\t\t\t}\r\n+\t\t\t\t});\r\n+\t\t\t}\r\n+\t\t});\r\n+\t\tsouthCenterPanel.add(m_bNext);\r\n+\t\t\r\n+\t\tsouthRightPanel = new JPanel();\r\n+\t\tFlowLayout fl_southRightPanel = (FlowLayout) southRightPanel.getLayout();\r","path":"src/util/triplea/MapXMLCreator/MapXMLCreator.java","position":447,"original_position":447,"commit_id":"2ca68809159145d90fd6f5091de63811d65f7e9f","original_commit_id":"2ca68809159145d90fd6f5091de63811d65f7e9f","user":{"login":"DanVanAtta","id":12397753,"avatar_url":"https://avatars.githubusercontent.com/u/12397753?v=3","gravatar_id":"","url":"https://api.github.com/users/DanVanAtta","html_url":"https://github.com/DanVanAtta","followers_url":"https://api.github.com/users/DanVanAtta/followers","following_url":"https://api.github.com/users/DanVanAtta/following{/other_user}","gists_url":"https://api.github.com/users/DanVanAtta/gists{/gist_id}","starred_url":"https://api.github.com/users/DanVanAtta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanVanAtta/subscriptions","organizations_url":"https://api.github.com/users/DanVanAtta/orgs","repos_url":"https://api.github.com/users/DanVanAtta/repos","events_url":"https://api.github.com/users/DanVanAtta/events{/privacy}","received_events_url":"https://api.github.com/users/DanVanAtta/received_events","type":"User","site_admin":false},"body":"fl_southRightPanel, please stick to camel casing for all variable names.","created_at":"2016-02-28T21:37:52Z","updated_at":"2016-02-28T21:37:52Z","html_url":"https://github.com/triplea-game/triplea/pull/485#discussion_r54356898","pull_request_url":"https://api.github.com/repos/triplea-game/triplea/pulls/485","_links":{"self":{"href":"https://api.github.com/repos/triplea-game/triplea/pulls/comments/54356898"},"html":{"href":"https://github.com/triplea-game/triplea/pull/485#discussion_r54356898"},"pull_request":{"href":"https://api.github.com/repos/triplea-game/triplea/pulls/485"}}},"pull_request":{"url":"https://api.github.com/repos/triplea-game/triplea/pulls/485","id":60989697,"html_url":"https://github.com/triplea-game/triplea/pull/485","diff_url":"https://github.com/triplea-game/triplea/pull/485.diff","patch_url":"https://github.com/triplea-game/triplea/pull/485.patch","issue_url":"https://api.github.com/repos/triplea-game/triplea/issues/485","number":485,"state":"open","locked":false,"title":"Java MapXMLCreator (beta)","user":{"login":"frigoref","id":10353640,"avatar_url":"https://avatars.githubusercontent.com/u/10353640?v=3","gravatar_id":"","url":"https://api.github.com/users/frigoref","html_url":"https://github.com/frigoref","followers_url":"https://api.github.com/users/frigoref/followers","following_url":"https://api.github.com/users/frigoref/following{/other_user}","gists_url":"https://api.github.com/users/frigoref/gists{/gist_id}","starred_url":"https://api.github.com/users/frigoref/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frigoref/subscriptions","organizations_url":"https://api.github.com/users/frigoref/orgs","repos_url":"https://api.github.com/users/frigoref/repos","events_url":"https://api.github.com/users/frigoref/events{/privacy}","received_events_url":"https://api.github.com/users/frigoref/received_events","type":"User","site_admin":false},"body":"Initial version of\r\nJava map XML creator based on previous C/C++ based XML creator.\r\nRun util.triplea.MapXMLCreator.MapXMLCreator.main()\n\n<!-- Reviewable:start -->\n[<img src=\"https://reviewable.io/review_button.svg\" height=\"40\" alt=\"Review on Reviewable\"/>](https://reviewable.io/reviews/triplea-game/triplea/485)\n<!-- Reviewable:end -->\n","created_at":"2016-02-28T12:23:20Z","updated_at":"2016-02-28T21:37:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7de61bafbd0c66ebd5018f4dea5714fbe8b38d5c","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/triplea-game/triplea/pulls/485/commits","review_comments_url":"https://api.github.com/repos/triplea-game/triplea/pulls/485/comments","review_comment_url":"https://api.github.com/repos/triplea-game/triplea/pulls/comments{/number}","comments_url":"https://api.github.com/repos/triplea-game/triplea/issues/485/comments","statuses_url":"https://api.github.com/repos/triplea-game/triplea/statuses/2ca68809159145d90fd6f5091de63811d65f7e9f","head":{"label":"frigoref:MapXMLCreator_Java","ref":"MapXMLCreator_Java","sha":"2ca68809159145d90fd6f5091de63811d65f7e9f","user":{"login":"frigoref","id":10353640,"avatar_url":"https://avatars.githubusercontent.com/u/10353640?v=3","gravatar_id":"","url":"https://api.github.com/users/frigoref","html_url":"https://github.com/frigoref","followers_url":"https://api.github.com/users/frigoref/followers","following_url":"https://api.github.com/users/frigoref/following{/other_user}","gists_url":"https://api.github.com/users/frigoref/gists{/gist_id}","starred_url":"https://api.github.com/users/frigoref/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frigoref/subscriptions","organizations_url":"https://api.github.com/users/frigoref/orgs","repos_url":"https://api.github.com/users/frigoref/repos","events_url":"https://api.github.com/users/frigoref/events{/privacy}","received_events_url":"https://api.github.com/users/frigoref/received_events","type":"User","site_admin":false},"repo":{"id":52717775,"name":"triplea","full_name":"frigoref/triplea","owner":{"login":"frigoref","id":10353640,"avatar_url":"https://avatars.githubusercontent.com/u/10353640?v=3","gravatar_id":"","url":"https://api.github.com/users/frigoref","html_url":"https://github.com/frigoref","followers_url":"https://api.github.com/users/frigoref/followers","following_url":"https://api.github.com/users/frigoref/following{/other_user}","gists_url":"https://api.github.com/users/frigoref/gists{/gist_id}","starred_url":"https://api.github.com/users/frigoref/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frigoref/subscriptions","organizations_url":"https://api.github.com/users/frigoref/orgs","repos_url":"https://api.github.com/users/frigoref/repos","events_url":"https://api.github.com/users/frigoref/events{/privacy}","received_events_url":"https://api.github.com/users/frigoref/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/frigoref/triplea","description":"TripleA is a turn based strategy game and board game engine, similar to Axis & Allies or Risk.","fork":true,"url":"https://api.github.com/repos/frigoref/triplea","forks_url":"https://api.github.com/repos/frigoref/triplea/forks","keys_url":"https://api.github.com/repos/frigoref/triplea/keys{/key_id}","collaborators_url":"https://api.github.com/repos/frigoref/triplea/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/frigoref/triplea/teams","hooks_url":"https://api.github.com/repos/frigoref/triplea/hooks","issue_events_url":"https://api.github.com/repos/frigoref/triplea/issues/events{/number}","events_url":"https://api.github.com/repos/frigoref/triplea/events","assignees_url":"https://api.github.com/repos/frigoref/triplea/assignees{/user}","branches_url":"https://api.github.com/repos/frigoref/triplea/branches{/branch}","tags_url":"https://api.github.com/repos/frigoref/triplea/tags","blobs_url":"https://api.github.com/repos/frigoref/triplea/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/frigoref/triplea/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/frigoref/triplea/git/refs{/sha}","trees_url":"https://api.github.com/repos/frigoref/triplea/git/trees{/sha}","statuses_url":"https://api.github.com/repos/frigoref/triplea/statuses/{sha}","languages_url":"https://api.github.com/repos/frigoref/triplea/languages","stargazers_url":"https://api.github.com/repos/frigoref/triplea/stargazers","contributors_url":"https://api.github.com/repos/frigoref/triplea/contributors","subscribers_url":"https://api.github.com/repos/frigoref/triplea/subscribers","subscription_url":"https://api.github.com/repos/frigoref/triplea/subscription","commits_url":"https://api.github.com/repos/frigoref/triplea/commits{/sha}","git_commits_url":"https://api.github.com/repos/frigoref/triplea/git/commits{/sha}","comments_url":"https://api.github.com/repos/frigoref/triplea/comments{/number}","issue_comment_url":"https://api.github.com/repos/frigoref/triplea/issues/comments{/number}","contents_url":"https://api.github.com/repos/frigoref/triplea/contents/{+path}","compare_url":"https://api.github.com/repos/frigoref/triplea/compare/{base}...{head}","merges_url":"https://api.github.com/repos/frigoref/triplea/merges","archive_url":"https://api.github.com/repos/frigoref/triplea/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/frigoref/triplea/downloads","issues_url":"https://api.github.com/repos/frigoref/triplea/issues{/number}","pulls_url":"https://api.github.com/repos/frigoref/triplea/pulls{/number}","milestones_url":"https://api.github.com/repos/frigoref/triplea/milestones{/number}","notifications_url":"https://api.github.com/repos/frigoref/triplea/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/frigoref/triplea/labels{/name}","releases_url":"https://api.github.com/repos/frigoref/triplea/releases{/id}","deployments_url":"https://api.github.com/repos/frigoref/triplea/deployments","created_at":"2016-02-28T11:27:20Z","updated_at":"2016-02-28T11:27:28Z","pushed_at":"2016-02-28T16:37:54Z","git_url":"git://github.com/frigoref/triplea.git","ssh_url":"git@github.com:frigoref/triplea.git","clone_url":"https://github.com/frigoref/triplea.git","svn_url":"https://github.com/frigoref/triplea","homepage":null,"size":685888,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"triplea-game:master","ref":"master","sha":"6082762121a7dc1109f29e4b23452024a8a6e5b3","user":{"login":"triplea-game","id":13318615,"avatar_url":"https://avatars.githubusercontent.com/u/13318615?v=3","gravatar_id":"","url":"https://api.github.com/users/triplea-game","html_url":"https://github.com/triplea-game","followers_url":"https://api.github.com/users/triplea-game/followers","following_url":"https://api.github.com/users/triplea-game/following{/other_user}","gists_url":"https://api.github.com/users/triplea-game/gists{/gist_id}","starred_url":"https://api.github.com/users/triplea-game/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/triplea-game/subscriptions","organizations_url":"https://api.github.com/users/triplea-game/orgs","repos_url":"https://api.github.com/users/triplea-game/repos","events_url":"https://api.github.com/users/triplea-game/events{/privacy}","received_events_url":"https://api.github.com/users/triplea-game/received_events","type":"Organization","site_admin":false},"repo":{"id":39766308,"name":"triplea","full_name":"triplea-game/triplea","owner":{"login":"triplea-game","id":13318615,"avatar_url":"https://avatars.githubusercontent.com/u/13318615?v=3","gravatar_id":"","url":"https://api.github.com/users/triplea-game","html_url":"https://github.com/triplea-game","followers_url":"https://api.github.com/users/triplea-game/followers","following_url":"https://api.github.com/users/triplea-game/following{/other_user}","gists_url":"https://api.github.com/users/triplea-game/gists{/gist_id}","starred_url":"https://api.github.com/users/triplea-game/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/triplea-game/subscriptions","organizations_url":"https://api.github.com/users/triplea-game/orgs","repos_url":"https://api.github.com/users/triplea-game/repos","events_url":"https://api.github.com/users/triplea-game/events{/privacy}","received_events_url":"https://api.github.com/users/triplea-game/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/triplea-game/triplea","description":"TripleA is a turn based strategy game and board game engine, similar to Axis & Allies or Risk.","fork":false,"url":"https://api.github.com/repos/triplea-game/triplea","forks_url":"https://api.github.com/repos/triplea-game/triplea/forks","keys_url":"https://api.github.com/repos/triplea-game/triplea/keys{/key_id}","collaborators_url":"https://api.github.com/repos/triplea-game/triplea/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/triplea-game/triplea/teams","hooks_url":"https://api.github.com/repos/triplea-game/triplea/hooks","issue_events_url":"https://api.github.com/repos/triplea-game/triplea/issues/events{/number}","events_url":"https://api.github.com/repos/triplea-game/triplea/events","assignees_url":"https://api.github.com/repos/triplea-game/triplea/assignees{/user}","branches_url":"https://api.github.com/repos/triplea-game/triplea/branches{/branch}","tags_url":"https://api.github.com/repos/triplea-game/triplea/tags","blobs_url":"https://api.github.com/repos/triplea-game/triplea/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/triplea-game/triplea/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/triplea-game/triplea/git/refs{/sha}","trees_url":"https://api.github.com/repos/triplea-game/triplea/git/trees{/sha}","statuses_url":"https://api.github.com/repos/triplea-game/triplea/statuses/{sha}","languages_url":"https://api.github.com/repos/triplea-game/triplea/languages","stargazers_url":"https://api.github.com/repos/triplea-game/triplea/stargazers","contributors_url":"https://api.github.com/repos/triplea-game/triplea/contributors","subscribers_url":"https://api.github.com/repos/triplea-game/triplea/subscribers","subscription_url":"https://api.github.com/repos/triplea-game/triplea/subscription","commits_url":"https://api.github.com/repos/triplea-game/triplea/commits{/sha}","git_commits_url":"https://api.github.com/repos/triplea-game/triplea/git/commits{/sha}","comments_url":"https://api.github.com/repos/triplea-game/triplea/comments{/number}","issue_comment_url":"https://api.github.com/repos/triplea-game/triplea/issues/comments{/number}","contents_url":"https://api.github.com/repos/triplea-game/triplea/contents/{+path}","compare_url":"https://api.github.com/repos/triplea-game/triplea/compare/{base}...{head}","merges_url":"https://api.github.com/repos/triplea-game/triplea/merges","archive_url":"https://api.github.com/repos/triplea-game/triplea/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/triplea-game/triplea/downloads","issues_url":"https://api.github.com/repos/triplea-game/triplea/issues{/number}","pulls_url":"https://api.github.com/repos/triplea-game/triplea/pulls{/number}","milestones_url":"https://api.github.com/repos/triplea-game/triplea/milestones{/number}","notifications_url":"https://api.github.com/repos/triplea-game/triplea/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/triplea-game/triplea/labels{/name}","releases_url":"https://api.github.com/repos/triplea-game/triplea/releases{/id}","deployments_url":"https://api.github.com/repos/triplea-game/triplea/deployments","created_at":"2015-07-27T09:32:58Z","updated_at":"2016-02-25T23:17:40Z","pushed_at":"2016-02-28T16:37:59Z","git_url":"git://github.com/triplea-game/triplea.git","ssh_url":"git@github.com:triplea-game/triplea.git","clone_url":"https://github.com/triplea-game/triplea.git","svn_url":"https://github.com/triplea-game/triplea","homepage":null,"size":690780,"stargazers_count":20,"watchers_count":20,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":62,"forks":9,"open_issues":62,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/triplea-game/triplea/pulls/485"},"html":{"href":"https://github.com/triplea-game/triplea/pull/485"},"issue":{"href":"https://api.github.com/repos/triplea-game/triplea/issues/485"},"comments":{"href":"https://api.github.com/repos/triplea-game/triplea/issues/485/comments"},"review_comments":{"href":"https://api.github.com/repos/triplea-game/triplea/pulls/485/comments"},"review_comment":{"href":"https://api.github.com/repos/triplea-game/triplea/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/triplea-game/triplea/pulls/485/commits"},"statuses":{"href":"https://api.github.com/repos/triplea-game/triplea/statuses/2ca68809159145d90fd6f5091de63811d65f7e9f"}}}}