mirror of
https://github.com/SKCraft/Launcher.git
synced 2024-11-30 13:13:58 +01:00
Improve creator tools plugin menu
This commit is contained in:
parent
66b7b44ac8
commit
652d6bf5ec
@ -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> pack = getSelectedPack(true);
|
||||
|
||||
List<CreatorPluginWrapper<?>> 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> 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();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -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<String> enabled = dialog.plugins.stream()
|
||||
.filter(PluginsTableModel.PluginModel::isEnabled)
|
||||
.map(PluginsTableModel.PluginModel::getPluginId)
|
||||
.map(PluginsTableModel.PluginModel::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
pack.setEnabledPlugins(enabled);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user