Added file chooser dialog, renamed GameConfigurationDialog to DialogUtil
This commit is contained in:
		| @@ -74,4 +74,6 @@ public class PGNGame { | ||||
| 	public void setTag(String tagName, String tagValue) { | ||||
| 		tagPairs.put(tagName, tagValue); | ||||
| 	} | ||||
|  | ||||
| 	public Board getBoard() { return board; } | ||||
| } | ||||
|   | ||||
| @@ -1,28 +1,39 @@ | ||||
| package dev.kske.chess.ui; | ||||
| 
 | ||||
| import java.awt.Component; | ||||
| import java.awt.Font; | ||||
| import java.io.File; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import java.util.function.BiConsumer; | ||||
| import java.util.function.Consumer; | ||||
| 
 | ||||
| import javax.swing.DefaultComboBoxModel; | ||||
| import javax.swing.JButton; | ||||
| import javax.swing.JComboBox; | ||||
| import javax.swing.JDialog; | ||||
| import javax.swing.JFileChooser; | ||||
| import javax.swing.JLabel; | ||||
| 
 | ||||
| /** | ||||
|  * Project: <strong>Chess</strong><br> | ||||
|  * File: <strong>GameConfigurationDialog.java</strong><br> | ||||
|  * File: <strong>DialogUtil.java</strong><br> | ||||
|  * Created: <strong>24.07.2019</strong><br> | ||||
|  * Author: <strong>Kai S. K. Engelbart</strong> | ||||
|  */ | ||||
| public class GameConfigurationDialog { | ||||
| public class DialogUtil { | ||||
| 
 | ||||
| 	private GameConfigurationDialog() {} | ||||
| 	private DialogUtil() {} | ||||
| 
 | ||||
| 	public static void show(BiConsumer<String, String> action) { | ||||
| 	public static void showFileSelectionDialog(Component parent, Consumer<File> action) { | ||||
| 		JFileChooser fileChooser = new JFileChooser(); | ||||
| 		fileChooser.setCurrentDirectory(new File(System.getProperty("user.home"))); | ||||
| 		if (fileChooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) | ||||
| 			action.accept(fileChooser.getSelectedFile()); | ||||
| 	} | ||||
| 
 | ||||
| 	public static void showGameConfigurationDialog(BiConsumer<String, String> action) { | ||||
| 		new JDialog() { | ||||
| 
 | ||||
| 			private static final long serialVersionUID = -5768339760489440385L; | ||||
| @@ -36,7 +36,7 @@ public class FENDropTarget extends DropTargetAdapter { | ||||
| 				try (BufferedReader br = new BufferedReader(new FileReader(file))) { | ||||
| 					final GamePane	gamePane	= mainWindow.addGamePane(); | ||||
| 					final String	fen			= br.readLine(); | ||||
| 					GameConfigurationDialog.show((whiteName, blackName) -> { | ||||
| 					DialogUtil.showGameConfigurationDialog((whiteName, blackName) -> { | ||||
| 						final Game game = new Game(gamePane.getBoardPane(), whiteName, blackName, fen); | ||||
| 						gamePane.setGame(game); | ||||
| 						game.start(); | ||||
|   | ||||
| @@ -32,16 +32,35 @@ public class MenuBar extends JMenuBar { | ||||
|  | ||||
| 	private void initGameMenu() { | ||||
| 		JMenu gameMenu = new JMenu("Game"); | ||||
|  | ||||
| 		JMenuItem newGameMenuItem = new JMenuItem("New Game"); | ||||
| 		newGameMenuItem.addActionListener((evt) -> { | ||||
| 			GameConfigurationDialog.show((whiteName, blackName) -> { | ||||
| 		newGameMenuItem.addActionListener((evt) -> DialogUtil.showGameConfigurationDialog((whiteName, blackName) -> { | ||||
| 			GamePane	gamePane	= mainWindow.addGamePane(); | ||||
| 			Game		game		= new Game(gamePane.getBoardPane(), whiteName, blackName); | ||||
| 			gamePane.setGame(game); | ||||
| 			game.start(); | ||||
| 			}); | ||||
| 		}); | ||||
| 		})); | ||||
| 		gameMenu.add(newGameMenuItem); | ||||
|  | ||||
| 		JMenuItem loadFileMenu = new JMenuItem("Load game file"); | ||||
| 		loadFileMenu.addActionListener((evt) -> DialogUtil.showFileSelectionDialog(mainWindow, (file) -> { | ||||
| 			final String extension = file.getName().substring(file.getName().lastIndexOf('.')).toLowerCase(); | ||||
| 			switch (extension) { | ||||
| 				case ".fen": | ||||
| 					// TODO: Load board from FEN | ||||
| 					break; | ||||
| 				case ".pgn": | ||||
| 					// TODO: Load board from PGN | ||||
| 					break; | ||||
| 				default: | ||||
| 					JOptionPane.showMessageDialog(mainWindow, | ||||
| 							"The file extension '" + extension + "' is not supported!", | ||||
| 							"File loading error", | ||||
| 							JOptionPane.ERROR_MESSAGE); | ||||
| 			} | ||||
| 		})); | ||||
| 		gameMenu.add(loadFileMenu); | ||||
|  | ||||
| 		add(gameMenu); | ||||
| 		newGameMenuItem.doClick(); | ||||
| 	} | ||||
| @@ -80,7 +99,7 @@ public class MenuBar extends JMenuBar { | ||||
| 		loadFromFENMenuItem.addActionListener((evt) -> { | ||||
| 			final GamePane	gamePane	= mainWindow.addGamePane(); | ||||
| 			final String	fen			= JOptionPane.showInputDialog("Enter a FEN string: "); | ||||
| 			GameConfigurationDialog.show((whiteName, blackName) -> { | ||||
| 			DialogUtil.showGameConfigurationDialog((whiteName, blackName) -> { | ||||
| 				final Game game = new Game(gamePane.getBoardPane(), whiteName, blackName, fen); | ||||
| 				gamePane.setGame(game); | ||||
| 				game.start(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user