5. Добавлена возможность загрузки и сохранения отдельной карты
This commit is contained in:
parent
c09d2a3764
commit
89342ecb23
@ -42,17 +42,26 @@ public class FormMapWithArmoredCars extends JFrame{
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
JMenuBar jMenuBar = new JMenuBar();
|
||||
JMenu jMenu = new JMenu("Файл");
|
||||
|
||||
JMenu jMenuMap = new JMenu("Файл карты");
|
||||
JMenuItem itemSave = new JMenuItem("Сохранение");
|
||||
itemSave.addActionListener(e -> saveActionMenuBar());
|
||||
itemSave.addActionListener(e -> saveActionMenuBar(jMenuMap.getText()));
|
||||
JMenuItem itemLoad = new JMenuItem("Загрузка");
|
||||
itemLoad.addActionListener(e -> loadActionMenuBar());
|
||||
jMenu.add(itemSave);
|
||||
jMenu.add(itemLoad);
|
||||
jMenuBar.add(jMenu);
|
||||
// поместим меню в наше окно
|
||||
itemLoad.addActionListener(e -> loadActionMenuBar(jMenuMap.getText()));
|
||||
jMenuMap.add(itemSave);
|
||||
jMenuMap.add(itemLoad);
|
||||
|
||||
JMenu jMenuObject = new JMenu("Файл объекта");
|
||||
JMenuItem itemSaveObject = new JMenuItem("Сохранение");
|
||||
itemSaveObject.addActionListener(e -> saveActionMenuBar(jMenuObject.getText()));
|
||||
JMenuItem itemLoadObject = new JMenuItem("Загрузка");
|
||||
itemLoadObject.addActionListener(e -> loadActionMenuBar(jMenuObject.getText()));
|
||||
jMenuObject.add(itemSaveObject);
|
||||
jMenuObject.add(itemLoadObject);
|
||||
|
||||
jMenuBar.add(jMenuMap);
|
||||
jMenuBar.add(jMenuObject);
|
||||
setJMenuBar(jMenuBar);
|
||||
//toolBar.add(jMenu);
|
||||
|
||||
mapSelectorComboBox.removeAllItems();
|
||||
for (var elem : _mapsDict.keySet())
|
||||
@ -247,36 +256,54 @@ public class FormMapWithArmoredCars extends JFrame{
|
||||
}
|
||||
}
|
||||
|
||||
private void saveActionMenuBar() {
|
||||
FileDialog fd = new FileDialog(this, "Choose a file", FileDialog.LOAD);
|
||||
private void saveActionMenuBar(String type) {
|
||||
FileDialog fd = new FileDialog(this, "Выбор файла", FileDialog.LOAD);
|
||||
fd.setFile("*.txt");
|
||||
fd.setVisible(true);
|
||||
String filename = fd.getFile();
|
||||
if (filename != null) {
|
||||
if (_mapsCollection.SaveData(fd.getDirectory() + filename))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно");
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось");
|
||||
if (type.contains("Файл карты")) {
|
||||
if (_mapsCollection.SaveData(fd.getDirectory() + filename))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно");
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось");
|
||||
}
|
||||
} else if (type.contains("Файл объекта")){
|
||||
if (_mapsCollection.SaveDataMap(fd.getDirectory() + filename, (String) listBoxMaps.getSelectedValue())) {
|
||||
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно");
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadActionMenuBar() {
|
||||
FileDialog fd = new FileDialog(this, "Choose a file", FileDialog.LOAD);
|
||||
private void loadActionMenuBar(String type) {
|
||||
FileDialog fd = new FileDialog(this, "Выбор файла", FileDialog.LOAD);
|
||||
fd.setFile("*.txt");
|
||||
fd.setVisible(true);
|
||||
String filename = fd.getFile();
|
||||
if (filename != null) {
|
||||
if (_mapsCollection.LoadData(fd.getDirectory() + filename))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно");
|
||||
ReloadMaps();
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилось");
|
||||
if (type.contains("Файл карты")) {
|
||||
if (_mapsCollection.LoadData(fd.getDirectory() + filename))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно");
|
||||
ReloadMaps();
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилось");
|
||||
}
|
||||
} else if (type.contains("Файл объекта")){
|
||||
if (_mapsCollection.LoadDataMap(fd.getDirectory() + filename)) {
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно");
|
||||
ReloadMaps();
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилось");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ public class MapsCollection {
|
||||
case "SimpleMap":
|
||||
map = new SimpleMap();
|
||||
break;
|
||||
case "MyMapLabirinth":
|
||||
case "MyMapLabyrinth":
|
||||
map = new MyMapLabyrinth();
|
||||
break;
|
||||
case "MyMapWooden":
|
||||
@ -104,4 +104,58 @@ public class MapsCollection {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean SaveDataMap(String filename, String map) {
|
||||
if (!_mapStorages.containsKey(map))
|
||||
return false;
|
||||
File f = new File(filename);
|
||||
if (f.exists())
|
||||
{
|
||||
f.delete();
|
||||
}
|
||||
try (BufferedWriter writter = new BufferedWriter(new FileWriter(filename))) {
|
||||
writter.write("One Map");
|
||||
writter.newLine();
|
||||
var key = _mapStorages.get(map);
|
||||
writter.write(String.format("%s%s%s", map, separatorDict, key.GetData(separatorDict, separatorData)));
|
||||
writter.newLine();
|
||||
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean LoadDataMap(String filename) {
|
||||
File f = new File(filename);
|
||||
if (!f.exists()) {
|
||||
return false;
|
||||
}
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
|
||||
if (!reader.readLine().contains("One Map"))
|
||||
return false;
|
||||
String line = reader.readLine();
|
||||
var elem = line.split(String.valueOf(separatorDict));
|
||||
AbstractMap map = null;
|
||||
switch (elem[1]) {
|
||||
case "SimpleMap":
|
||||
map = new SimpleMap();
|
||||
break;
|
||||
case "MyMapLabyrinth":
|
||||
map = new MyMapLabyrinth();
|
||||
break;
|
||||
case "MyMapWooden":
|
||||
map = new MyMapWooden();
|
||||
break;
|
||||
}
|
||||
_mapStorages.put(elem[0], new MapWithSetArmoredCarsGeneric<>(_pictureWidth, _pictureHeight, map));
|
||||
_mapStorages.get(elem[0]).LoadData(elem[2].split(String.valueOf(separatorData)));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user