Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/bdgp/apps/dagedit/plugin/TermFilterPlugin.java


1   package org.bdgp.apps.dagedit.plugin;
2   
3   import org.bdgp.apps.dagedit.gui.*;
4   import org.bdgp.apps.dagedit.gui.event.*;
5   import javax.swing.*;
6   import java.util.*;
7   import java.awt.event.*;
8   import java.awt.*;
9   import org.bdgp.util.*;
10  import org.bdgp.apps.dagedit.datamodel.*;
11  
12  public class TermFilterPlugin extends DEPlugin {
13  
14      JList termList;
15      JButton hideTermsButton;
16      JButton restoreTermsButton;
17      Hashtable hiddenTermsHash = new Hashtable();
18      Hashtable impliedHiddenTermsHash = new Hashtable();
19      Vector hiddenTerms = new Vector();
20  
21      protected VectorFilter filter = new VectorFilter() {
22        public boolean satisfies(Object o) {
23      return !hiddenTermsHash.containsKey(o) &&
24          !impliedHiddenTermsHash.containsKey(o);
25        }
26    };
27  
28      protected RootChangeListener rootListener = new RootChangeListener() {
29        public void changeRoot(RootChangeEvent e) {
30      clear();
31        }
32    };
33  
34      protected static final ListCellRenderer renderer =
35      new DefaultListCellRenderer() {
36        public Component
37        getListCellRendererComponent(JList list,
38             Object value,
39             int index,
40             boolean isSelected,
41             boolean cellHasFocus) {
42      TermRelationship tr = (TermRelationship) value;
43      String newValue = tr.getChild().getTerm()+" @ "+
44          tr.getParent().getTerm();
45      return super.getListCellRendererComponent(list,
46                  newValue,
47                  index,
48                  isSelected,
49                  cellHasFocus);
50        }
51    };
52  
53      public void init(MultiProperties props) {
54    setLayout(new BorderLayout());
55    termList = new JList(hiddenTerms);
56    termList.setCellRenderer(renderer);
57    termList.setPreferredSize(new Dimension(100, 100));
58    hideTermsButton = new JButton("Hide selected terms");
59    restoreTermsButton = new JButton("Restore terms");
60  
61    termList.setFont(controller.getDefaultFont());
62    hideTermsButton.setFont(controller.getDefaultFont());
63    restoreTermsButton.setFont(controller.getDefaultFont());
64    add(hideTermsButton, "North");
65    add(termList, "Center");
66    add(restoreTermsButton, "South");
67  
68    controller.addFilter(filter);
69  
70    attachListeners();
71      }
72  
73      public void restoreTerm(TermRelationship tr) {
74    restoreTerm(tr, false);
75      }
76  
77      public void restoreTerm(TermRelationship tr, boolean implied) {
78    if (implied) {
79        impliedHiddenTermsHash.remove(tr);
80    } else {
81        hiddenTerms.removeElement(tr);
82        hiddenTermsHash.remove(tr);
83    }
84    Enumeration e = tr.getAllDescendants(false);
85    while(e.hasMoreElements()) {
86        TermRelationship impliedTerm = (TermRelationship) e.nextElement();
87        restoreTerm(impliedTerm, true);
88    }
89      }
90  
91      public void clear() {
92    hiddenTerms.removeAllElements();
93    impliedHiddenTermsHash.clear();
94    hiddenTermsHash.clear();
95    termList.setListData(hiddenTerms);
96    controller.fireReload(new DETermReloadEvent(this));
97      }
98  
99      public void hideTerm(TermRelationship tr) {
100   hideTerm(tr, false);
101     }
102 
103     protected void hideTerm(TermRelationship tr, boolean implied) {
104   if (implied) {
105       impliedHiddenTermsHash.put(tr, tr);
106   } else {
107       hiddenTerms.addElement(tr);
108       hiddenTermsHash.put(tr, tr);
109   }
110   Enumeration e = tr.getAllDescendants(false);
111   while(e.hasMoreElements()) {
112       TermRelationship impliedTerm = (TermRelationship) e.nextElement();
113       hideTerm(impliedTerm, true);
114   }
115     }
116 
117     public void hideTerms(Vector terms) {
118   for(int i=0; i < terms.size(); i++) {
119       TermRelationship term = (TermRelationship) terms.elementAt(i);
120       hideTerm(term);
121   }
122   termList.setListData(hiddenTerms);
123   controller.fireReload(new DETermReloadEvent(this));
124   controller.
125       fireTermSelect(new DETermSelectEvent(this,
126              new Vector()));
127     }
128 
129     public void restoreTerms(Vector terms) {
130   for(int i=0; i < terms.size(); i++) {
131       TermRelationship term = (TermRelationship) terms.elementAt(i);
132       restoreTerm(term);
133   }  
134   termList.setListData(hiddenTerms);
135   controller.fireReload(new DETermReloadEvent(this));
136   controller.fireTermSelect(new DETermSelectEvent(this,
137               terms));
138 
139     }
140 
141     protected Vector getHiddenSelection() {
142   Vector out = new Vector();
143   Object [] os = termList.getSelectedValues();
144   for(int i=0; i < os.length; i++)
145       out.addElement(os[i]);
146   return out;
147     }
148 
149     protected void attachListeners() {
150   controller.addListener(rootListener);
151   hideTermsButton.addActionListener(new ActionListener() {
152     public void actionPerformed(ActionEvent e) {
153         hideTerms(controller.getSelectedTerms());
154     }
155       });
156   restoreTermsButton.addActionListener(new ActionListener() {
157     public void actionPerformed(ActionEvent e) {
158         restoreTerms(getHiddenSelection());
159     }
160       });
161     }
162 
163     protected void cleanup() {
164   controller.removeListener(rootListener);
165   controller.removeFilter(filter);
166   controller.fireReload(new DETermReloadEvent(this));
167     }
168 
169     public String getName() {
170   return "Term Filter Plugin";
171     }
172 }