1 package org.columba.core.gui.context; 2 3 import java.awt.BorderLayout ; 4 import java.util.Iterator ; 5 6 import javax.swing.ImageIcon ; 7 import javax.swing.JComponent ; 8 import javax.swing.JPanel ; 9 import javax.swing.JTree ; 10 import javax.swing.tree.DefaultMutableTreeNode ; 11 import javax.swing.tree.DefaultTreeModel ; 12 13 import org.columba.api.gui.frame.IFrameMediator; 14 import org.columba.core.context.api.IContextProvider; 15 import org.columba.core.context.base.api.IName; 16 import org.columba.core.context.base.api.IStructureValue; 17 import org.columba.core.context.semantic.api.ISemanticContext; 18 import org.columba.core.resourceloader.IconKeys; 19 import org.columba.core.resourceloader.ImageLoader; 20 21 public class ContextDebugProvider extends JPanel implements IContextProvider { 22 23 private JTree tree; 24 25 private DefaultTreeModel treeModel; 26 27 public ContextDebugProvider() { 28 super(); 29 30 setLayout(new BorderLayout ()); 31 tree = new JTree (); 32 add(tree, BorderLayout.CENTER); 33 38 } 39 40 public String getTechnicalName() { 41 return "context_debug_view"; 42 } 43 44 public String getName() { 45 return "Context Debug View"; 46 } 47 48 public String getDescription() { 49 return "Context Debug View - only visible if Columba is in DEBUG mode"; 50 } 51 52 public ImageIcon getIcon() { 53 return ImageLoader.getSmallIcon(IconKeys.COMPUTER); 54 } 55 56 public int getTotalResultCount() { 57 return 5; 58 } 59 60 public void search(ISemanticContext context, int startIndex, int resultCount) { 61 IStructureValue value = context.getValue(); 62 if ( value == null ) return; 63 64 StringBuffer buf = new StringBuffer (); 65 buf.append(value.getName()); 66 DefaultMutableTreeNode root = new DefaultMutableTreeNode (buf.toString()); 67 68 createTree(root, value); 69 treeModel = new DefaultTreeModel (root); 70 } 71 72 private void createTree(DefaultMutableTreeNode parent, IStructureValue value) { 73 Iterator <IName> it = value.getAllAttributeNames(); 74 while (it.hasNext()) { 75 IName name = it.next(); 76 String str = value.getObject(name.getName(), name.getNamespace()).toString(); 77 78 StringBuffer buf = new StringBuffer (); 79 buf.append(name.getName()); 80 buf.append(":"); 81 buf.append(str); 82 DefaultMutableTreeNode child = new DefaultMutableTreeNode (buf.toString()); 83 parent.add(child); 84 } 85 86 Iterator <IName> it2 = value.getAllChildNames(); 87 while (it2.hasNext()) { 88 IName name = it2.next(); 89 Iterator <IStructureValue> childIt = value.getChildIterator(name 90 .getName(), name.getNamespace()); 91 while (childIt.hasNext()) { 92 IStructureValue child = childIt.next(); 93 StringBuffer buf = new StringBuffer (); 94 buf.append(child.getName()); 95 DefaultMutableTreeNode childNode = new DefaultMutableTreeNode (buf.toString()); 96 parent.add(childNode); 97 createTree(childNode, child); 98 } 99 } 100 } 101 102 public JComponent getView() { 103 return this; 104 } 105 106 public void showResult() { 107 tree.setModel(treeModel); 108 } 109 110 public void clear() { 111 treeModel = new DefaultTreeModel (new DefaultMutableTreeNode ()); 112 tree.setModel(treeModel); 113 } 114 115 public boolean isEnabledShowMoreLink() { 116 return false; 117 } 118 119 public void showMoreResults(IFrameMediator mediator) { 120 } 121 122 123 124 } 125 | Popular Tags |