diff --git a/src/main/java/help/HelpEntry.java b/src/main/java/help/HelpEntry.java index bbb09a79ebf0b0ea1108aea123386e675df9c406..efdd84c0a32f84e0531245bd66114bb769dfd042 100644 --- a/src/main/java/help/HelpEntry.java +++ b/src/main/java/help/HelpEntry.java @@ -249,5 +249,55 @@ public class HelpEntry implements GenericTree { return getIndexOfKid((HelpEntry)child); } + public HelpEntry getFromMasterKeyword(String search) { + if (masterKeyword != null) { + if (masterKeyword.compareTo(search) == 0) { + return this; + } + } + if (entries != null) { + HelpEntry ret; + for(HelpEntry he: entries) { + ret = he.getFromMasterKeyword(search); + if (ret != null) { + return ret; + } + } + } + return null; + } + + public void addEntries(Vector<HelpEntry> list) { + list.add(this); + if (entries != null) { + for (HelpEntry he : entries) { + he.addEntries(list); + } + } + } + + public int hasSimilarWords(String[] words) { + int result = 0; + for(String s:words) { + if (hasKeyword(s)) { + result ++; + } + } + return result; + } + + public boolean hasKeyword(String word) { + for(String s: keywords) { + if (s.compareTo(word) == 0) { + return true; + } + } + return false; + } + + + + + } diff --git a/src/main/java/help/HelpManager.java b/src/main/java/help/HelpManager.java index 42fa5b0584cd349573b8d4885354805f9b2115e7..d994e763a3c130aa9569b324987aeda5262fcb17 100644 --- a/src/main/java/help/HelpManager.java +++ b/src/main/java/help/HelpManager.java @@ -45,6 +45,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.net.URL; +import java.util.Vector; /** @@ -61,6 +62,8 @@ public class HelpManager extends HelpEntry { private boolean helpLoaded = false; + private Vector<HelpEntry> allEntries; + public HelpManager() { linkToParent = null; @@ -123,7 +126,7 @@ public class HelpManager extends HelpEntry { return false; } - + computeAllEntries(); helpLoaded = true; return true; @@ -243,4 +246,23 @@ public class HelpManager extends HelpEntry { return top; } + private void computeAllEntries() { + allEntries = new Vector<>(); + addEntries(allEntries); + + } + + public Vector<HelpEntry> getEntriesWithKeyword(String[] words) { + Vector<HelpEntry> result = new Vector<>(); + for(HelpEntry he: allEntries) { + int nb = he.hasSimilarWords(words); + if (nb > 0) { + result.add(he); + } + } + return result; + } + + + } diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java index 91e72485492cd8adde9670a54d9ed9fb9042fa24..43e36797bafd71f85506e6c487231d7bc0c7e686 100644 --- a/src/main/java/ui/MainGUI.java +++ b/src/main/java/ui/MainGUI.java @@ -758,6 +758,8 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per panel.searchForText(text.toLowerCase(), elements); } + elements.addAll(helpManager.getEntriesWithKeyword(text.split( " "))); + gtm.setElementsOfSearchTree(elements); //TraceManager.addDev("Found " + elements.size() + " elements"); dtree.forceUpdate();