Skip to content

Commit 33fe114

Browse files
committed
refactor DefaultMutableTreeNodePreorderEnumaration to KVP
1 parent 6afca72 commit 33fe114

File tree

7 files changed

+81
-65
lines changed

7 files changed

+81
-65
lines changed

src/main/java/nl/digitalekabeltelevisie/gui/DVBtree.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
import nl.digitalekabeltelevisie.data.mpeg.psi.handler.GeneralPsiTableHandler;
8181
import nl.digitalekabeltelevisie.gui.utils.GuiUtils;
8282
import nl.digitalekabeltelevisie.main.DVBinspector;
83-
import nl.digitalekabeltelevisie.util.DefaultMutableTreeNodePreorderEnumaration;
83+
import nl.digitalekabeltelevisie.util.KvpPreorderEnumaration;
8484
import nl.digitalekabeltelevisie.util.JTreeLazyList;
8585
import nl.digitalekabeltelevisie.util.PreferencesManager;
8686

@@ -885,7 +885,7 @@ public void lostOwnership(Clipboard clipboard, Transferable contents) {
885885

886886
}
887887

888-
public boolean findAndShow(String s,DefaultMutableTreeNodePreorderEnumaration enumeration) {
888+
public boolean findAndShow(String s,KvpPreorderEnumaration enumeration) {
889889

890890
KVP node = searchNode(s.toLowerCase(),enumeration);
891891
if (node != null) {
@@ -907,11 +907,11 @@ private void showNode(TreeNode node) {
907907
tree.setSelectionPath(path);
908908
}
909909

910-
public DefaultMutableTreeNodePreorderEnumaration createNewDefaultMutableTreeNodePreorderEnumaration(){
911-
return new DefaultMutableTreeNodePreorderEnumaration((KVP)model.getRoot());
910+
public KvpPreorderEnumaration createNewDefaultMutableTreeNodePreorderEnumaration(){
911+
return new KvpPreorderEnumaration((KVP)model.getRoot());
912912
}
913913

914-
private static KVP searchNode(String targetString, DefaultMutableTreeNodePreorderEnumaration enumeration) {
914+
private static KVP searchNode(String targetString, KvpPreorderEnumaration enumeration) {
915915
while (enumeration.hasMoreElements()) {
916916
KVP node = enumeration.nextElement();
917917
if (node != null){

src/main/java/nl/digitalekabeltelevisie/gui/FindDialog.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import javax.swing.*;
3434

3535
import nl.digitalekabeltelevisie.main.DVBinspector;
36-
import nl.digitalekabeltelevisie.util.DefaultMutableTreeNodePreorderEnumaration;
36+
import nl.digitalekabeltelevisie.util.KvpPreorderEnumaration;
3737

3838
class FindDialog extends JDialog
3939
implements ActionListener,
@@ -45,7 +45,7 @@ class FindDialog extends JDialog
4545

4646
private String buttonString1 = "Search";
4747
private String buttonString2 = "Cancel";
48-
private DefaultMutableTreeNodePreorderEnumaration enummeration;
48+
private KvpPreorderEnumaration enummeration;
4949

5050

5151

src/main/java/nl/digitalekabeltelevisie/gui/FindNextAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import javax.swing.*;
2929

3030
import nl.digitalekabeltelevisie.main.DVBinspector;
31-
import nl.digitalekabeltelevisie.util.DefaultMutableTreeNodePreorderEnumaration;
31+
import nl.digitalekabeltelevisie.util.KvpPreorderEnumaration;
3232

3333
public class FindNextAction extends AbstractAction {
3434

@@ -43,7 +43,7 @@ public FindNextAction(DVBinspector controller) {
4343
public void actionPerformed(ActionEvent e) {
4444

4545
String searchText = controller.getSearchString();
46-
DefaultMutableTreeNodePreorderEnumaration enummeration = controller.getSearchEnumeration();
46+
KvpPreorderEnumaration enummeration = controller.getSearchEnumeration();
4747
if ((searchText != null) && (enummeration != null)) {
4848
boolean found = controller.getTreeView().findAndShow(searchText, enummeration);
4949
if (!found) {

src/main/java/nl/digitalekabeltelevisie/main/DVBinspector.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
import nl.digitalekabeltelevisie.gui.*;
7272
import nl.digitalekabeltelevisie.gui.exception.NotAnMPEGFileException;
7373
import nl.digitalekabeltelevisie.gui.utils.RecentFiles;
74-
import nl.digitalekabeltelevisie.util.DefaultMutableTreeNodePreorderEnumaration;
74+
import nl.digitalekabeltelevisie.util.KvpPreorderEnumaration;
7575
import nl.digitalekabeltelevisie.util.PreferencesManager;
7676
import nl.digitalekabeltelevisie.util.Utils;
7777

@@ -109,7 +109,7 @@ public class DVBinspector implements ChangeListener, ActionListener{
109109
private FindNextAction findNextAction;
110110

111111

112-
private DefaultMutableTreeNodePreorderEnumaration searchEnummeration;
112+
private KvpPreorderEnumaration searchEnummeration;
113113
private String searchString;
114114

115115

@@ -767,7 +767,7 @@ public void setModus(final int modus) {
767767
}
768768

769769

770-
public void setSearchEnumeration(DefaultMutableTreeNodePreorderEnumaration enummeration) {
770+
public void setSearchEnumeration(KvpPreorderEnumaration enummeration) {
771771
this.searchEnummeration = enummeration;
772772
if(enummeration==null){
773773
findNextAction.setEnabled(false);
@@ -777,7 +777,7 @@ public void setSearchEnumeration(DefaultMutableTreeNodePreorderEnumaration enumm
777777

778778
}
779779

780-
public DefaultMutableTreeNodePreorderEnumaration getSearchEnumeration() {
780+
public KvpPreorderEnumaration getSearchEnumeration() {
781781
return searchEnummeration;
782782
}
783783

src/main/java/nl/digitalekabeltelevisie/util/DefaultMutableTreeNodePreorderEnumaration.java

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package nl.digitalekabeltelevisie.util;
2+
3+
import java.util.*;
4+
5+
import nl.digitalekabeltelevisie.controller.KVP;
6+
7+
/**
8+
* Enumeration of all KVPs under the root, ignoring other types of Treenode, and their children
9+
* used for searching DVBTree, without the JTreeLazyList's
10+
*
11+
* Based on DefaultMutableTreeNode.PreorderEnumeration
12+
*/
13+
public class KvpPreorderEnumaration implements Enumeration<KVP>{
14+
15+
private final Deque<Iterator<KVP>> stack = new ArrayDeque<>();
16+
17+
public KvpPreorderEnumaration(KVP rootNode) {
18+
super();
19+
stack.push(List.of(rootNode).iterator());
20+
}
21+
22+
23+
@Override
24+
public boolean hasMoreElements() {
25+
return (!stack.isEmpty() && stack.peek().hasNext());
26+
}
27+
28+
@Override
29+
public KVP nextElement() {
30+
Iterator<?> enumer = stack.peek();
31+
KVP node = (KVP) enumer.next();
32+
Iterator<?> children = node.children().asIterator();
33+
34+
if (!enumer.hasNext()) {
35+
stack.pop();
36+
}
37+
if (children.hasNext()) {
38+
List<KVP> v = new ArrayList<>();
39+
while (children.hasNext()) {
40+
Object nextChild = children.next();
41+
if (nextChild instanceof KVP childKvp) {
42+
v.add(childKvp);
43+
}
44+
}
45+
if (!v.isEmpty()) {
46+
stack.push(v.iterator());
47+
}
48+
}
49+
return node;
50+
}
51+
52+
}
Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
import static org.junit.Assert.assertEquals;
3131

32+
import javax.swing.tree.DefaultMutableTreeNode;
33+
3234
import org.junit.Before;
3335
import org.junit.Test;
3436

@@ -37,11 +39,11 @@
3739
/**
3840
*
3941
*/
40-
public class DefaultMutableTreeNodePreorderEnumarationTest {
42+
public class KvpPreorderEnumarationTest {
4143

4244

4345

44-
DefaultMutableTreeNodePreorderEnumaration enumaration;
46+
KvpPreorderEnumaration enumaration;
4547
@Before
4648
public void setup() {
4749

@@ -53,6 +55,7 @@ public void setup() {
5355
KVP b = new KVP("b");
5456
b.add(new KVP("1"));
5557
b.add(new KVP("2"));
58+
b.add(new DefaultMutableTreeNode("ignore"));
5659
b.add(new KVP("3"));
5760
b.add(new KVP("4"));
5861
root.add(b);
@@ -72,8 +75,16 @@ public void setup() {
7275
KVP c3 = new KVP("3");
7376
c.add(c3);
7477

78+
DefaultMutableTreeNode d = new DefaultMutableTreeNode("d");
79+
d.add(new KVP("ignore d 1"));
80+
d.add(new KVP("ignore d 2"));
81+
82+
root.add(d);
7583

76-
enumaration = new DefaultMutableTreeNodePreorderEnumaration(root);
84+
KVP e = new KVP("e");
85+
root.add(e);
86+
87+
enumaration = new KvpPreorderEnumaration(root);
7788
}
7889

7990
@Test
@@ -98,7 +109,8 @@ public void enumarationTest() {
98109
"first",
99110
"second",
100111
"third",
101-
"3"};
112+
"3",
113+
"e"};
102114
while(enumaration.hasMoreElements()) {
103115
assertEquals(t[i], enumaration.nextElement().getPlainText());
104116
i++;

0 commit comments

Comments
 (0)