diff --git a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java index 1f1638753f4c252ae74c0fc1a9b88f74ea5913d8..87e1c2cd93191a082b5babbb612845026f3981bc 100644 --- a/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java +++ b/PlayWall/src/de/tobias/playpad/layout/desktop/DesktopMenuToolbarViewController.java @@ -183,7 +183,7 @@ public class DesktopMenuToolbarViewController extends BasicMenuToolbarViewContro { openProject.addPage(); initPageButtons(); - highlightPageButton(currentSelectedPageButton); + highlightPageButton(mainViewController.getPage()); }); iconHbox.getChildren().add(editButtons); diff --git a/PlayWallCore/src/de/tobias/playpad/project/Project.java b/PlayWallCore/src/de/tobias/playpad/project/Project.java index f630cbad2937544b438b063221f6857e22fe86bf..c98e23cb1f8c98617ecd655e62891d538ef39db6 100644 --- a/PlayWallCore/src/de/tobias/playpad/project/Project.java +++ b/PlayWallCore/src/de/tobias/playpad/project/Project.java @@ -5,7 +5,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.UUID; @@ -52,7 +51,7 @@ public class Project { */ public static final String FILE_EXTENSION = ".xml"; - private final HashMap<Integer, Page> pages; + private final List<Page> pages; private final ProjectReference projectReference; private ProjectSettings settings; @@ -65,7 +64,7 @@ public class Project { public Project(ProjectReference ref) { this.projectReference = ref; - this.pages = new HashMap<>(); + this.pages = new ArrayList<>(); this.settings = new ProjectSettings(); this.exceptions = FXCollections.observableArrayList(); @@ -98,7 +97,7 @@ public class Project { } public Pad getPad(UUID uuid) { - for (Page page : pages.values()) { + for (Page page : pages) { for (Pad pad : page.getPads()) { if (pad.getUuid().equals(uuid)) { return pad; @@ -119,25 +118,29 @@ public class Project { public Collection<Pad> getPads() { List<Pad> pads = new ArrayList<>(); - pages.values().stream().map(page -> page.getPads()).forEach(pads::addAll); + pages.stream().map(page -> page.getPads()).forEach(pads::addAll); return pads; } // Pages public Page getPage(int index) { - if (!pages.containsKey(index) && index < ProjectSettings.MAX_PAGES) { - pages.put(index, new Page(index, this)); + if (index >= pages.size() && index < ProjectSettings.MAX_PAGES) { + pages.add(new Page(index, this)); } return pages.get(index); } public Collection<Page> getPages() { - return pages.values(); + // Create new page if all is empty (automaticlly) + if (pages.isEmpty()) { + pages.add(new Page(0, this)); + } + return pages; } public void setPage(int index, Page page) { - pages.put(index, page); + pages.set(index, page); page.setId(index); } @@ -170,7 +173,7 @@ public class Project { XMLHandler<Page> handler = new XMLHandler<>(rootElement); List<Page> pages = handler.loadElements(PAGE_ELEMENT, new PageSerializer(project)); for (Page page : pages) { - project.pages.put(page.getId(), page); + project.pages.add(page); } // Lädt die Einstellungen @@ -200,7 +203,7 @@ public class Project { // Speichern der Pads XMLHandler<Page> handler = new XMLHandler<>(rootElement); - handler.saveElements(PAGE_ELEMENT, pages.values(), new PageSerializer(this)); + handler.saveElements(PAGE_ELEMENT, pages, new PageSerializer(this)); // Speichern der Settings Element settingsElement = rootElement.addElement(SETTINGS_ELEMENT); @@ -297,19 +300,19 @@ public class Project { } public void removePage(Page page) { + System.out.println(page.getId()); pages.remove(page.getId()); - for (int i = page.getId() + 1; i < pages.size(); i++) { + // Neue Interne Indies für die Pages + for (int i = page.getId(); i < pages.size(); i++) { Page tempPage = pages.get(i); - tempPage.setId(i - 1); - pages.put(i - 1, tempPage); + tempPage.setId(i); } - pages.remove(pages.size() - 1); System.out.println(pages); } public void addPage() { int index = pages.size(); - pages.put(index, new Page(index, this)); + pages.add(new Page(index, this)); } }