Hi,
I read your Architecture document and try to implement navigator.
After I implement it, my navigator display context not change when switch between two files. That means, when I switch between two files, Navigator content not been changed.
When first time I open new file it correctly display Navigator data. But after when I open another file navigator data not been change. So how can I resolve this problem?
I attach some part of my code to this mail.
It’s very thankful If you can help me to resolve this problem
Thanks and Regards
Dilini
package ucsc.msc.intelligentPlsqlEditor.Navigator;
import java.awt.Component;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.ToolTipManager;
import javax.swing.tree.DefaultMutableTreeNode;
import org.netbeans.spi.navigator.NavigatorPanel;
import org.openide.filesystems.FileObject;
import org.openide.util.Lookup;
import org.openide.util.LookupEvent;
import org.openide.util.LookupListener;
import ucsc.msc.intelligentPlsqlEditor.dataobjects.PLSQLDataObject;
public class BasicNavPanelImpl implements NavigatorPanel {
private JComponent panelUI;
private static final Lookup.Template MY_DATA = new Lookup.Template(PLSQLDataObject.class);
/** current context to work on */
private Lookup.Result curContext;
/** listener to context changes */
private LookupListener contextL;
private JTree tree;
DefaultMutableTreeNode root;
DefaultMutableTreeNode child;
DefaultMutableTreeNode Secondchild;
public Map<Integer, NavigatorData> map = new HashMap<Integer, NavigatorData>();//= new HashMap<Integer, String[]>();
NavigatorData nvigate;
/** public no arg constructor needed for system to instantiate provider well */
public BasicNavPanelImpl() {
}
public String getDisplayHint() {
return "Basic dummy implementation of NavigatorPanel interface";
}
public String getDisplayName() {
return "Dummy View";
}
public JComponent getComponent() {
System.out.println("get component");
if (panelUI == null) {
tree = new JTree(root);
CustomTreeCellRenderer customCellRenderer = new CustomTreeCellRenderer();
tree.setCellRenderer(customCellRenderer);
ToolTipManager.sharedInstance().registerComponent(tree);
panelUI = new JScrollPane(tree);
panelUI.updateUI();
}
return panelUI;
}
public void panelActivated(Lookup context) {
System.out.println("Panel Activate");
// lookup context and listen to result to get notified about context changes
curContext = context.lookup(MY_DATA);
curContext.addLookupListener(getContextListener());
// get actual data and recompute content
Collection data = curContext.allInstances();
setNewContent(data);
}
public void panelDeactivated() {
System.out.println("Deactivate");
curContext.removeLookupListener(getContextListener());
curContext = null;
panelUI = null;
}
public Lookup getLookup() {
// go with default activated Node strategy
return null;
}
/************* non - public part ************/
private void setNewContent(Collection newData) {
System.out.println(" ShowContact ********");
nvigate = new NavigatorData();
Iterator ite = newData.iterator();
while (ite.hasNext()) {
PLSQLDataObject dObj = (PLSQLDataObject) ite.next();
while (true) {
try {
FileObject fo = dObj.getPrimaryFile();
String nameOfFile = dObj.getNodeDelegate().getName();
root = new DefaultMutableTreeNode(nameOfFile);
InputStream is = fo.getInputStream();
BufferedReader from = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = from.readLine()) != null) {
lineNo++;
ClassifyData(line);
}
CreateTree(map);
break;
} catch (Exception exception) {
System.out.println(" Exception in line read" + exception);
}
}
break;
}
}
/** Accessor for listener to context */
private LookupListener getContextListener() {
if (contextL == null) {
contextL = new ContextListener();
}
return contextL;
}
/** Listens to changes of context and triggers proper action */
private class ContextListener implements LookupListener {
public void resultChanged(LookupEvent ev) {
System.out.println("result change");
Collection data = ((Lookup.Result) ev.getSource()).allInstances();
setNewContent(data);
getComponent();
}
} // end of ContextListener
public String getContentType() {
return "text/x-plsql";
}
public void ClassifyData(String Readdataline) {
}
public void CreateTree(Map<Integer, NavigatorData> DetailForTree) {
int mapSize = DetailForTree.size();
System.out.println(mapSize);
for (int i = 1; i <= mapSize; i++) {
NavigatorData obj = DetailForTree.get(i);
int i_Level = obj.getLevel();
if (i_Level == 1) {
child = new DefaultMutableTreeNode(obj);
root.add(child);
} else {
Secondchild = new DefaultMutableTreeNode(obj);
child.add(Secondchild);
}
}
}
}