From b0fa44b1075e165432bcf3ac0d1805e551c857cc Mon Sep 17 00:00:00 2001 From: lantzelot-swe <75668734+lantzelot-swe@users.noreply.github.com> Date: Sun, 16 Oct 2022 22:05:42 +0200 Subject: [PATCH] fix: WIP3 create game views for carousel import --- src/main/java/se/lantz/gui/MenuManager.java | 2 + .../gui/imports/ImportOptionsDialog.java | 2 +- .../lantz/gui/imports/ImportOptionsPanel.java | 118 ++++++++++++------ .../java/se/lantz/manager/ImportManager.java | 14 ++- 4 files changed, 92 insertions(+), 44 deletions(-) diff --git a/src/main/java/se/lantz/gui/MenuManager.java b/src/main/java/se/lantz/gui/MenuManager.java index 19615f8..00be4ca 100644 --- a/src/main/java/se/lantz/gui/MenuManager.java +++ b/src/main/java/se/lantz/gui/MenuManager.java @@ -1013,6 +1013,7 @@ public class MenuManager importManager.setSelectedOption(optionsDialog.getSelectedOption()); importManager.setAddAsFavorite(optionsDialog.getMarkAsFavorite()); importManager.setViewTag(optionsDialog.getViewTag()); + //This will reset the other options if selected importManager.setCreateGameViews(optionsDialog.isCreateGameViews()); ImportProgressDialog dialog = new ImportProgressDialog(this.mainWindow); CarouselImportWorker worker = new CarouselImportWorker(importManager, dialog); @@ -1039,6 +1040,7 @@ public class MenuManager importManager.setSelectedOption(optionsDialog.getSelectedOption()); importManager.setAddAsFavorite(optionsDialog.getMarkAsFavorite()); importManager.setViewTag(optionsDialog.getViewTag()); + importManager.setCreateGameViews(false); ImportProgressDialog dialog = new ImportProgressDialog(this.mainWindow); GamebaseImportWorker worker = new GamebaseImportWorker(gamebaseImporter, importManager, dialog); worker.execute(); diff --git a/src/main/java/se/lantz/gui/imports/ImportOptionsDialog.java b/src/main/java/se/lantz/gui/imports/ImportOptionsDialog.java index ec1241a..b0b4452 100644 --- a/src/main/java/se/lantz/gui/imports/ImportOptionsDialog.java +++ b/src/main/java/se/lantz/gui/imports/ImportOptionsDialog.java @@ -21,7 +21,7 @@ public class ImportOptionsDialog extends BaseDialog if (isCarouselImport) { setTitle("Import carousel folder"); - this.setPreferredSize(new Dimension(450, 385)); + this.setPreferredSize(new Dimension(450, 400)); } else { diff --git a/src/main/java/se/lantz/gui/imports/ImportOptionsPanel.java b/src/main/java/se/lantz/gui/imports/ImportOptionsPanel.java index 68ddb4f..f3d618a 100644 --- a/src/main/java/se/lantz/gui/imports/ImportOptionsPanel.java +++ b/src/main/java/se/lantz/gui/imports/ImportOptionsPanel.java @@ -21,8 +21,6 @@ import se.lantz.gui.SelectDirPanel; import se.lantz.gui.SelectDirPanel.Mode; import se.lantz.manager.ImportManager; import se.lantz.util.FileManager; -import java.awt.event.ItemListener; -import java.awt.event.ItemEvent; public class ImportOptionsPanel extends JPanel { @@ -41,7 +39,10 @@ public class ImportOptionsPanel extends JPanel private JComboBox favoriteComboBox; private JCheckBox viewTagCheckBox; private JTextField viewTagTextField; - private JCheckBox createViewCheckBox; + private JPanel radioButtonPanel; + private JRadioButton createGameViewButton; + private JRadioButton noGameviewRadioButton; + private final ButtonGroup gameViewGroup = new ButtonGroup(); public ImportOptionsPanel() { @@ -52,6 +53,8 @@ public class ImportOptionsPanel extends JPanel { this.isCarouselImport = isCarouselImport; GridBagLayout gridBagLayout = new GridBagLayout(); + gridBagLayout.rowWeights = new double[]{0.0, 0.0, 1.0, 0.0, 0.0, 0.0}; + gridBagLayout.columnWeights = new double[]{1.0}; setLayout(gridBagLayout); GridBagConstraints gbc_selectDirPanel = new GridBagConstraints(); gbc_selectDirPanel.weightx = 1.0; @@ -62,6 +65,12 @@ public class ImportOptionsPanel extends JPanel if (isCarouselImport) { add(getSelectDirPanel(), gbc_selectDirPanel); + GridBagConstraints gbc_radioButtonPanel = new GridBagConstraints(); + gbc_radioButtonPanel.insets = new Insets(0, 10, 5, 10); + gbc_radioButtonPanel.fill = GridBagConstraints.BOTH; + gbc_radioButtonPanel.gridx = 0; + gbc_radioButtonPanel.gridy = 2; + add(getRadioButtonPanel(), gbc_radioButtonPanel); } else { @@ -71,13 +80,13 @@ public class ImportOptionsPanel extends JPanel gbc_infoLabel.weightx = 1.0; gbc_infoLabel.insets = new Insets(15, 10, 5, 10); gbc_infoLabel.gridx = 0; - gbc_infoLabel.gridy = 2; + gbc_infoLabel.gridy = 3; add(getInfoLabel(), gbc_infoLabel); GridBagConstraints gbc_selectionPanel = new GridBagConstraints(); gbc_selectionPanel.weightx = 1.0; gbc_selectionPanel.insets = new Insets(0, 0, 5, 0); gbc_selectionPanel.gridx = 0; - gbc_selectionPanel.gridy = 3; + gbc_selectionPanel.gridy = 4; add(getSelectionPanel(), gbc_selectionPanel); GridBagConstraints gbc_matchLabel = new GridBagConstraints(); @@ -86,18 +95,18 @@ public class ImportOptionsPanel extends JPanel gbc_matchLabel.weighty = 1.0; gbc_matchLabel.weightx = 1.0; gbc_matchLabel.gridx = 0; - gbc_matchLabel.gridy = 4; + gbc_matchLabel.gridy = 5; add(getMatchLabel(), gbc_matchLabel); GridBagConstraints gbc_selectDirLabel = new GridBagConstraints(); gbc_selectDirLabel.weightx = 1.0; - gbc_selectDirLabel.insets = new Insets(10, 10, 0, 10); + gbc_selectDirLabel.insets = new Insets(10, 10, 5, 10); gbc_selectDirLabel.anchor = GridBagConstraints.NORTHWEST; gbc_selectDirLabel.gridx = 0; gbc_selectDirLabel.gridy = 0; add(getSelectDirLabel(), gbc_selectDirLabel); if (isCarouselImport) { - setStateForCreateViewCheckBox(); + setStateForCreateViewRadioButton(); } } @@ -130,7 +139,6 @@ public class ImportOptionsPanel extends JPanel if (skipRadioButton == null) { skipRadioButton = new JRadioButton("Skip game from import"); - skipRadioButton.setSelected(true); buttonGroup.add(skipRadioButton); } return skipRadioButton; @@ -224,6 +232,7 @@ public class ImportOptionsPanel extends JPanel if (addRadioButton == null) { addRadioButton = new JRadioButton("Add new duplicate game entry"); + addRadioButton.setSelected(true); buttonGroup.add(addRadioButton); } return addRadioButton; @@ -261,16 +270,6 @@ public class ImportOptionsPanel extends JPanel gbc_addRadioButton.gridx = 0; gbc_addRadioButton.gridy = 2; selectionPanel.add(getAddRadioButton(), gbc_addRadioButton); - if (isCarouselImport) - { - GridBagConstraints gbc_createViewCheckBox = new GridBagConstraints(); - gbc_createViewCheckBox.anchor = GridBagConstraints.WEST; - gbc_createViewCheckBox.gridwidth = 2; - gbc_createViewCheckBox.insets = new Insets(5, 5, 5, 5); - gbc_createViewCheckBox.gridx = 0; - gbc_createViewCheckBox.gridy = 3; - selectionPanel.add(getCreateViewCheckBox(), gbc_createViewCheckBox); - } GridBagConstraints gbc_favoriteCheckBox = new GridBagConstraints(); gbc_favoriteCheckBox.anchor = GridBagConstraints.WEST; gbc_favoriteCheckBox.insets = new Insets(0, 5, 5, 5); @@ -356,35 +355,74 @@ public class ImportOptionsPanel extends JPanel { return viewTagCheckBox.isSelected() ? viewTagTextField.getText() : ""; } - private JCheckBox getCreateViewCheckBox() { - if (createViewCheckBox == null) { - createViewCheckBox = new JCheckBox("Create a new gameview for each imported folder"); - createViewCheckBox.setSelected(true); - createViewCheckBox.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - setStateForCreateViewCheckBox(); - } - }); - } - return createViewCheckBox; - } - private void setStateForCreateViewCheckBox() + private void setStateForCreateViewRadioButton() { - boolean gameViewSelected = getCreateViewCheckBox().isSelected(); + boolean gameViewSelected = getCreateGameViewButton().isSelected(); getViewTagCheckBox().setEnabled(!gameViewSelected); getFavoriteCheckBox().setEnabled(!gameViewSelected); - getFavoriteComboBox().setEnabled(!gameViewSelected); - if (gameViewSelected) - { - getViewTagCheckBox().setSelected(false); - - } + + getAddRadioButton().setEnabled(!gameViewSelected); + getOverwriteRadioButton().setEnabled(!gameViewSelected); + getSkipRadioButton().setEnabled(!gameViewSelected); + getInfoLabel().setEnabled(!gameViewSelected); + getMatchLabel().setEnabled(!gameViewSelected); + getFavoriteComboBox().setEnabled(!gameViewSelected && getFavoriteCheckBox().isSelected()); getViewTagTextField().setEnabled(getViewTagCheckBox().isSelected() && !gameViewSelected); } public boolean isCreateGameViews() { - return getCreateViewCheckBox().isSelected(); + return getCreateGameViewButton().isSelected(); + } + private JPanel getRadioButtonPanel() { + if (radioButtonPanel == null) { + radioButtonPanel = new JPanel(); + GridBagLayout gbl_radioButtonPanel = new GridBagLayout(); + gbl_radioButtonPanel.columnWidths = new int[]{0, 0}; + gbl_radioButtonPanel.rowHeights = new int[]{0, 0, 0}; + gbl_radioButtonPanel.columnWeights = new double[]{0.0, Double.MIN_VALUE}; + gbl_radioButtonPanel.rowWeights = new double[]{0.0, 0.0, Double.MIN_VALUE}; + radioButtonPanel.setLayout(gbl_radioButtonPanel); + GridBagConstraints gbc_createGameViewButton = new GridBagConstraints(); + gbc_createGameViewButton.fill = GridBagConstraints.HORIZONTAL; + gbc_createGameViewButton.anchor = GridBagConstraints.WEST; + gbc_createGameViewButton.insets = new Insets(0, 0, 5, 0); + gbc_createGameViewButton.gridx = 0; + gbc_createGameViewButton.gridy = 0; + radioButtonPanel.add(getCreateGameViewButton(), gbc_createGameViewButton); + GridBagConstraints gbc_noGameviewRadioButton = new GridBagConstraints(); + gbc_noGameviewRadioButton.anchor = GridBagConstraints.WEST; + gbc_noGameviewRadioButton.fill = GridBagConstraints.HORIZONTAL; + gbc_noGameviewRadioButton.gridx = 0; + gbc_noGameviewRadioButton.gridy = 1; + radioButtonPanel.add(getNoGameviewRadioButton(), gbc_noGameviewRadioButton); + } + return radioButtonPanel; + } + private JRadioButton getCreateGameViewButton() { + if (createGameViewButton == null) { + createGameViewButton = new JRadioButton("Create a gameview for each imported folder"); + gameViewGroup.add(createGameViewButton); + createGameViewButton.setSelected(true); + createGameViewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + setStateForCreateViewRadioButton(); + } + }); + } + return createGameViewButton; + } + private JRadioButton getNoGameviewRadioButton() { + if (noGameviewRadioButton == null) { + noGameviewRadioButton = new JRadioButton("Use the following settings:"); + gameViewGroup.add(noGameviewRadioButton); + noGameviewRadioButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + setStateForCreateViewRadioButton(); + } + }); + } + return noGameviewRadioButton; } } diff --git a/src/main/java/se/lantz/manager/ImportManager.java b/src/main/java/se/lantz/manager/ImportManager.java index a5f1516..ed582dd 100644 --- a/src/main/java/se/lantz/manager/ImportManager.java +++ b/src/main/java/se/lantz/manager/ImportManager.java @@ -88,6 +88,13 @@ public class ImportManager public void setCreateGameViews(boolean createGameViews) { this.createGameViews = createGameViews; + if (createGameViews) + { + //Set the right options for creating game views + setSelectedOption(Options.ADD); + setAddAsFavorite(-1); + setViewTag(null); + } } public void setSelectedFoldersForGamebase(Path gamesFolder, Path screensPath, Path coversPath) @@ -158,10 +165,10 @@ public class ImportManager { String dirName = path.toFile().getName(); //If dirname is one of favorites_1 to 10 , mark as favorites instead. - //Tag all games with dirName Check for duplicates, just add an index if duplicate exist. + //Tag all games with dirName. Check for duplicates, just add an index if duplicate exist. int favoritesViewId = getFavoritesViewBasedOnDirName(dirName); - if (favoritesViewId != 0) + if (favoritesViewId < 0) { worker.publishMessage("\nAdding to favorites"); setAddAsFavorite(Math.abs(favoritesViewId)-1); @@ -214,7 +221,8 @@ public class ImportManager for (int i = 0; i < uiModel.getGameViewModel().getSize(); i++) { GameView currentView = uiModel.getGameViewModel().getElementAt(i); - availableNames.add(currentView.getName()); + //Match with "_" since the dirs looks like that + availableNames.add(currentView.getName().replaceAll(" ","_")); } int index = 1; while (availableNames.contains(newName))