diff options
author | mconway <michael.c.conway@gmail.com> | 2013-01-17 13:35:03 (GMT) |
---|---|---|
committer | mconway <michael.c.conway@gmail.com> | 2013-01-17 13:35:03 (GMT) |
commit | 942183623c9d8d45e0a321fb2d4aa85f015c623f (patch) | |
tree | 9018efc4e3ee095cb3c74d54912e85de5e4a7f3e /idrop-swing | |
parent | 1f738164f70a6dab863396d9f6a4e54151819470 (diff) | |
parent | 545f53b39710b2ed243f9aa83a9452f501890c8e (diff) | |
download | QCG-Data-942183623c9d8d45e0a321fb2d4aa85f015c623f.zip QCG-Data-942183623c9d8d45e0a321fb2d4aa85f015c623f.tar.gz QCG-Data-942183623c9d8d45e0a321fb2d4aa85f015c623f.tar.bz2 |
[#983] interim merge of idrop2 swing code
Diffstat (limited to 'idrop-swing')
43 files changed, 9444 insertions, 4593 deletions
diff --git a/idrop-swing/pom.xml b/idrop-swing/pom.xml index d3d1944..20d88eb 100644 --- a/idrop-swing/pom.xml +++ b/idrop-swing/pom.xml @@ -1,9 +1,8 @@ - <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <groupId>org.irods</groupId> <artifactId>idrop</artifactId> - <version>1.0.3-SNAPSHOT</version> + <version>2.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.irods.idrop</groupId> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form new file mode 100644 index 0000000..097ab59 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form @@ -0,0 +1,194 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="AddPermissionsDialog.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> + <Color blue="ff" green="ff" id="white" palette="1" red="ff" type="palette"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[460, 180]"/> + </Property> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-100,0,0,1,-44"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlMain"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlPermissionEdit"> + <Properties> + <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="20" left="8" right="8" top="16"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[527, 200]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel3"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel31"> + <Properties> + <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="AddPermissionsDialog.jLabel31.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[120, 16]"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="cbPermissionsUserName"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="0"/> + </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[60, 27]"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[260, 27]"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel4"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel32"> + <Properties> + <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="AddPermissionsDialog.jLabel32.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[120, 16]"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JComboBox" name="cbPermissionsPermission"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="0"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[260, 27]"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Properties> + <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="6" left="1" right="1" top="1"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[525, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel2"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[200, 34]"/> + </Property> + <Property name="requestFocusEnabled" type="boolean" value="false"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnPermissionsCancel"> + <Properties> + <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="AddPermissionsDialog.btnPermissionsCancel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnPermissionsCancelActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnPermissionsAdd"> + <Properties> + <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="AddPermissionsDialog.btnPermissionsAdd.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="actionCommand" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="AddPermissionsDialog.btnPermissionsAdd.actionCommand" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnPermissionsAddActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.java new file mode 100644 index 0000000..306da4a --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.java @@ -0,0 +1,227 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.irods.jargon.idrop.desktop.systraygui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import org.irods.jargon.core.connection.IRODSAccount; +import org.irods.jargon.core.exception.JargonException; +import org.irods.jargon.core.protovalues.FilePermissionEnum; +import org.irods.jargon.core.pub.IRODSFileSystem; +import org.irods.jargon.core.pub.UserAO; +import org.irods.jargon.core.pub.domain.User; +import org.irods.jargon.core.pub.domain.UserFilePermission; +import org.openide.util.Exceptions; + +/** + * + * @author lisa + */ +public class AddPermissionsDialog extends javax.swing.JDialog implements ActionListener { + + IRODSFileSystem irodsFileSystem; + IRODSAccount irodsAccount; + boolean isCollection; + UserFilePermission permissionToAdd = null; + + /** + * Creates new form AddPermissionsDialog + */ + public AddPermissionsDialog(javax.swing.JDialog parent, + boolean modal, + IRODSFileSystem irodsFileSystem, + IRODSAccount irodsAccount) { + super(parent, modal); + initComponents(); + + this.irodsFileSystem = irodsFileSystem; + this.irodsAccount = irodsAccount; + + + cbPermissionsPermission.addItem("READ"); + cbPermissionsPermission.addItem("WRITE"); + cbPermissionsPermission.addItem("OWN"); + + List<User> users = null; + try { + UserAO userAO = irodsFileSystem.getIRODSAccessObjectFactory().getUserAO(irodsAccount); + users = userAO.findAll(); + Collections.sort(users, new Comparator<User>() { + @Override + public int compare(final User object1, final User object2) { + return object1.getName().compareTo(object2.getName()); + } + } ); + + for (User user: users) { + cbPermissionsUserName.addItem(user.getNameWithZone()); + } + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + cbPermissionsPermission.addActionListener(this); + cbPermissionsUserName.addActionListener(this); + + updateAddButtonStatus(); + } + + private void updateAddButtonStatus() { + btnPermissionsAdd.setEnabled((cbPermissionsUserName.getSelectedIndex() >= 0) && + (cbPermissionsPermission.getSelectedIndex() >= 0)); + } + + public UserFilePermission getPermissionToAdd() { + return this.permissionToAdd; + } + + @Override + public void actionPerformed(ActionEvent ae) { + updateAddButtonStatus(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + pnlMain = new javax.swing.JPanel(); + pnlPermissionEdit = new javax.swing.JPanel(); + jPanel3 = new javax.swing.JPanel(); + jLabel31 = new javax.swing.JLabel(); + cbPermissionsUserName = new javax.swing.JComboBox(); + jPanel4 = new javax.swing.JPanel(); + jLabel32 = new javax.swing.JLabel(); + cbPermissionsPermission = new javax.swing.JComboBox(); + jPanel1 = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + btnPermissionsCancel = new javax.swing.JButton(); + btnPermissionsAdd = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(AddPermissionsDialog.class, "AddPermissionsDialog.title")); // NOI18N + setBackground(java.awt.Color.white); + setPreferredSize(new java.awt.Dimension(460, 180)); + + pnlMain.setLayout(new java.awt.BorderLayout()); + + pnlPermissionEdit.setBorder(javax.swing.BorderFactory.createEmptyBorder(16, 8, 20, 8)); + pnlPermissionEdit.setPreferredSize(new java.awt.Dimension(527, 200)); + pnlPermissionEdit.setLayout(new java.awt.BorderLayout()); + + jLabel31.setText(org.openide.util.NbBundle.getMessage(AddPermissionsDialog.class, "AddPermissionsDialog.jLabel31.text")); // NOI18N + jLabel31.setPreferredSize(new java.awt.Dimension(120, 16)); + jPanel3.add(jLabel31); + + cbPermissionsUserName.setMinimumSize(new java.awt.Dimension(60, 27)); + cbPermissionsUserName.setPreferredSize(new java.awt.Dimension(260, 27)); + jPanel3.add(cbPermissionsUserName); + + pnlPermissionEdit.add(jPanel3, java.awt.BorderLayout.NORTH); + + jLabel32.setText(org.openide.util.NbBundle.getMessage(AddPermissionsDialog.class, "AddPermissionsDialog.jLabel32.text")); // NOI18N + jLabel32.setPreferredSize(new java.awt.Dimension(120, 16)); + jPanel4.add(jLabel32); + + cbPermissionsPermission.setPreferredSize(new java.awt.Dimension(260, 27)); + jPanel4.add(cbPermissionsPermission); + + pnlPermissionEdit.add(jPanel4, java.awt.BorderLayout.SOUTH); + + pnlMain.add(pnlPermissionEdit, java.awt.BorderLayout.CENTER); + + jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 6, 1)); + jPanel1.setPreferredSize(new java.awt.Dimension(525, 40)); + jPanel1.setLayout(new java.awt.BorderLayout()); + + jPanel2.setPreferredSize(new java.awt.Dimension(200, 34)); + jPanel2.setRequestFocusEnabled(false); + + btnPermissionsCancel.setText(org.openide.util.NbBundle.getMessage(AddPermissionsDialog.class, "AddPermissionsDialog.btnPermissionsCancel.text")); // NOI18N + btnPermissionsCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnPermissionsCancelActionPerformed(evt); + } + }); + jPanel2.add(btnPermissionsCancel); + + btnPermissionsAdd.setText(org.openide.util.NbBundle.getMessage(AddPermissionsDialog.class, "AddPermissionsDialog.btnPermissionsAdd.text")); // NOI18N + btnPermissionsAdd.setActionCommand(org.openide.util.NbBundle.getMessage(AddPermissionsDialog.class, "AddPermissionsDialog.btnPermissionsAdd.actionCommand")); // NOI18N + btnPermissionsAdd.setEnabled(false); + btnPermissionsAdd.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnPermissionsAddActionPerformed(evt); + } + }); + jPanel2.add(btnPermissionsAdd); + + jPanel1.add(jPanel2, java.awt.BorderLayout.EAST); + + pnlMain.add(jPanel1, java.awt.BorderLayout.SOUTH); + + getContentPane().add(pnlMain, java.awt.BorderLayout.CENTER); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void btnPermissionsAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPermissionsAddActionPerformed + + String selectedPermission = (String)cbPermissionsPermission.getSelectedItem(); + String tmpSelectedUser = (String)cbPermissionsUserName.getSelectedItem(); + String selectedUser = null; + + // probably have to remve #zone from user name + int idx = tmpSelectedUser.indexOf("#"); + if (idx >= 0) { + selectedUser = tmpSelectedUser.substring(0, idx); + } + else { + selectedUser = tmpSelectedUser; + } + + try { + UserAO userAO = irodsFileSystem.getIRODSAccessObjectFactory().getUserAO(irodsAccount); + User user = userAO.findByName(tmpSelectedUser); + + permissionToAdd = new UserFilePermission( + selectedUser, + user.getId(), + FilePermissionEnum.valueOf(selectedPermission), + user.getUserType(), + user.getZone()); + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + + this.setVisible(false); + }//GEN-LAST:event_btnPermissionsAddActionPerformed + + private void btnPermissionsCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPermissionsCancelActionPerformed + this.dispose(); + }//GEN-LAST:event_btnPermissionsCancelActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnPermissionsAdd; + private javax.swing.JButton btnPermissionsCancel; + private javax.swing.JComboBox cbPermissionsPermission; + private javax.swing.JComboBox cbPermissionsUserName; + private javax.swing.JLabel jLabel31; + private javax.swing.JLabel jLabel32; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel pnlMain; + private javax.swing.JPanel pnlPermissionEdit; + // End of variables declaration//GEN-END:variables + +} diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/CopyMoveDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/CopyMoveDialog.form new file mode 100644 index 0000000..a50794d --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/CopyMoveDialog.form @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="CopyMoveDialog.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[590, 260]"/> + </Property> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-16,0,0,2,83"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlFolderData"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[540, 240]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlCurrentParent"> + <Properties> + <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="10" left="4" right="4" top="10"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[500, 190]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[500, 125]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblCurrentParent" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="scrollCurrentParent" min="-2" pref="426" max="-2" attributes="0"/> + <EmptySpace pref="31" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace min="45" pref="45" max="-2" attributes="0"/> + <Component id="lblCurrentParent" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" attributes="0"> + <EmptySpace min="5" pref="5" max="-2" attributes="0"/> + <Component id="scrollCurrentParent" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="java.awt.Label" name="lblCurrentParent"> + <Properties> + <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="CopyMoveDialog.lblCurrentParent.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Container class="javax.swing.JScrollPane" name="scrollCurrentParent"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[360, 100]"/> + </Property> + </Properties> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTextArea" name="txtCurrentParent"> + <Properties> + <Property name="editable" type="boolean" value="false"/> + <Property name="columns" type="int" value="20"/> + <Property name="rows" type="int" value="5"/> + <Property name="wrapStyleWord" type="boolean" value="true"/> + <Property name="focusable" type="boolean" value="false"/> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[290, 90]"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel2"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[500, 60]"/> + </Property> + <Property name="requestFocusEnabled" type="boolean" value="false"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="lblNewDiretoryName" min="-2" pref="111" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + <Component id="txtNewLocation" min="-2" pref="320" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnBrowse" min="-2" pref="100" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="30" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace min="9" pref="9" max="-2" attributes="0"/> + <Component id="lblNewDiretoryName" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" attributes="0"> + <EmptySpace min="5" pref="5" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="txtNewLocation" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnBrowse" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="java.awt.Label" name="lblNewDiretoryName"> + <Properties> + <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="CopyMoveDialog.lblNewDiretoryName.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtNewLocation"> + <Properties> + <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="CopyMoveDialog.txtNewLocation.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[360, 28]"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnBrowse"> + <Properties> + <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="CopyMoveDialog.btnBrowse.label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnBrowseActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlBottom"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[708, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="451" pref="338" max="451" attributes="0"/> + <Component id="btnCancel" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnMove" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnCopy" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="5" pref="5" max="5" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="btnCancel" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnMove" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnCopy" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnCancel"> + <Properties> + <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="CopyMoveDialog.btnCancel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnMove"> + <Properties> + <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="CopyMoveDialog.btnMove.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMoveActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnCopy"> + <Properties> + <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="CopyMoveDialog.btnCopy.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCopyActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/CopyMoveDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/CopyMoveDialog.java new file mode 100644 index 0000000..aa26e6e --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/CopyMoveDialog.java @@ -0,0 +1,514 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.irods.jargon.idrop.desktop.systraygui; + +import java.awt.Cursor; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.ListSelectionModel; +import javax.swing.tree.TreePath; +import org.irods.jargon.core.exception.JargonException; +import org.irods.jargon.core.exception.JargonFileOrCollAlreadyExistsException; +import org.irods.jargon.core.pub.DataTransferOperations; +import org.irods.jargon.core.pub.io.IRODSFile; +import org.irods.jargon.idrop.desktop.systraygui.services.IRODSFileService; +import org.irods.jargon.idrop.desktop.systraygui.utils.TreeUtils; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSOutlineModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSTree; +import org.irods.jargon.idrop.exceptions.IdropException; +import org.irods.jargon.idrop.exceptions.IdropRuntimeException; +import org.irods.jargon.idrop.finder.IRODSFinderDialog; +import org.openide.util.Exceptions; +import org.slf4j.LoggerFactory; + +/** + * + * @author lisa + */ +public class CopyMoveDialog extends javax.swing.JDialog { + + + private iDrop idropGUI; + private IRODSTree irodsTree; + private IRODSOutlineModel irodsFileSystemModel; + public static org.slf4j.Logger log = LoggerFactory.getLogger(IRODSTree.class); + + /** + * Creates new form CopyMoveDialog + */ + public CopyMoveDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + public CopyMoveDialog(final iDrop parent, final boolean modal, + final IRODSTree irodsTree) { + super(parent, modal); + initComponents(); + + this.idropGUI = parent; + this.irodsTree = irodsTree; + this.irodsFileSystemModel = (IRODSOutlineModel) irodsTree.getModel(); + + initSourcesFiles(); + setCopyMoveButtonsState(); + } + + + private void initSourcesFiles() { + //check for selected objects and/or collections to download + // get iRODS File Service + IRODSFileService irodsFS = null; + try { + irodsFS = new IRODSFileService(idropGUI.getiDropCore().getIrodsAccount(), + idropGUI.getiDropCore().getIrodsFileSystem()); + } catch (Exception ex) { + //JOptionPane.showMessageDialog(this, "Cannot access iRODS file system for get."); + log.error("cannot create irods file service"); + return; + } + + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) irodsTree.getModel(); + ListSelectionModel selectionModel = irodsTree.getSelectionModel(); + int idxStart = selectionModel.getMinSelectionIndex(); + int idxEnd = selectionModel.getMaxSelectionIndex(); + + // now collect all selected nodes + IRODSFile ifile = null; + //final List<File> sourceFiles = new ArrayList<File>(); + for (int idx = idxStart; idx <= idxEnd; idx++) { + if (selectionModel.isSelectedIndex(idx)) { + try { + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt(idx, 0); + ifile = irodsFS.getIRODSFileForPath(selectedNode.getFullPath()); + // rule out "/" + String path = ifile.getAbsolutePath(); + if ((path != null) && (!path.equals("/"))) { + txtCurrentParent.append(path + "\n"); + } + } catch (IdropException ex) { + Exceptions.printStackTrace(ex); + } + } + } + } + + private void setCopyMoveButtonsState() { + boolean state = ((txtNewLocation.getText().length() > 0) && + (txtCurrentParent.getText().length() > 0)); + btnCopy.setEnabled(state); + btnMove.setEnabled(state); + } + + private void processMoveOrCopy(final boolean isCopy) { + // add the new folder to irods, add to the tree, and scroll the tree + // into view + final CopyMoveDialog thisDialog = this; + final String targetAbsolutePath = txtNewLocation.getText(); + final String sourceFiles[] = txtCurrentParent.getText().split("\n"); + + log.info("processing move or copy"); + java.awt.EventQueue.invokeLater(new Runnable() { + + @Override + public void run() { + IRODSFile irodsFile = null; + try { + log.info("processing move of a file in iRODS tree"); + thisDialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + DataTransferOperations dataTransferOperations; + try { + dataTransferOperations = idropGUI.getiDropCore().getIRODSAccessObjectFactory().getDataTransferOperations( + idropGUI.getIrodsAccount()); + } catch (Exception e) { + idropGUI.getiDropCore().closeIRODSConnection( + idropGUI.getIrodsAccount()); + thisDialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + throw new IdropRuntimeException(e); + } + + List<IRODSFile> filesThatHadOverwriteError = new ArrayList<IRODSFile>(); + + if (sourceFiles.length == 1) { + //IRODSFile irodsFile = null; + log.info("processing the move/copy for one file:{}", + sourceFiles[0]); + try { + irodsFile = + idropGUI.getiDropCore().getIRODSFileFactoryForLoggedInAccount().instanceIRODSFile(sourceFiles[0]); + if (isCopy) { + processACopyOfAnIndividualFile( + dataTransferOperations, irodsFile, + targetAbsolutePath); + } else { + processAMoveOfAnIndividualFile( + dataTransferOperations, irodsFile, + targetAbsolutePath); + } + } catch (JargonFileOrCollAlreadyExistsException ex) { + Logger.getLogger( + MoveOrCopyiRODSDialog.class.getName()).log( + Level.SEVERE, null, ex); + filesThatHadOverwriteError.add(irodsFile); + } catch (JargonException je) { + if (je.getMessage().indexOf("-834000") > -1 + || je.getMessage().indexOf("-833000") > -1) { + filesThatHadOverwriteError.add(irodsFile); + } else { + throw new IdropException(je); + } + } + } else if (sourceFiles.length > 1) { + log.info("processing move/copy of multiple files"); + for (String sourceFileEntry : sourceFiles) { + + try { + irodsFile = + idropGUI.getiDropCore().getIRODSFileFactoryForLoggedInAccount().instanceIRODSFile(sourceFileEntry); + if (isCopy) { + processACopyOfAnIndividualFile( + dataTransferOperations, + irodsFile, targetAbsolutePath); + } else { + processAMoveOfAnIndividualFile( + dataTransferOperations, + irodsFile, targetAbsolutePath); + } + } catch (JargonFileOrCollAlreadyExistsException ex) { + // FIXME: fix in jargon core to differentiate! + Logger.getLogger( + MoveOrCopyiRODSDialog.class.getName()).log(Level.SEVERE, null, ex); + filesThatHadOverwriteError.add(irodsFile); + } catch (JargonException je) { + if (je.getMessage().indexOf("-834000") > -1 + || je.getMessage().indexOf("-833000") > -1) { + filesThatHadOverwriteError.add(irodsFile); + } else { + throw new IdropException(je); + } + } + } + } + + log.debug("move done"); + if (!isCopy) { + if (filesThatHadOverwriteError.isEmpty()) { + idropGUI.showMessageFromOperation("irods move processed"); + } else { + idropGUI.showMessageFromOperation("irods move processed, some files were not moved as files of the same name already existed"); + } + } else { + idropGUI.showMessageFromOperation("The file copy operation has been placed on the work queue"); + } + thisDialog.dispose(); + + } catch (IdropException ex) { + Logger.getLogger(IRODSTree.class.getName()).log( + Level.SEVERE, null, ex); + idropGUI.showIdropException(ex); + return; + } finally { + thisDialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + idropGUI.getiDropCore().closeIRODSConnection( + idropGUI.getIrodsAccount()); + } + } + }); + } + + private void processAMoveOfAnIndividualFile( + final DataTransferOperations dataTransferOperations, + final IRODSFile sourceFile, final String targetAbsolutePath) + throws JargonFileOrCollAlreadyExistsException, IdropException { + + try { + + boolean isFile = sourceFile.isFile(); + IRODSFile targetFile = idropGUI.getiDropCore().getIRODSFileFactoryForLoggedInAccount().instanceIRODSFile(targetAbsolutePath); + + dataTransferOperations.move(sourceFile.getAbsolutePath(), + targetAbsolutePath); + + String targetPathForNotify = null; + if (isFile) { + log.debug("source file is a file, do a move"); + + if (targetFile.isDirectory()) { + targetPathForNotify = targetFile.getAbsolutePath() + "/" + + sourceFile.getName(); + } else { + targetPathForNotify = targetFile.getAbsolutePath(); + } + + irodsFileSystemModel.notifyFileShouldBeAdded(irodsTree, + targetPathForNotify); + + } else { + log.debug("source file is a collection, reparent it"); + targetPathForNotify = targetFile.getAbsolutePath() + "/" + + sourceFile.getName(); + + irodsFileSystemModel.notifyFileShouldBeAdded(irodsTree, + targetPathForNotify); + } + } catch (JargonFileOrCollAlreadyExistsException fcae) { + throw fcae; + } catch (JargonException je) { + throw new IdropException(je); + } + + TreePath sourceNodePath = TreeUtils.buildTreePathForIrodsAbsolutePath( + irodsTree, sourceFile.getAbsolutePath()); + if (sourceNodePath == null) { + log.info("could not find tree path for source node, ignore"); + return; + } + IRODSNode sourceNode = (IRODSNode) sourceNodePath.getLastPathComponent(); + irodsFileSystemModel.notifyFileShouldBeRemoved(sourceNode); + } + + private void processACopyOfAnIndividualFile( + final DataTransferOperations dataTransferOperations, + final IRODSFile sourceFile, final String targetAbsolutePath) + throws IdropException { + try { + dataTransferOperations.copy(sourceFile.getAbsolutePath(), + idropGUI.getiDropCore().getIrodsAccount().getDefaultStorageResource(), + targetAbsolutePath, + null, + null); + //idropGUI.getiDropCore().getTransferManager().enqueueACopy(sourceFile.getAbsolutePath(), + //sourceFile.getResource(), targetAbsolutePath, + //idropGUI.getiDropCore().getIrodsAccount()); + + } catch (JargonException ex) { + Logger.getLogger(MoveOrCopyiRODSDialog.class.getName()).log( + Level.SEVERE, null, ex); + throw new IdropException( + "unable to copy file due to JargonException", ex); + } + + // notifications are done at completion of transfer using status + // callbacks + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + pnlFolderData = new javax.swing.JPanel(); + pnlCurrentParent = new javax.swing.JPanel(); + jPanel1 = new javax.swing.JPanel(); + lblCurrentParent = new java.awt.Label(); + scrollCurrentParent = new javax.swing.JScrollPane(); + txtCurrentParent = new javax.swing.JTextArea(); + jPanel2 = new javax.swing.JPanel(); + lblNewDiretoryName = new java.awt.Label(); + txtNewLocation = new javax.swing.JTextField(); + btnBrowse = new javax.swing.JButton(); + pnlBottom = new javax.swing.JPanel(); + btnCancel = new javax.swing.JButton(); + btnMove = new javax.swing.JButton(); + btnCopy = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.title")); // NOI18N + setPreferredSize(new java.awt.Dimension(590, 260)); + + pnlFolderData.setPreferredSize(new java.awt.Dimension(540, 240)); + pnlFolderData.setLayout(new java.awt.BorderLayout()); + + pnlCurrentParent.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 4, 10, 4)); + pnlCurrentParent.setPreferredSize(new java.awt.Dimension(500, 190)); + pnlCurrentParent.setLayout(new java.awt.BorderLayout()); + + jPanel1.setPreferredSize(new java.awt.Dimension(500, 125)); + + lblCurrentParent.setText(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.lblCurrentParent.text")); // NOI18N + + scrollCurrentParent.setPreferredSize(new java.awt.Dimension(360, 100)); + + txtCurrentParent.setEditable(false); + txtCurrentParent.setColumns(20); + txtCurrentParent.setRows(5); + txtCurrentParent.setWrapStyleWord(true); + txtCurrentParent.setFocusable(false); + txtCurrentParent.setPreferredSize(new java.awt.Dimension(290, 90)); + scrollCurrentParent.setViewportView(txtCurrentParent); + + org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .add(lblCurrentParent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(scrollCurrentParent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 426, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(31, Short.MAX_VALUE)) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel1Layout.createSequentialGroup() + .add(45, 45, 45) + .add(lblCurrentParent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(jPanel1Layout.createSequentialGroup() + .add(5, 5, 5) + .add(scrollCurrentParent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + ); + + pnlCurrentParent.add(jPanel1, java.awt.BorderLayout.NORTH); + + jPanel2.setPreferredSize(new java.awt.Dimension(500, 60)); + jPanel2.setRequestFocusEnabled(false); + + lblNewDiretoryName.setText(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.lblNewDiretoryName.text")); // NOI18N + + txtNewLocation.setText(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.txtNewLocation.text")); // NOI18N + txtNewLocation.setPreferredSize(new java.awt.Dimension(360, 28)); + + btnBrowse.setLabel(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.btnBrowse.label")); // NOI18N + btnBrowse.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnBrowseActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel2Layout.createSequentialGroup() + .addContainerGap() + .add(lblNewDiretoryName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 111, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(txtNewLocation, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 320, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(btnBrowse, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 100, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(30, 30, 30)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel2Layout.createSequentialGroup() + .add(9, 9, 9) + .add(lblNewDiretoryName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(jPanel2Layout.createSequentialGroup() + .add(5, 5, 5) + .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(txtNewLocation, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(btnBrowse))) + ); + + pnlCurrentParent.add(jPanel2, java.awt.BorderLayout.SOUTH); + + pnlFolderData.add(pnlCurrentParent, java.awt.BorderLayout.CENTER); + + pnlBottom.setPreferredSize(new java.awt.Dimension(708, 40)); + + btnCancel.setText(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.btnCancel.text")); // NOI18N + btnCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCancelActionPerformed(evt); + } + }); + + btnMove.setText(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.btnMove.text")); // NOI18N + btnMove.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMoveActionPerformed(evt); + } + }); + + btnCopy.setText(org.openide.util.NbBundle.getMessage(CopyMoveDialog.class, "CopyMoveDialog.btnCopy.text")); // NOI18N + btnCopy.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCopyActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout pnlBottomLayout = new org.jdesktop.layout.GroupLayout(pnlBottom); + pnlBottom.setLayout(pnlBottomLayout); + pnlBottomLayout.setHorizontalGroup( + pnlBottomLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlBottomLayout.createSequentialGroup() + .add(338, 338, 451) + .add(btnCancel) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(btnMove) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(btnCopy) + .addContainerGap()) + ); + pnlBottomLayout.setVerticalGroup( + pnlBottomLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlBottomLayout.createSequentialGroup() + .add(5, 5, 5) + .add(pnlBottomLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(btnCancel) + .add(btnMove) + .add(btnCopy))) + ); + + pnlFolderData.add(pnlBottom, java.awt.BorderLayout.SOUTH); + + getContentPane().add(pnlFolderData, java.awt.BorderLayout.CENTER); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed + this.dispose(); + }//GEN-LAST:event_btnCancelActionPerformed + + private void btnMoveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMoveActionPerformed + processMoveOrCopy(false); + }//GEN-LAST:event_btnMoveActionPerformed + + private void btnBrowseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBrowseActionPerformed + IRODSFinderDialog irodsFinder = new IRODSFinderDialog( + idropGUI, false, idropGUI.getiDropCore()); + irodsFinder.setTitle("Select iRODS Collection Upload Target"); + irodsFinder.setSelectionType(IRODSFinderDialog.SelectionType.COLLS_ONLY_SELECTION_MODE); + irodsFinder.setLocation( + (int)this.getLocation().getX(), (int)this.getLocation().getY()); + irodsFinder.setVisible(true); + + String selectedPath = irodsFinder.getSelectedAbsolutePath(); + if (selectedPath != null) { + txtNewLocation.setText(selectedPath); + } + setCopyMoveButtonsState(); + }//GEN-LAST:event_btnBrowseActionPerformed + + private void btnCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCopyActionPerformed + processMoveOrCopy(true); + }//GEN-LAST:event_btnCopyActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnBrowse; + private javax.swing.JButton btnCancel; + private javax.swing.JButton btnCopy; + private javax.swing.JButton btnMove; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private java.awt.Label lblCurrentParent; + private java.awt.Label lblNewDiretoryName; + private javax.swing.JPanel pnlBottom; + private javax.swing.JPanel pnlCurrentParent; + private javax.swing.JPanel pnlFolderData; + private javax.swing.JScrollPane scrollCurrentParent; + private javax.swing.JTextArea txtCurrentParent; + private javax.swing.JTextField txtNewLocation; + // End of variables declaration//GEN-END:variables +} diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.form index c843416..0ceaf86 100644 --- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.form +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.form @@ -1,4 +1,4 @@ -<?xml version="1.1" encoding="UTF-8" ?> +<?xml version="1.0" encoding="UTF-8" ?> <Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> <Properties> @@ -50,7 +50,7 @@ <DimensionLayout dim="0"> <Group type="103" groupAlignment="0" attributes="0"> <Group type="102" alignment="1" attributes="0"> - <EmptySpace pref="40" max="32767" attributes="0"/> + <EmptySpace pref="54" max="32767" attributes="0"/> <Component id="lblCurrentFolder" min="-2" max="-2" attributes="0"/> <EmptySpace max="-2" attributes="0"/> <Component id="scrollFileToDelete" min="-2" pref="413" max="-2" attributes="1"/> @@ -71,7 +71,7 @@ <Component id="scrollFileToDelete" min="-2" max="-2" attributes="0"/> </Group> </Group> - <EmptySpace max="32767" attributes="0"/> + <EmptySpace pref="20" max="32767" attributes="0"/> </Group> </Group> </DimensionLayout> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.java index 633fb04..51ab48f 100644 --- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.java +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DeleteIRODSDialog.java @@ -71,7 +71,22 @@ public class DeleteIRODSDialog extends javax.swing.JDialog { this.deletedNodes = deletedNodes; this.deletedNode = null; initialize(); - txtAreaFileToDelete.setText("multiple selections"); + int deletedNodesCount = deletedNodes.size(); + for(int idx=0; idx<deletedNodesCount; idx++) { + CollectionAndDataObjectListingEntry entry = + (CollectionAndDataObjectListingEntry) deletedNodes.get(idx).getUserObject(); + if (entry.getObjectType() == CollectionAndDataObjectListingEntry.ObjectType.COLLECTION) { + txtAreaFileToDelete.append(entry.getPathOrName()); + } else { + txtAreaFileToDelete.append(entry.getParentPath()); + txtAreaFileToDelete.append("/"); + txtAreaFileToDelete.append(entry.getPathOrName()); + } + if (idx < deletedNodesCount-1 ) { + txtAreaFileToDelete.append("\n"); + } + } + //txtAreaFileToDelete.setText("multiple selections"); } private void initialize() { diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DownloadDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DownloadDialog.form new file mode 100644 index 0000000..66ab6a1 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DownloadDialog.form @@ -0,0 +1,383 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="DownloadDialog.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 420]"/> + </Property> + </Properties> + <AccessibilityProperties> + <Property name="AccessibleContext.accessibleName" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="DownloadDialog.AccessibleContext.accessibleName" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </AccessibilityProperties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-112,0,0,2,-121"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Properties> + <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="6" left="6" right="6" top="6"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 350]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel3"> + <Properties> + <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="4" right="4" top="14"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[303, 250]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel2"> + <Properties> + <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="DownloadDialog.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="tblFilesToDownload"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="1" rowCount="0"> + <Column editable="false" title="File" type="java.lang.String"/> + </Table> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel6"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 25]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel16"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"> + <Property name="horizontalGap" type="int" value="1"/> + <Property name="verticalGap" type="int" value="1"/> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnAddDownloadFile"> + <Properties> + <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="DownloadDialog.btnAddDownloadFile.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[22, 24]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnAddDownloadFileActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnDeleteDownloadFile"> + <Properties> + <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="DownloadDialog.btnDeleteDownloadFile.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[22, 24]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDeleteDownloadFileActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel4"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[240, 76]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel9"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 32]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel11"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[400, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel1"> + <Properties> + <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="DownloadDialog.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtDownloadTarget"> + <Properties> + <Property name="editable" type="boolean" value="false"/> + <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="DownloadDialog.txtDownloadTarget.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[220, 28]"/> + </Property> + <Property name="requestFocusEnabled" type="boolean" value="false"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel12"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[200, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnBrowseDownloadTarget"> + <Properties> + <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="DownloadDialog.btnBrowseDownloadTarget.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnBrowseDownloadTargetActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel10"> + <Properties> + <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="10" left="1" right="1" top="1"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel13"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + </Container> + <Container class="javax.swing.JPanel" name="jPanel14"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[430, 40]"/> + </Property> + <Property name="requestFocusEnabled" type="boolean" value="false"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnUseLocaLHome"> + <Properties> + <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="DownloadDialog.btnUseLocaLHome.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUseLocaLHomeActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnUseLastDownload"> + <Properties> + <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="DownloadDialog.btnUseLastDownload.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUseLastDownloadActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel2"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel15"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnDownloadNow"> + <Properties> + <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="DownloadDialog.btnDownloadNow.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDownloadNowActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnCancel"> + <Properties> + <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="DownloadDialog.btnCancel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DownloadDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DownloadDialog.java new file mode 100644 index 0000000..045e3d6 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/DownloadDialog.java @@ -0,0 +1,536 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.irods.jargon.idrop.desktop.systraygui; + +import java.awt.Cursor; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import javax.swing.JFileChooser; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.tree.TreePath; +import org.irods.jargon.core.exception.JargonException; +import org.irods.jargon.core.pub.io.IRODSFile; +import org.irods.jargon.core.utils.MiscIRODSUtils; +import org.irods.jargon.idrop.desktop.systraygui.services.IRODSFileService; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSOutlineModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSTree; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileTree; +import org.irods.jargon.idrop.exceptions.IdropException; +import org.irods.jargon.idrop.exceptions.IdropRuntimeException; +import org.irods.jargon.idrop.finder.IRODSFinderDialog; +import org.irods.jargon.transfer.dao.domain.LocalIRODSTransfer; +import org.irods.jargon.transfer.dao.domain.TransferType; +import org.openide.util.Exceptions; +import org.slf4j.LoggerFactory; + +/** + * + * @author lisa + */ +public class DownloadDialog extends javax.swing.JDialog implements ListSelectionListener { + + iDrop idropGUI; + IRODSTree irodsTree; + LocalFileTree localFileTree; + public static org.slf4j.Logger log = LoggerFactory.getLogger(IRODSTree.class); + + /** + * Creates new form DownloadDialog + */ + public DownloadDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + public DownloadDialog(final iDrop parent, final boolean modal, + final IRODSTree irodsTree, + final LocalFileTree localFileTree) { + super(parent, modal); + initComponents(); + + this.idropGUI = parent; + this.irodsTree = irodsTree; + this.localFileTree = localFileTree; + this.btnDeleteDownloadFile.setEnabled(false); + tblFilesToDownload.getSelectionModel().addListSelectionListener(this); + + initDownloadTarget(); + initSourcesFiles(); + setDownloadButtonState(); + } + + private void initDownloadTarget() { + + String target = ""; + + //first check to see if a download target is selected in the local file tree + TreePath treePath = localFileTree.getSelectionPath(); + if(treePath != null) { + LocalFileNode selectedFileNode = (LocalFileNode) localFileTree.getSelectionPath().getLastPathComponent(); + File targetPath = (File) selectedFileNode.getUserObject(); + if (targetPath.isDirectory()) { + target = targetPath.getAbsolutePath(); + } + } +// else { +// // next see if can find some get history in the transfer queue +// try { +// List<LocalIRODSTransfer> transfers = idropGUI.getiDropCore().getTransferManager().getRecentQueue(); +// +// // assuming most recent first +// for (LocalIRODSTransfer transfer: transfers) { +// if (transfer.getTransferType() == TransferType.GET) { +// target = transfer.getLocalAbsolutePath(); +// break; +// } +// } +// } catch (JargonException ex) { +// Exceptions.printStackTrace(ex); +// } +// } + + txtDownloadTarget.setText(target); + } + + private void initSourcesFiles() { + //check for selected objects and/or collections to download + // get iRODS File Service + IRODSFileService irodsFS = null; + try { + irodsFS = new IRODSFileService(idropGUI.getiDropCore().getIrodsAccount(), + idropGUI.getiDropCore().getIrodsFileSystem()); + } catch (Exception ex) { + //JOptionPane.showMessageDialog(this, "Cannot access iRODS file system for get."); + log.error("cannot create irods file service"); + return; + } + + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) irodsTree.getModel(); + ListSelectionModel selectionModel = irodsTree.getSelectionModel(); + int idxStart = selectionModel.getMinSelectionIndex(); + int idxEnd = selectionModel.getMaxSelectionIndex(); + + // now collect all selected nodes + List<IRODSFile> ifiles = new ArrayList<IRODSFile>(); + + for (int idx = idxStart; idx <= idxEnd; idx++) { + if (selectionModel.isSelectedIndex(idx)) { + try { + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt(idx, 0); + ifiles.add(irodsFS.getIRODSFileForPath(selectedNode.getFullPath())); + } catch (IdropException ex) { + Exceptions.printStackTrace(ex); + } + } + } + + setFilesToDownload(ifiles); + } + + private void executeDownload() { + + idropGUI.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + final String targetPath = txtDownloadTarget.getText(); + final String sourceFiles[] = getFilesToDownload(); + + + // process as a get + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + for (String transferFile : sourceFiles) { + log.info("initiating a transfer of iRODS file:{}", + transferFile); + log.info("transfer to local file:{}", + targetPath); + try { + idropGUI.getiDropCore().getTransferManager().enqueueAGet( + transferFile, + targetPath, + "", idropGUI.getIrodsAccount()); + } catch (JargonException ex) { + java.util.logging.Logger.getLogger( + LocalFileTree.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + idropGUI.showIdropException(ex); + } + } + } + }); + idropGUI.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + + private void setDownloadButtonState() { + btnDownloadNow.setEnabled(((txtDownloadTarget.getText().length() > 0) && + (tblFilesToDownload.getModel().getRowCount() > 0))); + } + + private void setFilesToDownload(List<IRODSFile> ifiles) { + + DefaultTableModel model = (DefaultTableModel) tblFilesToDownload.getModel(); + + for(int i=0; i<ifiles.size(); i++) { + String filePath = ifiles.get(i).getAbsolutePath(); + model.addRow(new Object[] {filePath}); + } + } + + private String[] getFilesToDownload() { + + int numFiles = 0; + DefaultTableModel model = (DefaultTableModel) tblFilesToDownload.getModel(); + numFiles = model.getRowCount(); + String[] filesToDownload = new String[numFiles]; + + for (int i=0; i<numFiles; i++) { + filesToDownload[i] = (String) model.getValueAt(i, 0); + } + + return filesToDownload; + } + + + @Override + public void valueChanged(ListSelectionEvent lse) { + if (lse.getValueIsAdjusting() == false) { + btnDeleteDownloadFile.setEnabled(tblFilesToDownload.getSelectedRow() >= 0); + } + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel3 = new javax.swing.JPanel(); + jLabel2 = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + tblFilesToDownload = new javax.swing.JTable(); + jPanel6 = new javax.swing.JPanel(); + jPanel16 = new javax.swing.JPanel(); + btnAddDownloadFile = new javax.swing.JButton(); + btnDeleteDownloadFile = new javax.swing.JButton(); + jPanel4 = new javax.swing.JPanel(); + jPanel9 = new javax.swing.JPanel(); + jPanel11 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + txtDownloadTarget = new javax.swing.JTextField(); + jPanel12 = new javax.swing.JPanel(); + btnBrowseDownloadTarget = new javax.swing.JButton(); + jPanel10 = new javax.swing.JPanel(); + jPanel13 = new javax.swing.JPanel(); + jPanel14 = new javax.swing.JPanel(); + btnUseLocaLHome = new javax.swing.JButton(); + btnUseLastDownload = new javax.swing.JButton(); + jPanel2 = new javax.swing.JPanel(); + jPanel15 = new javax.swing.JPanel(); + btnDownloadNow = new javax.swing.JButton(); + btnCancel = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.title")); // NOI18N + setPreferredSize(new java.awt.Dimension(600, 420)); + + jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(6, 6, 6, 6)); + jPanel1.setPreferredSize(new java.awt.Dimension(600, 350)); + jPanel1.setLayout(new java.awt.BorderLayout()); + + jPanel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(14, 4, 1, 4)); + jPanel3.setPreferredSize(new java.awt.Dimension(303, 250)); + jPanel3.setLayout(new java.awt.BorderLayout()); + + jLabel2.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.jLabel2.text")); // NOI18N + jPanel3.add(jLabel2, java.awt.BorderLayout.NORTH); + + tblFilesToDownload.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "File" + } + ) { + Class[] types = new Class [] { + java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPane1.setViewportView(tblFilesToDownload); + + jPanel3.add(jScrollPane1, java.awt.BorderLayout.CENTER); + + jPanel6.setPreferredSize(new java.awt.Dimension(100, 25)); + jPanel6.setLayout(new java.awt.BorderLayout()); + + jPanel16.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 1, 1)); + + btnAddDownloadFile.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnAddDownloadFile.text")); // NOI18N + btnAddDownloadFile.setPreferredSize(new java.awt.Dimension(22, 24)); + btnAddDownloadFile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddDownloadFileActionPerformed(evt); + } + }); + jPanel16.add(btnAddDownloadFile); + + btnDeleteDownloadFile.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnDeleteDownloadFile.text")); // NOI18N + btnDeleteDownloadFile.setPreferredSize(new java.awt.Dimension(22, 24)); + btnDeleteDownloadFile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteDownloadFileActionPerformed(evt); + } + }); + jPanel16.add(btnDeleteDownloadFile); + + jPanel6.add(jPanel16, java.awt.BorderLayout.WEST); + + jPanel3.add(jPanel6, java.awt.BorderLayout.SOUTH); + + jPanel1.add(jPanel3, java.awt.BorderLayout.NORTH); + + jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jPanel4.setPreferredSize(new java.awt.Dimension(240, 76)); + jPanel4.setLayout(new java.awt.BorderLayout()); + + jPanel9.setPreferredSize(new java.awt.Dimension(600, 32)); + jPanel9.setLayout(new java.awt.BorderLayout()); + + jPanel11.setPreferredSize(new java.awt.Dimension(400, 40)); + + jLabel1.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.jLabel1.text")); // NOI18N + jPanel11.add(jLabel1); + + txtDownloadTarget.setEditable(false); + txtDownloadTarget.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.txtDownloadTarget.text")); // NOI18N + txtDownloadTarget.setPreferredSize(new java.awt.Dimension(220, 28)); + txtDownloadTarget.setRequestFocusEnabled(false); + jPanel11.add(txtDownloadTarget); + + jPanel9.add(jPanel11, java.awt.BorderLayout.WEST); + + jPanel12.setPreferredSize(new java.awt.Dimension(200, 40)); + + btnBrowseDownloadTarget.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnBrowseDownloadTarget.text")); // NOI18N + btnBrowseDownloadTarget.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnBrowseDownloadTargetActionPerformed(evt); + } + }); + jPanel12.add(btnBrowseDownloadTarget); + + jPanel9.add(jPanel12, java.awt.BorderLayout.EAST); + + jPanel4.add(jPanel9, java.awt.BorderLayout.NORTH); + + jPanel10.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 10, 1)); + jPanel10.setPreferredSize(new java.awt.Dimension(600, 40)); + jPanel10.setLayout(new java.awt.BorderLayout()); + + jPanel13.setPreferredSize(new java.awt.Dimension(100, 40)); + jPanel10.add(jPanel13, java.awt.BorderLayout.WEST); + + jPanel14.setPreferredSize(new java.awt.Dimension(430, 40)); + jPanel14.setRequestFocusEnabled(false); + + btnUseLocaLHome.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnUseLocaLHome.text")); // NOI18N + btnUseLocaLHome.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUseLocaLHomeActionPerformed(evt); + } + }); + jPanel14.add(btnUseLocaLHome); + + btnUseLastDownload.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnUseLastDownload.text")); // NOI18N + btnUseLastDownload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUseLastDownloadActionPerformed(evt); + } + }); + jPanel14.add(btnUseLastDownload); + + jPanel10.add(jPanel14, java.awt.BorderLayout.EAST); + + jPanel4.add(jPanel10, java.awt.BorderLayout.SOUTH); + + jPanel1.add(jPanel4, java.awt.BorderLayout.SOUTH); + + getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH); + + jPanel2.setLayout(new java.awt.BorderLayout()); + + btnDownloadNow.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnDownloadNow.text")); // NOI18N + btnDownloadNow.setEnabled(false); + btnDownloadNow.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDownloadNowActionPerformed(evt); + } + }); + jPanel15.add(btnDownloadNow); + + btnCancel.setText(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.btnCancel.text")); // NOI18N + btnCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCancelActionPerformed(evt); + } + }); + jPanel15.add(btnCancel); + + jPanel2.add(jPanel15, java.awt.BorderLayout.EAST); + + getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH); + + getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(DownloadDialog.class, "DownloadDialog.AccessibleContext.accessibleName")); // NOI18N + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void btnBrowseDownloadTargetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBrowseDownloadTargetActionPerformed + + JFileChooser localFileChooser = new JFileChooser(); + localFileChooser.setMultiSelectionEnabled(false); + localFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + localFileChooser.setDialogTitle("Select Download Target"); + localFileChooser.setLocation( + (int)this.getLocation().getX(), (int)this.getLocation().getY()); + int returnVal = localFileChooser.showOpenDialog(this); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + String downloadPath = localFileChooser.getSelectedFile().getAbsolutePath(); + txtDownloadTarget.setText(downloadPath); + setDownloadButtonState(); + } + }//GEN-LAST:event_btnBrowseDownloadTargetActionPerformed + + private void btnUseLocaLHomeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUseLocaLHomeActionPerformed + String target = System.getProperty("user.home"); + + if (target != null) { + txtDownloadTarget.setText(target); + } + setDownloadButtonState(); + }//GEN-LAST:event_btnUseLocaLHomeActionPerformed + + private void btnUseLastDownloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUseLastDownloadActionPerformed + String target = ""; + // see if can find some get history in the transfer queue + try { + List<LocalIRODSTransfer> transfers = idropGUI.getiDropCore().getTransferManager().getRecentQueue(); + + // assuming most recent first + for (LocalIRODSTransfer transfer: transfers) { + // must check to match type, user, host, zone, & resource + if ((transfer.getTransferType() == TransferType.GET) && + (transfer.getTransferUserName().equals(idropGUI.getiDropCore().getIrodsAccount().getUserName())) && + (transfer.getTransferZone().equals(idropGUI.getiDropCore().getIrodsAccount().getZone())) && + (transfer.getTransferPort() == idropGUI.getiDropCore().getIrodsAccount().getPort()) && + (transfer.getTransferHost().equals(idropGUI.getiDropCore().getIrodsAccount().getHost()))) { + target = transfer.getLocalAbsolutePath(); + break; + } + } + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + if (target != null) { + txtDownloadTarget.setText(target); + } + setDownloadButtonState(); + }//GEN-LAST:event_btnUseLastDownloadActionPerformed + + private void btnAddDownloadFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddDownloadFileActionPerformed + IRODSFinderDialog irodsFinder = new IRODSFinderDialog( + idropGUI, false, idropGUI.getiDropCore()); + irodsFinder.setTitle("Select iRODS Files and Collections for download"); + irodsFinder.setSelectionType(IRODSFinderDialog.SelectionType.OBJS_AND_COLLS_SELECTION_MODE); + irodsFinder.setLocation( + (int)this.getLocation().getX(), (int)this.getLocation().getY()); + irodsFinder.setVisible(true); + + List<String> selectedPaths = irodsFinder.getSelectedAbsolutePaths(); + for (String selectedPath: selectedPaths) { + if (selectedPath != null) { + DefaultTableModel model = (DefaultTableModel) tblFilesToDownload.getModel(); + model.addRow(new Object[] {selectedPath}); + } + } + setDownloadButtonState(); + }//GEN-LAST:event_btnAddDownloadFileActionPerformed + + private void btnDeleteDownloadFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteDownloadFileActionPerformed + + int[] selectedRows = tblFilesToDownload.getSelectedRows(); + int numRowsSelected = selectedRows.length; + + // have to remove rows in reverse + for(int i=numRowsSelected-1; i>=0; i--) { + //for (int selectedRow: selectedRows) { + int selectedRow = selectedRows[i]; + if (selectedRow >= 0) { + DefaultTableModel model = (DefaultTableModel) tblFilesToDownload.getModel(); + model.removeRow(selectedRow); + } + } + }//GEN-LAST:event_btnDeleteDownloadFileActionPerformed + + private void btnDownloadNowActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadNowActionPerformed + executeDownload(); + this.dispose(); + }//GEN-LAST:event_btnDownloadNowActionPerformed + + private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed + this.dispose(); + }//GEN-LAST:event_btnCancelActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnAddDownloadFile; + private javax.swing.JButton btnBrowseDownloadTarget; + private javax.swing.JButton btnCancel; + private javax.swing.JButton btnDeleteDownloadFile; + private javax.swing.JButton btnDownloadNow; + private javax.swing.JButton btnUseLastDownload; + private javax.swing.JButton btnUseLocaLHome; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel10; + private javax.swing.JPanel jPanel11; + private javax.swing.JPanel jPanel12; + private javax.swing.JPanel jPanel13; + private javax.swing.JPanel jPanel14; + private javax.swing.JPanel jPanel15; + private javax.swing.JPanel jPanel16; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel9; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTable tblFilesToDownload; + private javax.swing.JTextField txtDownloadTarget; + // End of variables declaration//GEN-END:variables + +} diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java index 2f263b5..e395fb6 100644 --- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java @@ -1883,6 +1883,11 @@ public class IDROPConfigurationPanel extends javax.swing.JDialog { throw new IdropRuntimeException("error getting resource list", ex); } } + // check to see if default resource editing is allowed + String allowEdit = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.IDROP_ENABLE_RESC_EDIT); + if (allowEdit != null && allowEdit.equals("false")) { + comboPrefsDefaultResource.setEnabled(false); + } } protected void updateDetailsForSelectedSynch(int i) { diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IRODSInfoDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IRODSInfoDialog.form new file mode 100644 index 0000000..6a4a44b --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IRODSInfoDialog.form @@ -0,0 +1,1457 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.6" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <NonVisualComponents> + <Container class="javax.swing.JPanel" name="jPanel2"> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <EmptySpace min="0" pref="100" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <EmptySpace min="0" pref="100" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + </Layout> + </Container> + </NonVisualComponents> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[560, 720]"/> + </Property> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,3,-63,0,0,2,97"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Properties> + <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="10" left="10" right="10" top="14"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 750]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlSelectedObject"> + <Properties> + <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="4" right="4" top="1"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[528, 70]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="First"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="lblObjectCollection" pref="140" max="32767" attributes="0"/> + <Component id="jLabel2" max="32767" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="lblInfoObjectName" pref="362" max="32767" attributes="0"/> + <Component id="lblInfoObjectParent" max="32767" attributes="0"/> + </Group> + <EmptySpace pref="67" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="lblObjectCollection" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectName" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel2" alignment="3" min="-2" pref="20" max="-2" attributes="0"/> + <Component id="lblInfoObjectParent" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace pref="19" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="lblObjectCollection"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Lucida Grande" size="14" style="0"/> + </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="IRODSInfoDialog.lblObjectCollection.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel2"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Lucida Grande" size="14" style="0"/> + </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="IRODSInfoDialog.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectName"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectName.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectParent"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectParent.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JTabbedPane" name="tabbedpanelMain"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 867]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlInfoTab"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Info"> + <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="IRODSInfoDialog.pnlInfoTab.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlInfoCards"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[555, 640]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlCollectionInfo"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[515, 500]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription"> + <CardConstraints cardName="cardCollectionInfo"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="1" max="-2" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel22" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel23" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel24" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel25" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel26" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel27" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="24" pref="24" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lblInfoCollectionOwnerZone" alignment="0" pref="400" max="32767" attributes="0"/> + <Component id="lblInfoCollectionType" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoCollectionObjectPath" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoCollectionDescription" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoCollectionInfo1" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoCollectionInfo2" alignment="0" max="32767" attributes="0"/> + </Group> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel19" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel20" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel21" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="47" pref="47" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="lblInfoCollectionCreatedDate" alignment="0" pref="400" max="32767" attributes="0"/> + <Component id="lblInfoCollectionModifiedDate" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoCollectionOwner" alignment="0" max="32767" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="24" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel19" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionCreatedDate" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel20" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionModifiedDate" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel21" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionOwner" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel22" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionOwnerZone" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel23" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionType" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel24" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionObjectPath" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel25" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionDescription" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel26" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionInfo1" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="separate" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel27" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoCollectionInfo2" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace pref="289" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel19"> + <Properties> + <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="IRODSInfoDialog.jLabel19.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel20"> + <Properties> + <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="IRODSInfoDialog.jLabel20.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel21"> + <Properties> + <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="IRODSInfoDialog.jLabel21.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel22"> + <Properties> + <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="IRODSInfoDialog.jLabel22.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel23"> + <Properties> + <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="IRODSInfoDialog.jLabel23.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel24"> + <Properties> + <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="IRODSInfoDialog.jLabel24.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel25"> + <Properties> + <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="IRODSInfoDialog.jLabel25.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel26"> + <Properties> + <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="IRODSInfoDialog.jLabel26.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel27"> + <Properties> + <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="IRODSInfoDialog.jLabel27.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionCreatedDate"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionCreatedDate.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionModifiedDate"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionModifiedDate.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionOwner"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionOwner.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionOwnerZone"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionOwnerZone.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionType"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionType.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionObjectPath"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionObjectPath.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionDescription"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionDescription.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionInfo1"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionInfo1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoCollectionInfo2"> + <Properties> + <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="IRODSInfoDialog.lblInfoCollectionInfo2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlObjectInfo"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[550, 530]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription"> + <CardConstraints cardName="cardObjectInfo"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel3" alignment="0" min="-2" pref="70" max="-2" attributes="0"/> + <Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel5" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel6" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel7" alignment="0" min="-2" pref="90" max="-2" attributes="0"/> + <Component id="jLabel8" alignment="0" min="-2" pref="90" max="-2" attributes="0"/> + <Component id="jLabel9" alignment="0" min="-2" pref="115" max="-2" attributes="0"/> + <Component id="jLabel10" alignment="0" min="-2" pref="80" max="-2" attributes="0"/> + <Component id="jLabel11" alignment="0" min="-2" pref="70" max="-2" attributes="0"/> + <Component id="jLabel12" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="22" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="lblInfoObjectResource" max="32767" attributes="0"/> + <Component id="lblInfoObjectReplicaNumber" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoObjectSize" alignment="0" pref="370" max="32767" attributes="0"/> + <Component id="lblInfoObjectCreatedDate" max="32767" attributes="0"/> + <Component id="lblInfoObjectModifiedDate" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoObjectOwner" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoObjectOwnerZone" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoObjectDataPath" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoObjectResourceGroup" alignment="0" max="32767" attributes="0"/> + <Component id="lblInfoObjectChecksum" alignment="0" max="32767" attributes="0"/> + </Group> + </Group> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel13" alignment="0" min="-2" pref="125" max="-2" attributes="0"/> + <Component id="jLabel14" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel15" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel16" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lblInfoObjectReplicationStatus" max="32767" attributes="0"/> + <Component id="lblInfoObjectStatus" max="32767" attributes="0"/> + <Component id="lblInfoObjectType" max="32767" attributes="0"/> + <Component id="lblInfoObjectVersion" alignment="0" max="32767" attributes="0"/> + </Group> + </Group> + </Group> + <EmptySpace pref="51" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace min="-2" pref="18" max="-2" attributes="0"/> + <Component id="lblInfoObjectSize" min="-2" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Component id="jLabel3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lblInfoObjectCreatedDate" min="-2" max="-2" attributes="0"/> + <Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectModifiedDate" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lblInfoObjectOwner" min="-2" max="-2" attributes="0"/> + <Component id="jLabel6" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectOwnerZone" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lblInfoObjectDataPath" min="-2" max="-2" attributes="0"/> + <Component id="jLabel8" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel9" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectResourceGroup" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="lblInfoObjectChecksum" min="-2" max="-2" attributes="0"/> + <Component id="jLabel10" alignment="1" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel11" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectResource" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel12" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectReplicaNumber" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel13" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectReplicationStatus" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel14" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectStatus" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel15" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectType" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel16" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="lblInfoObjectVersion" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace pref="281" max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel3"> + <Properties> + <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="IRODSInfoDialog.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel4"> + <Properties> + <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="IRODSInfoDialog.jLabel4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel5"> + <Properties> + <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="IRODSInfoDialog.jLabel5.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel6"> + <Properties> + <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="IRODSInfoDialog.jLabel6.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel7"> + <Properties> + <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="IRODSInfoDialog.jLabel7.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel8"> + <Properties> + <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="IRODSInfoDialog.jLabel8.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel9"> + <Properties> + <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="IRODSInfoDialog.jLabel9.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel10"> + <Properties> + <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="IRODSInfoDialog.jLabel10.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel11"> + <Properties> + <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="IRODSInfoDialog.jLabel11.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel12"> + <Properties> + <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="IRODSInfoDialog.jLabel12.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel13"> + <Properties> + <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="IRODSInfoDialog.jLabel13.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel14"> + <Properties> + <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="IRODSInfoDialog.jLabel14.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel15"> + <Properties> + <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="IRODSInfoDialog.jLabel15.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel16"> + <Properties> + <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="IRODSInfoDialog.jLabel16.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectSize"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectSize.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectCreatedDate"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectCreatedDate.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectModifiedDate"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectModifiedDate.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectOwner"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectOwner.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectOwnerZone"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectOwnerZone.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectDataPath"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectDataPath.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectResourceGroup"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectResourceGroup.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectChecksum"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectChecksum.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectResource"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectResource.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectReplicaNumber"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectReplicaNumber.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectReplicationStatus"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectReplicationStatus.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectStatus"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectStatus.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectType"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectType.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="lblInfoObjectVersion"> + <Properties> + <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="IRODSInfoDialog.lblInfoObjectVersion.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlTagsComments"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel17" min="-2" max="-2" attributes="0"/> + <Component id="jLabel18" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace pref="66" max="32767" attributes="0"/> + <Group type="103" groupAlignment="0" max="-2" attributes="0"> + <Component id="txtInfoTags" max="32767" attributes="0"/> + <Component id="jScrollPane1" pref="408" max="32767" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="6" max="-2" attributes="0"/> + </Group> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + <Component id="btnUpdateTagsComments" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace min="-2" pref="6" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel17" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="txtInfoTags" alignment="3" min="-2" pref="28" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel18" min="-2" max="-2" attributes="0"/> + <Component id="jScrollPane1" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Component id="btnUpdateTagsComments" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel17"> + <Properties> + <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="IRODSInfoDialog.jLabel17.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtInfoTags"> + <Properties> + <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="IRODSInfoDialog.txtInfoTags.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel18"> + <Properties> + <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="IRODSInfoDialog.jLabel18.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTextArea" name="textareaInfoComments"> + <Properties> + <Property name="columns" type="int" value="20"/> + <Property name="rows" type="int" value="5"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Component class="javax.swing.JButton" name="btnUpdateTagsComments"> + <Properties> + <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="IRODSInfoDialog.btnUpdateTagsComments.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUpdateTagsCommentsActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlMetadataTab"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Metadata"> + <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="IRODSInfoDialog.pnlMetadataTab.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlMetadataTable"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane2"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="tableMetadata"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="3" rowCount="4"> + <Column editable="false" title="Attribute" type="java.lang.String"/> + <Column editable="false" title="Value" type="java.lang.String"/> + <Column editable="false" title="Unit" type="java.lang.String"/> + </Table> + </Property> + <Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor"> + <JTableSelectionModel selectionMode="2"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel5"> + <Properties> + <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="2" left="2" right="2" top="2"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[568, 44]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel6"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 40]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <EmptySpace min="0" pref="100" max="32767" attributes="0"/> + <Group type="103" rootIndex="1" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="8" max="-2" attributes="0"/> + <Component id="btnMetadataDelete" min="-2" max="-2" attributes="0"/> + <EmptySpace pref="8" max="32767" attributes="0"/> + </Group> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <EmptySpace min="0" pref="40" max="32767" attributes="0"/> + <Group type="103" rootIndex="1" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="5" max="-2" attributes="0"/> + <Component id="btnMetadataDelete" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnMetadataDelete"> + <Properties> + <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="IRODSInfoDialog.btnMetadataDelete.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="actionCommand" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="IRODSInfoDialog.btnMetadataDelete.actionCommand" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMetadataDeleteActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlMetaDataEdit"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[527, 200]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <EmptySpace max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" attributes="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="jLabel28" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel29" alignment="0" min="-2" max="-2" attributes="0"/> + <Component id="jLabel30" alignment="0" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace type="unrelated" max="-2" attributes="0"/> + <Group type="103" groupAlignment="0" attributes="0"> + <Component id="txtMetadataValue" alignment="0" pref="480" max="32767" attributes="0"/> + <Component id="txtMetadataAttribute" alignment="1" max="32767" attributes="0"/> + <Component id="txtMetadataUnit" max="32767" attributes="0"/> + </Group> + </Group> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace min="0" pref="0" max="32767" attributes="0"/> + <Component id="btnMetadataClear" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnMetadataCreate" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace pref="18" max="32767" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel28" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="txtMetadataAttribute" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="18" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel29" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="txtMetadataValue" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="18" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="jLabel30" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="txtMetadataUnit" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace min="-2" pref="23" max="-2" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="btnMetadataClear" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnMetadataCreate" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel28"> + <Properties> + <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="IRODSInfoDialog.jLabel28.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel29"> + <Properties> + <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="IRODSInfoDialog.jLabel29.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JLabel" name="jLabel30"> + <Properties> + <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="IRODSInfoDialog.jLabel30.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnMetadataClear"> + <Properties> + <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="IRODSInfoDialog.btnMetadataClear.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMetadataClearActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnMetadataCreate"> + <Properties> + <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="IRODSInfoDialog.btnMetadataCreate.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMetadataCreateActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JTextField" name="txtMetadataAttribute"> + <Properties> + <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="IRODSInfoDialog.txtMetadataAttribute.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtMetadataValue"> + <Properties> + <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="IRODSInfoDialog.txtMetadataValue.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtMetadataUnit"> + <Properties> + <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="IRODSInfoDialog.txtMetadataUnit.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlPermissionsTab"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="Permissions"> + <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="IRODSInfoDialog.pnlPermissionsTab.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlPermissionsTable"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane3"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="tablePermissions"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="2" rowCount="4"> + <Column editable="false" title="User Name" type="java.lang.String"> + <Data value=""/> + <Data value="null"/> + <Data value="null"/> + <Data value="null"/> + </Column> + <Column editable="true" title="Share Permission" type="java.lang.Object"/> + </Table> + </Property> + <Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor"> + <JTableSelectionModel selectionMode="2"/> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel7"> + <Properties> + <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="2" left="2" right="2" top="2"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[568, 44]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel8"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 44]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace pref="19" max="32767" attributes="0"/> + <Component id="btnPermissionsSave" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace max="32767" attributes="0"/> + <Component id="btnPermissionsSave" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnPermissionsSave"> + <Properties> + <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="IRODSInfoDialog.btnPermissionsSave.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="actionCommand" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="IRODSInfoDialog.btnPermissionsSave.actionCommand" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnPermissionsSaveActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel9"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 25]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel16"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"> + <Property name="horizontalGap" type="int" value="1"/> + <Property name="verticalGap" type="int" value="1"/> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnAddSharePermissions"> + <Properties> + <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="IRODSInfoDialog.btnAddSharePermissions.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[22, 24]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnAddSharePermissionsActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnDeleteSharePermissions"> + <Properties> + <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="IRODSInfoDialog.btnDeleteSharePermissions.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[22, 24]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDeleteSharePermissionsActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlCloseBtn"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[589, 35]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Last"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel3"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 40]"/> + </Property> + <Property name="size" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[200, 100]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <EmptySpace min="0" pref="100" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <EmptySpace min="0" pref="35" max="32767" attributes="0"/> + </Group> + </DimensionLayout> + </Layout> + </Container> + <Container class="javax.swing.JPanel" name="jPanel4"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace pref="417" max="32767" attributes="0"/> + <Component id="btnRefresh" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + <Component id="btnClose" min="-2" max="-2" attributes="0"/> + <EmptySpace max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace min="0" pref="6" max="32767" attributes="0"/> + <Group type="103" groupAlignment="3" attributes="0"> + <Component id="btnClose" alignment="3" min="-2" max="-2" attributes="0"/> + <Component id="btnRefresh" alignment="3" min="-2" max="-2" attributes="0"/> + </Group> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnClose"> + <Properties> + <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="IRODSInfoDialog.btnClose.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCloseActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnRefresh"> + <Properties> + <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="IRODSInfoDialog.btnRefresh.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IRODSInfoDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IRODSInfoDialog.java new file mode 100644 index 0000000..745c861 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IRODSInfoDialog.java @@ -0,0 +1,1824 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.irods.jargon.idrop.desktop.systraygui; + +import java.awt.CardLayout; +import java.awt.Cursor; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.FileNotFoundException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.DefaultCellEditor; +import javax.swing.JOptionPane; +import javax.swing.ListSelectionModel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableColumn; +import org.irods.jargon.core.connection.IRODSAccount; +import org.irods.jargon.core.exception.JargonException; +import org.irods.jargon.core.protovalues.FilePermissionEnum; +import org.irods.jargon.core.pub.CollectionAO; +import org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAO; +import org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAOImpl; +import org.irods.jargon.core.pub.DataObjectAO; +import org.irods.jargon.core.pub.IRODSFileSystem; +import org.irods.jargon.core.pub.UserAO; +import org.irods.jargon.core.pub.domain.AvuData; +import org.irods.jargon.core.pub.domain.Collection; +import org.irods.jargon.core.pub.domain.DataObject; +import org.irods.jargon.core.pub.domain.User; +import org.irods.jargon.core.pub.domain.UserFilePermission; +import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry; +import org.irods.jargon.idrop.desktop.systraygui.services.IRODSFileService; +import org.irods.jargon.idrop.desktop.systraygui.utils.FieldFormatHelper; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSOutlineModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSTree; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.MetadataTableModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.PermissionsTableModel; +import org.irods.jargon.idrop.exceptions.IdropException; +import org.irods.jargon.usertagging.FreeTaggingService; +import org.irods.jargon.usertagging.IRODSTaggingService; +import org.irods.jargon.usertagging.TaggingServiceFactory; +import org.irods.jargon.usertagging.TaggingServiceFactoryImpl; +import org.irods.jargon.usertagging.domain.IRODSTagValue; +import org.openide.util.Exceptions; +import org.slf4j.LoggerFactory; + +/** + * + * @author lisa + */ +public class IRODSInfoDialog extends javax.swing.JDialog implements + ListSelectionListener, DocumentListener, ActionListener { + + private final iDrop idropGUI; + private final IRODSAccount irodsAccount; + private String selectedObjectFullPath; + private String selectedObjectName; + private String selectedObjectParent; + private final IRODSFileSystem irodsFileSystem; + private final IRODSTree irodsTree; + private IRODSInfoDialog dialog; + public static org.slf4j.Logger log = LoggerFactory.getLogger(IRODSTree.class); + //private final String fileName; + + /** + * Creates new form IRODSInfoDialog + */ +// public IRODSInfoDialog(java.awt.Frame parent, boolean modal) { +// super(parent, modal); +// initComponents(); +// } + public IRODSInfoDialog(final iDrop parent, final boolean modal, + final IRODSTree irodsTree) { + + super(parent, modal); + this.idropGUI = parent; + this.irodsAccount = idropGUI.getiDropCore().getIrodsAccount(); + this.irodsFileSystem = idropGUI.getiDropCore().getIrodsFileSystem(); + this.irodsTree = irodsTree; + initSelectedObjectName(); + initComponents(); + + selectInfoCard(); + + initializeFileInfo(); + initMetadataInfo(); + initPermissionInfo(); + + // for now hide clear button + btnMetadataClear.setVisible(false); + } + + private void initSelectedObjectName() { + + IRODSFileService irodsFS = null; + + try { + irodsFS = new IRODSFileService(idropGUI.getiDropCore().getIrodsAccount(), + idropGUI.getiDropCore().getIrodsFileSystem()); + } catch (Exception ex) { + log.error("cannot create irods file service"); + return; + } + + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) irodsTree.getModel(); + ListSelectionModel selectionModel = irodsTree.getSelectionModel(); + int idxStart = selectionModel.getMinSelectionIndex(); + + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt(idxStart, 0); + selectedObjectFullPath = selectedNode.getFullPath(); + String objectPath[] = selectedObjectFullPath.split("/"); + selectedObjectName = objectPath[objectPath.length - 1]; + IRODSNode pNode = (IRODSNode) selectedNode.getParent(); + selectedObjectParent = pNode.getFullPath(); + } + + private void selectInfoCard() { + + CardLayout cl = (CardLayout) (pnlInfoCards.getLayout()); + if (isCollection()) { + lblObjectCollection.setText("Collection:"); + cl.show(pnlInfoCards, "cardCollectionInfo"); + } else { + lblObjectCollection.setText("Object:"); + cl.show(pnlInfoCards, "cardObjectInfo"); + } + + // also populate header + if (selectedObjectName != null) { + lblInfoObjectName.setText(selectedObjectName); + } + if (selectedObjectParent != null) { + lblInfoObjectParent.setText(selectedObjectParent); + } + } + + private void initializeFileInfo() { + this.dialog = this; + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + try { + + TaggingServiceFactory taggingServiceFactory = new TaggingServiceFactoryImpl(irodsFileSystem.getIRODSAccessObjectFactory()); + FreeTaggingService freeTaggingService = taggingServiceFactory.instanceFreeTaggingService(irodsAccount); + IRODSTaggingService irodsTaggingService = taggingServiceFactory.instanceIrodsTaggingService(irodsAccount); + + if (isCollection()) { + + CollectionAO collectionAO = irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAO(irodsAccount); + Collection collection = collectionAO.findByAbsolutePath(selectedObjectFullPath); + + if (collection.getCreatedAt().toString() != null) { + lblInfoCollectionCreatedDate.setText(collection.getCreatedAt().toString()); + } else { + lblInfoCollectionCreatedDate.setText(""); + } + + if (collection.getModifiedAt().toString() != null) { + lblInfoCollectionModifiedDate.setText(collection.getModifiedAt().toString()); + } else { + lblInfoCollectionModifiedDate.setText(""); + } + + if (collection.getCollectionOwnerName() != null) { + lblInfoCollectionOwner.setText(collection.getCollectionOwnerName()); + } else { + lblInfoCollectionOwner.setText(""); + } + + if (collection.getComments() != null) { + lblInfoCollectionDescription.setText(collection.getComments()); + } else { + lblInfoCollectionDescription.setText(""); + } + + if (collection.getSpecColType() != null) { + lblInfoCollectionType.setText(collection.getSpecColType().name()); + } else { + lblInfoCollectionType.setText(""); + } + + if (collection.getCollectionOwnerZone() != null) { + lblInfoCollectionOwnerZone.setText(collection.getCollectionOwnerZone()); + } else { + lblInfoCollectionOwnerZone.setText(""); + } + + if (collection.getObjectPath() != null) { + lblInfoCollectionObjectPath.setText(collection.getObjectPath()); + } else { + lblInfoCollectionObjectPath.setText(""); + } + + if (collection.getInfo1() != null) { + lblInfoCollectionInfo1.setText(collection.getInfo1()); + } else { + lblInfoCollectionInfo1.setText(""); + } + + if (collection.getInfo2() != null) { + lblInfoCollectionInfo2.setText(collection.getInfo2()); + } else { + lblInfoCollectionInfo2.setText(""); + } + + // now populate tags and comments for collection + txtInfoTags.setText(freeTaggingService.getTagsForCollectionInFreeTagForm( + selectedObjectFullPath).getSpaceDelimitedTagsForDomain()); + IRODSTagValue irodsTagValue = irodsTaggingService.getDescriptionOnCollectionForLoggedInUser( + selectedObjectFullPath); + if (irodsTagValue != null) { + textareaInfoComments.setText(irodsTagValue.getTagData()); + } + + } + else { + + DataObjectAO dataObjectAO = irodsFileSystem.getIRODSAccessObjectFactory().getDataObjectAO(irodsAccount); + DataObject dataObject = dataObjectAO.findByAbsolutePath(selectedObjectFullPath); + + if (dataObject.getDataSize() >= 0) { + lblInfoObjectSize.setText(FieldFormatHelper.formatFileLength(dataObject.getDataSize())); + } else { + lblInfoObjectSize.setText(""); + } + + if (dataObject.getCreatedAt().toString() != null) { + lblInfoObjectCreatedDate.setText(dataObject.getCreatedAt().toString()); + } else { + lblInfoObjectCreatedDate.setText(""); + } + + if (dataObject.getUpdatedAt().toString() != null) { + lblInfoObjectModifiedDate.setText(dataObject.getUpdatedAt().toString()); + } else { + lblInfoObjectCreatedDate.setText(""); + } + + if (dataObject.getDataOwnerName() != null) { + lblInfoObjectOwner.setText(dataObject.getDataOwnerName()); + } else { + lblInfoObjectOwner.setText(""); + } + + if (dataObject.getDataOwnerZone() != null) { + lblInfoObjectOwnerZone.setText(dataObject.getDataOwnerZone()); + } else { + lblInfoObjectOwnerZone.setText(""); + } + + if (dataObject.getDataPath() != null) { + lblInfoObjectDataPath.setText(dataObject.getDataPath()); + } else { + lblInfoObjectDataPath.setText(""); + } + + if (dataObject.getResourceGroupName() != null) { + lblInfoObjectResourceGroup.setText(dataObject.getResourceGroupName()); + } else { + lblInfoObjectResourceGroup.setText(""); + } + + if (dataObject.getChecksum() != null) { + lblInfoObjectChecksum.setText(dataObject.getChecksum()); + } else { + lblInfoObjectChecksum.setText(""); + } + + if (dataObject.getResourceName() != null) { + lblInfoObjectResource.setText(dataObject.getResourceName()); + } else { + lblInfoObjectResource.setText(""); + } + + if (dataObject.getDataReplicationNumber() >= 0) { + lblInfoObjectReplicaNumber.setText(Integer.toString(dataObject.getDataReplicationNumber())); + } else { + lblInfoObjectReplicaNumber.setText(""); + } + + if (dataObject.getReplicationStatus() != null) { + lblInfoObjectReplicationStatus.setText(dataObject.getReplicationStatus()); + } else { + lblInfoObjectReplicationStatus.setText(""); + } + + if (dataObject.getDataStatus() != null) { + lblInfoObjectStatus.setText(dataObject.getDataStatus()); + } else { + lblInfoObjectStatus.setText(""); + } + + if (dataObject.getDataTypeName() != null) { + lblInfoObjectType.setText(dataObject.getDataTypeName()); + } else { + lblInfoObjectType.setText(""); + } + + if (dataObject.getDataVersion() >= 0) { + lblInfoObjectVersion.setText(Integer.toString(dataObject.getDataVersion())); + } else { + lblInfoObjectVersion.setText(""); + } + + // now populate tags and comments for data object + txtInfoTags.setText(freeTaggingService.getTagsForDataObjectInFreeTagForm( + selectedObjectFullPath).getSpaceDelimitedTagsForDomain()); + IRODSTagValue irodsTagValue = irodsTaggingService.getDescriptionOnDataObjectForLoggedInUser( + selectedObjectFullPath); + if (irodsTagValue != null) { + textareaInfoComments.setText(irodsTagValue.getTagData()); + } + + } + + } catch (FileNotFoundException ex) { + Exceptions.printStackTrace(ex); + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + }); + } + + private void initMetadataInfo() { + this.dialog = this; + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + try { + // set up metadata table and table model + IRODSFileService irodsFileService = new IRODSFileService( + irodsAccount, irodsFileSystem); + MetadataTableModel metadataTableModel; + + if (isCollection()) { + metadataTableModel = new MetadataTableModel( + irodsFileService.getMetadataForCollection(selectedObjectFullPath)); + } else { + metadataTableModel = new MetadataTableModel( + irodsFileService.getMetadataForDataObject( + selectedObjectParent, selectedObjectName)); + } + tableMetadata.setModel(metadataTableModel); + tableMetadata.getSelectionModel().addListSelectionListener(dialog); + tableMetadata.validate(); + + // add document listener to metadata text fields + txtMetadataAttribute.getDocument().addDocumentListener(dialog); + txtMetadataValue.getDocument().addDocumentListener(dialog); + txtMetadataUnit.getDocument().addDocumentListener(dialog); + } catch (IdropException ex) { + Logger.getLogger(MetadataViewDialog.class.getName()).log( + Level.SEVERE, null, ex); + idropGUI.showIdropException(ex); + } + + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + }); + } + + private void initPermissionInfo() { + this.dialog = this; + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + + // set up combobox lists + List<User> users = null; + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + // this list of ACLs contains permission that are not suppoted? + //List<FilePermissionEnum> permissions = FilePermissionEnum.listAllValues(); + //for (FilePermissionEnum permission: permissions) { + //cbPermissionsPermission.addItem(permission.name()); + //} + // will just do my own for now + //cbPermissionsPermission.addItem("NONE"); + javax.swing.JComboBox tableCombo = new javax.swing.JComboBox(); + tableCombo.addItem("READ"); + tableCombo.addItem("WRITE"); + tableCombo.addItem("OWN"); + + // set up permission table and table model + PermissionsTableModel permissionsTableModel = null; + try { + if (isCollection()) { + CollectionAO collectionAO = irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAO(irodsAccount); + permissionsTableModel = new PermissionsTableModel( + collectionAO.listPermissionsForCollection(selectedObjectFullPath)); + } else { + DataObjectAO dataObjectAO = irodsFileSystem.getIRODSAccessObjectFactory().getDataObjectAO(irodsAccount); + permissionsTableModel = new PermissionsTableModel( + dataObjectAO.listPermissionsForDataObject(selectedObjectFullPath)); + } + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + + tablePermissions.setModel(permissionsTableModel); + tablePermissions.getSelectionModel().addListSelectionListener(dialog); + TableColumn permissionColumn = tablePermissions.getColumnModel().getColumn(1); + permissionColumn.setCellEditor(new DefaultCellEditor(tableCombo)); + permissionsTableModel.resetOriginalPermissionList(); + tablePermissions.validate(); + + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + }); + } + + private boolean isCollection() { + + boolean state = false; + CollectionAndDataObjectListingEntry entry = null; + + //perhaps should throw exception if these vital member variables are null + if ((selectedObjectFullPath != null) + && (irodsFileSystem != null) + && (irodsAccount != null)) { + CollectionAndDataObjectListAndSearchAOImpl collectionAndDataObjectListAndSearchAOImpl; + try { + collectionAndDataObjectListAndSearchAOImpl = (CollectionAndDataObjectListAndSearchAOImpl) irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAndDataObjectListAndSearchAO(irodsAccount); + entry = + collectionAndDataObjectListAndSearchAOImpl.getCollectionAndDataObjectListingEntryAtGivenAbsolutePath(selectedObjectFullPath); + } catch (JargonException ex) { + // TODO: respond correctly here + Exceptions.printStackTrace(ex); + } + + state = entry.isCollection(); + } + + return state; + } + + private void updateMetadataCreateBtnStatus() { + // create button should only be enabled when there is no tableMetadata + // selection and all text fields are populated + btnMetadataCreate.setEnabled( + txtMetadataAttribute.getText().length() > 0 && + txtMetadataValue.getText().length() > 0 && + txtMetadataUnit.getText().length() > 0); + } + + private void updateMetadataDeleteBtnStatus(int selectedRowCount) { + // delete button should only be enabled when there is a tableMetadata selection + // add all text fields are populated + btnMetadataDelete.setEnabled(selectedRowCount > 0); + } + + private void updatePermissionsDeleteBtnStatus(int selectedRowCount) { + // delete button should only be enabled when there is a tableMetadata or + // tablePermissions selection + btnDeleteSharePermissions.setEnabled(selectedRowCount > 0); + } + + // ListSelectionListener methods + @Override + public void valueChanged(ListSelectionEvent lse) { + int selectedRowCount = 0; + + if (!lse.getValueIsAdjusting()) { + // determine which table is selected + // Metadata Table? + if (lse.getSource() == tableMetadata.getSelectionModel()) { + selectedRowCount = tableMetadata.getSelectedRowCount(); + updateMetadataDeleteBtnStatus(selectedRowCount); + } + else { // Permissions Table + selectedRowCount = tablePermissions.getSelectedRowCount(); + updatePermissionsDeleteBtnStatus(selectedRowCount); + } + } + } + // end ListSelectionListener methods + + // DocumentListener Methods + @Override + public void insertUpdate(DocumentEvent de) { + updateMetadataCreateBtnStatus(); + } + + @Override + public void removeUpdate(DocumentEvent de) { + updateMetadataCreateBtnStatus(); + } + + @Override + public void changedUpdate(DocumentEvent de) { + updateMetadataCreateBtnStatus(); + } + // end DocumentListener Methods + + // ActionListener Methods + @Override + public void actionPerformed(ActionEvent ae) { +// if (ae.getSource() == cbPermissionsPermission || +// ae.getSource() == cbPermissionsUserName) { +// updatePermissonsCreateBtnStatus(); +// } + } + // end ActionListener Methods + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jPanel2 = new javax.swing.JPanel(); + jPanel1 = new javax.swing.JPanel(); + pnlSelectedObject = new javax.swing.JPanel(); + lblObjectCollection = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + lblInfoObjectName = new javax.swing.JLabel(); + lblInfoObjectParent = new javax.swing.JLabel(); + tabbedpanelMain = new javax.swing.JTabbedPane(); + pnlInfoTab = new javax.swing.JPanel(); + pnlInfoCards = new javax.swing.JPanel(); + pnlCollectionInfo = new javax.swing.JPanel(); + jLabel19 = new javax.swing.JLabel(); + jLabel20 = new javax.swing.JLabel(); + jLabel21 = new javax.swing.JLabel(); + jLabel22 = new javax.swing.JLabel(); + jLabel23 = new javax.swing.JLabel(); + jLabel24 = new javax.swing.JLabel(); + jLabel25 = new javax.swing.JLabel(); + jLabel26 = new javax.swing.JLabel(); + jLabel27 = new javax.swing.JLabel(); + lblInfoCollectionCreatedDate = new javax.swing.JLabel(); + lblInfoCollectionModifiedDate = new javax.swing.JLabel(); + lblInfoCollectionOwner = new javax.swing.JLabel(); + lblInfoCollectionOwnerZone = new javax.swing.JLabel(); + lblInfoCollectionType = new javax.swing.JLabel(); + lblInfoCollectionObjectPath = new javax.swing.JLabel(); + lblInfoCollectionDescription = new javax.swing.JLabel(); + lblInfoCollectionInfo1 = new javax.swing.JLabel(); + lblInfoCollectionInfo2 = new javax.swing.JLabel(); + pnlObjectInfo = new javax.swing.JPanel(); + jLabel3 = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + jLabel5 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + jLabel9 = new javax.swing.JLabel(); + jLabel10 = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + jLabel12 = new javax.swing.JLabel(); + jLabel13 = new javax.swing.JLabel(); + jLabel14 = new javax.swing.JLabel(); + jLabel15 = new javax.swing.JLabel(); + jLabel16 = new javax.swing.JLabel(); + lblInfoObjectSize = new javax.swing.JLabel(); + lblInfoObjectCreatedDate = new javax.swing.JLabel(); + lblInfoObjectModifiedDate = new javax.swing.JLabel(); + lblInfoObjectOwner = new javax.swing.JLabel(); + lblInfoObjectOwnerZone = new javax.swing.JLabel(); + lblInfoObjectDataPath = new javax.swing.JLabel(); + lblInfoObjectResourceGroup = new javax.swing.JLabel(); + lblInfoObjectChecksum = new javax.swing.JLabel(); + lblInfoObjectResource = new javax.swing.JLabel(); + lblInfoObjectReplicaNumber = new javax.swing.JLabel(); + lblInfoObjectReplicationStatus = new javax.swing.JLabel(); + lblInfoObjectStatus = new javax.swing.JLabel(); + lblInfoObjectType = new javax.swing.JLabel(); + lblInfoObjectVersion = new javax.swing.JLabel(); + pnlTagsComments = new javax.swing.JPanel(); + jLabel17 = new javax.swing.JLabel(); + txtInfoTags = new javax.swing.JTextField(); + jLabel18 = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + textareaInfoComments = new javax.swing.JTextArea(); + btnUpdateTagsComments = new javax.swing.JButton(); + pnlMetadataTab = new javax.swing.JPanel(); + pnlMetadataTable = new javax.swing.JPanel(); + jScrollPane2 = new javax.swing.JScrollPane(); + tableMetadata = new javax.swing.JTable(); + jPanel5 = new javax.swing.JPanel(); + jPanel6 = new javax.swing.JPanel(); + btnMetadataDelete = new javax.swing.JButton(); + pnlMetaDataEdit = new javax.swing.JPanel(); + jLabel28 = new javax.swing.JLabel(); + jLabel29 = new javax.swing.JLabel(); + jLabel30 = new javax.swing.JLabel(); + btnMetadataClear = new javax.swing.JButton(); + btnMetadataCreate = new javax.swing.JButton(); + txtMetadataAttribute = new javax.swing.JTextField(); + txtMetadataValue = new javax.swing.JTextField(); + txtMetadataUnit = new javax.swing.JTextField(); + pnlPermissionsTab = new javax.swing.JPanel(); + pnlPermissionsTable = new javax.swing.JPanel(); + jScrollPane3 = new javax.swing.JScrollPane(); + tablePermissions = new javax.swing.JTable(); + jPanel7 = new javax.swing.JPanel(); + jPanel8 = new javax.swing.JPanel(); + btnPermissionsSave = new javax.swing.JButton(); + jPanel9 = new javax.swing.JPanel(); + jPanel16 = new javax.swing.JPanel(); + btnAddSharePermissions = new javax.swing.JButton(); + btnDeleteSharePermissions = new javax.swing.JButton(); + pnlCloseBtn = new javax.swing.JPanel(); + jPanel3 = new javax.swing.JPanel(); + jPanel4 = new javax.swing.JPanel(); + btnClose = new javax.swing.JButton(); + btnRefresh = new javax.swing.JButton(); + + org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(0, 100, Short.MAX_VALUE) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(0, 100, Short.MAX_VALUE) + ); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setPreferredSize(new java.awt.Dimension(560, 720)); + + jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(14, 10, 10, 10)); + jPanel1.setPreferredSize(new java.awt.Dimension(600, 750)); + jPanel1.setLayout(new java.awt.BorderLayout()); + + pnlSelectedObject.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 4, 1, 4)); + pnlSelectedObject.setPreferredSize(new java.awt.Dimension(528, 70)); + + lblObjectCollection.setFont(new java.awt.Font("Lucida Grande", 0, 14)); // NOI18N + lblObjectCollection.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblObjectCollection.text")); // NOI18N + + jLabel2.setFont(new java.awt.Font("Lucida Grande", 0, 14)); // NOI18N + jLabel2.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel2.text")); // NOI18N + + lblInfoObjectName.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectName.text")); // NOI18N + + lblInfoObjectParent.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectParent.text")); // NOI18N + + org.jdesktop.layout.GroupLayout pnlSelectedObjectLayout = new org.jdesktop.layout.GroupLayout(pnlSelectedObject); + pnlSelectedObject.setLayout(pnlSelectedObjectLayout); + pnlSelectedObjectLayout.setHorizontalGroup( + pnlSelectedObjectLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlSelectedObjectLayout.createSequentialGroup() + .addContainerGap() + .add(pnlSelectedObjectLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(lblObjectCollection, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE) + .add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlSelectedObjectLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(lblInfoObjectName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 362, Short.MAX_VALUE) + .add(lblInfoObjectParent, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(67, Short.MAX_VALUE)) + ); + pnlSelectedObjectLayout.setVerticalGroup( + pnlSelectedObjectLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlSelectedObjectLayout.createSequentialGroup() + .addContainerGap() + .add(pnlSelectedObjectLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(lblObjectCollection) + .add(lblInfoObjectName)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlSelectedObjectLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(lblInfoObjectParent)) + .addContainerGap(19, Short.MAX_VALUE)) + ); + + jPanel1.add(pnlSelectedObject, java.awt.BorderLayout.PAGE_START); + + tabbedpanelMain.setPreferredSize(new java.awt.Dimension(600, 867)); + + pnlInfoTab.setLayout(new java.awt.BorderLayout()); + + pnlInfoCards.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + pnlInfoCards.setPreferredSize(new java.awt.Dimension(555, 640)); + pnlInfoCards.setLayout(new java.awt.CardLayout()); + + pnlCollectionInfo.setPreferredSize(new java.awt.Dimension(515, 500)); + + jLabel19.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel19.text")); // NOI18N + + jLabel20.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel20.text")); // NOI18N + + jLabel21.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel21.text")); // NOI18N + + jLabel22.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel22.text")); // NOI18N + + jLabel23.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel23.text")); // NOI18N + + jLabel24.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel24.text")); // NOI18N + + jLabel25.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel25.text")); // NOI18N + + jLabel26.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel26.text")); // NOI18N + + jLabel27.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel27.text")); // NOI18N + + lblInfoCollectionCreatedDate.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionCreatedDate.text")); // NOI18N + + lblInfoCollectionModifiedDate.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionModifiedDate.text")); // NOI18N + + lblInfoCollectionOwner.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionOwner.text")); // NOI18N + + lblInfoCollectionOwnerZone.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionOwnerZone.text")); // NOI18N + + lblInfoCollectionType.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionType.text")); // NOI18N + + lblInfoCollectionObjectPath.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionObjectPath.text")); // NOI18N + + lblInfoCollectionDescription.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionDescription.text")); // NOI18N + + lblInfoCollectionInfo1.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionInfo1.text")); // NOI18N + + lblInfoCollectionInfo2.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoCollectionInfo2.text")); // NOI18N + + org.jdesktop.layout.GroupLayout pnlCollectionInfoLayout = new org.jdesktop.layout.GroupLayout(pnlCollectionInfo); + pnlCollectionInfo.setLayout(pnlCollectionInfoLayout); + pnlCollectionInfoLayout.setHorizontalGroup( + pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlCollectionInfoLayout.createSequentialGroup() + .addContainerGap() + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false) + .add(org.jdesktop.layout.GroupLayout.LEADING, pnlCollectionInfoLayout.createSequentialGroup() + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel22) + .add(jLabel23) + .add(jLabel24) + .add(jLabel25) + .add(jLabel26) + .add(jLabel27)) + .add(24, 24, 24) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(lblInfoCollectionOwnerZone, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) + .add(lblInfoCollectionType, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoCollectionObjectPath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoCollectionDescription, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoCollectionInfo1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoCollectionInfo2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .add(org.jdesktop.layout.GroupLayout.LEADING, pnlCollectionInfoLayout.createSequentialGroup() + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel19) + .add(jLabel20) + .add(jLabel21)) + .add(47, 47, 47) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(lblInfoCollectionCreatedDate, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) + .add(lblInfoCollectionModifiedDate, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoCollectionOwner, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap()) + ); + pnlCollectionInfoLayout.setVerticalGroup( + pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlCollectionInfoLayout.createSequentialGroup() + .add(24, 24, 24) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel19) + .add(lblInfoCollectionCreatedDate)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel20) + .add(lblInfoCollectionModifiedDate)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel21) + .add(lblInfoCollectionOwner)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel22) + .add(lblInfoCollectionOwnerZone)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel23) + .add(lblInfoCollectionType)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel24) + .add(lblInfoCollectionObjectPath)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel25) + .add(lblInfoCollectionDescription)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel26) + .add(lblInfoCollectionInfo1)) + .add(18, 18, 18) + .add(pnlCollectionInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel27) + .add(lblInfoCollectionInfo2)) + .addContainerGap(289, Short.MAX_VALUE)) + ); + + pnlInfoCards.add(pnlCollectionInfo, "cardCollectionInfo"); + + pnlObjectInfo.setPreferredSize(new java.awt.Dimension(550, 530)); + + jLabel3.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel3.text")); // NOI18N + + jLabel4.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel4.text")); // NOI18N + + jLabel5.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel5.text")); // NOI18N + + jLabel6.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel6.text")); // NOI18N + + jLabel7.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel7.text")); // NOI18N + + jLabel8.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel8.text")); // NOI18N + + jLabel9.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel9.text")); // NOI18N + + jLabel10.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel10.text")); // NOI18N + + jLabel11.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel11.text")); // NOI18N + + jLabel12.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel12.text")); // NOI18N + + jLabel13.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel13.text")); // NOI18N + + jLabel14.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel14.text")); // NOI18N + + jLabel15.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel15.text")); // NOI18N + + jLabel16.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel16.text")); // NOI18N + + lblInfoObjectSize.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectSize.text")); // NOI18N + + lblInfoObjectCreatedDate.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectCreatedDate.text")); // NOI18N + + lblInfoObjectModifiedDate.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectModifiedDate.text")); // NOI18N + + lblInfoObjectOwner.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectOwner.text")); // NOI18N + + lblInfoObjectOwnerZone.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectOwnerZone.text")); // NOI18N + + lblInfoObjectDataPath.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectDataPath.text")); // NOI18N + + lblInfoObjectResourceGroup.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectResourceGroup.text")); // NOI18N + + lblInfoObjectChecksum.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectChecksum.text")); // NOI18N + + lblInfoObjectResource.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectResource.text")); // NOI18N + + lblInfoObjectReplicaNumber.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectReplicaNumber.text")); // NOI18N + + lblInfoObjectReplicationStatus.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectReplicationStatus.text")); // NOI18N + + lblInfoObjectStatus.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectStatus.text")); // NOI18N + + lblInfoObjectType.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectType.text")); // NOI18N + + lblInfoObjectVersion.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.lblInfoObjectVersion.text")); // NOI18N + + org.jdesktop.layout.GroupLayout pnlObjectInfoLayout = new org.jdesktop.layout.GroupLayout(pnlObjectInfo); + pnlObjectInfo.setLayout(pnlObjectInfoLayout); + pnlObjectInfoLayout.setHorizontalGroup( + pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlObjectInfoLayout.createSequentialGroup() + .addContainerGap() + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(pnlObjectInfoLayout.createSequentialGroup() + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 70, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel4) + .add(jLabel5) + .add(jLabel6) + .add(jLabel7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel9, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 115, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 80, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel11, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 70, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel12)) + .add(22, 22, 22) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(lblInfoObjectResource, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectReplicaNumber, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectSize, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE) + .add(lblInfoObjectCreatedDate, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectModifiedDate, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectOwner, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectOwnerZone, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectDataPath, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectResourceGroup, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectChecksum, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .add(pnlObjectInfoLayout.createSequentialGroup() + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel13, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 125, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(jLabel14) + .add(jLabel15) + .add(jLabel16)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(lblInfoObjectReplicationStatus, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectStatus, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectType, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(lblInfoObjectVersion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addContainerGap(51, Short.MAX_VALUE)) + ); + pnlObjectInfoLayout.setVerticalGroup( + pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlObjectInfoLayout.createSequentialGroup() + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlObjectInfoLayout.createSequentialGroup() + .add(18, 18, 18) + .add(lblInfoObjectSize)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pnlObjectInfoLayout.createSequentialGroup() + .addContainerGap() + .add(jLabel3))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(lblInfoObjectCreatedDate) + .add(jLabel4)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel5) + .add(lblInfoObjectModifiedDate)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(lblInfoObjectOwner) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel6)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel7) + .add(lblInfoObjectOwnerZone)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(lblInfoObjectDataPath) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel8)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel9) + .add(org.jdesktop.layout.GroupLayout.TRAILING, lblInfoObjectResourceGroup)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(lblInfoObjectChecksum) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel10)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel11) + .add(lblInfoObjectResource)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel12) + .add(lblInfoObjectReplicaNumber)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel13) + .add(lblInfoObjectReplicationStatus)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel14) + .add(lblInfoObjectStatus)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel15) + .add(lblInfoObjectType)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(pnlObjectInfoLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel16) + .add(lblInfoObjectVersion)) + .addContainerGap(281, Short.MAX_VALUE)) + ); + + pnlInfoCards.add(pnlObjectInfo, "cardObjectInfo"); + + pnlInfoTab.add(pnlInfoCards, java.awt.BorderLayout.CENTER); + + pnlTagsComments.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + jLabel17.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel17.text")); // NOI18N + + txtInfoTags.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.txtInfoTags.text")); // NOI18N + + jLabel18.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel18.text")); // NOI18N + + textareaInfoComments.setColumns(20); + textareaInfoComments.setRows(5); + jScrollPane1.setViewportView(textareaInfoComments); + + btnUpdateTagsComments.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnUpdateTagsComments.text")); // NOI18N + btnUpdateTagsComments.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUpdateTagsCommentsActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout pnlTagsCommentsLayout = new org.jdesktop.layout.GroupLayout(pnlTagsComments); + pnlTagsComments.setLayout(pnlTagsCommentsLayout); + pnlTagsCommentsLayout.setHorizontalGroup( + pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlTagsCommentsLayout.createSequentialGroup() + .add(pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pnlTagsCommentsLayout.createSequentialGroup() + .addContainerGap() + .add(pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel17) + .add(jLabel18)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 66, Short.MAX_VALUE) + .add(pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) + .add(txtInfoTags) + .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 408, Short.MAX_VALUE)) + .add(6, 6, 6)) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pnlTagsCommentsLayout.createSequentialGroup() + .add(0, 0, Short.MAX_VALUE) + .add(btnUpdateTagsComments))) + .addContainerGap()) + ); + pnlTagsCommentsLayout.setVerticalGroup( + pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlTagsCommentsLayout.createSequentialGroup() + .add(6, 6, 6) + .add(pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel17) + .add(txtInfoTags, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(pnlTagsCommentsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel18) + .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(btnUpdateTagsComments) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pnlInfoTab.add(pnlTagsComments, java.awt.BorderLayout.SOUTH); + + tabbedpanelMain.addTab(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.pnlInfoTab.TabConstraints.tabTitle"), pnlInfoTab); // NOI18N + + pnlMetadataTab.setLayout(new java.awt.BorderLayout()); + + pnlMetadataTable.setLayout(new java.awt.BorderLayout()); + + tableMetadata.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + {null, null, null}, + {null, null, null}, + {null, null, null}, + {null, null, null} + }, + new String [] { + "Attribute", "Value", "Unit" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.String.class, java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false, false, false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + tableMetadata.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + jScrollPane2.setViewportView(tableMetadata); + + pnlMetadataTable.add(jScrollPane2, java.awt.BorderLayout.CENTER); + + jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2)); + jPanel5.setPreferredSize(new java.awt.Dimension(568, 44)); + jPanel5.setLayout(new java.awt.BorderLayout()); + + jPanel6.setPreferredSize(new java.awt.Dimension(100, 40)); + + btnMetadataDelete.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnMetadataDelete.text")); // NOI18N + btnMetadataDelete.setActionCommand(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnMetadataDelete.actionCommand")); // NOI18N + btnMetadataDelete.setEnabled(false); + btnMetadataDelete.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMetadataDeleteActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel6Layout = new org.jdesktop.layout.GroupLayout(jPanel6); + jPanel6.setLayout(jPanel6Layout); + jPanel6Layout.setHorizontalGroup( + jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(0, 100, Short.MAX_VALUE) + .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel6Layout.createSequentialGroup() + .add(8, 8, 8) + .add(btnMetadataDelete) + .addContainerGap(8, Short.MAX_VALUE))) + ); + jPanel6Layout.setVerticalGroup( + jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(0, 40, Short.MAX_VALUE) + .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel6Layout.createSequentialGroup() + .add(5, 5, 5) + .add(btnMetadataDelete) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + ); + + jPanel5.add(jPanel6, java.awt.BorderLayout.EAST); + + pnlMetadataTable.add(jPanel5, java.awt.BorderLayout.SOUTH); + + pnlMetadataTab.add(pnlMetadataTable, java.awt.BorderLayout.CENTER); + + pnlMetaDataEdit.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + pnlMetaDataEdit.setPreferredSize(new java.awt.Dimension(527, 200)); + + jLabel28.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel28.text")); // NOI18N + + jLabel29.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel29.text")); // NOI18N + + jLabel30.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.jLabel30.text")); // NOI18N + + btnMetadataClear.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnMetadataClear.text")); // NOI18N + btnMetadataClear.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMetadataClearActionPerformed(evt); + } + }); + + btnMetadataCreate.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnMetadataCreate.text")); // NOI18N + btnMetadataCreate.setEnabled(false); + btnMetadataCreate.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMetadataCreateActionPerformed(evt); + } + }); + + txtMetadataAttribute.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.txtMetadataAttribute.text")); // NOI18N + + txtMetadataValue.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.txtMetadataValue.text")); // NOI18N + + txtMetadataUnit.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.txtMetadataUnit.text")); // NOI18N + + org.jdesktop.layout.GroupLayout pnlMetaDataEditLayout = new org.jdesktop.layout.GroupLayout(pnlMetaDataEdit); + pnlMetaDataEdit.setLayout(pnlMetaDataEditLayout); + pnlMetaDataEditLayout.setHorizontalGroup( + pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlMetaDataEditLayout.createSequentialGroup() + .addContainerGap() + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlMetaDataEditLayout.createSequentialGroup() + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jLabel28) + .add(jLabel29) + .add(jLabel30)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(txtMetadataValue, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE) + .add(org.jdesktop.layout.GroupLayout.TRAILING, txtMetadataAttribute) + .add(txtMetadataUnit))) + .add(org.jdesktop.layout.GroupLayout.TRAILING, pnlMetaDataEditLayout.createSequentialGroup() + .add(0, 0, Short.MAX_VALUE) + .add(btnMetadataClear) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(btnMetadataCreate))) + .addContainerGap()) + ); + pnlMetaDataEditLayout.setVerticalGroup( + pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(pnlMetaDataEditLayout.createSequentialGroup() + .addContainerGap(18, Short.MAX_VALUE) + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel28) + .add(txtMetadataAttribute, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(18, 18, 18) + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel29) + .add(txtMetadataValue, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(18, 18, 18) + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(jLabel30) + .add(txtMetadataUnit, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(23, 23, 23) + .add(pnlMetaDataEditLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(btnMetadataClear) + .add(btnMetadataCreate)) + .addContainerGap()) + ); + + pnlMetadataTab.add(pnlMetaDataEdit, java.awt.BorderLayout.SOUTH); + + tabbedpanelMain.addTab(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.pnlMetadataTab.TabConstraints.tabTitle"), pnlMetadataTab); // NOI18N + + pnlPermissionsTab.setLayout(new java.awt.BorderLayout()); + + pnlPermissionsTable.setLayout(new java.awt.BorderLayout()); + + tablePermissions.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + {"", null}, + {null, null}, + {null, null}, + {null, null} + }, + new String [] { + "User Name", "Share Permission" + } + ) { + Class[] types = new Class [] { + java.lang.String.class, java.lang.Object.class + }; + boolean[] canEdit = new boolean [] { + false, true + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + tablePermissions.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + jScrollPane3.setViewportView(tablePermissions); + + pnlPermissionsTable.add(jScrollPane3, java.awt.BorderLayout.CENTER); + + jPanel7.setBorder(javax.swing.BorderFactory.createEmptyBorder(2, 2, 2, 2)); + jPanel7.setPreferredSize(new java.awt.Dimension(568, 44)); + jPanel7.setLayout(new java.awt.BorderLayout()); + + jPanel8.setPreferredSize(new java.awt.Dimension(100, 44)); + + btnPermissionsSave.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnPermissionsSave.text")); // NOI18N + btnPermissionsSave.setActionCommand(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnPermissionsSave.actionCommand")); // NOI18N + btnPermissionsSave.setEnabled(false); + btnPermissionsSave.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnPermissionsSaveActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel8Layout = new org.jdesktop.layout.GroupLayout(jPanel8); + jPanel8.setLayout(jPanel8Layout); + jPanel8Layout.setHorizontalGroup( + jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel8Layout.createSequentialGroup() + .addContainerGap(19, Short.MAX_VALUE) + .add(btnPermissionsSave) + .addContainerGap()) + ); + jPanel8Layout.setVerticalGroup( + jPanel8Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel8Layout.createSequentialGroup() + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(btnPermissionsSave) + .addContainerGap()) + ); + + jPanel7.add(jPanel8, java.awt.BorderLayout.EAST); + + jPanel9.setPreferredSize(new java.awt.Dimension(100, 25)); + jPanel9.setLayout(new java.awt.BorderLayout()); + + jPanel16.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 1, 1)); + + btnAddSharePermissions.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnAddSharePermissions.text")); // NOI18N + btnAddSharePermissions.setPreferredSize(new java.awt.Dimension(22, 24)); + btnAddSharePermissions.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddSharePermissionsActionPerformed(evt); + } + }); + jPanel16.add(btnAddSharePermissions); + + btnDeleteSharePermissions.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnDeleteSharePermissions.text")); // NOI18N + btnDeleteSharePermissions.setEnabled(false); + btnDeleteSharePermissions.setPreferredSize(new java.awt.Dimension(22, 24)); + btnDeleteSharePermissions.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteSharePermissionsActionPerformed(evt); + } + }); + jPanel16.add(btnDeleteSharePermissions); + + jPanel9.add(jPanel16, java.awt.BorderLayout.WEST); + + jPanel7.add(jPanel9, java.awt.BorderLayout.WEST); + + pnlPermissionsTable.add(jPanel7, java.awt.BorderLayout.SOUTH); + + pnlPermissionsTab.add(pnlPermissionsTable, java.awt.BorderLayout.CENTER); + + tabbedpanelMain.addTab(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.pnlPermissionsTab.TabConstraints.tabTitle"), pnlPermissionsTab); // NOI18N + + jPanel1.add(tabbedpanelMain, java.awt.BorderLayout.CENTER); + + pnlCloseBtn.setPreferredSize(new java.awt.Dimension(589, 35)); + pnlCloseBtn.setLayout(new java.awt.BorderLayout()); + + jPanel3.setPreferredSize(new java.awt.Dimension(100, 40)); + jPanel3.setSize(new java.awt.Dimension(200, 100)); + + org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(0, 100, Short.MAX_VALUE) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(0, 35, Short.MAX_VALUE) + ); + + pnlCloseBtn.add(jPanel3, java.awt.BorderLayout.WEST); + + btnClose.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnClose.text")); // NOI18N + btnClose.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCloseActionPerformed(evt); + } + }); + + btnRefresh.setText(org.openide.util.NbBundle.getMessage(IRODSInfoDialog.class, "IRODSInfoDialog.btnRefresh.text")); // NOI18N + btnRefresh.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnRefreshActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4); + jPanel4.setLayout(jPanel4Layout); + jPanel4Layout.setHorizontalGroup( + jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel4Layout.createSequentialGroup() + .addContainerGap(417, Short.MAX_VALUE) + .add(btnRefresh) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(btnClose) + .addContainerGap()) + ); + jPanel4Layout.setVerticalGroup( + jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel4Layout.createSequentialGroup() + .add(0, 6, Short.MAX_VALUE) + .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(btnClose) + .add(btnRefresh))) + ); + + pnlCloseBtn.add(jPanel4, java.awt.BorderLayout.EAST); + + jPanel1.add(pnlCloseBtn, java.awt.BorderLayout.PAGE_END); + + getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void btnMetadataCreateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMetadataCreateActionPerformed + AvuData avuData; + CollectionAO collectionAO; + DataObjectAO dataObjectAO; + try { + // create AVU data object from text fields + String attr = txtMetadataAttribute.getText(); + String value = txtMetadataValue.getText(); + String unit = txtMetadataUnit.getText(); + avuData = new AvuData(attr, value, unit); + if (isCollection()) { + collectionAO = irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAO(irodsAccount); + collectionAO.addAVUMetadata(selectedObjectFullPath, avuData); + } + else { + dataObjectAO = irodsFileSystem.getIRODSAccessObjectFactory().getDataObjectAO(irodsAccount); + dataObjectAO.addAVUMetadata(selectedObjectFullPath, avuData); + } + + // add to table + MetadataTableModel tm = (MetadataTableModel)tableMetadata.getModel(); + tm.addRow(selectedObjectFullPath, attr, value, unit); + + // clear text fields + txtMetadataAttribute.setText(""); + txtMetadataValue.setText(""); + txtMetadataUnit.setText(""); + + JOptionPane.showMessageDialog( + this, "Metadata Sucessfully Created", "Create Metadata", JOptionPane.PLAIN_MESSAGE); + + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + JOptionPane.showMessageDialog( + this, "Metadata Creation Failed", "Create Metadata", JOptionPane.PLAIN_MESSAGE); + } + }//GEN-LAST:event_btnMetadataCreateActionPerformed + + private void btnUpdateTagsCommentsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUpdateTagsCommentsActionPerformed + + TaggingServiceFactory taggingServiceFactory = null;; + IRODSTagValue irodsTagValue = null; + + try { + taggingServiceFactory = new TaggingServiceFactoryImpl(irodsFileSystem.getIRODSAccessObjectFactory()); + FreeTaggingService freeTaggingService = taggingServiceFactory.instanceFreeTaggingService(irodsAccount); + IRODSTaggingService irodsTaggingService = taggingServiceFactory.instanceIrodsTaggingService(irodsAccount); + + // first update the tags + String newTagStr = txtInfoTags.getText(); + if (newTagStr != null ) { //&& !newTagStr.isEmpty()) { + + // now need to diff against existing tags to see what to add and what to delete + String existingTags = null; + if (isCollection()) { + existingTags = freeTaggingService.getTagsForCollectionInFreeTagForm( + selectedObjectFullPath).getSpaceDelimitedTagsForDomain(); + } + else { + existingTags = freeTaggingService.getTagsForDataObjectInFreeTagForm( + selectedObjectFullPath).getSpaceDelimitedTagsForDomain(); + } + + List<String> existingTagList = Arrays.asList(existingTags.split(" ")); + List<String> newTagsList = Arrays.asList(newTagStr.split(" +")); + + // find tags to delete and remove them + Set<String> tagsToDeleteSet = new HashSet<String>(existingTagList); + tagsToDeleteSet.removeAll(newTagsList); + String[] tagsToDelete = tagsToDeleteSet.toArray(new String[0]); + for (String tag: tagsToDelete) { + if (tag.length() > 0) { + irodsTagValue = new IRODSTagValue(tag, irodsAccount.getUserName()); + if (isCollection()) { + irodsTaggingService.deleteTagFromCollection(selectedObjectFullPath, irodsTagValue); + } + else { + irodsTaggingService.deleteTagFromDataObject(selectedObjectFullPath, irodsTagValue); + } + } + } + + // find tags to add + Set<String> tagsToAddSet = new HashSet<String>(newTagsList); + tagsToAddSet.removeAll(existingTagList); + String[] tagsToAdd = tagsToAddSet.toArray(new String[0]); + for (String tag: tagsToAdd) { + if (tag.length() > 0) { + irodsTagValue = new IRODSTagValue(tag, irodsAccount.getUserName()); + if (isCollection()) { + irodsTaggingService.addTagToCollection(selectedObjectFullPath, irodsTagValue); + } + else { + irodsTaggingService.addTagToDataObject(selectedObjectFullPath, irodsTagValue); + } + } + } + } + + + // now update comments + String commentStr = textareaInfoComments.getText(); + if (commentStr != null && !commentStr.isEmpty()) { + + // update comments + irodsTagValue = new IRODSTagValue(commentStr, irodsAccount.getUserName()); + if (isCollection()) { + irodsTaggingService.checkAndUpdateDescriptionOnCollection(selectedObjectFullPath, irodsTagValue); + } + else { + irodsTaggingService.checkAndUpdateDescriptionOnDataObject(selectedObjectFullPath, irodsTagValue); + } + } + else { + // remove all comments + if (isCollection()) { + irodsTagValue = irodsTaggingService.getDescriptionOnCollectionForLoggedInUser(selectedObjectFullPath); + if (irodsTagValue != null) { + irodsTaggingService.deleteDescriptionFromCollection(selectedObjectFullPath, irodsTagValue); + } + } + else { + irodsTagValue = irodsTaggingService.getDescriptionOnDataObjectForLoggedInUser(selectedObjectFullPath); + if (irodsTagValue != null) { + irodsTaggingService.deleteDescriptionFromDataObject(selectedObjectFullPath, irodsTagValue); + } + } + } + + JOptionPane.showMessageDialog( + this, "Tags and Comments Sucessfully Updated", "Update Tags and Comments", JOptionPane.PLAIN_MESSAGE); + + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + JOptionPane.showMessageDialog( + this, "Update of Tags and Comments Failed"); + } + }//GEN-LAST:event_btnUpdateTagsCommentsActionPerformed + + private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCloseActionPerformed + this.dispose(); + }//GEN-LAST:event_btnCloseActionPerformed + + private void btnMetadataClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMetadataClearActionPerformed + // clear table selection +// tableMetadata.clearSelection(); + + // clear all text fields +// txtMetadataAttribute.setText(""); +// txtMetadataValue.setText(""); +// txtMetadataUnit.setText(""); + }//GEN-LAST:event_btnMetadataClearActionPerformed + + private void btnMetadataDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMetadataDeleteActionPerformed + AvuData avuData; + CollectionAO collectionAO; + DataObjectAO dataObjectAO; + + try { + String attr = null; + String value = null; + String unit = null; + + // get selected rows to delete in metadata table + int[] selectedRows = tableMetadata.getSelectedRows(); + for (int i=0; i<selectedRows.length; i++) { + // create AVU data object to delete + attr = (String)tableMetadata.getValueAt(selectedRows[i], 0); + value = (String)tableMetadata.getValueAt(selectedRows[i], 1); + unit = (String)tableMetadata.getValueAt(selectedRows[i], 2); + avuData = new AvuData(attr, value, unit); + if (isCollection()) { + collectionAO = irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAO(irodsAccount); + collectionAO.deleteAVUMetadata(selectedObjectFullPath, avuData); + } + else { + dataObjectAO = irodsFileSystem.getIRODSAccessObjectFactory().getDataObjectAO(irodsAccount); + dataObjectAO.deleteAVUMetadata(selectedObjectFullPath, avuData); + } + // remove from table + MetadataTableModel tm = (MetadataTableModel)tableMetadata.getModel(); + tm.deleteRow(selectedObjectFullPath, attr, value, unit, selectedRows[i]); + } + + JOptionPane.showMessageDialog( + this, "Metadata Sucessfully Deleted", "Delete Metadata", JOptionPane.PLAIN_MESSAGE); + + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + JOptionPane.showMessageDialog( + this, "Metadata Delete Failed", "Delete Metadata", JOptionPane.PLAIN_MESSAGE); + } + }//GEN-LAST:event_btnMetadataDeleteActionPerformed + + private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshActionPerformed + + if (tabbedpanelMain.getSelectedComponent() == pnlInfoTab) { + initializeFileInfo(); + } + else + if (tabbedpanelMain.getSelectedComponent() == pnlMetadataTab) { + initMetadataInfo(); + } + else { // permissions tab + initPermissionInfo(); + } + }//GEN-LAST:event_btnRefreshActionPerformed + + private void btnPermissionsSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPermissionsSaveActionPerformed + + PermissionsTableModel tm = (PermissionsTableModel)tablePermissions.getModel(); + + try { + // first get any permissions that were removed + UserFilePermission[] permissionsToDelete = tm.getPermissionsToDelete(); + + for (UserFilePermission permission: permissionsToDelete) { + + if (isCollection()) { + CollectionAO collectionAO = irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAO(irodsAccount); + collectionAO.removeAccessPermissionForUser( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName(), + true); + } + else { + DataObjectAO dataObjectAO = irodsFileSystem.getIRODSAccessObjectFactory().getDataObjectAO(irodsAccount); + dataObjectAO.removeAccessPermissionsForUser( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName()); + } + } + + // now add any permissions that were added + UserFilePermission[] permissionsToAdd = tm.getPermissionsToAdd(); + + for (UserFilePermission permission: permissionsToAdd) { + CollectionAO collectionAO = irodsFileSystem.getIRODSAccessObjectFactory().getCollectionAO(irodsAccount); + DataObjectAO dataObjectAO = irodsFileSystem.getIRODSAccessObjectFactory().getDataObjectAO(irodsAccount); + + if (permission.getFilePermissionEnum() == FilePermissionEnum.READ) { + if (isCollection()) { + collectionAO.setAccessPermissionRead( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName(), + true); + } + else { + dataObjectAO.setAccessPermissionRead( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName()); + } + } + else + if (permission.getFilePermissionEnum() == FilePermissionEnum.WRITE) { + if (isCollection()) { + collectionAO.setAccessPermissionWrite( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName(), + true); + } + else { + dataObjectAO.setAccessPermissionWrite( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName()); + } + } + else + if (permission.getFilePermissionEnum() == FilePermissionEnum.OWN) { + if (isCollection()) { + collectionAO.setAccessPermissionOwn( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName(), + true); + } + else { + dataObjectAO.setAccessPermissionOwn( + permission.getUserZone(), + selectedObjectFullPath, + permission.getUserName()); + } + } + } + + if((permissionsToAdd.length > 0) || (permissionsToDelete.length > 0)) { + JOptionPane.showMessageDialog( + this, "Permissions Updated Sucessfully", "Update Permissions", JOptionPane.PLAIN_MESSAGE); + } + + tm.resetOriginalPermissionList(); + + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + JOptionPane.showMessageDialog( + this, "Permission Update Failed", "Update Permissions", JOptionPane.PLAIN_MESSAGE); + } + + btnPermissionsSave.setEnabled(false); + }//GEN-LAST:event_btnPermissionsSaveActionPerformed + + private void btnAddSharePermissionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddSharePermissionsActionPerformed + AddPermissionsDialog addPermissionsDialog = new AddPermissionsDialog( + this, true, irodsFileSystem, irodsAccount); + + addPermissionsDialog.setLocation( + (int)this.getLocation().getX(), (int)this.getLocation().getY()); + addPermissionsDialog.setVisible(true); + + UserFilePermission userFilePermission = addPermissionsDialog.getPermissionToAdd(); + + // first remove this user's entry from table if there is one + if (userFilePermission != null) { + try { + UserAO userAO = irodsFileSystem.getIRODSAccessObjectFactory().getUserAO(irodsAccount); + String tableUserName = userFilePermission.getUserName() + "#" + userFilePermission.getUserZone(); + + PermissionsTableModel tm = (PermissionsTableModel)tablePermissions.getModel(); + tm.deleteRow(userAO.findByName(tableUserName)); + + // now add to table + tm.addRow(userAO.findByName(tableUserName), userFilePermission.getFilePermissionEnum()); + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + btnPermissionsSave.setEnabled(true); + } + }//GEN-LAST:event_btnAddSharePermissionsActionPerformed + + private void btnDeleteSharePermissionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteSharePermissionsActionPerformed + + int[] selectedRows = tablePermissions.getSelectedRows(); + int numRowsSelected = selectedRows.length; + + // have to remove rows in reverse + for(int i=numRowsSelected-1; i>=0; i--) { + int selectedRow = selectedRows[i]; + if (selectedRow >= 0) { + PermissionsTableModel model = (PermissionsTableModel) tablePermissions.getModel(); + model.deleteRow(selectedRow); + btnPermissionsSave.setEnabled(true); + } + } + }//GEN-LAST:event_btnDeleteSharePermissionsActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnAddSharePermissions; + private javax.swing.JButton btnClose; + private javax.swing.JButton btnDeleteSharePermissions; + private javax.swing.JButton btnMetadataClear; + private javax.swing.JButton btnMetadataCreate; + private javax.swing.JButton btnMetadataDelete; + private javax.swing.JButton btnPermissionsSave; + private javax.swing.JButton btnRefresh; + private javax.swing.JButton btnUpdateTagsComments; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel13; + private javax.swing.JLabel jLabel14; + private javax.swing.JLabel jLabel15; + private javax.swing.JLabel jLabel16; + private javax.swing.JLabel jLabel17; + private javax.swing.JLabel jLabel18; + private javax.swing.JLabel jLabel19; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel20; + private javax.swing.JLabel jLabel21; + private javax.swing.JLabel jLabel22; + private javax.swing.JLabel jLabel23; + private javax.swing.JLabel jLabel24; + private javax.swing.JLabel jLabel25; + private javax.swing.JLabel jLabel26; + private javax.swing.JLabel jLabel27; + private javax.swing.JLabel jLabel28; + private javax.swing.JLabel jLabel29; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel30; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel9; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel16; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel5; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel7; + private javax.swing.JPanel jPanel8; + private javax.swing.JPanel jPanel9; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JScrollPane jScrollPane3; + private javax.swing.JLabel lblInfoCollectionCreatedDate; + private javax.swing.JLabel lblInfoCollectionDescription; + private javax.swing.JLabel lblInfoCollectionInfo1; + private javax.swing.JLabel lblInfoCollectionInfo2; + private javax.swing.JLabel lblInfoCollectionModifiedDate; + private javax.swing.JLabel lblInfoCollectionObjectPath; + private javax.swing.JLabel lblInfoCollectionOwner; + private javax.swing.JLabel lblInfoCollectionOwnerZone; + private javax.swing.JLabel lblInfoCollectionType; + private javax.swing.JLabel lblInfoObjectChecksum; + private javax.swing.JLabel lblInfoObjectCreatedDate; + private javax.swing.JLabel lblInfoObjectDataPath; + private javax.swing.JLabel lblInfoObjectModifiedDate; + private javax.swing.JLabel lblInfoObjectName; + private javax.swing.JLabel lblInfoObjectOwner; + private javax.swing.JLabel lblInfoObjectOwnerZone; + private javax.swing.JLabel lblInfoObjectParent; + private javax.swing.JLabel lblInfoObjectReplicaNumber; + private javax.swing.JLabel lblInfoObjectReplicationStatus; + private javax.swing.JLabel lblInfoObjectResource; + private javax.swing.JLabel lblInfoObjectResourceGroup; + private javax.swing.JLabel lblInfoObjectSize; + private javax.swing.JLabel lblInfoObjectStatus; + private javax.swing.JLabel lblInfoObjectType; + private javax.swing.JLabel lblInfoObjectVersion; + private javax.swing.JLabel lblObjectCollection; + private javax.swing.JPanel pnlCloseBtn; + private javax.swing.JPanel pnlCollectionInfo; + private javax.swing.JPanel pnlInfoCards; + private javax.swing.JPanel pnlInfoTab; + private javax.swing.JPanel pnlMetaDataEdit; + private javax.swing.JPanel pnlMetadataTab; + private javax.swing.JPanel pnlMetadataTable; + private javax.swing.JPanel pnlObjectInfo; + private javax.swing.JPanel pnlPermissionsTab; + private javax.swing.JPanel pnlPermissionsTable; + private javax.swing.JPanel pnlSelectedObject; + private javax.swing.JPanel pnlTagsComments; + private javax.swing.JTabbedPane tabbedpanelMain; + private javax.swing.JTable tableMetadata; + private javax.swing.JTable tablePermissions; + private javax.swing.JTextArea textareaInfoComments; + private javax.swing.JTextField txtInfoTags; + private javax.swing.JTextField txtMetadataAttribute; + private javax.swing.JTextField txtMetadataUnit; + private javax.swing.JTextField txtMetadataValue; + // End of variables declaration//GEN-END:variables + +} diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form new file mode 100644 index 0000000..13b06da --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="SearchResultsDialog.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-9,0,0,2,-107"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlTabSearch"> + <Properties> + <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="SearchResultsDialog.pnlTabSearch.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlTabSearchTop"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + </Container> + <Container class="javax.swing.JPanel" name="pnlTabSearchResults"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridLayout"> + <Property name="columns" type="int" value="0"/> + <Property name="rows" type="int" value="1"/> + </Layout> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="scrollPaneSearchResults"> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="tableSearchResults"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="4" rowCount="4"> + <Column editable="true" title="Title 1" type="java.lang.Object"/> + <Column editable="true" title="Title 2" type="java.lang.Object"/> + <Column editable="true" title="Title 3" type="java.lang.Object"/> + <Column editable="true" title="Title 4" type="java.lang.Object"/> + </Table> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel2"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[661, 50]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout> + <DimensionLayout dim="0"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="1" attributes="0"> + <EmptySpace pref="528" max="32767" attributes="0"/> + <Component id="btnDismiss" min="-2" max="-2" attributes="0"/> + <EmptySpace min="-2" pref="38" max="-2" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + <DimensionLayout dim="1"> + <Group type="103" groupAlignment="0" attributes="0"> + <Group type="102" alignment="0" attributes="0"> + <EmptySpace min="-2" pref="15" max="-2" attributes="0"/> + <Component id="btnDismiss" min="-2" max="-2" attributes="0"/> + <EmptySpace max="32767" attributes="0"/> + </Group> + </Group> + </DimensionLayout> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnDismiss"> + <Properties> + <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="SearchResultsDialog.btnDismiss.label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDismissActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java new file mode 100644 index 0000000..7238589 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java @@ -0,0 +1,222 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.irods.jargon.idrop.desktop.systraygui; + +import java.awt.Cursor; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.tree.TreePath; +import org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAO; +import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry; +import org.irods.jargon.idrop.desktop.systraygui.utils.TreeUtils; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSOutlineModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSSearchTableModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSTree; +import org.irods.jargon.idrop.exceptions.IdropException; +import org.openide.util.Exceptions; +import org.slf4j.LoggerFactory; + +/** + * + * @author lisa + */ +public class SearchResultsDialog extends javax.swing.JDialog implements ListSelectionListener { + + private iDrop idropGui; + private IRODSTree irodsTree; + private IRODSOutlineModel irodsFileSystemModel; + private String searchText; + public static org.slf4j.Logger log = LoggerFactory.getLogger(IRODSTree.class); + + /** + * Creates new form SearchResultsDialog + */ + public SearchResultsDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + public SearchResultsDialog(final iDrop parent, final boolean modal, + final IRODSTree irodsTree, final String searchText) { + super(parent, modal); + initComponents(); + + this.idropGui = parent; + this.irodsTree = irodsTree; + this.searchText = searchText; + this.irodsFileSystemModel = (IRODSOutlineModel) irodsTree.getModel(); + + initSearchResults(); + } + + private void initSearchResults() { + final String searchTerms = searchText.trim(); + + tableSearchResults.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + ListSelectionModel listSelectionModel = tableSearchResults.getSelectionModel(); + listSelectionModel.addListSelectionListener(this); + + java.awt.EventQueue.invokeLater(new Runnable() { + + @Override + public void run() { + + try { + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = + idropGui.getiDropCore().getIRODSAccessObjectFactory().getCollectionAndDataObjectListAndSearchAO( + idropGui.getiDropCore().getIrodsAccount()); + IRODSSearchTableModel irodsSearchTableModel = new IRODSSearchTableModel( + collectionAndDataObjectListAndSearchAO.searchCollectionsAndDataObjectsBasedOnName(searchTerms)); + tableSearchResults.setModel(irodsSearchTableModel); + //tabIrodsViews.setSelectedComponent(pnlTabSearch); + } catch (Exception e) { + idropGui.showIdropException(e); + return; + } finally { + idropGui.getiDropCore().closeAllIRODSConnections(); + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + } + }); + } + + + @Override + public void valueChanged(ListSelectionEvent lse) { + if (lse.getValueIsAdjusting()) + return; + + int row = tableSearchResults.getSelectedRow(); + + CollectionAndDataObjectListingEntry.ObjectType objType = + (CollectionAndDataObjectListingEntry.ObjectType) tableSearchResults.getValueAt(row, 0); + String selectedParent = (String) tableSearchResults.getValueAt(row, 1); + String selectedName = (String) tableSearchResults.getValueAt(row, 2); + if (selectedParent != null && selectedName != null) { + + log.info("selected returned search result: {}", selectedParent + "/" + selectedName); + + CollectionAndDataObjectListingEntry entry = new CollectionAndDataObjectListingEntry(); + entry.setObjectType(objType); + entry.setParentPath(selectedParent); + entry.setPathOrName(selectedName); + + TreePath path = null; + try { + path = TreeUtils.buildTreePathForIrodsAbsolutePath(irodsTree, selectedParent + "/" + selectedName); + } catch (IdropException ex) { + Exceptions.printStackTrace(ex); + } + + if (path != null) { + irodsTree.expandPath(path); + java.awt.Rectangle rect = irodsTree.getPathBounds(path); + if (rect != null) { + irodsTree.scrollRectToVisible(rect); + } + } + } + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + pnlTabSearch = new javax.swing.JPanel(); + pnlTabSearchTop = new javax.swing.JPanel(); + pnlTabSearchResults = new javax.swing.JPanel(); + scrollPaneSearchResults = new javax.swing.JScrollPane(); + tableSearchResults = new javax.swing.JTable(); + jPanel2 = new javax.swing.JPanel(); + btnDismiss = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(SearchResultsDialog.class, "SearchResultsDialog.title")); // NOI18N + + jPanel1.setLayout(new java.awt.BorderLayout()); + + pnlTabSearch.setToolTipText(org.openide.util.NbBundle.getMessage(SearchResultsDialog.class, "SearchResultsDialog.pnlTabSearch.toolTipText")); // NOI18N + pnlTabSearch.setLayout(new java.awt.BorderLayout()); + pnlTabSearch.add(pnlTabSearchTop, java.awt.BorderLayout.NORTH); + + pnlTabSearchResults.setLayout(new java.awt.GridLayout()); + + tableSearchResults.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null}, + {null, null, null, null} + }, + new String [] { + "Title 1", "Title 2", "Title 3", "Title 4" + } + )); + scrollPaneSearchResults.setViewportView(tableSearchResults); + + pnlTabSearchResults.add(scrollPaneSearchResults); + + pnlTabSearch.add(pnlTabSearchResults, java.awt.BorderLayout.CENTER); + + jPanel1.add(pnlTabSearch, java.awt.BorderLayout.CENTER); + + getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); + + jPanel2.setPreferredSize(new java.awt.Dimension(661, 50)); + + btnDismiss.setLabel(org.openide.util.NbBundle.getMessage(SearchResultsDialog.class, "SearchResultsDialog.btnDismiss.label")); // NOI18N + btnDismiss.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDismissActionPerformed(evt); + } + }); + + org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap(528, Short.MAX_VALUE) + .add(btnDismiss) + .add(38, 38, 38)) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(jPanel2Layout.createSequentialGroup() + .add(15, 15, 15) + .add(btnDismiss) + .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void btnDismissActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDismissActionPerformed + this.dispose(); + }//GEN-LAST:event_btnDismissActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnDismiss; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel pnlTabSearch; + private javax.swing.JPanel pnlTabSearchResults; + private javax.swing.JPanel pnlTabSearchTop; + private javax.swing.JScrollPane scrollPaneSearchResults; + private javax.swing.JTable tableSearchResults; + // End of variables declaration//GEN-END:variables + +} diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/UploadDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/UploadDialog.form new file mode 100644 index 0000000..6ac3155 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/UploadDialog.form @@ -0,0 +1,363 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="2"/> + <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="UploadDialog.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 400]"/> + </Property> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,8,0,0,1,-25"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Properties> + <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="6" left="6" right="6" top="6"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[600, 400]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel4"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[945, 76]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel9"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 32]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="North"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel7"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel1"> + <Properties> + <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="UploadDialog.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtUploadTarget"> + <Properties> + <Property name="editable" type="boolean" value="false"/> + <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="UploadDialog.txtUploadTarget.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[200, 28]"/> + </Property> + <Property name="requestFocusEnabled" type="boolean" value="false"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel8"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnBrowseUploadTarget"> + <Properties> + <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="UploadDialog.btnBrowseUploadTarget.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnBrowseUploadTargetActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel10"> + <Properties> + <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="10" left="1" right="1" top="1"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 40]"/> + </Property> + <Property name="size" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 32]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel11"> + <Properties> + <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="0" left="0" right="0" top="0"/> + </Border> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnUseIrodsHome"> + <Properties> + <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="UploadDialog.btnUseIrodsHome.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUseIrodsHomeActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnUseLastUpload"> + <Properties> + <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="UploadDialog.btnUseLastUpload.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUseLastUploadActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel5"> + <Properties> + <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="4" right="4" top="14"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[462, 250]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Component class="javax.swing.JLabel" name="jLabel2"> + <Properties> + <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="UploadDialog.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="First"/> + </Constraint> + </Constraints> + </Component> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[454, 190]"/> + </Property> + </Properties> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JTable" name="tblFilesToUpload"> + <Properties> + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> + <Table columnCount="1" rowCount="0"> + <Column editable="false" title="File" type="java.lang.String"/> + </Table> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel3"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[100, 25]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel6"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="West"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"> + <Property name="horizontalGap" type="int" value="1"/> + <Property name="verticalGap" type="int" value="1"/> + </Layout> + <SubComponents> + <Component class="javax.swing.JButton" name="btnAddUploadFile"> + <Properties> + <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="UploadDialog.btnAddUploadFile.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[22, 24]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnAddUploadFileActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnDeleteUploadFile"> + <Properties> + <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="UploadDialog.btnDeleteUploadFile.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[22, 24]"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnDeleteUploadFileActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel2"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="jPanel12"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="btnUploadNow"> + <Properties> + <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="UploadDialog.btnUploadNow.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="enabled" type="boolean" value="false"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUploadNowActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnCancel"> + <Properties> + <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="UploadDialog.btnCancel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCancelActionPerformed"/> + </Events> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/UploadDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/UploadDialog.java new file mode 100644 index 0000000..8c08ba5 --- /dev/null +++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/UploadDialog.java @@ -0,0 +1,577 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.irods.jargon.idrop.desktop.systraygui; + +import java.awt.Cursor; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.swing.JFileChooser; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.DefaultTableModel; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; +import org.irods.jargon.core.exception.JargonException; +import org.irods.jargon.core.pub.io.IRODSFile; +import org.irods.jargon.core.utils.MiscIRODSUtils; +import org.irods.jargon.idrop.desktop.systraygui.services.IRODSFileService; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSOutlineModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSTree; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileNode; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileSystemModel; +import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileTree; +import org.irods.jargon.idrop.exceptions.IdropException; +import org.irods.jargon.idrop.finder.IRODSFinderDialog; +import org.irods.jargon.transfer.dao.domain.LocalIRODSTransfer; +import org.irods.jargon.transfer.dao.domain.TransferType; +import org.openide.util.Exceptions; +import org.slf4j.LoggerFactory; + +/** + * + * @author lisa + */ +public class UploadDialog extends javax.swing.JDialog implements ListSelectionListener { + + iDrop idropGUI; + IRODSTree irodsTree; + LocalFileTree localFileTree; + public static org.slf4j.Logger log = LoggerFactory.getLogger(IRODSTree.class); + + /** + * Creates new form UploadDialog + */ + public UploadDialog(java.awt.Frame parent, boolean modal) { + super(parent, modal); + initComponents(); + } + + public UploadDialog(final iDrop parent, final boolean modal, + final IRODSTree irodsTree, + final LocalFileTree localFileTree) { + super(parent, modal); + initComponents(); + + this.idropGUI = parent; + this.irodsTree = irodsTree; + this.localFileTree = localFileTree; + this.btnDeleteUploadFile.setEnabled(false); + tblFilesToUpload.getSelectionModel().addListSelectionListener(this); + + initUploadTarget(); +// initSourcesFiles(); + setUploadButtonState(); + } + + private void initUploadTarget() { + + String target = ""; + + //check for selected collection to use for upload target + // get iRODS File Service + IRODSFileService irodsFS = null; + try { + irodsFS = new IRODSFileService(idropGUI.getiDropCore().getIrodsAccount(), + idropGUI.getiDropCore().getIrodsFileSystem()); + } catch (Exception ex) { + //JOptionPane.showMessageDialog(this, "Cannot access iRODS file system for get."); + log.error("cannot create irods file service"); + return; + } + + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) irodsTree.getModel(); + ListSelectionModel selectionModel = irodsTree.getSelectionModel(); + int idx = selectionModel.getLeadSelectionIndex(); + + // make sure there is a selected node + if (idx >= 0) { + IRODSFile ifile = null; + try { + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt(idx, 0); + ifile = irodsFS.getIRODSFileForPath(selectedNode.getFullPath()); + + // rule out "/" and choose parent if file is not a directory + String path = ifile.getAbsolutePath(); + if (ifile.isFile()) { + path = ifile.getParent(); + } + if ((path != null) && (!path.equals("/"))) { + target = path; + } + } catch (IdropException ex) { + Exceptions.printStackTrace(ex); + } + } +// else { +// +// // next see if can find some put history in the transfer queue +// // manager and use that target location +// // next see if can find some get history in the transfer queue +// try { +// List<LocalIRODSTransfer> transfers = idropGUI.getiDropCore().getTransferManager().getRecentQueue(); +// +// // assuming most recent first +// for (LocalIRODSTransfer transfer: transfers) { +// if (transfer.getTransferType() == TransferType.PUT) { +// target = transfer.getIrodsAbsolutePath(); +// break; +// } +// } +// } catch (JargonException ex) { +// Exceptions.printStackTrace(ex); +// } +// } + + txtUploadTarget.setText(target); + } + + + // seems to be impossible to preselect files in filechooser component + // don't do this for now +// private void initSourcesFiles() { +// +// //check for selected files and/or folders to upload +// TreeSelectionModel selectionModel = localFileTree.getSelectionModel(); +// LocalFileSystemModel fileSystemModel = (LocalFileSystemModel) localFileTree.getModel(); +// +// TreePath[] selectionPaths = selectionModel.getSelectionPaths(); +// +// // now select these paths in the file chooser +// if ( selectionPaths != null) { +// LocalFileNode sourceNode; +// for (TreePath selectionPath : selectionPaths) { +// sourceNode = (LocalFileNode) selectionPath.getLastPathComponent(); +// File file = (File) sourceNode.getUserObject(); +// //txtareaUploadSourceList.append(file.getAbsolutePath() + "\n"); +// localChooser.setSelectedFile(file); +// } +// } +// +// } + + private void setUploadButtonState() { + btnUploadNow.setEnabled(((txtUploadTarget.getText().length() > 0) && + (tblFilesToUpload.getModel().getRowCount() > 0))); + } + + + private void executeUpload() { + + idropGUI.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + final String targetPath = txtUploadTarget.getText(); + //final String sourceFiles[] = txtareaUploadSourceList.getText().split("\n"); + final String sourceFiles[] = getFilesToUpload(); + + // process as a put + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + + for (String transferFile : sourceFiles) { + log.info("process a put from source: {}", + transferFile); + + String sourceResource = idropGUI.getIrodsAccount().getDefaultStorageResource(); + log.info("initiating put transfer"); + try { + idropGUI.getiDropCore().getTransferManager().enqueueAPut(transferFile, + targetPath, + sourceResource, + idropGUI.getIrodsAccount()); + } catch (JargonException ex) { + java.util.logging.Logger.getLogger( + LocalFileTree.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + idropGUI.showIdropException(ex); + } + } + } + }); + + idropGUI.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + + + private String[] getFilesToUpload() { + + int numFiles = 0; + DefaultTableModel model = (DefaultTableModel) tblFilesToUpload.getModel(); + numFiles = model.getRowCount(); + String[] filesToUpload = new String[numFiles]; + + for (int i=0; i<numFiles; i++) { + filesToUpload[i] = (String) model.getValueAt(i, 0); + } + + return filesToUpload; + } + + private void setFilesToUpload(File[] files) { + + DefaultTableModel model = (DefaultTableModel) tblFilesToUpload.getModel(); + + for(int i=0; i<files.length; i++) { + String filePath = files[i].getAbsolutePath(); + model.addRow(new Object[] {filePath}); + } + } + + + @Override + public void valueChanged(ListSelectionEvent lse) { + if (lse.getValueIsAdjusting() == false) { + btnDeleteUploadFile.setEnabled(tblFilesToUpload.getSelectedRow() >= 0); + } + } + +// private void btnBrowseUploadSourceActionPerformed(java.awt.event.ActionEvent evt) { +// +// JFileChooser localFileChooser = new JFileChooser(); +// localFileChooser.setMultiSelectionEnabled(true); +// localFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); +// localFileChooser.setDialogTitle("Select Files and Collections to Upload"); +// localFileChooser.setLocation( +// (int)this.getLocation().getX(), (int)this.getLocation().getY()); +// int returnVal = localFileChooser.showOpenDialog(this); +// +// if (returnVal == JFileChooser.APPROVE_OPTION) { +// File uploadFiles[] = localFileChooser.getSelectedFiles(); +// for (File uploadFile: uploadFiles) { +// txtareaUploadSourceList.append(uploadFile.getAbsolutePath() + "\n"); +// } +// setUploadButtonState(); +// } +// } + + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jPanel1 = new javax.swing.JPanel(); + jPanel4 = new javax.swing.JPanel(); + jPanel9 = new javax.swing.JPanel(); + jPanel7 = new javax.swing.JPanel(); + jLabel1 = new javax.swing.JLabel(); + txtUploadTarget = new javax.swing.JTextField(); + jPanel8 = new javax.swing.JPanel(); + btnBrowseUploadTarget = new javax.swing.JButton(); + jPanel10 = new javax.swing.JPanel(); + jPanel11 = new javax.swing.JPanel(); + btnUseIrodsHome = new javax.swing.JButton(); + btnUseLastUpload = new javax.swing.JButton(); + jPanel5 = new javax.swing.JPanel(); + jLabel2 = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + tblFilesToUpload = new javax.swing.JTable(); + jPanel3 = new javax.swing.JPanel(); + jPanel6 = new javax.swing.JPanel(); + btnAddUploadFile = new javax.swing.JButton(); + btnDeleteUploadFile = new javax.swing.JButton(); + jPanel2 = new javax.swing.JPanel(); + jPanel12 = new javax.swing.JPanel(); + btnUploadNow = new javax.swing.JButton(); + btnCancel = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.title")); // NOI18N + setPreferredSize(new java.awt.Dimension(600, 400)); + + jPanel1.setBorder(javax.swing.BorderFactory.createEmptyBorder(6, 6, 6, 6)); + jPanel1.setPreferredSize(new java.awt.Dimension(600, 400)); + jPanel1.setLayout(new java.awt.BorderLayout()); + + jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jPanel4.setPreferredSize(new java.awt.Dimension(945, 76)); + jPanel4.setLayout(new java.awt.BorderLayout()); + + jPanel9.setPreferredSize(new java.awt.Dimension(100, 32)); + jPanel9.setLayout(new java.awt.BorderLayout()); + + jLabel1.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.jLabel1.text")); // NOI18N + jPanel7.add(jLabel1); + + txtUploadTarget.setEditable(false); + txtUploadTarget.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.txtUploadTarget.text")); // NOI18N + txtUploadTarget.setPreferredSize(new java.awt.Dimension(200, 28)); + txtUploadTarget.setRequestFocusEnabled(false); + jPanel7.add(txtUploadTarget); + + jPanel9.add(jPanel7, java.awt.BorderLayout.WEST); + + btnBrowseUploadTarget.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnBrowseUploadTarget.text")); // NOI18N + btnBrowseUploadTarget.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnBrowseUploadTargetActionPerformed(evt); + } + }); + jPanel8.add(btnBrowseUploadTarget); + + jPanel9.add(jPanel8, java.awt.BorderLayout.EAST); + + jPanel4.add(jPanel9, java.awt.BorderLayout.NORTH); + + jPanel10.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 10, 1)); + jPanel10.setPreferredSize(new java.awt.Dimension(100, 40)); + jPanel10.setSize(new java.awt.Dimension(100, 32)); + jPanel10.setLayout(new java.awt.BorderLayout()); + + jPanel11.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); + + btnUseIrodsHome.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnUseIrodsHome.text")); // NOI18N + btnUseIrodsHome.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUseIrodsHomeActionPerformed(evt); + } + }); + jPanel11.add(btnUseIrodsHome); + + btnUseLastUpload.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnUseLastUpload.text")); // NOI18N + btnUseLastUpload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUseLastUploadActionPerformed(evt); + } + }); + jPanel11.add(btnUseLastUpload); + + jPanel10.add(jPanel11, java.awt.BorderLayout.EAST); + + jPanel4.add(jPanel10, java.awt.BorderLayout.SOUTH); + + jPanel1.add(jPanel4, java.awt.BorderLayout.NORTH); + + jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(14, 4, 1, 4)); + jPanel5.setPreferredSize(new java.awt.Dimension(462, 250)); + jPanel5.setLayout(new java.awt.BorderLayout()); + + jLabel2.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.jLabel2.text")); // NOI18N + jPanel5.add(jLabel2, java.awt.BorderLayout.PAGE_START); + + jScrollPane1.setPreferredSize(new java.awt.Dimension(454, 190)); + + tblFilesToUpload.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "File" + } + ) { + Class[] types = new Class [] { + java.lang.String.class + }; + boolean[] canEdit = new boolean [] { + false + }; + + public Class getColumnClass(int columnIndex) { + return types [columnIndex]; + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPane1.setViewportView(tblFilesToUpload); + + jPanel5.add(jScrollPane1, java.awt.BorderLayout.CENTER); + + jPanel3.setPreferredSize(new java.awt.Dimension(100, 25)); + jPanel3.setLayout(new java.awt.BorderLayout()); + + jPanel6.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 1, 1)); + + btnAddUploadFile.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnAddUploadFile.text")); // NOI18N + btnAddUploadFile.setPreferredSize(new java.awt.Dimension(22, 24)); + btnAddUploadFile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnAddUploadFileActionPerformed(evt); + } + }); + jPanel6.add(btnAddUploadFile); + + btnDeleteUploadFile.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnDeleteUploadFile.text")); // NOI18N + btnDeleteUploadFile.setPreferredSize(new java.awt.Dimension(22, 24)); + btnDeleteUploadFile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnDeleteUploadFileActionPerformed(evt); + } + }); + jPanel6.add(btnDeleteUploadFile); + + jPanel3.add(jPanel6, java.awt.BorderLayout.WEST); + + jPanel5.add(jPanel3, java.awt.BorderLayout.SOUTH); + + jPanel1.add(jPanel5, java.awt.BorderLayout.CENTER); + + getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER); + + jPanel2.setLayout(new java.awt.BorderLayout()); + + btnUploadNow.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnUploadNow.text")); // NOI18N + btnUploadNow.setEnabled(false); + btnUploadNow.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnUploadNowActionPerformed(evt); + } + }); + jPanel12.add(btnUploadNow); + + btnCancel.setText(org.openide.util.NbBundle.getMessage(UploadDialog.class, "UploadDialog.btnCancel.text")); // NOI18N + btnCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnCancelActionPerformed(evt); + } + }); + jPanel12.add(btnCancel); + + jPanel2.add(jPanel12, java.awt.BorderLayout.EAST); + + getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + private void btnBrowseUploadTargetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBrowseUploadTargetActionPerformed + + IRODSFinderDialog irodsFinder = new IRODSFinderDialog( + idropGUI, false, idropGUI.getiDropCore()); + irodsFinder.setTitle("Select iRODS Collection Upload Target"); + irodsFinder.setSelectionType(IRODSFinderDialog.SelectionType.COLLS_ONLY_SELECTION_MODE); + irodsFinder.setLocation( + (int)this.getLocation().getX(), (int)this.getLocation().getY()); + irodsFinder.setVisible(true); + + String selectedPath = irodsFinder.getSelectedAbsolutePath(); + if (selectedPath != null) { + txtUploadTarget.setText(selectedPath); + } + setUploadButtonState(); + }//GEN-LAST:event_btnBrowseUploadTargetActionPerformed + + private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed + this.dispose(); + }//GEN-LAST:event_btnCancelActionPerformed + + private void btnUploadNowActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUploadNowActionPerformed + executeUpload(); + this.dispose(); + }//GEN-LAST:event_btnUploadNowActionPerformed + + private void btnUseIrodsHomeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUseIrodsHomeActionPerformed + String target = ""; + if (idropGUI.getiDropCore().getIrodsAccount().isAnonymousAccount()) { + target = MiscIRODSUtils.computePublicDirectory(idropGUI.getiDropCore().getIrodsAccount()); + } else { + target = MiscIRODSUtils.computeHomeDirectoryForIRODSAccount(idropGUI.getiDropCore().getIrodsAccount()); + } + if (target != null) { + txtUploadTarget.setText(target); + } + setUploadButtonState(); + }//GEN-LAST:event_btnUseIrodsHomeActionPerformed + + private void btnUseLastUploadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUseLastUploadActionPerformed + String target = ""; + // see if can find some get history in the transfer queue + try { + List<LocalIRODSTransfer> transfers = idropGUI.getiDropCore().getTransferManager().getRecentQueue(); + + // assuming most recent first + for (LocalIRODSTransfer transfer: transfers) { + // must check to match type, user, host, zone, & port + if ((transfer.getTransferType() == TransferType.PUT) && + (transfer.getTransferUserName().equals(idropGUI.getiDropCore().getIrodsAccount().getUserName())) && + (transfer.getTransferZone().equals(idropGUI.getiDropCore().getIrodsAccount().getZone())) && + (transfer.getTransferPort() == idropGUI.getiDropCore().getIrodsAccount().getPort()) && + (transfer.getTransferHost().equals(idropGUI.getiDropCore().getIrodsAccount().getHost()))) { + target = transfer.getIrodsAbsolutePath(); + break; + } + } + } catch (JargonException ex) { + Exceptions.printStackTrace(ex); + } + if (target != null) { + txtUploadTarget.setText(target); + } + setUploadButtonState(); + }//GEN-LAST:event_btnUseLastUploadActionPerformed + + private void btnAddUploadFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddUploadFileActionPerformed + JFileChooser localFileChooser = new JFileChooser(); + localFileChooser.setMultiSelectionEnabled(true); + localFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); + localFileChooser.setDialogTitle("Select Files to Upload"); + localFileChooser.setLocation( + (int)this.getLocation().getX(), (int)this.getLocation().getY()); + int returnVal = localFileChooser.showOpenDialog(this); + + if (returnVal == JFileChooser.APPROVE_OPTION) { + File[] filesToUpload = localFileChooser.getSelectedFiles(); + setFilesToUpload(filesToUpload); + setUploadButtonState(); + } + }//GEN-LAST:event_btnAddUploadFileActionPerformed + + private void btnDeleteUploadFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDeleteUploadFileActionPerformed + + int[] selectedRows = tblFilesToUpload.getSelectedRows(); + int numRowsSelected = selectedRows.length; + + // have to remove rows in reverse + for(int i=numRowsSelected-1; i>=0; i--) { + //for (int selectedRow: selectedRows) { + int selectedRow = selectedRows[i]; + if (selectedRow >= 0) { + DefaultTableModel model = (DefaultTableModel) tblFilesToUpload.getModel(); + model.removeRow(selectedRow); + } + } + }//GEN-LAST:event_btnDeleteUploadFileActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnAddUploadFile; + private javax.swing.JButton btnBrowseUploadTarget; + private javax.swing.JButton btnCancel; + private javax.swing.JButton btnDeleteUploadFile; + private javax.swing.JButton btnUploadNow; + private javax.swing.JButton btnUseIrodsHome; + private javax.swing.JButton btnUseLastUpload; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel10; + private javax.swing.JPanel jPanel11; + private javax.swing.JPanel jPanel12; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel5; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel7; + private javax.swing.JPanel jPanel8; + private javax.swing.JPanel jPanel9; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTable tblFilesToUpload; + private javax.swing.JTextField txtUploadTarget; + // End of variables declaration//GEN-END:variables + +} 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 483783b..4aff5b0 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 @@ -1,316 +1,67 @@ <?xml version="1.0" encoding="UTF-8" ?> -<Form version="1.7" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> +<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> <NonVisualComponents> - <Container class="javax.swing.JPopupMenu" name="searchTablePopupMenu"> - <AuxValues> - <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="4"/> - </AuxValues> + <Container class="javax.swing.JPopupMenu" name="jPopupMenu1"> <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout"> <Property name="useNullLayout" type="boolean" value="true"/> </Layout> - <SubComponents> - <MenuItem class="javax.swing.JMenuItem" name="menuItemShowInHierarchy"> - <Properties> - <Property name="text" type="java.lang.String" value="Show in iRODS"/> - <Property name="toolTipText" type="java.lang.String" value="Show this file or collection in the iRODS hierarchy"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="menuItemShowInHierarchyActionPerformed"/> - </Events> - </MenuItem> - </SubComponents> - </Container> - <Component class="javax.swing.ButtonGroup" name="buttonGroupLandF"> - </Component> - <Container class="javax.swing.JPanel" name="pnlInfoMetadata"> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblMetadataInfo"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="ff" green="0" id="blue" palette="1" red="0" type="palette"/> - </Property> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/edit-4.png"/> - </Property> - <Property name="text" type="java.lang.String" value="iRODS AVU Metadata"/> - </Properties> - </Component> - </SubComponents> </Container> - <Container class="javax.swing.JPanel" name="pnlInfoSharing"> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblInfoSharing"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="ff" green="0" id="blue" palette="1" red="0" type="palette"/> - </Property> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/share.png"/> - </Property> - <Property name="text" type="java.lang.String" value="Access Permissions and Tickets"/> - </Properties> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlInfoReplication"> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblMetadataInfo1"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="ff" green="0" id="blue" palette="1" red="0" type="palette"/> - </Property> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/edit-copy-3.png"/> - </Property> - <Property name="text" type="java.lang.String" value="File Replication"/> - </Properties> - </Component> - </SubComponents> - </Container> - <Menu class="javax.swing.JMenuBar" name="jMenuBar1"> - <SubComponents> - <Menu class="javax.swing.JMenu" name="jMenuFile"> - <Properties> - <Property name="mnemonic" type="int" value="102"/> - <Property name="text" type="java.lang.String" value="File"/> - </Properties> - <SubComponents> - <MenuItem class="javax.swing.JMenuItem" name="jMenuItemClose"> - <Properties> - <Property name="mnemonic" type="int" value="99"/> - <Property name="text" type="java.lang.String" value="Close iDrop GUI"/> - <Property name="toolTipText" type="java.lang.String" value="Close the iDrop GUI, leaving iDrop running "/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItemCloseActionPerformed"/> - </Events> - </MenuItem> - <MenuItem class="javax.swing.JMenuItem" name="jMenuItemExit"> - <Properties> - <Property name="mnemonic" type="int" value="120"/> - <Property name="text" type="java.lang.String" value="Exit"/> - <Property name="toolTipText" type="java.lang.String" value="Exit iDrop entirely"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItemExitActionPerformed"/> - </Events> - </MenuItem> - </SubComponents> - </Menu> - <Menu class="javax.swing.JMenu" name="jMenuEdit"> - <Properties> - <Property name="mnemonic" type="int" value="69"/> - <Property name="text" type="java.lang.String" value="Edit"/> - </Properties> - </Menu> - <Menu class="javax.swing.JMenu" name="jMenuView"> - <Properties> - <Property name="mnemonic" type="int" value="86"/> - <Property name="text" type="java.lang.String" value="View"/> - </Properties> - <SubComponents> - <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItemShowSourceTree"> - <Properties> - <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor"> - <KeyStroke key="Shift+L"/> - </Property> - <Property name="mnemonic" type="int" value="76"/> - <Property name="text" type="java.lang.String" value="Show Local"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBoxMenuItemShowSourceTreeActionPerformed"/> - </Events> - </MenuItem> - <MenuItem class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItemShowIrodsInfo"> - <Properties> - <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor"> - <KeyStroke key="Shift+L"/> - </Property> - <Property name="mnemonic" type="int" value="73"/> - <Property name="text" type="java.lang.String" value="Show iRODS Info"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBoxMenuItemShowIrodsInfoActionPerformed"/> - </Events> - </MenuItem> - </SubComponents> - </Menu> - <Menu class="javax.swing.JMenu" name="jMenuTools"> - <Properties> - <Property name="mnemonic" type="int" value="84"/> - <Property name="text" type="java.lang.String" value="Tools"/> - <Property name="toolTipText" type="java.lang.String" value="Tools and options for iDrop"/> - </Properties> - <SubComponents> - <Menu class="javax.swing.JMenu" name="jMenuLookAndFeel"> - <Properties> - <Property name="mnemonic" type="int" value="108"/> - <Property name="text" type="java.lang.String" value="Set look and feel"/> - <Property name="toolTipText" type="java.lang.String" value="Set the look and feel for the GUI"/> - </Properties> - <SubComponents> - <MenuItem class="javax.swing.JRadioButtonMenuItem" name="jRadioButtonLookAndFeelDefault"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroupLandF"/> - </Property> - <Property name="mnemonic" type="int" value="100"/> - <Property name="selected" type="boolean" value="true"/> - <Property name="text" type="java.lang.String" value="Default"/> - <Property name="toolTipText" type="java.lang.String" value="Default system look an dfeel"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButtonLookAndFeelDefaultActionPerformed"/> - </Events> - </MenuItem> - <MenuItem class="javax.swing.JRadioButtonMenuItem" name="jRadioButtonLookAndFeelNimbus"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroupLandF"/> - </Property> - <Property name="mnemonic" type="int" value="110"/> - <Property name="text" type="java.lang.String" value="Nimbus"/> - <Property name="toolTipText" type="java.lang.String" value="Nimbus look and feel"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButtonLookAndFeelNimbusActionPerformed"/> - </Events> - </MenuItem> - <MenuItem class="javax.swing.JRadioButtonMenuItem" name="jRadioButtonMenuItemMetal"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroupLandF"/> - </Property> - <Property name="mnemonic" type="int" value="109"/> - <Property name="text" type="java.lang.String" value="Metal"/> - <Property name="toolTipText" type="java.lang.String" value="Metal look and feel"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButtonMenuItemMetalActionPerformed"/> - </Events> - </MenuItem> - <MenuItem class="javax.swing.JRadioButtonMenuItem" name="jRadioButtonMenuItemMotif"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroupLandF"/> - </Property> - <Property name="mnemonic" type="int" value="116"/> - <Property name="text" type="java.lang.String" value="Motif"/> - <Property name="toolTipText" type="java.lang.String" value="Motif look and feel"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButtonMenuItemMotifActionPerformed"/> - </Events> - </MenuItem> - <MenuItem class="javax.swing.JRadioButtonMenuItem" name="jRadioButtonMenuItemGTK"> - <Properties> - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor"> - <ComponentRef name="buttonGroupLandF"/> - </Property> - <Property name="mnemonic" type="int" value="103"/> - <Property name="text" type="java.lang.String" value="GTK"/> - <Property name="toolTipText" type="java.lang.String" value="GTK look and feel"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jRadioButtonMenuItemGTKActionPerformed"/> - </Events> - </MenuItem> - </SubComponents> - </Menu> - <MenuItem class="javax.swing.JMenuItem" name="jMenuItemConfig"> - <Properties> - <Property name="mnemonic" type="int" value="112"/> - <Property name="text" type="java.lang.String" value="Preferences"/> - <Property name="toolTipText" type="java.lang.String" value="Set preferences"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItemConfigActionPerformed"/> - </Events> - </MenuItem> - </SubComponents> - </Menu> - <Menu class="javax.swing.JMenu" name="jMenuHelp"> - <Properties> - <Property name="text" type="java.lang.String" value="Help"/> - </Properties> - <SubComponents> - <MenuItem class="javax.swing.JMenuItem" name="jMenuItemAbout"> - <Properties> - <Property name="text" type="java.lang.String" value="About"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItemAboutActionPerformed"/> - </Events> - </MenuItem> - </SubComponents> - </Menu> - </SubComponents> - </Menu> </NonVisualComponents> <Properties> - <Property name="defaultCloseOperation" type="int" value="2"/> - <Property name="title" type="java.lang.String" value="iDrop - iRODS Cloud Browser"/> + <Property name="defaultCloseOperation" type="int" value="3"/> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[600, 600]"/> + <Dimension value="[622, 158]"/> + </Property> + <Property name="size" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[822, 158]"/> </Property> </Properties> <SyntheticProperties> - <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/> <SyntheticProperty name="formSizePolicy" type="int" value="1"/> </SyntheticProperties> - <Events> - <EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/> - </Events> <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/> <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/> <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/> <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-17,0,0,4,69"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,0,0,0,3,-29"/> </AuxValues> <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Container class="javax.swing.JPanel" name="iDropToolbar"> + <Container class="javax.swing.JPanel" name="pnlMain"> <Properties> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[800, 400]"/> + <Dimension value="[622, 158]"/> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[1077, 40]"/> + <Dimension value="[730, 635]"/> </Property> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> + <BorderConstraints direction="Center"/> </Constraint> </Constraints> <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Container class="javax.swing.JPanel" name="pnlToolbarSizer"> + <Container class="javax.swing.JPanel" name="pnlMainToolbar"> + <Properties> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[622, 131]"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[834, 135]"/> + </Property> + </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> <BorderConstraints direction="North"/> @@ -319,391 +70,539 @@ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Container class="javax.swing.JPanel" name="pnlTopToolbarSearchArea"> + <Container class="javax.swing.JPanel" name="pnlMainToolbarIcons"> <Properties> + <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="10" left="20" right="20" top="10"/> + </Border> + </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[45, 50]"/> + <Dimension value="[622, 90]"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[622, 90]"/> </Property> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> + <BorderConstraints direction="North"/> </Constraint> </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> <SubComponents> - <Container class="javax.swing.JPanel" name="pnlSearchSizer"> + <Component class="javax.swing.JButton" name="btnMainToolbarDownload"> <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_download.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.btnMainToolbarDownload.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="28" top="1"/> + </Border> + </Property> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarDownloadActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarUpload"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_upload.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.btnMainToolbarUpload.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="28" top="1"/> + </Border> + </Property> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarUploadActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarRefresh"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_refresh.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.btnMainToolbarRefresh.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="30" top="1"/> + </Border> + </Property> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarRefreshActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JSeparator" name="jSeparator1"> + <Properties> + <Property name="orientation" type="int" value="1"/> + <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[34, 60]"/> + </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[74, 30]"/> + <Dimension value="[34, 60]"/> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[254, 50]"/> + <Dimension value="[34, 60]"/> </Property> </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="South"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"> - <Property name="alignment" type="int" value="2"/> - </Layout> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblMainSearch"> - <Properties> - <Property name="text" type="java.lang.String" value="Search:"/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[45, 40]"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.JComboBox" name="comboSearchType"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="3"> - <StringItem index="0" value="by name"/> - <StringItem index="1" value="by tag"/> - <StringItem index="2" value="by name and tag"/> - </StringArray> - </Property> - <Property name="toolTipText" type="java.lang.String" value="Select the type of search to be carried out using the supplied search string"/> - </Properties> - </Component> - <Component class="javax.swing.JTextField" name="txtMainSearch"> - <Properties> - <Property name="columns" type="int" value="20"/> - <Property name="toolTipText" type="java.lang.String" value="Search for files or tags"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[100, 30]"/> - </Property> - </Properties> - <Events> - <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtMainSearchKeyPressed"/> - </Events> - </Component> - <Component class="javax.swing.JButton" name="btnSearch"> - <Properties> - <Property name="mnemonic" type="int" value="115"/> - <Property name="text" type="java.lang.String" value="Search"/> - <Property name="toolTipText" type="java.lang.String" value="Search iRODS based on the current view selected"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnSearchActionPerformed"/> - </Events> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlLocalToggleSizer"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="West"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Component class="javax.swing.JToggleButton" name="toggleLocalFiles"> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarCopy"> <Properties> - <Property name="text" type="java.lang.String" value="<<< Local Files"/> - <Property name="toolTipText" type="java.lang.String" value="Browse the local file system."/> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_replicate.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.btnMainToolbarCopy.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="actionCommand" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.btnMainToolbarCopy.actionCommand" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarCopyActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarDelete"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_delete.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.btnMainToolbarDelete.text_1" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="20" top="1"/> + </Border> + </Property> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[81, 70]"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[81, 70]"/> + </Property> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarDeleteActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarInfo"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_editmetadata.png"/> + </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.btnMainToolbarInfo.label" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarInfoActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JSeparator" name="jSeparator3"> + <Properties> + <Property name="orientation" type="int" value="1"/> + <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[34, 60]"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[34, 60]"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarSync"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_synch.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.btnMainToolbarSync.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="28" top="1"/> + </Border> + </Property> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarSettings"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/icon_settings.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.btnMainToolbarSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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/> + </Border> + </Property> + <Property name="horizontalTextPosition" type="int" value="0"/> <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[144, 10]"/> + <Dimension value="[58, 70]"/> </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[144, 10]"/> + <Dimension value="[58, 70]"/> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[144, 30]"/> + <Dimension value="[58, 70]"/> </Property> + <Property name="verticalTextPosition" type="int" value="3"/> </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="<<< Local Files "/> - </AccessibilityProperties> <Events> - <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="toggleLocalFilesStateChanged"/> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="toggleLocalFilesActionPerformed"/> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarSettingsActionPerformed"/> </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> - </Constraint> - </Constraints> </Component> </SubComponents> </Container> - <Container class="javax.swing.JPanel" name="pnlIrodsDetailsToggleSizer"> + <Container class="javax.swing.JPanel" name="pnlMainToolbarSearch"> + <Properties> + <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="2" left="10" right="10" top="2"/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[622, 45]"/> + </Property> + </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="East"/> + <BorderConstraints direction="South"/> </Constraint> </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> <SubComponents> - <Component class="javax.swing.JToggleButton" name="toggleIrodsDetails"> + <Component class="javax.swing.JLabel" name="lblBreadCrumb"> <Properties> - <Property name="toolTipText" type="java.lang.String" value="Browse the local file system."/> - <Property name="label" type="java.lang.String" value="iRODS Info >>>>"/> + <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.lblBreadCrumb.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </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="2" top="1"/> + </Border> + </Property> <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[144, 10]"/> + <Dimension value="[110, 2000]"/> </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[144, 10]"/> + <Dimension value="[0, 0]"/> + </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"/> + </Properties> + </Component> + <Component class="javax.swing.JTextField" name="txtMainToolbarSearchTerms"> + <Properties> + <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> + <Font name="Lucida Grande" size="14" style="0"/> + </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.txtMainToolbarSearchTerms.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.txtMainToolbarSearchTerms.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[144, 30]"/> + <Dimension value="[130, 45]"/> + </Property> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="btnMainToolbarSearchFiles"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/search_files.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.btnMainToolbarSearchFiles.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[118, 40]"/> </Property> </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value=""/> - </AccessibilityProperties> <Events> - <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="toggleIrodsDetailsStateChanged"/> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="toggleIrodsDetailsActionPerformed"/> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarSearchFilesActionPerformed"/> </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> - </Constraint> - </Constraints> </Component> </SubComponents> </Container> </SubComponents> </Container> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlIdropMain"> - <Properties> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[500, 300]"/> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"> - <Property name="axis" type="int" value="3"/> - </Layout> - <SubComponents> - <Container class="javax.swing.JSplitPane" name="jSplitPanelLocalRemote"> + <Container class="javax.swing.JPanel" name="pnlMainIrodsTree"> <Properties> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="null"/> - </Property> - <Property name="dividerLocation" type="int" value="250"/> - <Property name="dividerSize" type="int" value="30"/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> + <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo"> + <EtchetBorder/> + </Border> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[0, 0]"/> + <Dimension value="[834, 360]"/> </Property> </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Container class="javax.swing.JPanel" name="pnlLocalTreeArea"> + <Container class="javax.swing.JSplitPane" name="splitPanelTrees"> <Properties> - <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="66" green="ff" red="99" type="rgb"/> - </Property> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> - <LineBorder/> - </Border> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[0, 0]"/> - </Property> - <Property name="opaque" type="boolean" value="false"/> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[0, 0]"/> + <Dimension value="[834, 360]"/> </Property> </Properties> <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> - <JSplitPaneConstraints position="left"/> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> </Constraint> </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/> <SubComponents> - <Container class="javax.swing.JPanel" name="pnlLocalRoots"> + <Container class="javax.swing.JScrollPane" name="scrollIrodsTree"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> + <JSplitPaneConstraints position="right"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + </Container> + <Container class="javax.swing.JPanel" name="pnlLocalTreeArea"> <Properties> + <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> + <Color blue="66" green="ff" red="99" type="rgb"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> + <LineBorder/> + </Border> + </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="[0, 0]"/> </Property> + <Property name="opaque" type="boolean" value="false"/> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[0, 0]"/> + </Property> </Properties> <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> + <JSplitPaneConstraints position="left"/> </Constraint> </Constraints> <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Container class="javax.swing.JScrollPane" name="scrollLocalDrives"> + <Container class="javax.swing.JPanel" name="pnlLocalRoots"> <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="[0, 0]"/> </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[300, 100]"/> - </Property> </Properties> - <AuxValues> - <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> - </AuxValues> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> + <BorderConstraints direction="North"/> </Constraint> </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Component class="javax.swing.JList" name="listLocalDrives"> + <Container class="javax.swing.JScrollPane" name="scrollLocalDrives"> <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> - <LineBorder/> - </Border> - </Property> - <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor"> - <StringArray count="0"/> - </Property> - <Property name="selectionMode" type="int" value="0"/> <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="null"/> </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[0, 0]"/> + </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[150, 200]"/> + <Dimension value="[300, 100]"/> </Property> - <Property name="visibleRowCount" type="int" value="4"/> </Properties> - </Component> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JList" name="listLocalDrives"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> + <LineBorder/> + </Border> + </Property> + <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor"> + <StringArray count="0"/> + </Property> + <Property name="selectionMode" type="int" value="0"/> + <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="null"/> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[150, 200]"/> + </Property> + <Property name="visibleRowCount" type="int" value="4"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlDrivesFiller"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + </Container> </SubComponents> </Container> - <Container class="javax.swing.JPanel" name="pnlRefreshButton"> + <Container class="javax.swing.JScrollPane" name="scrollLocalFileTree"> <Properties> + <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> + <Color blue="ee" green="ee" id="Button.background" palette="3" red="ee" type="palette"/> + </Property> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="null"/> + </Property> + <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.scrollLocalFileTree.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="verticalScrollBarPolicy" type="int" value="22"/> <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[1000, 30]"/> + <Dimension value="null"/> </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> <Dimension value="[0, 0]"/> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[101, 30]"/> + <Dimension value="[500, 500]"/> </Property> </Properties> <Constraints> <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Component class="javax.swing.JButton" name="btnRefreshLocalDrives"> - <Properties> - <Property name="label" type="java.lang.String" value="Refresh"/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[200, 50]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[0, 0]"/> - </Property> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshLocalDrivesActionPerformed"/> - </Events> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlDrivesFiller"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="South"/> + <BorderConstraints direction="Center"/> </Constraint> </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> </Container> </SubComponents> </Container> - <Container class="javax.swing.JScrollPane" name="scrollLocalFileTree"> - <Properties> - <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="ee" green="ee" id="Button.background" palette="3" red="ee" type="palette"/> - </Property> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="null"/> - </Property> - <Property name="toolTipText" type="java.lang.String" value="scroll panel tooltip"/> - <Property name="verticalScrollBarPolicy" type="int" value="22"/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[0, 0]"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[500, 500]"/> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - </Container> </SubComponents> </Container> - <Container class="javax.swing.JPanel" name="pnlIrodsArea"> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlMainTransferStatus"> + <Properties> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[835, 120]"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="South"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JPanel" name="pnlIdropBottom"> <Properties> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[500, 300]"/> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo"> + <BevelBorder bevelType="1"/> + </Border> </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[600, 304]"/> + <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.pnlIdropBottom.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[166, 66]"/> </Property> </Properties> <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> - <JSplitPaneConstraints position="right"/> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> </Constraint> </Constraints> <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> <SubComponents> - <Container class="javax.swing.JSplitPane" name="splitTargetCollections"> + <Container class="javax.swing.JPanel" name="pnlCurrentTransferStatus"> <Properties> - <Property name="dividerLocation" type="int" value="400"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[0, 0]"/> + <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/> + </Border> + </Property> + <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[62, 62]"/> </Property> </Properties> <Constraints> @@ -712,848 +611,181 @@ </Constraint> </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/> <SubComponents> - <Container class="javax.swing.JTabbedPane" name="tabIrodsViews"> + <Component class="javax.swing.JLabel" name="lblCurrentFile"> <Properties> + <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[999, 999]"/> + </Property> <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[200, 129]"/> + <Dimension value="[30, 10]"/> </Property> <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[350, 300]"/> + <Dimension value="[300, 20]"/> </Property> </Properties> - <Events> - <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="tabIrodsViewsStateChanged"/> - </Events> <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> - <JSplitPaneConstraints position="left"/> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="3" gridY="0" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="9" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> </Constraint> </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlTabHierarchicalView"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> - <JTabbedPaneConstraints tabName="iRODS Tree View"> - <Property name="tabTitle" type="java.lang.String" value="iRODS Tree View"/> - </JTabbedPaneConstraints> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlIrodsTreeToolbar"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Container class="javax.swing.JToolBar" name="toolbarIrodsTree"> - <Properties> - <Property name="floatable" type="boolean" value="false"/> - <Property name="rollover" type="boolean" value="true"/> - </Properties> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> - <SubComponents> - <Component class="javax.swing.JButton" name="btnRefreshTargetTree"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/recur.png"/> - </Property> - <Property name="mnemonic" type="int" value="114"/> - <Property name="text" type="java.lang.String" value="Refresh"/> - <Property name="toolTipText" type="java.lang.String" value="Refresh the view of the iRODS server"/> - <Property name="focusable" type="boolean" value="false"/> - <Property name="horizontalTextPosition" type="int" value="0"/> - <Property name="verticalTextPosition" type="int" value="3"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRefreshTargetTreeActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JButton" name="btnGoHomeTargetTree"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/go-home-4.png"/> - </Property> - <Property name="mnemonic" type="int" value="104"/> - <Property name="text" type="java.lang.String" value="Home"/> - <Property name="toolTipText" type="java.lang.String" value="Go to the user home directory on the iRODS grid"/> - <Property name="focusable" type="boolean" value="false"/> - <Property name="horizontalTextPosition" type="int" value="0"/> - <Property name="verticalTextPosition" type="int" value="3"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnGoHomeTargetTreeActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JButton" name="btnGoRootTargetTree"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/go-parent-folder.png"/> - </Property> - <Property name="mnemonic" type="int" value="116"/> - <Property name="text" type="java.lang.String" value="Top"/> - <Property name="toolTipText" type="java.lang.String" value="Go to the top of the iRODS tree"/> - <Property name="focusable" type="boolean" value="false"/> - <Property name="horizontalTextPosition" type="int" value="0"/> - <Property name="verticalTextPosition" type="int" value="3"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnGoRootTargetTreeActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JButton" name="btnSetRootCustomTargetTree"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/go-jump.png"/> - </Property> - <Property name="mnemonic" type="int" value="99"/> - <Property name="text" type="java.lang.String" value="Custom Root"/> - <Property name="toolTipText" type="java.lang.String" value="Set the root of the tree to a custom path"/> - <Property name="focusable" type="boolean" value="false"/> - <Property name="horizontalTextPosition" type="int" value="0"/> - <Property name="verticalTextPosition" type="int" value="3"/> - </Properties> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlIrodsTreeMaster"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Container class="javax.swing.JScrollPane" name="scrollIrodsTree"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - </Container> - </SubComponents> - </Container> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlTabSearch"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Search for files and collections in iRODS and display search results"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> - <JTabbedPaneConstraints tabName="Search" toolTip="Search for files and collections in iRODS and display search results"> - <Property name="tabTitle" type="java.lang.String" value="Search"/> - <Property name="tabToolTip" type="java.lang.String" value="Search for files and collections in iRODS and display search results"/> - </JTabbedPaneConstraints> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlTabSearchTop"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="North"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - </Container> - <Container class="javax.swing.JPanel" name="pnlTabSearchResults"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridLayout"> - <Property name="columns" type="int" value="0"/> - <Property name="rows" type="int" value="1"/> - </Layout> - <SubComponents> - <Container class="javax.swing.JScrollPane" name="scrollPaneSearchResults"> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - <SubComponents> - <Component class="javax.swing.JTable" name="tableSearchResults"> - <Properties> - <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor"> - <Table columnCount="4" rowCount="4"> - <Column editable="true" title="Title 1" type="java.lang.Object"/> - <Column editable="true" title="Title 2" type="java.lang.Object"/> - <Column editable="true" title="Title 3" type="java.lang.Object"/> - <Column editable="true" title="Title 4" type="java.lang.Object"/> - </Table> - </Property> - </Properties> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> - </SubComponents> - </Container> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlIrodsInfo"> + </Component> + <Component class="javax.swing.JProgressBar" name="progressIntraFile"> <Properties> <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="10" left="15" right="15" top="10"/> + <EmptyBorder bottom="1" left="3" right="1" top="1"/> </Border> </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[10, 60]"/> + </Property> + <Property name="string" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.progressIntraFile.string" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="stringPainted" type="boolean" value="true"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="2" gridY="1" gridWidth="4" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JLabel" name="lblTransferFilesCounts"> + <Properties> + <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.lblTransferFilesCounts.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="0" gridY="2" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JProgressBar" name="transferStatusProgressBar"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="null"/> + </Property> + <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> + <Dimension value="[10, 60]"/> + </Property> + <Property name="string" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.transferStatusProgressBar.string" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="stringPainted" type="boolean" value="true"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="2" gridY="2" gridWidth="4" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="8.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JLabel" name="lblTransferType"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + <Component class="javax.swing.JLabel" name="lblTransferMessage"> + <Properties> + <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> + <Color blue="ff" green="0" id="blue" palette="1" red="0" type="palette"/> + </Property> </Properties> <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> - <JSplitPaneConstraints position="right"/> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="2" gridY="3" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> </Constraint> </Constraints> + </Component> + <Component class="javax.swing.JLabel" name="lblTransferByteCounts"> + <Properties> + <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.lblTransferByteCounts.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> + <GridBagConstraints gridX="0" gridY="1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> + </Constraint> + </Constraints> + </Component> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="pnlTransferOptions"> + <Properties> + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> + <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo"> + <TitledBorder title="Upload Options"> + <ResourceString PropertyName="titleX" bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.pnlTransferOptions.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </TitledBorder> + </Border> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="East"/> + </Constraint> + </Constraints> - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> + <SubComponents> + <Container class="javax.swing.JToolBar" name="idropProgressPanelToolbar"> + <Properties> + <Property name="floatable" type="boolean" value="false"/> + <Property name="rollover" type="boolean" value="true"/> + </Properties> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> <SubComponents> - <Container class="javax.swing.JTabbedPane" name="tabInfo"> + <Component class="javax.swing.JButton" name="btnShowTransferManager"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/configure-5.png"/> + </Property> + <Property name="mnemonic" type="int" value="109"/> + <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.btnShowTransferManager.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.btnShowTransferManager.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnShowTransferManagerActionPerformed"/> + </Events> + </Component> + <Component class="javax.swing.JToggleButton" name="togglePauseTransfer"> <Properties> - <Property name="toolTipText" type="java.lang.String" value="View basic demographics for a file or collection"/> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/media-playback-pause-7.png"/> + </Property> + <Property name="mnemonic" type="int" value="112"/> + <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.togglePauseTransfer.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor"> + <ResourceString bundle="org/irods/jargon/idrop/desktop/systraygui/Bundle.properties" key="iDrop.togglePauseTransfer.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Info"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> - <SubComponents> - <Container class="javax.swing.JScrollPane" name="jScrollPane1"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> - <JTabbedPaneConstraints tabName="Info"> - <Property name="tabTitle" type="java.lang.String" value="Info"/> - </JTabbedPaneConstraints> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlInfoInner"> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlInfoIcon"> - <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[50, 50]"/> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="1" gridWidth="3" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="2" insetsLeft="0" insetsBottom="2" insetsRight="2" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridLayout"> - <Property name="columns" type="int" value="0"/> - <Property name="rows" type="int" value="1"/> - </Layout> - <SubComponents> - <Component class="javax.swing.JLabel" name="jLabel1"> - <Properties> - <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="cc" green="0" red="ff" type="rgb"/> - </Property> - </Properties> - </Component> - </SubComponents> - </Container> - <Component class="javax.swing.JLabel" name="lblSelectedFileInfo"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="ff" green="0" id="blue" palette="1" red="0" type="palette"/> - </Property> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/help-contents.png"/> - </Property> - <Property name="text" type="java.lang.String" value="Selected File Info"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label indicating panel for selected file info"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="0" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="10" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblFilePathLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Path:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Path Label"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for file Path"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="2" gridWidth="2" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblFileOrCollectionName"> - <Properties> - <Property name="text" type="java.lang.String" value="file or collection name "/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[900, 100]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[80, 30]"/> - </Property> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Abbreviated file name "/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="File name of selected file or collection (abbreviated if necessary with elipses)"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="3" gridWidth="2" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="2" insetsBottom="5" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblComment"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Comment:"/> - <Property name="toolTipText" type="java.lang.String" value=""/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="lable for comment area"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="4" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Container class="javax.swing.JScrollPane" name="scrollComment"> - <Properties> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="scroll box for file comment"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Scroll box for file comment"/> - </AccessibilityProperties> - <AuxValues> - <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> - </AuxValues> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="5" gridWidth="2" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.2"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> - <SubComponents> - <Component class="javax.swing.JTextArea" name="txtComment"> - <Properties> - <Property name="columns" type="int" value="30"/> - <Property name="rows" type="int" value="6"/> - <Property name="tabSize" type="int" value="5"/> - <Property name="toolTipText" type="java.lang.String" value="Free form comment for a file or collection"/> - <Property name="wrapStyleWord" type="boolean" value="true"/> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Comment"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Comment for a file"/> - </AccessibilityProperties> - </Component> - </SubComponents> - </Container> - <Component class="javax.swing.Box$Filler" name="filler4"> - <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 32767]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - </Properties> - <AuxValues> - <AuxValue name="classDetails" type="java.lang.String" value="Box.Filler.HorizontalStrut"/> - </AuxValues> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="6" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblTags"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Tags:"/> - <Property name="toolTipText" type="java.lang.String" value=""/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Tags"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for free tagging area"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="6" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JTextField" name="txtTags"> - <Properties> - <Property name="columns" type="int" value="30"/> - <Property name="toolTipText" type="java.lang.String" value="Name of file or collection. This field allows editing to rename"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - </Properties> - <Events> - <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtTagsFocusLost"/> - <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtTagsKeyPressed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="7" gridWidth="2" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JButton" name="btnUpdateInfo"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/dialog-accept.png"/> - </Property> - <Property name="mnemonic" type="int" value="117"/> - <Property name="text" type="java.lang.String" value="Update Comment and Tags"/> - <Property name="toolTipText" type="java.lang.String" value="Update information on the info panel such as tags and comment"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnUpdateInfoActionPerformed"/> - </Events> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="8" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Container class="javax.swing.JPanel" name="pnlFileInfoDemographics"> - <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo"> - <BevelBorder bevelType="1"/> - </Border> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="9" gridWidth="2" gridHeight="2" fill="1" ipadX="0" ipadY="0" insetsTop="8" insetsLeft="2" insetsBottom="6" insetsRight="2" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblInfoCreatedAt"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="horizontalAlignment" type="int" value="11"/> - <Property name="text" type="java.lang.String" value="Created:"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="2" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoCreatedAtValue"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="0" gridWidth="2" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="4" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoCreatedAtTimeValue"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Time file was created"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Created at time"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="time fiel was created"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="0" gridWidth="3" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="4" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoUpdatedAt"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="horizontalAlignment" type="int" value="11"/> - <Property name="text" type="java.lang.String" value="Updated:"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="2" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoUpdatedAtValue"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="1" gridWidth="2" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="7" insetsBottom="2" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoUpdatedAtTimeValue"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Time file was last updated"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Updated at time"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="1" gridWidth="3" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="2" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoLength"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="horizontalAlignment" type="int" value="11"/> - <Property name="text" type="java.lang.String" value="Length:"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="4" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="2" insetsLeft="0" insetsBottom="2" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoLengthValue"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="4" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="2" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoChecksum"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="horizontalAlignment" type="int" value="11"/> - <Property name="text" type="java.lang.String" value="Checksum:"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="20" insetsLeft="0" insetsBottom="2" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblInfoChecksumValue"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="3" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="20" insetsLeft="5" insetsBottom="2" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblOwnerNameLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Owner:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for file or collection owner name"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="20" insetsLeft="15" insetsBottom="2" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblOwnerName"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="4" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="20" insetsLeft="2" insetsBottom="2" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblOwnerZoneLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Owner Zone:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Owner Zone"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="label for owner zone"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="4" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="26" insetsBottom="2" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblOwnerZone"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Zone of file owner"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Owner Zone"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="4" gridY="4" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="2" insetsBottom="2" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblCollectionTypeLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Collection Type:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Collection Type"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for collection type"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="15" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblCollectionType"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Collection type"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Collection type"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Type of collection"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="15" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataPathLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Data Path:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for data path"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="13" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="20" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataPath"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Physical path of file"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Path"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Physical path of the data file"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="13" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="20" insetsLeft="0" insetsBottom="0" insetsRight="10" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataReplicationStatusLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Replication Status:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Label for data replication status"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for data replication status"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="10" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataReplicationStatus"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Data replication status"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Replication Status"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Status of replication of this data object"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="4" gridY="10" gridWidth="7" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="2" insetsBottom="0" insetsRight="10" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataVersionLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Data Version:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Version Label"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for data version"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="10" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="0" insetsBottom="2" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataVersion"> - <Properties> - <Property name="text" type="java.lang.String" value="jLabel2"/> - <Property name="toolTipText" type="java.lang.String" value="Data version"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Version"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Version of data"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="10" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="2" insetsBottom="0" insetsRight="10" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataTypeLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Data Type:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Type Label"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for data type"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="11" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataType"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Data type for selected file"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Type"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="1" gridY="11" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="10" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataStatusLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Data Status:"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data Status label"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Label for data status"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="11" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblDataStatus"> - <Properties> - <Property name="toolTipText" type="java.lang.String" value="Status of selected file"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Data status"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="4" gridY="11" gridWidth="4" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="4" insetsBottom="0" insetsRight="10" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> - </SubComponents> - </Container> - </SubComponents> - </Container> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="togglePauseTransferActionPerformed"/> + </Events> + </Component> </SubComponents> </Container> + <Component class="javax.swing.JLabel" name="progressIconImageLabel"> + </Component> </SubComponents> </Container> </SubComponents> @@ -1562,384 +794,5 @@ </Container> </SubComponents> </Container> - <Container class="javax.swing.JPanel" name="pnlIdropBottom"> - <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo"> - <BevelBorder bevelType="1"/> - </Border> - </Property> - <Property name="toolTipText" type="java.lang.String" value="Display area for status and messages"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="South"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlBottomGutter"> - <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo"> - <BevelBorder bevelType="1"/> - </Border> - </Property> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[2147483647, 10]"/> - </Property> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Current Grid Panel"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Panel Showing the Current iRODS Grid"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="South"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Container class="javax.swing.JPanel" name="pnlHostInfo"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="West"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblUserNameLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="User Name:"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="userNameLabel"> - <Properties> - <Property name="text" type="java.lang.String" value="usernamelabel"/> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="null"/> - </Property> - </Properties> - </Component> - <Component class="javax.swing.Box$Filler" name="filler1"> - <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 32767]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - </Properties> - <AuxValues> - <AuxValue name="classDetails" type="java.lang.String" value="Box.Filler.HorizontalStrut"/> - </AuxValues> - </Component> - <Component class="javax.swing.JLabel" name="lblZoneLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Zone:"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="lblZone"> - <Properties> - <Property name="text" type="java.lang.String" value="this is the zone"/> - </Properties> - </Component> - <Component class="javax.swing.Box$Filler" name="filler2"> - <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 32767]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - </Properties> - <AuxValues> - <AuxValue name="classDetails" type="java.lang.String" value="Box.Filler.HorizontalStrut"/> - </AuxValues> - </Component> - <Component class="javax.swing.JLabel" name="lblHostLabel"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Host:"/> - </Properties> - </Component> - <Component class="javax.swing.JLabel" name="lblHost"> - <Properties> - <Property name="text" type="java.lang.String" value="this is the host"/> - </Properties> - </Component> - <Component class="javax.swing.Box$Filler" name="filler3"> - <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 32767]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 0]"/> - </Property> - </Properties> - <AuxValues> - <AuxValue name="classDetails" type="java.lang.String" value="Box.Filler.HorizontalStrut"/> - </AuxValues> - </Component> - <Component class="javax.swing.JLabel" name="lblDefaultResource"> - <Properties> - <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor"> - <Font name="Lucida Grande" size="13" style="1"/> - </Property> - <Property name="text" type="java.lang.String" value="Default Storage Resource:"/> - </Properties> - </Component> - <Component class="javax.swing.JComboBox" name="comboDefaultResource"> - <Properties> - <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> - <StringArray count="0"/> - </Property> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Default resource selection"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Selection options for the default storage resource"/> - </AccessibilityProperties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="comboDefaultResourceActionPerformed"/> - </Events> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlStatusIcon"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="East"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Component class="javax.swing.JButton" name="btnManageGrids"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/im-user.png"/> - </Property> - <Property name="mnemonic" type="int" value="83"/> - <Property name="label" type="java.lang.String" value="Switch Grid Account"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Switch the grid or iRODS account information"/> - </AccessibilityProperties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnManageGridsActionPerformed"/> - </Events> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlCurrentTransferStatus"> - <Properties> - <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/> - </Border> - </Property> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Current Transfer Status Panel"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Panel Describing the stete of the current transfer"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/> - <SubComponents> - <Component class="javax.swing.JLabel" name="lblCurrentFile"> - <Properties> - <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[999, 999]"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[30, 10]"/> - </Property> - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[500, 20]"/> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="3" gridY="0" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="9" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JProgressBar" name="progressIntraFile"> - <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="null"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 60]"/> - </Property> - <Property name="string" type="java.lang.String" value=""/> - <Property name="stringPainted" type="boolean" value="true"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Progress bar for total bytes transferred"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Total progress for the current file (in bytes)"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="1" gridWidth="4" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblTransferFilesCounts"> - <Properties> - <Property name="text" type="java.lang.String" value="Total Progress:"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="2" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JProgressBar" name="transferStatusProgressBar"> - <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="null"/> - </Property> - <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor"> - <Dimension value="[10, 60]"/> - </Property> - <Property name="string" type="java.lang.String" value=""/> - <Property name="stringPainted" type="boolean" value="true"/> - </Properties> - <AccessibilityProperties> - <Property name="AccessibleContext.accessibleName" type="java.lang.String" value="Progress bar for the total number of files in this transfer so far"/> - <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value="Progress of the transfer, showing what percentage of files have been transferred"/> - </AccessibilityProperties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="2" gridWidth="4" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="8.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblTransferType"> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblTransferMessage"> - <Properties> - <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor"> - <Color blue="ff" green="0" id="blue" palette="1" red="0" type="palette"/> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="2" gridY="3" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - <Component class="javax.swing.JLabel" name="lblTransferByteCounts"> - <Properties> - <Property name="text" type="java.lang.String" value="Current File:"/> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription"> - <GridBagConstraints gridX="0" gridY="1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> - </Container> - <Container class="javax.swing.JPanel" name="pnlTransferOptions"> - <Properties> - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> - <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo"> - <TitledBorder title="Upload Options"/> - </Border> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="East"/> - </Constraint> - </Constraints> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/> - <SubComponents> - <Container class="javax.swing.JToolBar" name="idropProgressPanelToolbar"> - <Properties> - <Property name="floatable" type="boolean" value="false"/> - <Property name="rollover" type="boolean" value="true"/> - </Properties> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> - <SubComponents> - <Component class="javax.swing.JButton" name="btnShowTransferManager"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/configure-5.png"/> - </Property> - <Property name="mnemonic" type="int" value="109"/> - <Property name="text" type="java.lang.String" value="Manage"/> - <Property name="toolTipText" type="java.lang.String" value="Show a panel to manage transfers"/> - <Property name="focusable" type="boolean" value="false"/> - <Property name="horizontalTextPosition" type="int" value="0"/> - <Property name="verticalTextPosition" type="int" value="3"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnShowTransferManagerActionPerformed"/> - </Events> - </Component> - <Component class="javax.swing.JToggleButton" name="togglePauseTransfer"> - <Properties> - <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> - <Image iconType="3" name="/media-playback-pause-7.png"/> - </Property> - <Property name="mnemonic" type="int" value="112"/> - <Property name="text" type="java.lang.String" value="Pause"/> - <Property name="toolTipText" type="java.lang.String" value="Pause the current transfer"/> - <Property name="focusable" type="boolean" value="false"/> - <Property name="horizontalTextPosition" type="int" value="0"/> - <Property name="verticalTextPosition" type="int" value="3"/> - </Properties> - <Events> - <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="togglePauseTransferActionPerformed"/> - </Events> - </Component> - </SubComponents> - </Container> - <Component class="javax.swing.JLabel" name="progressIconImageLabel"> - </Component> - </SubComponents> - </Container> - </SubComponents> - </Container> </SubComponents> </Form> 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 4d69541..da68da4 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 @@ -1,13 +1,13 @@ /* - * IDrop.java - * - * Created on May 20, 2010, 2:59:48 PM + * To change this template, choose Tools | Templates + * and open the template in the editor. */ package org.irods.jargon.idrop.desktop.systraygui; import java.awt.AWTException; import java.awt.CheckboxMenuItem; import java.awt.Cursor; +import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.Image; import java.awt.MenuItem; @@ -19,42 +19,39 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; import java.io.File; import java.net.URL; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Enumeration; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; - -import javax.swing.*; +import javax.swing.DefaultListModel; +import javax.swing.ImageIcon; +import javax.swing.JFileChooser; +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; import org.irods.jargon.core.exception.JargonException; -import org.irods.jargon.core.pub.*; -import org.irods.jargon.core.pub.domain.Collection; -import org.irods.jargon.core.pub.domain.DataObject; +import org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAO; +import org.irods.jargon.core.pub.EnvironmentalInfoAO; import org.irods.jargon.core.pub.io.IRODSFile; import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry; -import org.irods.jargon.core.query.MetaDataAndDomainData; -import org.irods.jargon.core.query.MetaDataAndDomainData.MetadataDomain; import org.irods.jargon.core.transfer.TransferStatus; import org.irods.jargon.core.utils.MiscIRODSUtils; +import org.irods.jargon.idrop.desktop.systraygui.services.IRODSFileService; import org.irods.jargon.idrop.desktop.systraygui.services.IdropConfigurationService; import org.irods.jargon.idrop.desktop.systraygui.utils.FieldFormatHelper; import org.irods.jargon.idrop.desktop.systraygui.utils.IDropUtils; -import org.irods.jargon.idrop.desktop.systraygui.utils.IconHelper; 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; import org.irods.jargon.idrop.desktop.systraygui.viscomponents.IRODSOutlineModel; @@ -67,47 +64,36 @@ import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileSystemMo import org.irods.jargon.idrop.desktop.systraygui.viscomponents.LocalFileTree; import org.irods.jargon.idrop.exceptions.IdropException; import org.irods.jargon.idrop.exceptions.IdropRuntimeException; +import org.irods.jargon.idrop.finder.FinderDeleteIRODSDialog; +import org.irods.jargon.idrop.finder.IRODSFinderDialog; +import org.irods.jargon.transfer.engine.TransferManager; import org.irods.jargon.transfer.engine.TransferManager.ErrorStatus; import org.irods.jargon.transfer.engine.TransferManager.RunningStatus; import org.irods.jargon.transfer.engine.TransferManagerCallbackListener; -import org.irods.jargon.usertagging.FreeTaggingService; -import org.irods.jargon.usertagging.FreeTaggingServiceImpl; -import org.irods.jargon.usertagging.IRODSTaggingService; -import org.irods.jargon.usertagging.IRODSTaggingServiceImpl; -import org.irods.jargon.usertagging.domain.IRODSTagGrouping; -import org.irods.jargon.usertagging.domain.IRODSTagValue; -import org.irods.jargon.usertagging.domain.TagQuerySearchResult; import org.netbeans.swing.outline.Outline; +import org.openide.util.Exceptions; import org.slf4j.LoggerFactory; /** - * Main system tray and GUI. Create system tray menu, start timer process for queue. * - * @author Mike Conway - DICE (www.irods.org) + * @author Lisa Stillwell */ public class iDrop extends javax.swing.JFrame implements ActionListener, ItemListener, TransferManagerCallbackListener { - private static final long serialVersionUID = 1L; + private IDROPCore iDropCore = new IDROPCore(); + private IRODSTree irodsTree = null; + private LocalFileTree fileTree = null; private LocalFileSystemModel localFileModel = null; private static final org.slf4j.Logger log = LoggerFactory.getLogger(iDrop.class); - private boolean formShown = false; - private LocalFileTree fileTree = null; - private IRODSTree irodsTree = null; - private QueueManagerDialog queueManagerDialog = null; - private IDROPCore iDropCore = new IDROPCore(); - private CheckboxMenuItem pausedItem = null; + private boolean receivedStartupSignal = false; private TrayIcon trayIcon = null; private Object lastCachedInfoItem = null; - public DateFormat df = DateFormat.getDateInstance(DateFormat.FULL); + private CheckboxMenuItem pausedItem = null; private ChangePasswordDialog changePasswordDialog = null; - public static JDialog newPreferencesDialog; - public JCheckBox showGUICheckBox; - public JButton preferencesDialogOKButton; - private static SimpleDateFormat SDF = new SimpleDateFormat("MM-dd-yyyy"); - private static SimpleDateFormat STF = new SimpleDateFormat("hh:mm:ss"); - private boolean receivedStartupSignal = false; - private ImageIcon pnlIdropProgressIcon = null; + private QueueManagerDialog queueManagerDialog = null; + private boolean formShown = false; + private BasicArrowButton btnBreadCrumbNav; public iDrop(final IDROPCore idropCore) { @@ -125,25 +111,60 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, public iDrop() { } + protected void showIdropGui() { + + if (scrollIrodsTree == null) { + buildIdropGuiComponents(); + } + + initializeLookAndFeelSelected(); + + if (irodsTree == null) { + buildTargetTree(false); + } + + setUpLocalFileSelectTree(); + splitPanelTrees.setDividerLocation(0.0d); +// togglePauseTransfer.setSelected(pausedItem.getState()); +// TransferManager.RunningStatus status = iDropCore.getTransferManager().getRunningStatus(); +// iDropCore.getIconManager().setRunningStatus(status); +// iDropCore.getIconManager().setErrorStatus( +// iDropCore.getTransferManager().getErrorStatus()); +// if (status == TransferManager.RunningStatus.PROCESSING) { +// setUpTransferPanel(true); +// } else { +// setUpTransferPanel(false); +// } +// +// setUpAccountGutter(); + + setVisibleComponentsAtStartup(); + + enableToolbarButtons(false); + + setVisible(true); + + } + protected void buildIdropGuiComponents() throws IdropRuntimeException, HeadlessException { initComponents(); - this.pnlLocalTreeArea.setVisible(false); - this.pnlIrodsInfo.setVisible(false); - this.splitTargetCollections.setResizeWeight(0.8d); - try { - pnlIrodsInfo.setTransferHandler(new InfoPanelTransferHandler(this)); - } catch (IdropException ex) { - Logger.getLogger(iDrop.class.getName()).log(Level.SEVERE, null, ex); - throw new IdropRuntimeException( - "error setting up infoPanelTransferHandler", ex); - } - - tableSearchResults.setModel(new IRODSSearchTableModel()); - MouseListener popupListener = new PopupListener(); - // add the listener specifically to the header - tableSearchResults.addMouseListener(popupListener); - tableSearchResults.getTableHeader().addMouseListener(popupListener); +// this.pnlLocalTreeArea.setVisible(false); +// this.pnlIrodsInfo.setVisible(false); + this.splitPanelTrees.setResizeWeight(0.8d); +// try { +//// pnlIrodsInfo.setTransferHandler(new InfoPanelTransferHandler(this)); +//// } catch (IdropException ex) { +//// Logger.getLogger(iDrop.class.getName()).log(Level.SEVERE, null, ex); +//// throw new IdropRuntimeException( +//// "error setting up infoPanelTransferHandler", ex); +//// } +// +//// tableSearchResults.setModel(new IRODSSearchTableModel()); +//// MouseListener popupListener = new PopupListener(); +//// // add the listener specifically to the header +//// tableSearchResults.addMouseListener(popupListener); +//// tableSearchResults.getTableHeader().addMouseListener(popupListener); Toolkit t = getToolkit(); int width = t.getScreenSize().width; @@ -157,42 +178,18 @@ 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()); - - } - - protected void showIdropGui() { - - if (fileTree == null) { - buildIdropGuiComponents(); - } - - initializeLookAndFeelSelected(); - - if (irodsTree == null) { - buildTargetTree(false); - } - // setting look and feel will also trigger build of irods tree view - //setLookAndFeel(iDropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.LOOK_AND_FEEL)); - setUpLocalFileSelectTree(); - togglePauseTransfer.setSelected(pausedItem.getState()); - RunningStatus status = iDropCore.getTransferManager().getRunningStatus(); - iDropCore.getIconManager().setRunningStatus(status); - iDropCore.getIconManager().setErrorStatus( - iDropCore.getTransferManager().getErrorStatus()); - if (status == RunningStatus.PROCESSING) { - setUpTransferPanel(true); - } else { - setUpTransferPanel(false); - } - - setUpAccountGutter(); - - setVisibleComponentsAtStartup(); - - setVisible(true); +// userNameLabel.setText("User: " +// + getiDropCore().getIrodsAccount().getUserName()); } @@ -200,7 +197,6 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, final iDrop thisPanel = this; java.awt.EventQueue.invokeLater(new Runnable() { - @Override public void run() { @@ -221,12 +217,11 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, } /** - * Startup exit to set visibility of components in iDrop GUI at startup. Here is where the - * initial visible status of components can be specified. + * Startup exit to set visibility of components in iDrop GUI at startup. + * Here is where the initial visible status of components can be specified. */ private void setVisibleComponentsAtStartup() { - this.btnSetRootCustomTargetTree.setVisible(false); - +// this.btnSetRootCustomTargetTree.setVisible(false); } protected void signalIdropCoreReadyAndSplashComplete() { @@ -245,256 +240,210 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, } - @Override - public synchronized void transferManagerErrorStatusUpdate( - final ErrorStatus es) { - iDropCore.getIconManager().setErrorStatus(es); - } - - @Override - public synchronized void transferManagerRunningStatusUpdate( - final RunningStatus rs) { - iDropCore.getIconManager().setRunningStatus(rs); - if (rs == RunningStatus.PAUSED) { - this.setTransferStatePaused(); - } else { - this.setTransferStateUnpaused(); + private void initializeLookAndFeelSelected() { + String lookAndFeelChoice = iDropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.LOOK_AND_FEEL); + if (lookAndFeelChoice == null || lookAndFeelChoice.isEmpty()) { + lookAndFeelChoice = "System"; } +// if (lookAndFeelChoice.equals("Metal")) { +// +// this.jRadioButtonMenuItemMetal.setSelected(true); +// +// } else if (lookAndFeelChoice.equals("System")) { +// +// this.jRadioButtonLookAndFeelDefault.setSelected(true); +// } else if (lookAndFeelChoice.equals("Motif")) { +// +// this.jRadioButtonMenuItemMotif.setSelected(true); +// } else if (lookAndFeelChoice.equals("GTK")) { +// +// this.jRadioButtonMenuItemGTK.setSelected(true); +// } else if (lookAndFeelChoice.equals("Nimbus")) { +// this.jRadioButtonLookAndFeelNimbus.setSelected(true); +// +// } else { +// this.jRadioButtonLookAndFeelDefault.setSelected(true); +// } } - /** - * Status callback per file, or intra-file, from the transfer manager - * - * @param ts - */ - @Override - public void statusCallback(final TransferStatus ts) { - - log.info("transfer status callback to iDROP:{}", ts); - final iDrop idrop = this; - - java.awt.EventQueue.invokeLater(new Runnable() { - - @Override - public void run() { - - if (ts.getTransferState() == TransferStatus.TransferState.FAILURE) { - // an error occurs, stop the transfer - log.error("error occurred in transfer: {}", ts); - if (ts.getTransferException() == null) { - idrop.showMessageFromOperation("An error occurred in the transfer, this transfer will be cancelled"); - } else { - idrop.showIdropException(ts.getTransferException()); - } - - } else if (ts.isIntraFileStatusReport()) { - - log.debug("transferred so far:{}", ts.getBytesTransfered()); - log.debug("total bytes:{}", ts.getTotalSize()); - float rawPct = (float) ts.getBytesTransfered() / ts.getTotalSize(); - int percentDone = (int) (rawPct * 100F); - log.info("pct done:{}", percentDone); - - progressIntraFile.setValue(percentDone); - progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - - } else if (ts.getTransferState() == TransferStatus.TransferState.IN_PROGRESS_START_FILE) { - - // start of a file operation - progressIntraFile.setMinimum(0); - progressIntraFile.setMaximum(100); - progressIntraFile.setValue(0); - lblCurrentFile.setText(IDropUtils.abbreviateFileName(ts.getSourceFileAbsolutePath())); - transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); - progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - - } else if (ts.getTransferState() == TransferStatus.TransferState.IN_PROGRESS_COMPLETE_FILE) { - - progressIntraFile.setValue(100); - - transferStatusProgressBar.setMaximum(ts.getTotalFilesToTransfer()); - transferStatusProgressBar.setValue(ts.getTotalFilesTransferredSoFar()); - transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); - progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - - } else { + private void setLookAndFeel(String lookAndFeelChoice) { - transferStatusProgressBar.setMaximum(ts.getTotalFilesToTransfer()); - transferStatusProgressBar.setValue(ts.getTotalFilesTransferredSoFar()); - transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); - progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - lblCurrentFile.setText(IDropUtils.abbreviateFileName(ts.getSourceFileAbsolutePath())); - } - } - }); + int result = JOptionPane.showConfirmDialog(this, + "Changing the look and feel requires a restart, would you like to change the look and feel?", + "iDrop - Confirm change look and feel", + JOptionPane.OK_CANCEL_OPTION); + if (result == JOptionPane.CANCEL_OPTION) { + return; + } - } + String lookAndFeel = ""; + if (lookAndFeelChoice == null) { + lookAndFeelChoice = "System"; + } - /** - * Be able to do things to the transfer panel - * - * @param isBegin - */ - private void setUpTransferPanel(boolean isBegin) { - if (isBegin) { - pnlCurrentTransferStatus.setVisible(true); - } else { - pnlCurrentTransferStatus.setVisible(true); + if (lookAndFeelChoice != null) { +// if (lookAndFeelChoice.equals("Metal")) { +// lookAndFeel = lookAndFeelChoice; +// this.jRadioButtonMenuItemMetal.setSelected(true); +// // an alternative way to set the Metal L&F is to replace the +// // previous line with: +// // lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel"; +// +// } else if (lookAndFeelChoice.equals("System")) { +// lookAndFeel = lookAndFeelChoice; +// this.jRadioButtonLookAndFeelDefault.setSelected(true); +// } else if (lookAndFeelChoice.equals("Motif")) { +// lookAndFeel = lookAndFeelChoice; +// this.jRadioButtonMenuItemMotif.setSelected(true); +// } else if (lookAndFeelChoice.equals("GTK")) { +// lookAndFeel = lookAndFeelChoice; +// this.jRadioButtonMenuItemGTK.setSelected(true); +// } else if (lookAndFeelChoice.equals("Nimbus")) { +// this.jRadioButtonLookAndFeelNimbus.setSelected(true); +// lookAndFeel = lookAndFeelChoice; +// } else { +// lookAndFeel = "System"; +// +// } +// try { +// LookAndFeelManager laf = new LookAndFeelManager(iDropCore); +// laf.setLookAndFeel(lookAndFeel); +// shutdown(); +// } catch (Exception e) { +// log.warn("unable to set look and feel to :{}", lookAndFeel); +// } } } - /** - * Implementation of transfer manager callback. The overall status callback represents the start - * and completion of a transfer operation - * - * @param ts - */ - @Override - public void overallStatusCallback(final TransferStatus ts) { - - final IRODSOutlineModel irodsTreeModel = (IRODSOutlineModel) irodsTree.getModel(); - final iDrop idropGui = this; + public void buildTargetTree(final boolean reset) { + log.info("building tree to look at staging resource"); + final iDrop gui = this; java.awt.EventQueue.invokeLater(new Runnable() { - @Override public void run() { + gui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_INITIATION || ts.getTransferState() == TransferStatus.TransferState.SYNCH_INITIALIZATION) { - transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); - progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - idropGui.setUpTransferPanel(true); - } else if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_COMPLETION || ts.getTransferState() == TransferStatus.TransferState.SYNCH_COMPLETION) { - idropGui.setUpTransferPanel(false); - } - - /* - * Handle appropriate tree notifications, so some filtering to prevent notifications - * when for a different host/zone - */ - if (ts.getTransferType() == TransferStatus.TransferType.SYNCH || ts.getTransferType() == TransferStatus.TransferType.REPLICATE) { - log.info("no need to notify tree for synch or replicate"); - } else if (ts.getTransferType() == TransferStatus.TransferType.GET - && ts.getTransferState() == TransferStatus.TransferState.OVERALL_COMPLETION) { - try { - ((LocalFileSystemModel) idropGui.getFileTree().getModel()).notifyCompletionOfOperation(idropGui.getFileTree(), ts); - - } catch (IdropException ex) { - log.error("error on tree notify after operation", ex); - throw new IdropRuntimeException("error processing overall status callback", ex); - } - } else if (ts.getTransferType() == TransferStatus.TransferType.COPY || ts.getTransferType() == TransferStatus.TransferType.PUT) { - if (ts.getTransferZone().equals( - iDropCore.getIrodsAccount().getZone()) && ts.getTransferHost().equals(iDropCore.getIrodsAccount().getHost())) { - try { - // should leave PUT, and COPY - irodsTreeModel.notifyCompletionOfOperation(irodsTree, ts); - } catch (IdropException ex) { - log.error("error on tree notify after operation", ex); - throw new IdropRuntimeException("error processing overall status callback", ex); + IRODSOutlineModel mdl = null; + log.info("building new iRODS tree"); + try { + if (getTreeStagingResource() != null) { + if (reset) { + loadNewTree(); + } else { + reloadExistingTree(); } + } else { + loadNewTree(); } + } catch (Exception ex) { + Logger.getLogger(iDrop.class.getName()).log(Level.SEVERE, + null, ex); + throw new IdropRuntimeException(ex); + } finally { + getiDropCore().getIrodsFileSystem().closeAndEatExceptions( + iDropCore.getIrodsAccount()); + gui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } + } - /* - * Handle progress bar and messages. These are cleared on overall initiation - */ - if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_INITIATION || ts.getTransferState() == TransferStatus.TransferState.SYNCH_INITIALIZATION) { - clearProgressBar(); - // on initiation, clear and reset the status bar info - lblTransferType.setText(ts.getTransferType().name()); - transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); - progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - lblCurrentFile.setText(IDropUtils.abbreviateFileName(ts.getSourceFileAbsolutePath())); - transferStatusProgressBar.setMinimum(0); - transferStatusProgressBar.setMaximum(ts.getTotalFilesToTransfer()); - transferStatusProgressBar.setValue(0); + /** + * A tree has not been previosly loaded, establish the root (strict + * ACLs? Login preset?) + */ + private void loadNewTree() throws JargonException, IdropException { + IRODSOutlineModel mdl; + TreePath[] currentPaths = null; + CollectionAndDataObjectListingEntry root = new CollectionAndDataObjectListingEntry(); + String basePath = getBasePath(); + log.info("base path set to:{}", basePath); + if (basePath.equals("/")) { + root.setPathOrName(basePath); + root.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.COLLECTION); + } else { + IRODSFile baseFile = iDropCore.getIRODSFileFactoryForLoggedInAccount().instanceIRODSFile(basePath); + root.setParentPath(baseFile.getParent()); + root.setPathOrName(baseFile.getAbsolutePath()); + root.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.COLLECTION); } - /* - * Handle any text messages - */ - if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_INITIALIZATION) { - lblTransferMessage.setText("Synchronization Initializing"); - } else if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_DIFF_GENERATION) { - lblTransferMessage.setText("Synchronization looking for updates"); - } else if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_DIFF_STEP) { - lblTransferMessage.setText("Synchronizing differences"); - } else if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_COMPLETION) { - lblTransferMessage.setText("Synchronization complete"); - } else if (ts.getTransferEnclosingType() == TransferStatus.TransferType.SYNCH) { - lblTransferMessage.setText("Transfer to synchronize local and iRODS"); - } else if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_INITIATION) { - // initiation not within a synch - lblTransferMessage.setText("Processing a " + ts.getTransferType().name() + " operation"); - } + irodsTree = new IRODSTree(gui); + IRODSNode rootNode = new IRODSNode(root, + getIrodsAccount(), getiDropCore().getIrodsFileSystem(), irodsTree); + irodsTree.setRefreshingTree(true); + IRODSFileSystemModel irodsFileSystemModel = new IRODSFileSystemModel( + rootNode, getIrodsAccount()); + mdl = new IRODSOutlineModel(gui, + irodsFileSystemModel, new IRODSRowModel(), true, + "File System"); + irodsTree.setModel(mdl); + scrollIrodsTree.setViewportView(irodsTree); } - }); - } - - /** - * Display an error message dialog that indicates an exception has occcurred - * - * @param idropException - */ - public void showIdropException(final Exception idropException) { - JOptionPane.showMessageDialog(this, idropException.getMessage(), - "iDROP Exception", JOptionPane.WARNING_MESSAGE); - } - - /** - * Utility method to display a dialog with a message. - * - * @param messageFromOperation - */ - public void showMessageFromOperation(final String messageFromOperation) { - - final iDrop thisIdropGui = this; - java.awt.EventQueue.invokeLater(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog(thisIdropGui, - messageFromOperation, "iDROP Message", - JOptionPane.INFORMATION_MESSAGE); + /** + * A tree already exists so use the current information to reload + */ + private void reloadExistingTree() throws IdropException, JargonException { + IRODSNode currentRoot = (IRODSNode) irodsTree.getOutlineModel().getRoot(); + log.debug("current tree root:{}", currentRoot); + TreePath rootPath = TreeUtils.getPath(currentRoot); + TreePath[] currentPaths = irodsTree.getOutlineModel().getTreePathSupport().getExpandedDescendants(rootPath); + log.info("expanded paths:{}", currentPaths); + int startIdx = irodsTree.getSelectionModel().getMinSelectionIndex(); + int endIdx = irodsTree.getSelectionModel().getMaxSelectionIndex(); + scrollIrodsTree.getViewport().removeAll(); + irodsTree = null; + loadNewTree(); + irodsTree.getSelectionModel().setSelectionInterval(0, 0); + if (currentPaths != null) { + IRODSNode irodsNode = null; + TreePath pathOfExpandingNode = null; + CollectionAndDataObjectListingEntry expandedEntry = null; + log.info("looking to re-expand paths..."); + for (TreePath treePath : currentPaths) { + irodsNode = (IRODSNode) treePath.getLastPathComponent(); + expandedEntry = (CollectionAndDataObjectListingEntry) irodsNode.getUserObject(); + irodsNode = (IRODSNode) TreeUtils.buildTreePathForIrodsAbsolutePath(irodsTree, expandedEntry.getFormattedAbsolutePath()).getLastPathComponent(); + irodsNode.getChildCount(); + TreePath pathInNew = TreeUtils.getPath(irodsNode); + irodsTree.collapsePath(pathInNew); + irodsTree.expandPath(pathInNew); + java.awt.Rectangle rect = irodsTree.getPathBounds(treePath); + if (rect != null) { + irodsTree.scrollRectToVisible(rect); + //irodsTree.getSelectionModel().setSelectionInterval(startIdx, endIdx); + } + } + } } }); } /** - * Update the system tray icon based on the current status. - * - * @param iconFile + * Method to clear any cached values when an account changes. Some data is + * cached and lazily loaded. Rebuilds gui state for new grid. */ - public void updateIcon(final String iconFile) { + public void reinitializeForChangedIRODSAccount() { + log.info("clearing any cached data associated with the account"); + final iDrop idropGui = this; java.awt.EventQueue.invokeLater(new Runnable() { - @Override public void run() { - - /* - * listener events may occur at startup before the GUI is fully prepared, ignore - * these - */ - if (trayIcon == null) { - return; - } - - Image newIcon = createImage(iconFile, "icon"); - - trayIcon.setImage(newIcon); - - if (pnlIdropProgressIcon != null) { - progressIconImageLabel.setIcon(new ImageIcon(newIcon)); - - } + lastCachedInfoItem = null; + idropGui.buildTargetTree(true); +// idropGui.toggleIrodsDetails.setSelected(false); +// handleInfoPanelShowOrHide(); + getiDropCore().setBasePath(null); + setUpAccountGutter(); } }); + } /** - * Builds the system tray menu and installs the iDrop icon in the system tray. The iDrop GUI is - * displayed when the iDrop menu item is selected from the system tray + * Builds the system tray menu and installs the iDrop icon in the system + * tray. The iDrop GUI is displayed when the iDrop menu item is selected + * from the system tray */ protected void createAndShowSystemTray() { if (!SystemTray.isSupported()) { @@ -542,7 +491,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, * See if I am in a paused state */ - if (this.getiDropCore().getTransferManager().getRunningStatus() == RunningStatus.PAUSED) { + if (this.getiDropCore().getTransferManager().getRunningStatus() == TransferManager.RunningStatus.PAUSED) { this.setTransferStatePaused(); } @@ -573,7 +522,8 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, } /** - * Returns an ImageIcon, or null if the path was invalid. FIXME: move to static util + * Returns an ImageIcon, or null if the path was invalid. FIXME: move to + * static util */ protected static Image createImage(final String path, final String description) { @@ -590,8 +540,8 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, /** * Get the current iRODS login account. * - * @return - * <code>IRODSAccount</code> with the current iRODS connection information. + * @return <code>IRODSAccount</code> with the current iRODS connection + * information. */ public IRODSAccount getIrodsAccount() { synchronized (this) { @@ -602,8 +552,8 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, /** * Set the current connection information. * - * @return - * <code>IRODSAccount</code> with the current iRODS connection information. + * @return <code>IRODSAccount</code> with the current iRODS connection + * information. */ public void setIrodsAccount(final IRODSAccount irodsAccount) { synchronized (this) { @@ -612,6 +562,246 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, } /** + * Returns the current iRODS remote tree view component. + * + * @return <code>JTree</code> visual representation of the remote iRODS + * resource + */ + public Outline getTreeStagingResource() { + return irodsTree; + } + + public IDROPCore getiDropCore() { + return iDropCore; + } + + public void setBusyCursor() { + this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + } + + public void setNormalCursor() { + this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + + public LocalFileTree getFileTree() { + return fileTree; + } + + public void setFileTree(final LocalFileTree fileTree) { + this.fileTree = fileTree; + } + + /** + * Set the account information in the gutter, including the available + * resources on the grid. Note that this method should be called in the + * context of a + * <code>Runnable</code> + */ + private void setUpAccountGutter() { +// userNameLabel.setText(this.getIrodsAccount().getUserName()); +// lblZone.setText(this.getIrodsAccount().getZone()); +// lblHost.setText(this.getIrodsAccount().getHost()); +// /* +// * Get a list of storage resources on this host +// */ +// try { +// ResourceAO resourceAO = this.getiDropCore().getIRODSAccessObjectFactory().getResourceAO(this.getIrodsAccount()); +// log.info("getting a list of all resources in the zone"); +// List<String> resources = new ArrayList<String>(); +// resources.add(""); +// resources.addAll(resourceAO.listResourceAndResourceGroupNames()); +// comboDefaultResource.setModel(new DefaultComboBoxModel(resources.toArray())); +// comboDefaultResource.setSelectedItem(this.getIrodsAccount().getDefaultStorageResource()); +// } catch (JargonException ex) { +// log.error("error getting resource list", ex); +// throw new IdropRuntimeException("error getting resource list", ex); +// } + } + + /** + * Establish base path (checking if strict acl's are in place. + * + * @return <code>String</code> with the base path for the tree + * @throws JargonException + */ + private synchronized String getBasePath() throws JargonException { + String myBase = this.getiDropCore().getBasePath(); + + // if no base defined, see if there is a prese + if (myBase == null) { + + if (this.getiDropCore().getIrodsAccount().isAnonymousAccount()) { + log.info("user is anonymous, default to view the public directory"); + myBase = MiscIRODSUtils.computePublicDirectory(this.getiDropCore().getIrodsAccount()); + + } else { + + if (iDropCore.getIdropConfig().isLoginPreset()) { + log.info("using policy preset home directory"); + StringBuilder sb = new StringBuilder(); + sb.append("/"); + sb.append(getIrodsAccount().getZone()); + sb.append("/"); + sb.append("home"); + myBase = sb.toString(); + } else { + // look up the strict acl setting for the server, if strict acl, home the person in their user directory + EnvironmentalInfoAO environmentalInfoAO = this.getiDropCore().getIRODSAccessObjectFactory().getEnvironmentalInfoAO(getiDropCore().getIrodsAccount()); + boolean isStrict = environmentalInfoAO.isStrictACLs(); + log.info("is strict?:{}", isStrict); + + if (isStrict) { + myBase = MiscIRODSUtils.computeHomeDirectoryForIRODSAccount(iDropCore.getIrodsAccount()); + } else { + myBase = "/"; + } + + } + } + } + getiDropCore().setBasePath(myBase); + return myBase; + + } + + /** + * Get the JTree component that represents the iRODS file system in the + * iDrop gui. + * + * @return <code>IRODSTree</code> that is the JTree component for the iRODS + * file system view. + */ + public IRODSTree getIrodsTree() { + return irodsTree; + } + + /** + * Set up a JTree that depicts the local file system + */ + private void setUpLocalFileSelectTree() { + + /* + * build a list of the roots (e.g. drives on windows systems). If there is only one, use it + * as the basis for the file model, otherwise, display an additional panel listing the other + * roots, and build the tree for the first drive encountered. + */ + + if (fileTree != null) { + log.info("file tree already initialized"); + return; + } + + log.info("building tree to look at local file system"); + final iDrop gui = this; + + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + + initializeLocalFileTreeModel(null); + fileTree = new LocalFileTree(localFileModel, gui); + listLocalDrives.getSelectionModel().addListSelectionListener( + new ListSelectionListener() { + @Override + public void valueChanged(final ListSelectionEvent e) { + if (e.getValueIsAdjusting()) { + return; + } + + log.debug("new local file system model"); + log.debug("selection event:{}", e); + Object selectedItem = listLocalDrives.getSelectedValue(); + initializeLocalFileTreeModelWhenDriveIsSelected(selectedItem); + + } + }); + scrollLocalFileTree.setViewportView(fileTree); + pnlLocalTreeArea.add(scrollLocalFileTree, + java.awt.BorderLayout.CENTER); + } + }); + + } + + private void initializeLocalFileTreeModelWhenDriveIsSelected( + final Object selectedDrive) { + if (selectedDrive == null) { + log.debug("selected drive is null, use the first one"); + listLocalDrives.setSelectedIndex(0); + + localFileModel = new LocalFileSystemModel(new LocalFileNode( + new File((String) listLocalDrives.getSelectedValue()))); + + fileTree.setModel(localFileModel); + } else { + log.debug( + "selected drive is not null, create new root based on selection", + selectedDrive); + listLocalDrives.setSelectedValue(selectedDrive, true); + localFileModel = new LocalFileSystemModel(new LocalFileNode( + new File((String) selectedDrive))); + fileTree.setModel(localFileModel); + + } + + scrollLocalDrives.setVisible(true); + } + + private void initializeLocalFileTreeModel(final Object selectedDrive) { + List<String> roots = LocalFileUtils.listFileRootsForSystem(); + + if (roots.isEmpty()) { + IdropException ie = new IdropException( + "unable to find any roots on the local file system"); + log.error("error building roots on local file system", ie); + showIdropException(ie); + return; + } else if (roots.size() == 1) { + scrollLocalDrives.setVisible(false); + localFileModel = new LocalFileSystemModel(new LocalFileNode( + new File(roots.get(0)))); + + } else { + DefaultListModel listModel = new DefaultListModel(); + for (String root : roots) { + listModel.addElement(root); + } + + listLocalDrives.setModel(listModel); + + scrollLocalDrives.setVisible(true); + } + } + + /** + * Display an error message dialog that indicates an exception has occcurred + * + * @param idropException + */ + public void showIdropException(final Exception idropException) { + JOptionPane.showMessageDialog(this, idropException.getMessage(), + "iDROP Exception", JOptionPane.WARNING_MESSAGE); + } + + /** + * Utility method to display a dialog with a message. + * + * @param messageFromOperation + */ + public void showMessageFromOperation(final String messageFromOperation) { + + final iDrop thisIdropGui = this; + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + JOptionPane.showMessageDialog(thisIdropGui, + messageFromOperation, "iDROP Message", + JOptionPane.INFORMATION_MESSAGE); + } + }); + } + + /** * Handler for iDrop system tray menu options. * * @param e @@ -692,66 +882,6 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, return false; } - public TrayIcon getTrayIcon() { - return trayIcon; - } - - public void setTrayIcon(final TrayIcon trayIcon) { - this.trayIcon = trayIcon; - trayIcon.setImageAutoSize(true); - } - - /** - * A transfer confirm dialog - * - * @param sourcePath - * <code>String</code> with the source path of the transfer - * @param targetPath - * <code>String</code> with the target of the transfer - * @return - * <code>int</code> with the dialog user response. - */ - public int showTransferConfirm(final String sourcePath, - final String targetPath) { - - StringBuilder sb = new StringBuilder(); - sb.append("Would you like to transfer from "); - sb.append(sourcePath); - sb.append(" to "); - sb.append(targetPath); - - // default icon, custom title - int n = JOptionPane.showConfirmDialog(this, sb.toString(), - "Transfer Confirmaiton", JOptionPane.YES_NO_OPTION); - - return n; - } - - /** - * A dialog to indicate that the queue should start processing - */ - public int showTransferStartupConfirm() { - - // default icon, custom title - int n = JOptionPane.showConfirmDialog( - this, - "There are transfers ready to process, should the transfer queue be started? Click NO to pause the transfersf", - "Begin Transfer Confirmation", - JOptionPane.YES_NO_OPTION); - - return n; - } - - /** - * Returns the current iRODS remote tree view component. - * - * @return - * <code>JTree</code> visual representation of the remote iRODS resource - */ - public Outline getTreeStagingResource() { - return irodsTree; - } - /** * Indicate that the GUI should reflect a paused state * @@ -761,9 +891,9 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, pausedItem.setState(true); } - if (togglePauseTransfer != null) { - this.togglePauseTransfer.setSelected(true); - } +// if (togglePauseTransfer != null) { +// this.togglePauseTransfer.setSelected(true); +// } } /** @@ -774,9 +904,9 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, pausedItem.setState(false); } - if (togglePauseTransfer != null) { - this.togglePauseTransfer.setSelected(false); - } +// if (togglePauseTransfer != null) { +// this.togglePauseTransfer.setSelected(false); +// } } @Override @@ -800,638 +930,673 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, } } + private void shutdownWithConfirmation() { + int result = JOptionPane.showConfirmDialog(this, + "Shut down iDrop?", + "Do you want to shut down iDrop?", + JOptionPane.OK_CANCEL_OPTION); + if (result == JOptionPane.OK_OPTION) { + shutdown(); + } + } + + private void shutdown() { + try { + log.info("shut down queue timer"); + iDropCore.getQueueTimer().cancel(); + log.info("saving current configuration to idrop.properties"); + iDropCore.getIdropConfigurationService().saveConfigurationToPropertiesFile(); + log.info("properties saved"); + } catch (IdropException ex) { + log.error("iDrop exception on shutdown will be ignored", ex); + } + System.exit(0); + } + /** - * Show or hide the iRODS info panel and manage the state of the show info menu and toggle so - * that they remain in synch + * Update the system tray icon based on the current status. + * + * @param iconFile */ - private void handleInfoPanelShowOrHide() { - final iDrop idropGuiReference = this; + public void updateIcon(final String iconFile) { java.awt.EventQueue.invokeLater(new Runnable() { - @Override public void run() { - pnlIrodsInfo.setVisible(toggleIrodsDetails.isSelected()); - jCheckBoxMenuItemShowIrodsInfo.setSelected(toggleIrodsDetails.isSelected()); - // if info is being opened, initialize to the first selected - // item, or the root of the iRODS tree if none - // selected - IRODSNode node; - - if (irodsTree.getSelectionModel().getLeadSelectionIndex() < 0) { - if (irodsTree.getRowCount() > 0) { - irodsTree.setRowSelectionInterval(0, 0); - } - } - if (pnlIrodsInfo.isVisible()) { - idropGuiReference.triggerInfoPanelUpdate(); - splitTargetCollections.setDividerLocation(0.5d); + /* + * listener events may occur at startup before the GUI is fully prepared, ignore + * these + */ + if (trayIcon == null) { + return; } + + Image newIcon = createImage(iconFile, "icon"); + + trayIcon.setImage(newIcon); + +// if (pnlIdropProgressIcon != null) { +// progressIconImageLabel.setIcon(new ImageIcon(newIcon)); +// +// } } }); } - /** - * Set up a JTree that depicts the local file system - */ - private void setUpLocalFileSelectTree() { - - /* - * build a list of the roots (e.g. drives on windows systems). If there is only one, use it - * as the basis for the file model, otherwise, display an additional panel listing the other - * roots, and build the tree for the first drive encountered. - */ + public Object getLastCachedInfoItem() { + return lastCachedInfoItem; + } - if (fileTree != null) { - log.info("file tree already initialized"); - return; - } + public void triggerInfoPanelUpdate() throws IdropRuntimeException { - log.info("building tree to look at local file system"); - final iDrop gui = this; + final iDrop idropGui = this; java.awt.EventQueue.invokeLater(new Runnable() { - @Override public void run() { + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - initializeLocalFileTreeModel(null); - fileTree = new LocalFileTree(localFileModel, gui); - listLocalDrives.getSelectionModel().addListSelectionListener( - new ListSelectionListener() { - - @Override - public void valueChanged(final ListSelectionEvent e) { - if (e.getValueIsAdjusting()) { - return; - } + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) getIrodsTree().getModel(); - log.debug("new local file system model"); - log.debug("selection event:{}", e); - Object selectedItem = listLocalDrives.getSelectedValue(); - initializeLocalFileTreeModelWhenDriveIsSelected(selectedItem); + ListSelectionModel selectionModel = getIrodsTree().getSelectionModel(); + int idx = selectionModel.getLeadSelectionIndex(); - } - }); - scrollLocalFileTree.setViewportView(fileTree); - pnlLocalTreeArea.add(scrollLocalFileTree, - java.awt.BorderLayout.CENTER); + // use first selection for info + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt( + idx, 0); + log.info("selected node to initialize info panel:{}", selectedNode); + try { + identifyNodeTypeAndInitializeInfoPanel(selectedNode); + } catch (IdropException ex) { + log.error("error initializing info panel for selected iRODS node", ex); + throw new IdropRuntimeException( + "error initializing info panel for selected irods node"); + } finally { + iDropCore.closeIRODSConnectionForLoggedInAccount(); + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } } }); } - private void initializeLocalFileTreeModelWhenDriveIsSelected( - final Object selectedDrive) { - if (selectedDrive == null) { - log.debug("selected drive is null, use the first one"); - listLocalDrives.setSelectedIndex(0); - - localFileModel = new LocalFileSystemModel(new LocalFileNode( - new File((String) listLocalDrives.getSelectedValue()))); + // Update state of toolbar buttons when iRODS tree nodes are selected + public void triggerToolbarUpdate() throws IdropRuntimeException { - fileTree.setModel(localFileModel); - } else { - log.debug( - "selected drive is not null, create new root based on selection", - selectedDrive); - listLocalDrives.setSelectedValue(selectedDrive, true); - localFileModel = new LocalFileSystemModel(new LocalFileNode( - new File((String) selectedDrive))); - fileTree.setModel(localFileModel); + final iDrop idropGui = this; - } + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { - scrollLocalDrives.setVisible(true); - } + String path = ""; + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) getIrodsTree().getModel(); - private void initializeLocalFileTreeModel(final Object selectedDrive) { - List<String> roots = LocalFileUtils.listFileRootsForSystem(); + // first check for selected item in iRODS tree + ListSelectionModel selectionModel = getIrodsTree().getSelectionModel(); + int idx = selectionModel.getLeadSelectionIndex(); + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt(idx, 0); + path = selectedNode.getFullPath(); - if (roots.isEmpty()) { - IdropException ie = new IdropException( - "unable to find any roots on the local file system"); - log.error("error building roots on local file system", ie); - showIdropException(ie); - return; - } else if (roots.size() == 1) { - scrollLocalDrives.setVisible(false); - localFileModel = new LocalFileSystemModel(new LocalFileNode( - new File(roots.get(0)))); + CollectionAndDataObjectListingEntry irodsObj = (CollectionAndDataObjectListingEntry) selectedNode.getUserObject(); + if (irodsObj.isCollection()) { + enableCollectionSelectedButtons(true); + setBreadcrumb(path); + } + else { + enableCollectionSelectedButtons(false); + } + enableToolbarButtons(idx >= 0); - } else { - DefaultListModel listModel = new DefaultListModel(); - for (String root : roots) { - listModel.addElement(root); } + }); + } - listLocalDrives.setModel(listModel); + private void enableToolbarButtons(boolean state) { + btnMainToolbarInfo.setEnabled(state); + btnMainToolbarCopy.setEnabled(state); + btnMainToolbarDelete.setEnabled(state); + //btnMainToolbarDownload.setEnabled(state); + //btnMainToolbarSync.setEnabled(state); + } - scrollLocalDrives.setVisible(true); + private void enableCollectionSelectedButtons(boolean state) { + //btnMainToolbarUpload.setEnabled(state); + btnMainToolbarSearchFiles.setEnabled(state); + } + + private void setBreadcrumb(String path) { + lblBreadCrumb.setText(path); + } + + private void processSearchRequest() { + log.info("do a search for files and collections"); +// if (comboSearchType.getSelectedIndex() == 0) { +// log.info("searching files and collections"); + searchFilesAndShowSearchResultsTab(txtMainToolbarSearchTerms.getText()); +// } else if (comboSearchType.getSelectedIndex() == 1) { +// log.info("searching by tag value"); +// searchTagsAndShowSearchResultsTag(txtMainSearch.getText()); +// } else { +// throw new UnsupportedOperationException("not yet implemented"); +// } + } + + private void searchFilesAndShowSearchResultsTab(final String searchText) { + if (searchText.isEmpty()) { + this.showMessageFromOperation("please enter text to search on"); + return; } + SearchResultsDialog searchResultsDialog = new SearchResultsDialog(this, true, + getIrodsTree(), searchText); + + searchResultsDialog.setLocation( + (int) (this.getLocation().getX() + this.getWidth() / 2), (int) (this.getLocation().getY() + this.getHeight() / 2)); + searchResultsDialog.setVisible(true); + +// final String searchTerms = searchText.trim(); +// final iDrop idropGui = this; +// +// java.awt.EventQueue.invokeLater(new Runnable() { +// +// @Override +// public void run() { +// +// try { +// idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); +// CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = iDropCore.getIRODSAccessObjectFactory().getCollectionAndDataObjectListAndSearchAO( +// iDropCore.getIrodsAccount()); +// IRODSSearchTableModel irodsSearchTableModel = new IRODSSearchTableModel( +// collectionAndDataObjectListAndSearchAO.searchCollectionsAndDataObjectsBasedOnName(searchTerms)); +// tableSearchResults.setModel(irodsSearchTableModel); +// tabIrodsViews.setSelectedComponent(pnlTabSearch); +// } catch (Exception e) { +// idropGui.showIdropException(e); +// return; +// } finally { +// iDropCore.closeAllIRODSConnections(); +// idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); +// } +// } +// }); } /** - * Establish base path (checking if strict acl's are in place. + * Look at the kind of irods node and handle appropriately * - * @return - * <code>String</code> with the base path for the tree - * @throws JargonException + * @param irodsNode + * @throws IdropException */ - private synchronized String getBasePath() throws JargonException { - String myBase = this.getiDropCore().getBasePath(); + public void identifyNodeTypeAndInitializeInfoPanel(final IRODSNode irodsNode) + throws IdropException { +// if (!getToggleIrodsDetails().isSelected()) { +// return; +// } +// +// if (irodsNode == null) { +// return; +// } +// +// if (irodsNode.isLeaf()) { +// log.info("selected node is a leaf, get a data object"); +// buildDataObjectFromSelectedIRODSNodeAndGiveToInfoPanel(irodsNode); +// } else { +// log.info("selected node is a collection, get a collection object"); +// buildCollectionFromSelectedIRODSNodeAndGiveToInfoPanel(irodsNode); +// } + } + + private void executeDownload(final String downloadPath) { - // if no base defined, see if there is a prese - if (myBase == null) { + final iDrop idropGui = this; - if (this.getiDropCore().getIrodsAccount().isAnonymousAccount()) { - log.info("user is anonymous, default to view the public directory"); - myBase = MiscIRODSUtils.computePublicDirectory(this.getiDropCore().getIrodsAccount()); + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - } else { + IRODSOutlineModel irodsFileSystemModel = (IRODSOutlineModel) getIrodsTree().getModel(); - if (iDropCore.getIdropConfig().isLoginPreset()) { - log.info("using policy preset home directory"); - StringBuilder sb = new StringBuilder(); - sb.append("/"); - sb.append(getIrodsAccount().getZone()); - sb.append("/"); - sb.append("home"); - myBase = sb.toString(); - } else { - // look up the strict acl setting for the server, if strict acl, home the person in their user directory - EnvironmentalInfoAO environmentalInfoAO = this.getiDropCore().getIRODSAccessObjectFactory().getEnvironmentalInfoAO(getiDropCore().getIrodsAccount()); - boolean isStrict = environmentalInfoAO.isStrictACLs(); - log.info("is strict?:{}", isStrict); + ListSelectionModel selectionModel = getIrodsTree().getSelectionModel(); + int idxStart = selectionModel.getMinSelectionIndex(); + int idxEnd = selectionModel.getMaxSelectionIndex(); + final List<File> sourceFiles = new ArrayList<File>(); - if (isStrict) { - myBase = MiscIRODSUtils.computeHomeDirectoryForIRODSAccount(iDropCore.getIrodsAccount()); - } else { - myBase = "/"; - } + // get iRODS File Service + IRODSFileService irodsFS = null; + try { + irodsFS = new IRODSFileService(iDropCore.getIrodsAccount(), iDropCore.getIrodsFileSystem()); + } catch (Exception ex) { + //JOptionPane.showMessageDialog(this, "Cannot access iRODS file system for get."); + log.error("cannot create irods file service"); + return; + } + // now collect all selected nodes + IRODSFile ifile = null; + for (int idx = idxStart; idx <= idxEnd; idx++) { + if (selectionModel.isSelectedIndex(idx)) { + try { + IRODSNode selectedNode = (IRODSNode) irodsFileSystemModel.getValueAt(idx, 0); + ifile = irodsFS.getIRODSFileForPath(selectedNode.getFullPath()); + sourceFiles.add((File) ifile); + } catch (IdropException ex) { + Exceptions.printStackTrace(ex); } } } - getiDropCore().setBasePath(myBase); - return myBase; - } + StringBuilder sb = new StringBuilder(); - /** - * build the JTree that will depict the iRODS resource - */ - public void buildTargetTree(final boolean reset) { - log.info("building tree to look at staging resource"); - final iDrop gui = this; + if (sourceFiles.size() == 1) { + sb.append("Would you like to copy the remote file "); + sb.append(sourceFiles.get(0).getAbsolutePath()); + sb.append(" to "); + sb.append(downloadPath); + } else { + sb.append("Would you like to copy multiple files to "); + sb.append(downloadPath); - java.awt.EventQueue.invokeLater(new Runnable() { + } + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - @Override - public void run() { - gui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - IRODSOutlineModel mdl = null; - log.info("building new iRODS tree"); - try { - if (getTreeStagingResource() != null) { - if (reset) { - loadNewTree(); - } else { - reloadExistingTree(); - } - } else { - loadNewTree(); - } - } catch (Exception ex) { - Logger.getLogger(iDrop.class.getName()).log(Level.SEVERE, - null, ex); - throw new IdropRuntimeException(ex); - } finally { - getiDropCore().getIrodsFileSystem().closeAndEatExceptions( - iDropCore.getIrodsAccount()); - gui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - } + // default icon, custom title + int n = JOptionPane.showConfirmDialog(idropGui, sb.toString(), + "Confirm a Get ", JOptionPane.YES_NO_OPTION); - /** - * A tree has not been previosly loaded, establish the root (strict ACLs? Login preset?) - */ - private void loadNewTree() throws JargonException, IdropException { - IRODSOutlineModel mdl; - TreePath[] currentPaths = null; - CollectionAndDataObjectListingEntry root = new CollectionAndDataObjectListingEntry(); - String basePath = getBasePath(); - log.info("base path set to:{}", basePath); - if (basePath.equals("/")) { - root.setPathOrName(basePath); - root.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.COLLECTION); - } else { - IRODSFile baseFile = iDropCore.getIRODSFileFactoryForLoggedInAccount().instanceIRODSFile(basePath); - root.setParentPath(baseFile.getParent()); - root.setPathOrName(baseFile.getAbsolutePath()); - root.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.COLLECTION); - } + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - irodsTree = new IRODSTree(gui); - IRODSNode rootNode = new IRODSNode(root, - getIrodsAccount(), getiDropCore().getIrodsFileSystem(), irodsTree); - irodsTree.setRefreshingTree(true); - IRODSFileSystemModel irodsFileSystemModel = new IRODSFileSystemModel( - rootNode, getIrodsAccount()); - mdl = new IRODSOutlineModel(gui, - irodsFileSystemModel, new IRODSRowModel(), true, - "File System"); - irodsTree.setModel(mdl); - scrollIrodsTree.setViewportView(irodsTree); - } + if (n == JOptionPane.YES_OPTION) { - /** - * A tree already exists so use the current information to reload - */ - private void reloadExistingTree() throws IdropException, JargonException { - IRODSNode currentRoot = (IRODSNode) irodsTree.getOutlineModel().getRoot(); - log.debug("current tree root:{}", currentRoot); - TreePath rootPath = TreeUtils.getPath(currentRoot); - TreePath[] currentPaths = irodsTree.getOutlineModel().getTreePathSupport().getExpandedDescendants(rootPath); - log.info("expanded paths:{}", currentPaths); - scrollIrodsTree.getViewport().removeAll(); - irodsTree = null; - loadNewTree(); - if (currentPaths != null) { - IRODSNode irodsNode = null; - TreePath pathOfExpandingNode = null; - CollectionAndDataObjectListingEntry expandedEntry = null; - log.info("looking to re-expand paths..."); - for (TreePath treePath : currentPaths) { - irodsNode = (IRODSNode) treePath.getLastPathComponent(); - expandedEntry = (CollectionAndDataObjectListingEntry) irodsNode.getUserObject(); - irodsNode = (IRODSNode) TreeUtils.buildTreePathForIrodsAbsolutePath(irodsTree, expandedEntry.getFormattedAbsolutePath()).getLastPathComponent(); - irodsNode.getChildCount(); - TreePath pathInNew = TreeUtils.getPath(irodsNode); - irodsTree.collapsePath(pathInNew); - irodsTree.expandPath(pathInNew); + // process as a get + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + try { + for (File transferFile : sourceFiles) { + + if (transferFile instanceof IRODSFile) { + log.info( + "initiating a transfer of iRODS file:{}", + transferFile.getAbsolutePath()); + log.info("transfer to local file:{}", + downloadPath); + idropGui.getiDropCore().getTransferManager().enqueueAGet( + transferFile.getAbsolutePath(), + downloadPath, + "", idropGui.getIrodsAccount()); + } else { + log.info( + "process a local to local move with source...not yet implemented : {}", + transferFile.getAbsolutePath()); + } + } + } catch (JargonException ex) { + java.util.logging.Logger.getLogger( + LocalFileTree.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + idropGui.showIdropException(ex); + throw new IdropRuntimeException(ex); } } - } - }); + }); + } + + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } - public void initializeInfoPane( - final CollectionAndDataObjectListingEntry collectionAndDataObjectListingEntry) - throws IdropException { - if (!toggleIrodsDetails.isSelected()) { - log.info("info display not selected, don't bother"); - return; + private void executeUpload(final File[] sourceFiles) { + + // first collect selected target path from breadcrumb + final String targetPath = lblBreadCrumb.getText(); + + final iDrop idropGui = this; + +// final List<File> sourceFiles = new ArrayList<File>(); +// +// idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); +// +// TreeSelectionModel selectionModel = getFileTree().getSelectionModel(); +// LocalFileSystemModel fileSystemModel = (LocalFileSystemModel) idropGui.getFileTree().getModel(); +// +// TreePath[] selectionPaths = selectionModel.getSelectionPaths(); +// +// LocalFileNode sourceNode; +// for (TreePath selectionPath : selectionPaths) { +// sourceNode = (LocalFileNode) selectionPath.getLastPathComponent(); +// sourceFiles.add((File) sourceNode.getUserObject()); +// } + + if (sourceFiles.length <= 0) { + log.error("no source files in transfer"); + throw new IdropRuntimeException("no source files in transfer"); } - if (collectionAndDataObjectListingEntry == null) { - throw new IdropException("null collectionAndDataObjectListingEntry"); + StringBuilder sb = new StringBuilder(); + + if (sourceFiles.length > 1) { + sb.append("Would you like to put multiple files"); + sb.append(" to iRODS at "); + sb.append(targetPath); + } else { + sb.append("Would you like to put the file "); + sb.append(sourceFiles[0].getAbsolutePath()); + sb.append(" to iRODS at "); + sb.append(targetPath); } - final iDrop idropGui = this; + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - // need to get the collection or data object info from iRODS - java.awt.EventQueue.invokeLater(new Runnable() { + // default icon, custom title + int n = JOptionPane.showConfirmDialog(idropGui, sb.toString(), + "Confirm a Get ", JOptionPane.YES_NO_OPTION); - @Override - public void run() { - idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - try { - if (collectionAndDataObjectListingEntry.getObjectType() == CollectionAndDataObjectListingEntry.ObjectType.COLLECTION) { - log.info("looking up collection to build info panel"); - CollectionAO collectionAO = getiDropCore().getIrodsFileSystem().getIRODSAccessObjectFactory().getCollectionAO(getIrodsAccount()); - Collection collection = collectionAO.findByAbsolutePath(collectionAndDataObjectListingEntry.getPathOrName()); - initializeInfoPanel(collection); - } else { - log.info("looking up data object to build info panel"); - DataObjectAO dataObjectAO = getiDropCore().getIrodsFileSystem().getIRODSAccessObjectFactory().getDataObjectAO(getIrodsAccount()); - DataObject dataObject = dataObjectAO.findByAbsolutePath(collectionAndDataObjectListingEntry.getParentPath() - + "/" - + collectionAndDataObjectListingEntry.getPathOrName()); - initializeInfoPanel(dataObject); - } + if (n == JOptionPane.YES_OPTION) { - } catch (Exception e) { - log.error( - "exception building info panel from collection and data object listing entry:{}", - collectionAndDataObjectListingEntry, e); - throw new IdropRuntimeException(e); - } finally { - getiDropCore().getIrodsFileSystem().closeAndEatExceptions( - getIrodsAccount()); - idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + // process as a put + + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + for (File transferFile : sourceFiles) { + log.info("process a put from source: {}", + transferFile.getAbsolutePath()); + + String localSourceAbsolutePath = transferFile.getAbsolutePath(); + String sourceResource = idropGui.getIrodsAccount().getDefaultStorageResource(); + log.info("initiating put transfer"); + try { + idropGui.getiDropCore().getTransferManager().enqueueAPut(localSourceAbsolutePath, + targetPath, + sourceResource, + idropGui.getIrodsAccount()); + } catch (JargonException ex) { + java.util.logging.Logger.getLogger( + LocalFileTree.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + idropGui.showIdropException(ex); + } + } } - } - }); + }); + } + + idropGui.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } /** - * Initialize the info panel with data from iRODS. In this case, the data is an iRODS data - * object (file). Called from a runnable that will handle the irods collection and busy cursor. + * A transfer confirm dialog * - * @param dataObject - * <code>DataObject</code> iRODS domain object for a file. - * @throws IdropException + * @param sourcePath <code>String</code> with the source path of the + * transfer + * @param targetPath <code>String</code> with the target of the transfer + * @return <code>int</code> with the dialog user response. */ - public void initializeInfoPanel(final DataObject dataObject) - throws IdropException { - - if (!toggleIrodsDetails.isSelected()) { - log.info("info display not selected, don't bother"); - return; - } + public int showTransferConfirm(final String sourcePath, + final String targetPath) { - if (dataObject == null) { - throw new IdropException("Null dataObject"); - } + StringBuilder sb = new StringBuilder(); + sb.append("Would you like to transfer from "); + sb.append(sourcePath); + sb.append(" to "); + sb.append(targetPath); - this.lastCachedInfoItem = dataObject; - final iDrop idropGui = this; + // default icon, custom title + int n = JOptionPane.showConfirmDialog(this, sb.toString(), + "Transfer Confirmaiton", JOptionPane.YES_NO_OPTION); + return n; + } - lblFileOrCollectionName.setText(IDropUtils.abbreviateFileName(dataObject.getAbsolutePath())); - lblFileOrCollectionName.setToolTipText(dataObject.getAbsolutePath()); + /** + * Status callback per file, or intra-file, from the transfer manager + * + * @param ts + */ + @Override + public void statusCallback(final TransferStatus ts) { - log.debug("getting available tags for data object"); + log.info("transfer status callback to iDROP:{}", ts); + final iDrop idrop = this; - try { - FreeTaggingService freeTaggingService = FreeTaggingServiceImpl.instance(getiDropCore().getIrodsFileSystem().getIRODSAccessObjectFactory(), - getiDropCore().getIrodsAccount()); - IRODSTagGrouping irodsTagGrouping = freeTaggingService.getTagsForDataObjectInFreeTagForm(dataObject.getCollectionName() - + "/" - + dataObject.getDataName()); - txtTags.setText(irodsTagGrouping.getSpaceDelimitedTagsForDomain()); + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { - IRODSTaggingService irodsTaggingService = IRODSTaggingServiceImpl.instance(getiDropCore().getIrodsFileSystem().getIRODSAccessObjectFactory(), - getIrodsAccount()); + if (ts.getTransferState() == TransferStatus.TransferState.FAILURE) { + // an error occurs, stop the transfer + log.error("error occurred in transfer: {}", ts); + if (ts.getTransferException() == null) { + idrop.showMessageFromOperation("An error occurred in the transfer, this transfer will be cancelled"); + } else { + idrop.showIdropException(ts.getTransferException()); + } - IRODSTagValue tagValue = irodsTaggingService.getDescriptionOnDataObjectForLoggedInUser(dataObject.getAbsolutePath()); + } else if (ts.isIntraFileStatusReport()) { - if (tagValue == null) { - txtComment.setText(""); - } else { - txtComment.setText(tagValue.getTagData()); - } + log.debug("transferred so far:{}", ts.getBytesTransfered()); + log.debug("total bytes:{}", ts.getTotalSize()); + float rawPct = (float) ts.getBytesTransfered() / ts.getTotalSize(); + int percentDone = (int) (rawPct * 100F); + log.info("pct done:{}", percentDone); - pnlInfoIcon.removeAll(); - pnlInfoIcon.add(IconHelper.getFileIcon()); - pnlInfoIcon.validate(); - lblInfoCreatedAtValue.setText(SDF.format(dataObject.getCreatedAt())); - lblInfoCreatedAtTimeValue.setText(STF.format(dataObject.getCreatedAt())); - lblInfoUpdatedAtValue.setText(SDF.format(dataObject.getUpdatedAt())); - lblInfoUpdatedAtTimeValue.setText(STF.format(dataObject.getUpdatedAt())); - lblInfoLengthValue.setText(FieldFormatHelper.formatFileLength(dataObject.getDataSize())); + progressIntraFile.setValue(percentDone); + progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - lblInfoChecksumValue.setText(dataObject.getChecksum()); - lblCollectionTypeLabel.setVisible(false); - lblCollectionType.setVisible(false); - adjustInfoPanelVisibilityOfDataObjectSpecificContent(true); + } else if (ts.getTransferState() == TransferStatus.TransferState.IN_PROGRESS_START_FILE) { - lblDataPath.setText(IDropUtils.abbreviateFileName(dataObject.getDataPath())); - lblDataPath.setToolTipText(dataObject.getDataPath()); + // start of a file operation + progressIntraFile.setMinimum(0); + progressIntraFile.setMaximum(100); + progressIntraFile.setValue(0); + lblCurrentFile.setText(IDropUtils.abbreviateFileName(ts.getSourceFileAbsolutePath())); + transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); + progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - lblDataReplicationStatus.setText(dataObject.getReplicationStatus()); - lblDataVersion.setText(String.valueOf(dataObject.getDataVersion())); + } else if (ts.getTransferState() == TransferStatus.TransferState.IN_PROGRESS_COMPLETE_FILE) { - lblDataType.setText(dataObject.getDataTypeName()); + progressIntraFile.setValue(100); - lblDataStatus.setText(dataObject.getDataStatus()); + transferStatusProgressBar.setMaximum(ts.getTotalFilesToTransfer()); + transferStatusProgressBar.setValue(ts.getTotalFilesTransferredSoFar()); + transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); + progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); - lblOwnerName.setText(dataObject.getDataOwnerName()); - lblOwnerZone.setText(dataObject.getDataOwnerZone()); + } else { - } catch (JargonException ex) { - Logger.getLogger(iDrop.class.getName()).log(Level.SEVERE, - null, ex); - throw new IdropRuntimeException(ex); - } finally { - this.getiDropCore().closeIRODSConnectionForLoggedInAccount(); - } + transferStatusProgressBar.setMaximum(ts.getTotalFilesToTransfer()); + transferStatusProgressBar.setValue(ts.getTotalFilesTransferredSoFar()); + transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); + progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); + lblCurrentFile.setText(IDropUtils.abbreviateFileName(ts.getSourceFileAbsolutePath())); + } + } + }); } /** - * Initialize the info panel with data from iRODS. In this case, the data is an iRODS collection - * (directory). Called from a runnable that will handle the irods collection and busy cursor. + * Be able to do things to the transfer panel * - * @param collection - * @throws IdropException + * @param isBegin */ - public void initializeInfoPanel(final Collection collection) - throws IdropException { - if (collection == null) { - throw new IdropException("Null collection"); + private void setUpTransferPanel(boolean isBegin) { + if (isBegin) { + pnlCurrentTransferStatus.setVisible(true); + } else { + pnlCurrentTransferStatus.setVisible(true); } + } - log.info("initialize info panel with collection:{}", collection); - - if (!toggleIrodsDetails.isSelected()) { - log.info("info display not selected, don't bother"); - return; - } + /** + * Implementation of transfer manager callback. The overall status callback + * represents the start and completion of a transfer operation + * + * @param ts + */ + @Override + public void overallStatusCallback(final TransferStatus ts) { - this.lastCachedInfoItem = collection; + final IRODSOutlineModel irodsTreeModel = (IRODSOutlineModel) irodsTree.getModel(); final iDrop idropGui = this; - lblFileOrCollectionName.setText(IDropUtils.abbreviateFileName(collection.getAbsolutePath())); - lblFileOrCollectionName.setToolTipText(collection.getAbsolutePath()); - - log.debug("getting available tags for data object"); + java.awt.EventQueue.invokeLater(new Runnable() { + @Override + public void run() { - try { - FreeTaggingService freeTaggingService = FreeTaggingServiceImpl.instance(getiDropCore().getIrodsFileSystem().getIRODSAccessObjectFactory(), - getIrodsAccount()); - IRODSTaggingService irodsTaggingService = IRODSTaggingServiceImpl.instance(getiDropCore().getIrodsFileSystem().getIRODSAccessObjectFactory(), - getIrodsAccount()); + if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_INITIATION || ts.getTransferState() == TransferStatus.TransferState.SYNCH_INITIALIZATION) { + transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); + progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); + idropGui.setUpTransferPanel(true); + } else if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_COMPLETION || ts.getTransferState() == TransferStatus.TransferState.SYNCH_COMPLETION) { + idropGui.setUpTransferPanel(false); + } - log.info("looking up description for collection"); - IRODSTagValue comments = irodsTaggingService.getDescriptionOnCollectionForLoggedInUser(collection.getCollectionName()); + /* + * Handle appropriate tree notifications, so some filtering to prevent notifications + * when for a different host/zone + */ + if (ts.getTransferType() == TransferStatus.TransferType.SYNCH || ts.getTransferType() == TransferStatus.TransferType.REPLICATE) { + log.info("no need to notify tree for synch or replicate"); + } else if (ts.getTransferType() == TransferStatus.TransferType.GET + && ts.getTransferState() == TransferStatus.TransferState.OVERALL_COMPLETION) { + try { + ((LocalFileSystemModel) idropGui.getFileTree().getModel()).notifyCompletionOfOperation(idropGui.getFileTree(), ts); - if (comments == null) { - txtComment.setText(""); - } else { - txtComment.setText(comments.getTagData()); - } + } catch (IdropException ex) { + log.error("error on tree notify after operation", ex); + throw new IdropRuntimeException("error processing overall status callback", ex); + } + } else if (ts.getTransferType() == TransferStatus.TransferType.COPY || ts.getTransferType() == TransferStatus.TransferType.PUT) { + if (ts.getTransferZone().equals( + iDropCore.getIrodsAccount().getZone()) && ts.getTransferHost().equals(iDropCore.getIrodsAccount().getHost())) { + try { + // should leave PUT, and COPY + irodsTreeModel.notifyCompletionOfOperation(irodsTree, ts); + } catch (IdropException ex) { + log.error("error on tree notify after operation", ex); + throw new IdropRuntimeException("error processing overall status callback", ex); + } + } + } - IRODSTagGrouping irodsTagGrouping = freeTaggingService.getTagsForCollectionInFreeTagForm(collection.getCollectionName()); - txtTags.setText(irodsTagGrouping.getSpaceDelimitedTagsForDomain()); - pnlInfoIcon.removeAll(); - pnlInfoIcon.add(IconHelper.getFolderIcon()); - pnlInfoIcon.validate(); - lblInfoCreatedAtValue.setText(SDF.format(collection.getCreatedAt())); - lblInfoCreatedAtTimeValue.setText(STF.format(collection.getCreatedAt())); - lblInfoUpdatedAtValue.setText(SDF.format(collection.getModifiedAt())); - lblInfoUpdatedAtTimeValue.setText(STF.format(collection.getModifiedAt())); - lblCollectionTypeLabel.setVisible(true); - lblCollectionType.setVisible(true); - lblCollectionType.setText(collection.getSpecColType().name()); - adjustInfoPanelVisibilityOfDataObjectSpecificContent(false); - - } catch (JargonException ex) { - Logger.getLogger(iDrop.class.getName()).log(Level.SEVERE, - null, ex); - throw new IdropRuntimeException(ex); - } finally { - this.getiDropCore().closeIRODSConnectionForLoggedInAccount(); - } - } + /* + * Handle progress bar and messages. These are cleared on overall initiation + */ + if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_INITIATION || ts.getTransferState() == TransferStatus.TransferState.SYNCH_INITIALIZATION) { + clearProgressBar(); + // on initiation, clear and reset the status bar info + lblTransferType.setText(ts.getTransferType().name()); + transferStatusProgressBar.setString(FieldFormatHelper.formatFileProgress(ts.getTotalFilesToTransfer(), ts.getTotalFilesTransferredSoFar(), 0)); + progressIntraFile.setString(FieldFormatHelper.formatByteProgress(ts.getTotalSize(), ts.getBytesTransfered(), 0)); + lblCurrentFile.setText(IDropUtils.abbreviateFileName(ts.getSourceFileAbsolutePath())); + transferStatusProgressBar.setMinimum(0); + transferStatusProgressBar.setMaximum(ts.getTotalFilesToTransfer()); + transferStatusProgressBar.setValue(0); + } - private void adjustInfoPanelVisibilityOfDataObjectSpecificContent(final boolean visible) { - lblInfoLengthValue.setVisible(visible); - lblInfoLength.setVisible(visible); - lblInfoChecksum.setVisible(visible); - lblInfoChecksumValue.setVisible(visible); - lblOwnerNameLabel.setVisible(visible); - lblOwnerName.setVisible(visible); - lblOwnerZoneLabel.setVisible(visible); - lblOwnerZone.setVisible(visible); - lblDataPathLabel.setVisible(visible); - lblDataPath.setVisible(visible); - lblDataReplicationStatusLabel.setVisible(visible); - lblDataReplicationStatus.setVisible(visible); - lblDataVersionLabel.setVisible(visible); - lblDataVersion.setVisible(visible); - lblDataTypeLabel.setVisible(visible); - lblDataType.setVisible(visible); - lblDataStatusLabel.setVisible(visible); - lblDataStatus.setVisible(visible); + /* + * Handle any text messages + */ + if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_INITIALIZATION) { + lblTransferMessage.setText("Synchronization Initializing"); + } else if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_DIFF_GENERATION) { + lblTransferMessage.setText("Synchronization looking for updates"); + } else if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_DIFF_STEP) { + lblTransferMessage.setText("Synchronizing differences"); + } else if (ts.getTransferState() == TransferStatus.TransferState.SYNCH_COMPLETION) { + lblTransferMessage.setText("Synchronization complete"); + } else if (ts.getTransferEnclosingType() == TransferStatus.TransferType.SYNCH) { + lblTransferMessage.setText("Transfer to synchronize local and iRODS"); + } else if (ts.getTransferState() == TransferStatus.TransferState.OVERALL_INITIATION) { + // initiation not within a synch + lblTransferMessage.setText("Processing a " + ts.getTransferType().name() + " operation"); + } + } + }); } /** - * Get the JTree component that represents the iRODS file system in the iDrop gui. - * - * @return - * <code>IRODSTree</code> that is the JTree component for the iRODS file system view. + * Call from a swing event queue runnable */ - public IRODSTree getIrodsTree() { - return irodsTree; + private synchronized void clearProgressBar() { + lblTransferType.setText(""); + lblCurrentFile.setText(""); + transferStatusProgressBar.setMinimum(0); + transferStatusProgressBar.setMaximum(100); + transferStatusProgressBar.setValue(0); + transferStatusProgressBar.setString(""); + progressIntraFile.setString(""); + } + + @Override + public synchronized void transferManagerErrorStatusUpdate( + final ErrorStatus es) { + iDropCore.getIconManager().setErrorStatus(es); } - public JToggleButton getToggleIrodsDetails() { - return toggleIrodsDetails; + @Override + public synchronized void transferManagerRunningStatusUpdate( + final RunningStatus rs) { + iDropCore.getIconManager().setRunningStatus(rs); + if (rs == RunningStatus.PAUSED) { + this.setTransferStatePaused(); + } else { + this.setTransferStateUnpaused(); + } } /** - * This method is called from within the constructor to initialize the form. WARNING: Do NOT - * modify this code. The content of this method is always regenerated by the Form Editor. - * + * Creates new form iDrop2 + */ + /* + public iDrop2() { + initComponents(); + } */ - // <editor-fold defaultstate="collapsed" + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; - searchTablePopupMenu = new javax.swing.JPopupMenu(); - menuItemShowInHierarchy = new javax.swing.JMenuItem(); - buttonGroupLandF = new javax.swing.ButtonGroup(); - pnlInfoMetadata = new javax.swing.JPanel(); - lblMetadataInfo = new javax.swing.JLabel(); - pnlInfoSharing = new javax.swing.JPanel(); - lblInfoSharing = new javax.swing.JLabel(); - pnlInfoReplication = new javax.swing.JPanel(); - lblMetadataInfo1 = new javax.swing.JLabel(); - iDropToolbar = new javax.swing.JPanel(); - pnlToolbarSizer = new javax.swing.JPanel(); - pnlTopToolbarSearchArea = new javax.swing.JPanel(); - pnlSearchSizer = new javax.swing.JPanel(); - lblMainSearch = new javax.swing.JLabel(); - comboSearchType = new javax.swing.JComboBox(); - txtMainSearch = new javax.swing.JTextField(); - btnSearch = new javax.swing.JButton(); - pnlLocalToggleSizer = new javax.swing.JPanel(); - toggleLocalFiles = new javax.swing.JToggleButton(); - pnlIrodsDetailsToggleSizer = new javax.swing.JPanel(); - toggleIrodsDetails = new javax.swing.JToggleButton(); - pnlIdropMain = new javax.swing.JPanel(); - jSplitPanelLocalRemote = new javax.swing.JSplitPane(); + jPopupMenu1 = new javax.swing.JPopupMenu(); + pnlMain = new javax.swing.JPanel(); + pnlMainToolbar = new javax.swing.JPanel(); + pnlMainToolbarIcons = new javax.swing.JPanel(); + btnMainToolbarDownload = new javax.swing.JButton(); + btnMainToolbarUpload = new javax.swing.JButton(); + btnMainToolbarRefresh = new javax.swing.JButton(); + jSeparator1 = new javax.swing.JSeparator(); + btnMainToolbarCopy = new javax.swing.JButton(); + btnMainToolbarDelete = new javax.swing.JButton(); + btnMainToolbarInfo = new javax.swing.JButton(); + jSeparator3 = new javax.swing.JSeparator(); + btnMainToolbarSync = new javax.swing.JButton(); + btnMainToolbarSettings = 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(); + pnlMainIrodsTree = new javax.swing.JPanel(); + splitPanelTrees = new javax.swing.JSplitPane(); + scrollIrodsTree = new javax.swing.JScrollPane(); pnlLocalTreeArea = new javax.swing.JPanel(); pnlLocalRoots = new javax.swing.JPanel(); scrollLocalDrives = new javax.swing.JScrollPane(); listLocalDrives = new javax.swing.JList(); - pnlRefreshButton = new javax.swing.JPanel(); - btnRefreshLocalDrives = new javax.swing.JButton(); pnlDrivesFiller = new javax.swing.JPanel(); scrollLocalFileTree = new javax.swing.JScrollPane(); - pnlIrodsArea = new javax.swing.JPanel(); - splitTargetCollections = new javax.swing.JSplitPane(); - tabIrodsViews = new javax.swing.JTabbedPane(); - pnlTabHierarchicalView = new javax.swing.JPanel(); - pnlIrodsTreeToolbar = new javax.swing.JPanel(); - toolbarIrodsTree = new javax.swing.JToolBar(); - btnRefreshTargetTree = new javax.swing.JButton(); - btnGoHomeTargetTree = new javax.swing.JButton(); - btnGoRootTargetTree = new javax.swing.JButton(); - btnSetRootCustomTargetTree = new javax.swing.JButton(); - pnlIrodsTreeMaster = new javax.swing.JPanel(); - scrollIrodsTree = new javax.swing.JScrollPane(); - pnlTabSearch = new javax.swing.JPanel(); - pnlTabSearchTop = new javax.swing.JPanel(); - pnlTabSearchResults = new javax.swing.JPanel(); - scrollPaneSearchResults = new javax.swing.JScrollPane(); - tableSearchResults = new javax.swing.JTable(); - pnlIrodsInfo = new javax.swing.JPanel(); - tabInfo = new javax.swing.JTabbedPane(); - jScrollPane1 = new javax.swing.JScrollPane(); - pnlInfoInner = new javax.swing.JPanel(); - pnlInfoIcon = new javax.swing.JPanel(); - jLabel1 = new javax.swing.JLabel(); - lblSelectedFileInfo = new javax.swing.JLabel(); - lblFilePathLabel = new javax.swing.JLabel(); - lblFileOrCollectionName = new javax.swing.JLabel(); - lblComment = new javax.swing.JLabel(); - scrollComment = new javax.swing.JScrollPane(); - txtComment = new javax.swing.JTextArea(); - filler4 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767)); - lblTags = new javax.swing.JLabel(); - txtTags = new javax.swing.JTextField(); - btnUpdateInfo = new javax.swing.JButton(); - pnlFileInfoDemographics = new javax.swing.JPanel(); - lblInfoCreatedAt = new javax.swing.JLabel(); - lblInfoCreatedAtValue = new javax.swing.JLabel(); - lblInfoCreatedAtTimeValue = new javax.swing.JLabel(); - lblInfoUpdatedAt = new javax.swing.JLabel(); - lblInfoUpdatedAtValue = new javax.swing.JLabel(); - lblInfoUpdatedAtTimeValue = new javax.swing.JLabel(); - lblInfoLength = new javax.swing.JLabel(); - lblInfoLengthValue = new javax.swing.JLabel(); - lblInfoChecksum = new javax.swing.JLabel(); - lblInfoChecksumValue = new javax.swing.JLabel(); - lblOwnerNameLabel = new javax.swing.JLabel(); - lblOwnerName = new javax.swing.JLabel(); - lblOwnerZoneLabel = new javax.swing.JLabel(); - lblOwnerZone = new javax.swing.JLabel(); - lblCollectionTypeLabel = new javax.swing.JLabel(); - lblCollectionType = new javax.swing.JLabel(); - lblDataPathLabel = new javax.swing.JLabel(); - lblDataPath = new javax.swing.JLabel(); - lblDataReplicationStatusLabel = new javax.swing.JLabel(); - lblDataReplicationStatus = new javax.swing.JLabel(); - lblDataVersionLabel = new javax.swing.JLabel(); - lblDataVersion = new javax.swing.JLabel(); - lblDataTypeLabel = new javax.swing.JLabel(); - lblDataType = new javax.swing.JLabel(); - lblDataStatusLabel = new javax.swing.JLabel(); - lblDataStatus = new javax.swing.JLabel(); + pnlMainTransferStatus = new javax.swing.JPanel(); pnlIdropBottom = new javax.swing.JPanel(); - pnlBottomGutter = new javax.swing.JPanel(); - pnlHostInfo = new javax.swing.JPanel(); - lblUserNameLabel = new javax.swing.JLabel(); - userNameLabel = new javax.swing.JLabel(); - filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767)); - lblZoneLabel = new javax.swing.JLabel(); - lblZone = new javax.swing.JLabel(); - filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767)); - lblHostLabel = new javax.swing.JLabel(); - lblHost = new javax.swing.JLabel(); - filler3 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767)); - lblDefaultResource = new javax.swing.JLabel(); - comboDefaultResource = new javax.swing.JComboBox(); - pnlStatusIcon = new javax.swing.JPanel(); - btnManageGrids = new javax.swing.JButton(); pnlCurrentTransferStatus = new javax.swing.JPanel(); lblCurrentFile = new javax.swing.JLabel(); progressIntraFile = new javax.swing.JProgressBar(); @@ -1445,165 +1610,177 @@ public class iDrop extends javax.swing.JFrame implements ActionListener, btnShowTransferManager = new javax.swing.JButton(); togglePauseTransfer = new javax.swing.JToggleButton(); progressIconImageLabel = new javax.swing.JLabel(); - jMenuBar1 = new javax.swing.JMenuBar(); - jMenuFile = new javax.swing.JMenu(); - jMenuItemClose = new javax.swing.JMenuItem(); - jMenuItemExit = new javax.swing.JMenuItem(); - jMenuEdit = new javax.swing.JMenu(); - jMenuView = new javax.swing.JMenu(); - jCheckBoxMenuItemShowSourceTree = new javax.swing.JCheckBoxMenuItem(); - jCheckBoxMenuItemShowIrodsInfo = new javax.swing.JCheckBoxMenuItem(); - jMenuTools = new javax.swing.JMenu(); - jMenuLookAndFeel = new javax.swing.JMenu(); - jRadioButtonLookAndFeelDefault = new javax.swing.JRadioButtonMenuItem(); - jRadioButtonLookAndFeelNimbus = new javax.swing.JRadioButtonMenuItem(); - jRadioButtonMenuItemMetal = new javax.swing.JRadioButtonMenuItem(); - jRadioButtonMenuItemMotif = new javax.swing.JRadioButtonMenuItem(); - jRadioButtonMenuItemGTK = new javax.swing.JRadioButtonMenuItem(); - jMenuItemConfig = new javax.swing.JMenuItem(); - jMenuHelp = new javax.swing.JMenu(); - jMenuItemAbout = new javax.swing.JMenuItem(); - - menuItemShowInHierarchy.setText("Show in iRODS"); - menuItemShowInHierarchy.setToolTipText("Show this file or collection in the iRODS hierarchy"); - menuItemShowInHierarchy.addActionListener(new java.awt.event.ActionListener() { + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setMinimumSize(new java.awt.Dimension(622, 158)); + setSize(new java.awt.Dimension(822, 158)); + + pnlMain.setMinimumSize(new java.awt.Dimension(622, 158)); + pnlMain.setPreferredSize(new java.awt.Dimension(730, 635)); + pnlMain.setLayout(new java.awt.BorderLayout()); + + pnlMainToolbar.setMinimumSize(new java.awt.Dimension(622, 131)); + pnlMainToolbar.setPreferredSize(new java.awt.Dimension(834, 135)); + pnlMainToolbar.setLayout(new java.awt.BorderLayout()); + + pnlMainToolbarIcons.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 20, 10, 20)); + pnlMainToolbarIcons.setMinimumSize(new java.awt.Dimension(622, 90)); + pnlMainToolbarIcons.setPreferredSize(new java.awt.Dimension(622, 90)); + pnlMainToolbarIcons.setLayout(new javax.swing.BoxLayout(pnlMainToolbarIcons, javax.swing.BoxLayout.LINE_AXIS)); + + btnMainToolbarDownload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_download.png"))); // NOI18N + btnMainToolbarDownload.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarDownload.text")); // NOI18N + btnMainToolbarDownload.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 28)); + btnMainToolbarDownload.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarDownload.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarDownload.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - menuItemShowInHierarchyActionPerformed(evt); + btnMainToolbarDownloadActionPerformed(evt); } }); - searchTablePopupMenu.add(menuItemShowInHierarchy); - - lblMetadataInfo.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N - lblMetadataInfo.setForeground(java.awt.Color.blue); - lblMetadataInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edit-4.png"))); // NOI18N - lblMetadataInfo.setText("iRODS AVU Metadata"); - pnlInfoMetadata.add(lblMetadataInfo); - - lblInfoSharing.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N - lblInfoSharing.setForeground(java.awt.Color.blue); - lblInfoSharing.setIcon(new javax.swing.ImageIcon(getClass().getResource("/share.png"))); // NOI18N - lblInfoSharing.setText("Access Permissions and Tickets"); - pnlInfoSharing.add(lblInfoSharing); - - lblMetadataInfo1.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N - lblMetadataInfo1.setForeground(java.awt.Color.blue); - lblMetadataInfo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edit-copy-3.png"))); // NOI18N - lblMetadataInfo1.setText("File Replication"); - pnlInfoReplication.add(lblMetadataInfo1); - - setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - setTitle("iDrop - iRODS Cloud Browser"); - setMinimumSize(new java.awt.Dimension(600, 600)); - addWindowListener(new java.awt.event.WindowAdapter() { - public void windowClosed(java.awt.event.WindowEvent evt) { - formWindowClosed(evt); + pnlMainToolbarIcons.add(btnMainToolbarDownload); + + btnMainToolbarUpload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_upload.png"))); // NOI18N + btnMainToolbarUpload.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarUpload.text")); // NOI18N + btnMainToolbarUpload.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 28)); + btnMainToolbarUpload.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarUpload.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarUpload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMainToolbarUploadActionPerformed(evt); } }); - - iDropToolbar.setMinimumSize(new java.awt.Dimension(800, 400)); - iDropToolbar.setPreferredSize(new java.awt.Dimension(1077, 40)); - iDropToolbar.setLayout(new java.awt.BorderLayout()); - - pnlToolbarSizer.setLayout(new java.awt.BorderLayout()); - - pnlTopToolbarSearchArea.setMinimumSize(new java.awt.Dimension(45, 50)); - pnlTopToolbarSearchArea.setLayout(new java.awt.BorderLayout()); - - pnlSearchSizer.setMinimumSize(new java.awt.Dimension(74, 30)); - pnlSearchSizer.setPreferredSize(new java.awt.Dimension(254, 50)); - pnlSearchSizer.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT)); - - lblMainSearch.setText("Search:"); - lblMainSearch.setMaximumSize(null); - lblMainSearch.setMinimumSize(null); - lblMainSearch.setPreferredSize(new java.awt.Dimension(45, 40)); - pnlSearchSizer.add(lblMainSearch); - - comboSearchType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "by name", "by tag", "by name and tag" })); - comboSearchType.setToolTipText("Select the type of search to be carried out using the supplied search string"); - pnlSearchSizer.add(comboSearchType); - - txtMainSearch.setColumns(20); - txtMainSearch.setToolTipText("Search for files or tags"); - txtMainSearch.setMinimumSize(null); - txtMainSearch.setPreferredSize(new java.awt.Dimension(100, 30)); - txtMainSearch.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyPressed(java.awt.event.KeyEvent evt) { - txtMainSearchKeyPressed(evt); + pnlMainToolbarIcons.add(btnMainToolbarUpload); + + btnMainToolbarRefresh.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_refresh.png"))); // NOI18N + btnMainToolbarRefresh.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarRefresh.text")); // NOI18N + btnMainToolbarRefresh.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 30)); + btnMainToolbarRefresh.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarRefresh.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarRefresh.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMainToolbarRefreshActionPerformed(evt); } }); - pnlSearchSizer.add(txtMainSearch); - - btnSearch.setMnemonic('s'); - btnSearch.setText("Search"); - btnSearch.setToolTipText("Search iRODS based on the current view selected"); - btnSearch.addActionListener(new java.awt.event.ActionListener() { + pnlMainToolbarIcons.add(btnMainToolbarRefresh); + + jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator1.setMaximumSize(new java.awt.Dimension(34, 60)); + jSeparator1.setMinimumSize(new java.awt.Dimension(34, 60)); + jSeparator1.setPreferredSize(new java.awt.Dimension(34, 60)); + pnlMainToolbarIcons.add(jSeparator1); + + btnMainToolbarCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_replicate.png"))); // NOI18N + btnMainToolbarCopy.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarCopy.text")); // NOI18N + btnMainToolbarCopy.setActionCommand(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarCopy.actionCommand")); // NOI18N + btnMainToolbarCopy.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 24)); + btnMainToolbarCopy.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarCopy.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarCopy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - btnSearchActionPerformed(evt); + btnMainToolbarCopyActionPerformed(evt); } }); - pnlSearchSizer.add(btnSearch); - - pnlTopToolbarSearchArea.add(pnlSearchSizer, java.awt.BorderLayout.SOUTH); - - pnlToolbarSizer.add(pnlTopToolbarSearchArea, java.awt.BorderLayout.CENTER); - - pnlLocalToggleSizer.setLayout(new java.awt.BorderLayout()); - - toggleLocalFiles.setText("<<< Local Files"); - toggleLocalFiles.setToolTipText("Browse the local file system."); - toggleLocalFiles.setMaximumSize(new java.awt.Dimension(144, 10)); - toggleLocalFiles.setMinimumSize(new java.awt.Dimension(144, 10)); - toggleLocalFiles.setPreferredSize(new java.awt.Dimension(144, 30)); - toggleLocalFiles.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - toggleLocalFilesStateChanged(evt); + pnlMainToolbarIcons.add(btnMainToolbarCopy); + + btnMainToolbarDelete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_delete.png"))); // NOI18N + btnMainToolbarDelete.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarDelete.text_1")); // NOI18N + btnMainToolbarDelete.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 20)); + btnMainToolbarDelete.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarDelete.setMaximumSize(new java.awt.Dimension(81, 70)); + btnMainToolbarDelete.setPreferredSize(new java.awt.Dimension(81, 70)); + btnMainToolbarDelete.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarDelete.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMainToolbarDeleteActionPerformed(evt); } }); - toggleLocalFiles.addActionListener(new java.awt.event.ActionListener() { + pnlMainToolbarIcons.add(btnMainToolbarDelete); + + btnMainToolbarInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_editmetadata.png"))); // NOI18N + btnMainToolbarInfo.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 24)); + btnMainToolbarInfo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarInfo.setLabel(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarInfo.label")); // NOI18N + btnMainToolbarInfo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarInfo.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - toggleLocalFilesActionPerformed(evt); + btnMainToolbarInfoActionPerformed(evt); } }); - pnlLocalToggleSizer.add(toggleLocalFiles, java.awt.BorderLayout.NORTH); - toggleLocalFiles.getAccessibleContext().setAccessibleName("<<< Local Files "); + pnlMainToolbarIcons.add(btnMainToolbarInfo); + + jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator3.setMaximumSize(new java.awt.Dimension(34, 60)); + jSeparator3.setPreferredSize(new java.awt.Dimension(34, 60)); + pnlMainToolbarIcons.add(jSeparator3); + + btnMainToolbarSync.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_synch.png"))); // NOI18N + btnMainToolbarSync.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarSync.text")); // NOI18N + btnMainToolbarSync.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 28)); + btnMainToolbarSync.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarSync.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + pnlMainToolbarIcons.add(btnMainToolbarSync); + + btnMainToolbarSettings.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_settings.png"))); // NOI18N + btnMainToolbarSettings.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarSettings.text")); // NOI18N + btnMainToolbarSettings.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + btnMainToolbarSettings.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + btnMainToolbarSettings.setMaximumSize(new java.awt.Dimension(58, 70)); + btnMainToolbarSettings.setMinimumSize(new java.awt.Dimension(58, 70)); + btnMainToolbarSettings.setPreferredSize(new java.awt.Dimension(58, 70)); + btnMainToolbarSettings.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + btnMainToolbarSettings.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnMainToolbarSettingsActionPerformed(evt); + } + }); + pnlMainToolbarIcons.add(btnMainToolbarSettings); - pnlToolbarSizer.add(pnlLocalToggleSizer, java.awt.BorderLayout.WEST); + pnlMainToolbar.add(pnlMainToolbarIcons, java.awt.BorderLayout.NORTH); - pnlIrodsDetailsT |