diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesConfig.java index 043819c2e8..409e125ffc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesConfig.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.notes; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; +import net.runelite.client.config.Range; @ConfigGroup("notes") public interface NotesConfig extends Config @@ -34,8 +35,6 @@ public interface NotesConfig extends Config String CONFIG_GROUP = "notes"; String NOTES = "notes"; - int MAX_NOTES = 5; - @ConfigItem( keyName = "notesData", name = "", @@ -53,4 +52,18 @@ public interface NotesConfig extends Config description = "" ) void notesData(String str); + + @Range( + min = 1, + max = 5 + ) + @ConfigItem( + keyName = "maxNotes", + name = "Max Notes", + description = "Desired maximum amount of notes" + ) + default int maxNotes() + { + return 5; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesManager.java index 6861228905..bb77880b71 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesManager.java @@ -78,6 +78,12 @@ public class NotesManager { log.info("Adding tab for legacy note data"); notes.add(0, config.notesData()); + + if (notes.size() == 2 && notes.get(1).equals("")) + { + // remove the default empty note page + notes.remove(1); + } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPanel.java index 4cc6ecbbbd..2764c2802a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPanel.java @@ -45,6 +45,7 @@ import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import lombok.extern.slf4j.Slf4j; +import net.runelite.api.events.ConfigChanged; import net.runelite.client.eventbus.EventBus; import net.runelite.client.plugins.notes.events.PageAdded; import net.runelite.client.plugins.notes.events.PageDeleted; @@ -69,11 +70,15 @@ class NotesPanel extends PluginPanel private final ImageIcon addIcon = new ImageIcon(ImageUtil.getResourceStreamFromClass(getClass(), "add_icon.png")); private MaterialTab addTab; private List tabs = new ArrayList<>(); + private NotesConfig config; - void init(final NotesConfig config) + void init(final NotesConfig mConfig) { + config = mConfig; + eventBus.subscribe(PageAdded.class, this, this::onPageAdded); eventBus.subscribe(PageDeleted.class, this, this::onPageDeleted); + eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged); // this may or may not qualify as a hack // but this lets the editor pane expand to fill the whole parent panel @@ -114,7 +119,7 @@ class NotesPanel extends PluginPanel tabGroup.addTab(tab); } - if (totalNotes < NotesConfig.MAX_NOTES) + if (totalNotes < config.maxNotes()) { tabGroup.addTab(addTab); } @@ -129,6 +134,14 @@ class NotesPanel extends PluginPanel repaint(); } + private void onConfigChanged(ConfigChanged e){ + if(!e.getGroup().equals(NotesConfig.CONFIG_GROUP)){ + return; + } + + rebuild(); + } + private void onPageAdded(PageAdded e) { MaterialTab tab = buildTab(e.getIndex()); @@ -137,7 +150,7 @@ class NotesPanel extends PluginPanel // re-add add button to make it last tabGroup.removeTab(addTab); - if (notesManager.getNotes().size() < NotesConfig.MAX_NOTES) + if (notesManager.getNotes().size() < config.maxNotes()) { tabGroup.addTab(addTab); }