@Override
 public void actionPerformed(ActionEvent event) {
   showresource = true;
   ResourceEntry node = (ResourceEntry) tree.getLastSelectedPathComponent();
   if (event.getSource() == mi_open) {
     if (prevnextnode != null) prevstack.push(prevnextnode);
     nextstack.removeAllElements();
     bnext.setEnabled(false);
     bprev.setEnabled(prevnextnode != null);
     prevnextnode = node;
     shownresource = node;
     NearInfinity.getInstance().setViewable(ResourceFactory.getResource(node));
   } else if (event.getSource() == mi_opennew) {
     Resource res = ResourceFactory.getResource(node);
     if (res != null) new ViewFrame(NearInfinity.getInstance(), res);
   } else if (event.getSource() == mi_export) {
     ResourceFactory.exportResource(node, NearInfinity.getInstance());
   } else if (event.getSource() == mi_addcopy) {
     ResourceFactory.saveCopyOfResource(node);
   } else if (event.getSource() == mi_rename) {
     if (tree.getLastSelectedPathComponent() instanceof FileResourceEntry) {
       renameResource((FileResourceEntry) tree.getLastSelectedPathComponent());
     }
   } else if (event.getSource() == mi_delete) {
     if (tree.getLastSelectedPathComponent() instanceof ResourceEntry) {
       deleteResource((ResourceEntry) tree.getLastSelectedPathComponent());
     }
   } else if (event.getSource() == mi_restore) {
     if (tree.getLastSelectedPathComponent() instanceof ResourceEntry) {
       restoreResource((ResourceEntry) tree.getLastSelectedPathComponent());
     }
   }
 }
 @Override
 public void actionPerformed(ActionEvent event) {
   currentkey = "";
   if (tree.getLastSelectedPathComponent() != null
       && tree.getLastSelectedPathComponent() instanceof ResourceEntry) {
     shownresource = (ResourceEntry) tree.getLastSelectedPathComponent();
     NearInfinity.getInstance().setViewable(ResourceFactory.getResource(shownresource));
   }
   showresource = true;
 }
 @Override
 public void valueChanged(TreeSelectionEvent event) {
   Object node = tree.getLastSelectedPathComponent();
   if (node == null) {
     tree.clearSelection();
     BrowserMenuBar.getInstance().resourceEntrySelected(null);
   } else if (node instanceof ResourceEntry) {
     ResourceEntry entry = (ResourceEntry) node;
     BrowserMenuBar.getInstance().resourceEntrySelected((ResourceEntry) node);
     if (entry != prevnextnode) { // Not result of pressing 'Back' or 'Forward'
       if (prevnextnode != null) {
         prevstack.push(prevnextnode);
         bprev.setEnabled(true);
       }
       nextstack.removeAllElements();
       bnext.setEnabled(false);
       prevnextnode = entry;
     }
     if (showresource) {
       shownresource = entry;
       NearInfinity.getInstance().setViewable(ResourceFactory.getResource(entry));
     }
   } else BrowserMenuBar.getInstance().resourceEntrySelected(null);
 }