navigator problem

View: New views
1 Messages — Rating Filter:   Alert me  

navigator problem

by Dilini :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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);

           
            }

        }


    }


}