diff --git a/creator-tools/src/main/java/com/skcraft/launcher/creator/controller/PackManagerController.java b/creator-tools/src/main/java/com/skcraft/launcher/creator/controller/PackManagerController.java index 270b113..8721723 100644 --- a/creator-tools/src/main/java/com/skcraft/launcher/creator/controller/PackManagerController.java +++ b/creator-tools/src/main/java/com/skcraft/launcher/creator/controller/PackManagerController.java @@ -62,6 +62,7 @@ import java.util.Date; import java.util.List; import java.util.Optional; import java.util.regex.Pattern; +import java.util.stream.Collectors; public class PackManagerController { @@ -111,8 +112,6 @@ public class PackManagerController { } public void show() { - initPluginMenu(); - frame.setVisible(true); frame.setTitle("Modpack Creator - [" + workspaceDir.getAbsolutePath() + "]"); @@ -319,18 +318,38 @@ public class PackManagerController { config.setUserFiles(userFiles); } - private void initPluginMenu() { + private void refreshPluginMenu() { JMenu pluginsMenu = frame.getPluginsMenu(); + pluginsMenu.removeAll(); - for (CreatorPluginWrapper wrapper : creator.getPlugins()) { + if (frame.getPackTable().getSelectedRow() == -1) { + pluginsMenu.add("No pack selected.").setEnabled(false); + return; + } + + pluginsMenu.add("Enabled Plugins...").addActionListener(e -> frame.getEditPluginsMenuItem().doClick()); + pluginsMenu.addSeparator(); + + Optional pack = getSelectedPack(true); + + List> enabledPlugins = pack.transform(p -> + creator.getPlugins().stream().filter(wrapper -> + p.getEnabledPlugins().contains(wrapper.getInfo().getId())).collect(Collectors.toList() + ) + ).or(creator.getPlugins()); + + if (enabledPlugins.isEmpty()) { + pluginsMenu.add("No plugins enabled").setEnabled(false); + return; + } + + for (CreatorPluginWrapper wrapper : enabledPlugins) { CreatorToolsPlugin plugin = wrapper.getInstance(); JMenu submenu = new JMenu(plugin.getName()); for (PluginMenu menu : plugin.getPluginMenus()) { JMenuItem item = new JMenuItem(menu.getTitle()); item.addActionListener(e -> { - Optional pack = getSelectedPack(true); - if (menu.requiresPack() && !pack.isPresent()) { SwingHelper.showErrorDialog(frame, "You must select a pack first", "Error"); return; @@ -358,6 +377,10 @@ public class PackManagerController { } }); + frame.getPackTable().getSelectionModel().addListSelectionListener(e -> { + refreshPluginMenu(); + }); + frame.getPackTable().addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (e.getClickCount() == 2) { @@ -502,6 +525,7 @@ public class PackManagerController { if (optional.isPresent()) { PluginSelectionDialog.showPluginDialog(frame, creator, optional.get()); updatePackInWorkspace(optional.get()); + refreshPluginMenu(); } }); diff --git a/creator-tools/src/main/java/com/skcraft/launcher/creator/dialog/PluginSelectionDialog.java b/creator-tools/src/main/java/com/skcraft/launcher/creator/dialog/PluginSelectionDialog.java index 864da36..dc7b380 100644 --- a/creator-tools/src/main/java/com/skcraft/launcher/creator/dialog/PluginSelectionDialog.java +++ b/creator-tools/src/main/java/com/skcraft/launcher/creator/dialog/PluginSelectionDialog.java @@ -26,8 +26,9 @@ public class PluginSelectionDialog extends JDialog { this.plugins = creator.getPlugins().stream() .map(wrapper -> { - PluginsTableModel.PluginModel model = new PluginsTableModel.PluginModel(wrapper.getInfo().getId()); - model.setEnabled(pack.getEnabledPlugins().contains(model.getPluginId())); + PluginsTableModel.PluginModel model = new PluginsTableModel.PluginModel(wrapper.getInfo().getId(), + wrapper.getInstance().getName()); + model.setEnabled(pack.getEnabledPlugins().contains(model.getId())); return model; }) .collect(Collectors.toList()); @@ -65,7 +66,7 @@ public class PluginSelectionDialog extends JDialog { Set enabled = dialog.plugins.stream() .filter(PluginsTableModel.PluginModel::isEnabled) - .map(PluginsTableModel.PluginModel::getPluginId) + .map(PluginsTableModel.PluginModel::getId) .collect(Collectors.toSet()); pack.setEnabledPlugins(enabled); diff --git a/creator-tools/src/main/java/com/skcraft/launcher/creator/model/swing/PluginsTableModel.java b/creator-tools/src/main/java/com/skcraft/launcher/creator/model/swing/PluginsTableModel.java index 4a03bf0..e94689a 100644 --- a/creator-tools/src/main/java/com/skcraft/launcher/creator/model/swing/PluginsTableModel.java +++ b/creator-tools/src/main/java/com/skcraft/launcher/creator/model/swing/PluginsTableModel.java @@ -25,7 +25,7 @@ public class PluginsTableModel extends AbstractTableModel { if (columnIndex == 0) { return plugins.get(rowIndex).isEnabled(); } else { - return plugins.get(rowIndex).getPluginId(); + return plugins.get(rowIndex).getName(); } } @@ -64,7 +64,8 @@ public class PluginsTableModel extends AbstractTableModel { @Data public static class PluginModel { - private final String pluginId; + private final String id; + private final String name; private boolean enabled; } }