summaryrefslogtreecommitdiffstats
path: root/idrop-swing
diff options
context:
space:
mode:
authorLisa Stillwell <lisa@renci.org>2012-11-08 16:34:21 (GMT)
committer Lisa Stillwell <lisa@renci.org>2012-11-08 16:34:21 (GMT)
commit4cc9b4bbb23aa97e2b71db0cacf9d63830e922c6 (patch)
tree7d3e349e1e4eee131ac3349186016d3ee22efe5a /idrop-swing
parent32db5d2278237c11708f6061618cd671d0e3381c (diff)
downloadQCG-Data-4cc9b4bbb23aa97e2b71db0cacf9d63830e922c6.zip
QCG-Data-4cc9b4bbb23aa97e2b71db0cacf9d63830e922c6.tar.gz
QCG-Data-4cc9b4bbb23aa97e2b71db0cacf9d63830e922c6.tar.bz2
[983] finally - git popup for breadcrumb navigation working, although still issue with ACLS??
Diffstat (limited to 'idrop-swing')
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form20
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java78
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java2
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/BreadCrumbNavigationPopup.java159
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties1
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/viscomponents/Bundle.properties6
6 files changed, 224 insertions, 42 deletions
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form
index 3428969..5063e53 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form
@@ -212,15 +212,15 @@
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/icon_editmetadata.png"/>
</Property>
- <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
- <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.btnMainToolbarAddEditMetaData.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
- </Property>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
<EmptyBorder bottom="1" left="1" right="24" top="1"/>
</Border>
</Property>
<Property name="horizontalTextPosition" type="int" value="0"/>
+ <Property name="label" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.btnMainToolbarAddEditMetaData.label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+ </Property>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
</Component>
@@ -292,7 +292,7 @@
</Property>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
- <EmptyBorder bottom="1" left="1" right="10" top="1"/>
+ <EmptyBorder bottom="1" left="1" right="2" top="1"/>
</Border>
</Property>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
@@ -303,6 +303,18 @@
</Property>
</Properties>
</Component>
+ <Container class="javax.swing.JPanel" name="pnlBreadCrumbNav">
+ <Properties>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[20, 20]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[20, 20]"/>
+ </Property>
+ </Properties>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+ </Container>
<Component class="javax.swing.JSeparator" name="jSeparator2">
<Properties>
<Property name="orientation" type="int" value="1"/>
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java
index 1c8fabc..e4fb259 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java
@@ -32,6 +32,7 @@ import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
+import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import org.irods.jargon.core.connection.IRODSAccount;
@@ -49,6 +50,7 @@ import org.irods.jargon.idrop.desktop.systraygui.utils.IDropUtils;
import org.irods.jargon.idrop.desktop.systraygui.utils.LocalFileUtils;
import org.irods.jargon.idrop.desktop.systraygui.utils.LookAndFeelManager;
import org.irods.jargon.idrop.desktop.systraygui.utils.TreeUtils;
+import org.irods.jargon.idrop.desktop.systraygui.viscomponents.BreadCrumbNavigationPopup;
import org.irods.jargon.idrop.desktop.systraygui.viscomponents.FileSystemModel;
import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSFileSystemModel;
import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSNode;
@@ -91,6 +93,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
private ChangePasswordDialog changePasswordDialog = null;
private QueueManagerDialog queueManagerDialog = null;
private boolean formShown = false;
+ private BasicArrowButton btnBreadCrumbNav;
public iDrop(final IDROPCore idropCore) {
@@ -175,6 +178,15 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
log.warn("no account, exiting");
System.exit(0);
}
+
+ // add breadcrumb navigation button
+ btnBreadCrumbNav = new BasicArrowButton(BasicArrowButton.SOUTH);
+ btnBreadCrumbNav.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnBreadCrumbNavActionPerformed(evt);
+ }
+ });
+ pnlBreadCrumbNav.add(btnBreadCrumbNav);
// userNameLabel.setText("User: "
// + getiDropCore().getIrodsAccount().getUserName());
@@ -382,6 +394,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
scrollIrodsTree.getViewport().removeAll();
irodsTree = null;
loadNewTree();
+ irodsTree.getSelectionModel().setSelectionInterval(0, 0);
if (currentPaths != null) {
IRODSNode irodsNode = null;
TreePath pathOfExpandingNode = null;
@@ -395,8 +408,11 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
TreePath pathInNew = TreeUtils.getPath(irodsNode);
irodsTree.collapsePath(pathInNew);
irodsTree.expandPath(pathInNew);
- irodsTree.scrollRectToVisible(irodsTree.getPathBounds(treePath));
- irodsTree.getSelectionModel().setSelectionInterval(startIdx, endIdx);
+ java.awt.Rectangle rect = irodsTree.getPathBounds(treePath);
+ if (rect != null) {
+ irodsTree.scrollRectToVisible(rect);
+ irodsTree.getSelectionModel().setSelectionInterval(startIdx, endIdx);
+ }
}
}
}
@@ -1023,10 +1039,14 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
path = selectedNode.getFullPath();
CollectionAndDataObjectListingEntry irodsObj = (CollectionAndDataObjectListingEntry) selectedNode.getUserObject();
-
- enableCollectionSelectedButtons(irodsObj.isCollection());
+ if (irodsObj.isCollection()) {
+ enableCollectionSelectedButtons(true);
+ setBreadcrumb(path);
+ }
+ else {
+ enableCollectionSelectedButtons(false);
+ }
enableToolbarButtons(idx >= 0);
- setBreadcrumb(path);
}
});
@@ -1555,6 +1575,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
btnMainToolbarDelete = new javax.swing.JButton();
pnlMainToolbarSearch = new javax.swing.JPanel();
lblBreadCrumb = new javax.swing.JLabel();
+ pnlBreadCrumbNav = new javax.swing.JPanel();
jSeparator2 = new javax.swing.JSeparator();
txtMainToolbarSearchTerms = new javax.swing.JTextField();
btnMainToolbarSearchFiles = new javax.swing.JButton();
@@ -1664,9 +1685,9 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
pnlMainToolbarIcons.add(jSeparator1);
btnMainToolbarAddEditMetaData.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_editmetadata.png"))); // NOI18N
- btnMainToolbarAddEditMetaData.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarAddEditMetaData.text")); // NOI18N
btnMainToolbarAddEditMetaData.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 24));
btnMainToolbarAddEditMetaData.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ btnMainToolbarAddEditMetaData.setLabel(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarAddEditMetaData.label")); // NOI18N
btnMainToolbarAddEditMetaData.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
pnlMainToolbarIcons.add(btnMainToolbarAddEditMetaData);
@@ -1697,11 +1718,15 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
pnlMainToolbarSearch.setLayout(new javax.swing.BoxLayout(pnlMainToolbarSearch, javax.swing.BoxLayout.LINE_AXIS));
lblBreadCrumb.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.lblBreadCrumb.text")); // NOI18N
- lblBreadCrumb.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 10));
+ lblBreadCrumb.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 2));
lblBreadCrumb.setMaximumSize(new java.awt.Dimension(110, 2000));
lblBreadCrumb.setMinimumSize(new java.awt.Dimension(0, 0));
pnlMainToolbarSearch.add(lblBreadCrumb);
+ pnlBreadCrumbNav.setMaximumSize(new java.awt.Dimension(20, 20));
+ pnlBreadCrumbNav.setPreferredSize(new java.awt.Dimension(20, 20));
+ pnlMainToolbarSearch.add(pnlBreadCrumbNav);
+
jSeparator2.setOrientation(javax.swing.SwingConstants.VERTICAL);
pnlMainToolbarSearch.add(jSeparator2);
@@ -1973,36 +1998,14 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
// TODO: error dialog here
}
}
-
-// String targetPath = null;
- // open irods folder chooser
-// try {
-// IRODSFinderDialog irodsFileSystemChooserView = new IRODSFinderDialog(null, true, iDropCore);
-// final Toolkit toolkit = Toolkit.getDefaultToolkit();
-// final Dimension screenSize = toolkit.getScreenSize();
-// final int x = (screenSize.width - irodsFileSystemChooserView.getWidth()) / 2;
-// final int y = (screenSize.height - irodsFileSystemChooserView.getHeight()) / 2;
-// irodsFileSystemChooserView.setLocation(x, y);
-// irodsFileSystemChooserView.enableButtonSelectFolder(false);
-// irodsFileSystemChooserView.setTitle("Select Upload Target");
-// irodsFileSystemChooserView.setVisible(true);
-// targetPath = irodsFileSystemChooserView.getSelectedAbsolutePath();
-// irodsFileSystemChooserView.dispose();
-// } catch (Exception e) {
-// log.error("exception choosings iRODS file");
-// throw new IdropRuntimeException("exception choosing irods fie", e);
-// } finally {
-// iDropCore.getIrodsFileSystem().closeAndEatExceptions();
-// }
-//
-// // now start upload
-// if (targetPath != null) {
-// executeUpload(targetPath);
-// }
-// else {
-// // TODO: error dialog here
-// }
-
+ }
+
+ private void btnBreadCrumbNavActionPerformed(java.awt.event.ActionEvent evt) {
+
+ BreadCrumbNavigationPopup popup = new BreadCrumbNavigationPopup(this, lblBreadCrumb.getText());
+ java.awt.Point p = btnBreadCrumbNav.getLocation();
+ popup.show(pnlBreadCrumbNav, p.x, p.y + btnBreadCrumbNav.getHeight());
+
}//GEN-LAST:event_btnMainToolbarUploadActionPerformed
/**
* @param args the command line arguments
@@ -2060,6 +2063,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
private javax.swing.JLabel lblTransferMessage;
private javax.swing.JLabel lblTransferType;
private javax.swing.JList listLocalDrives;
+ private javax.swing.JPanel pnlBreadCrumbNav;
private javax.swing.JPanel pnlCurrentTransferStatus;
private javax.swing.JPanel pnlDrivesFiller;
private javax.swing.JPanel pnlIdropBottom;
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
index 2302e6b..58f8015 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
@@ -1,5 +1,5 @@
package org.irods.jargon.idrop.desktop.systraygui.utils;
public final class Version {
public static String VERSION="1.0.2-SNAPSHOT";
- public static String BUILD_TIME="20121024-1327";
+ public static String BUILD_TIME="20121108-1101";
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/BreadCrumbNavigationPopup.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/BreadCrumbNavigationPopup.java
new file mode 100644
index 0000000..7eca285
--- /dev/null
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/BreadCrumbNavigationPopup.java
@@ -0,0 +1,159 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.irods.jargon.idrop.desktop.systraygui.viscomponents;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
+import org.irods.jargon.core.utils.MiscIRODSUtils;
+import org.irods.jargon.idrop.desktop.systraygui.iDrop;
+
+/**
+ *
+ * @author lisa
+ */
+public class BreadCrumbNavigationPopup extends javax.swing.JPopupMenu {
+
+ private String breadCrumbPath = null;
+ private iDrop idropGUI;
+ private String paths[];
+
+ public BreadCrumbNavigationPopup(iDrop idrop, String breadCrumbPath) {
+ super();
+ this.idropGUI = idrop;
+ this.breadCrumbPath = breadCrumbPath;
+ initComponents();
+ }
+
+ private void initComponents() {
+
+ ActionListener popupMenuListener = new PopupNavListener();
+
+ paths = breadCrumbPath.split("/");
+ int count = paths.length;
+ //ignore the first entry since it just matched the leading slash
+ for (int i=1; i<count; i++) {
+ JMenuItem mi = new JMenuItem(paths[i]);
+ mi.addActionListener(popupMenuListener);
+ this.add(mi);
+ }
+
+ // now make toolbar menu item and add as last element in popup menu
+ this.add(buildToolbarPanel());
+ this.pack();
+ }
+
+ private JPanel buildToolbarPanel() {
+
+ JPanel pnlToolbar = new JPanel();
+ javax.swing.JToolBar toolbarIrodsTree = new javax.swing.JToolBar();
+ javax.swing.JButton btnGoHomeTargetTree = new javax.swing.JButton();
+ javax.swing.JButton btnGoRootTargetTree = new javax.swing.JButton();
+ javax.swing.JButton btnSetRootCustomTargetTree = new javax.swing.JButton();
+
+ pnlToolbar.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
+ pnlToolbar.setPreferredSize(new java.awt.Dimension(166, 50));
+ pnlToolbar.setLayout(new java.awt.GridLayout());
+
+ toolbarIrodsTree.setFloatable(false);
+ toolbarIrodsTree.setRollover(true);
+ toolbarIrodsTree.setPreferredSize(new java.awt.Dimension(166, 40));
+
+ btnGoHomeTargetTree.setIcon(new javax.swing.ImageIcon(getClass().getResource("/go-home-4.png"))); // NOI18N
+ btnGoHomeTargetTree.setMnemonic('h');
+ btnGoHomeTargetTree.setText(org.openide.util.NbBundle.getMessage(BreadCrumbNavigationPopup.class, "BreadCrumbNavigationPopup.btnGoHomeTargetTree.text"));
+ btnGoHomeTargetTree.setToolTipText(org.openide.util.NbBundle.getMessage(BreadCrumbNavigationPopup.class, "BreadCrumbNavigationPopup.btnGoHomeTargetTree.toolTipText")); // NOI18N
+ btnGoHomeTargetTree.setFocusable(false);
+ btnGoHomeTargetTree.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ btnGoHomeTargetTree.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+ btnGoHomeTargetTree.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnGoHomeTargetTreeActionPerformed(evt);
+ }
+ });
+ toolbarIrodsTree.add(btnGoHomeTargetTree);
+
+ btnGoRootTargetTree.setIcon(new javax.swing.ImageIcon(getClass().getResource("/go-parent-folder.png"))); // NOI18N
+ btnGoRootTargetTree.setMnemonic('t');
+ btnGoRootTargetTree.setText(org.openide.util.NbBundle.getMessage(BreadCrumbNavigationPopup.class, "BreadCrumbNavigationPopup.btnGoRootTargetTree.text")); // NOI18N
+ btnGoRootTargetTree.setToolTipText(org.openide.util.NbBundle.getMessage(BreadCrumbNavigationPopup.class, "BreadCrumbNavigationPopup.btnGoRootTargetTree.toolTipText")); // NOI18N
+ btnGoRootTargetTree.setFocusable(false);
+ btnGoRootTargetTree.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ btnGoRootTargetTree.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+ btnGoRootTargetTree.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnGoRootTargetTreeActionPerformed(evt);
+ }
+ });
+ toolbarIrodsTree.add(btnGoRootTargetTree);
+
+ btnSetRootCustomTargetTree.setIcon(new javax.swing.ImageIcon(getClass().getResource("/go-jump.png"))); // NOI18N
+ btnSetRootCustomTargetTree.setMnemonic('c');
+ btnSetRootCustomTargetTree.setText(org.openide.util.NbBundle.getMessage(BreadCrumbNavigationPopup.class, "BreadCrumbNavigationPopup.btnSetRootCustomTargetTree.text")); // NOI18N
+ btnSetRootCustomTargetTree.setToolTipText(org.openide.util.NbBundle.getMessage(BreadCrumbNavigationPopup.class, "BreadCrumbNavigationPopup.btnSetRootCustomTargetTree.toolTipText")); // NOI18N
+ btnSetRootCustomTargetTree.setFocusable(false);
+ btnSetRootCustomTargetTree.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ btnSetRootCustomTargetTree.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+ toolbarIrodsTree.add(btnSetRootCustomTargetTree);
+
+ pnlToolbar.add(toolbarIrodsTree);
+
+ this.setBackground(btnGoHomeTargetTree.getBackground());
+
+ return pnlToolbar;
+ }
+
+ private void btnGoHomeTargetTreeActionPerformed(java.awt.event.ActionEvent evt) {
+ // set the root path of the irods tree to root and refresh
+ String homeRoot;
+ if (idropGUI.getiDropCore().getIrodsAccount().isAnonymousAccount()) {
+ //log.info("setting home dir to public");
+ homeRoot = MiscIRODSUtils.computePublicDirectory(idropGUI.getiDropCore().getIrodsAccount());
+ } else {
+ homeRoot = MiscIRODSUtils.computeHomeDirectoryForIRODSAccount(idropGUI.getiDropCore().getIrodsAccount());
+ }
+
+ idropGUI.getiDropCore().setBasePath(homeRoot);
+ idropGUI.buildTargetTree(false);
+ this.setVisible(false);
+ }
+
+ private void btnGoRootTargetTreeActionPerformed(java.awt.event.ActionEvent evt) {
+ idropGUI.getiDropCore().setBasePath("/");
+ idropGUI.buildTargetTree(false);
+ this.setVisible(false);
+ }
+
+ // Inner class to print information in response to popup events
+ class PopupNavListener implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent ae) {
+ String command = ae.getActionCommand();
+
+ // get access to menuitems in popup menu to retrieve rest of path
+ JMenuItem mi = (JMenuItem) ae.getSource();
+ JPopupMenu pm = (JPopupMenu) mi.getParent();
+ int idx = pm.getComponentIndex(mi);
+
+ // now rebuild path
+ StringBuilder fullPath = new StringBuilder("/");
+ //ignore the first entry since it just matched the leading slash
+ for(int i=1; i<=idx; i++) {
+ fullPath.append(paths[i]);
+ fullPath.append("/");
+ }
+ fullPath.append(command);
+
+ // now set tree to selected path
+ idropGUI.getiDropCore().setBasePath(fullPath.toString());
+ idropGUI.buildTargetTree(false);
+ }
+ }
+
+}
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties
index 1f7a1f5..0c2a112 100644
--- a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties
@@ -139,3 +139,4 @@ iDrop.lblBreadCrumb.text=
iDrop.scrollLocalFileTree.toolTipText=scroll panel tooltip
iDrop.btnMainToolbarCopy.actionCommand=Copy/Move
iDrop.btnMainToolbarCopy.text=Copy/Move
+iDrop.btnMainToolbarAddEditMetaData.label=Info
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/viscomponents/Bundle.properties b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/viscomponents/Bundle.properties
index b1140a7..0b50aff 100644
--- a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/viscomponents/Bundle.properties
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/viscomponents/Bundle.properties
@@ -42,3 +42,9 @@ FileInfoPanel.lblInfoUpdatedAtValue.text=XXXXXX
FileInfoPanel.lblInfoUpdatedAt.text=Updated:
FileInfoPanel.lblFileParent.text=\ \ \ \ \ \ \ \ \ \ \
FileInfoPanel.lblFileParentLabel.text=Parent path of file:
+BreadCrumbNavigationPopup.btnSetRootCustomTargetTree.toolTipText=Set the root of the tree to a custom path
+BreadCrumbNavigationPopup.btnSetRootCustomTargetTree.text=Custom Root
+BreadCrumbNavigationPopup.btnGoRootTargetTree.toolTipText=Go to the top of the iRODS tree
+BreadCrumbNavigationPopup.btnGoRootTargetTree.text=Top
+BreadCrumbNavigationPopup.btnGoHomeTargetTree.toolTipText=Go to the user home directory on the iRODS grid
+BreadCrumbNavigationPopup.btnGoHomeTargetTree.text=Home