summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java2
-rw-r--r--idrop-swing/idrop-swing.iml54
-rw-r--r--idrop-swing/pom.xml18
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java4559
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java2
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPSplashWindow.java2
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form9
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java223
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form37
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java27
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java25
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java15
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/IdropConfig.java963
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java2
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSOutlineModel.java348
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSTree.java867
-rw-r--r--idrop-swing/src/main/resources/icon_metasearch.pngbin0 -> 3149 bytes
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color1.pngbin0 -> 24000 bytes
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties1
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/splashWindow.xml2
-rw-r--r--idrop-web/application.properties8
-rwxr-xr-x[-rw-r--r--]idrop-web/build.sh0
-rwxr-xr-xidrop-web/grails-app/conf/BuildConfig.groovy14
-rwxr-xr-xidrop-web/grails-app/conf/Config.groovy22
-rwxr-xr-xidrop-web/grails-app/conf/Config.groovy~198
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/BrowseController.groovy181
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/FileController.groovy64
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/HomeController.groovy125
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy3
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy~309
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy1
-rw-r--r--idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy231
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/ProfileController.groovy56
-rwxr-xr-xidrop-web/grails-app/i18n/messages.properties11
-rwxr-xr-xidrop-web/grails-app/views/browse/_browseTabContent.gsp143
-rwxr-xr-xidrop-web/grails-app/views/browse/_collectionInfoToolbar.gsp18
-rwxr-xr-xidrop-web/grails-app/views/browse/_dataObjectInfoToolbar.gsp12
-rwxr-xr-xidrop-web/grails-app/views/browse/browseDetails.gsp289
-rwxr-xr-xidrop-web/grails-app/views/browse/collectionInfo.gsp321
-rw-r--r--idrop-web/grails-app/views/browse/dataObjectInfo.gsp520
-rwxr-xr-xidrop-web/grails-app/views/common/_cssAndJs.gsp3
-rwxr-xr-xidrop-web/grails-app/views/common/_cssAndJs.gsp~41
-rwxr-xr-xidrop-web/grails-app/views/common/_topToolbar.gsp23
-rwxr-xr-xidrop-web/grails-app/views/common/_topbar.gsp2
-rwxr-xr-xidrop-web/grails-app/views/common/_topbar.gsp~75
-rwxr-xr-xidrop-web/grails-app/views/home/link.gsp2
-rwxr-xr-xidrop-web/grails-app/views/home/noInfo.gsp3
-rwxr-xr-xidrop-web/grails-app/views/login/login.gsp245
-rw-r--r--idrop-web/grails-app/views/metadata/index.gsp104
-rwxr-xr-xidrop-web/grails-app/views/metadata/metadataDetails.gsp52
-rw-r--r--idrop-web/grails-app/views/metadataSearch/index.gsp155
-rw-r--r--idrop-web/grails-app/views/sharing/_sharingPanel.gsp2
-rwxr-xr-xidrop-web/grails-app/views/sharing/aclDetails.gsp6
-rwxr-xr-xidrop-web/idrop-web-config2.groovy14
-rw-r--r--idrop-web/release_notes.txt27
-rwxr-xr-xidrop-web/src/templates/war/web.xml2
-rw-r--r--idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy17
-rwxr-xr-xidrop-web/web-app/css/bootstrap.css6981
-rwxr-xr-xidrop-web/web-app/css/bootstrap.css~5952
-rw-r--r--idrop-web/web-app/css/dhx_comboStyle.css73
-rwxr-xr-xidrop-web/web-app/css/style.css18
-rw-r--r--idrop-web/web-app/imgs/bg_selection.gifbin0 -> 264 bytes
-rw-r--r--idrop-web/web-app/imgs/blank.gifbin0 -> 56 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select.gifbin0 -> 309 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dhx_black.gifbin0 -> 182 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dhx_blue.gifbin0 -> 241 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dhx_skyblue.gifbin0 -> 492 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dhx_terrace.gifbin0 -> 115 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dhx_web.gifbin0 -> 114 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dis_dhx_skyblue.gifbin0 -> 1339 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dis_dhx_terrace.gifbin0 -> 115 bytes
-rw-r--r--idrop-web/web-app/imgs/combo_select_dis_dhx_web.gifbin0 -> 93 bytes
-rw-r--r--idrop-web/web-app/js/mydrop/home.js88
-rw-r--r--idrop-web/web-app/js/mydrop/metaFiltering.js197
-rwxr-xr-xidrop-web/web-app/js/mydrop/profile.js5
-rwxr-xr-xidrop-web/web-app/js/mydrop/search.js136
-rw-r--r--pom.xml5
77 files changed, 15423 insertions, 8487 deletions
diff --git a/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java b/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java
index cf29458..4305d1c 100644
--- a/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java
+++ b/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java
@@ -1,5 +1,5 @@
package org.irods.jargon.idrop.lite;
public final class Version {
public static String VERSION="2.0.1-SNAPSHOT";
- public static String BUILD_TIME="20130529-0944";
+ public static String BUILD_TIME="20130723-1452";
}
diff --git a/idrop-swing/idrop-swing.iml b/idrop-swing/idrop-swing.iml
new file mode 100644
index 0000000..df3d30c
--- /dev/null
+++ b/idrop-swing/idrop-swing.iml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="Maven: org.irods.jargon:jargon-data-utils:3.3.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.8.2" level="project" />
+ <orderEntry type="library" name="Maven: org.irods.jargon:jargon-core:3.3.0" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-io:commons-io:2.0.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-exec:1.0.1" level="project" />
+ <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.4" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: com.claymoresystems:puretls:1.1" level="project" />
+ <orderEntry type="library" name="Maven: org.globus.jglobus:cog-jglobus:1.8.0" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.5.10" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.5.10" level="project" />
+ <orderEntry type="library" name="Maven: log4j:log4j:1.2.16" level="project" />
+ <orderEntry type="library" name="Maven: commons-pool:commons-pool:1.5.6" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tika:tika-core:1.1" level="project" />
+ <orderEntry type="library" name="Maven: org.irods.jargon:jargon-user-tagging:3.3.0" level="project" />
+ <orderEntry type="library" name="Maven: org.irods.jargon.transfer:jargon-transfer-dao-spring:3.3.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.dbunit:dbunit:2.2" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: junit-addons:junit-addons:1.4" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: xerces:xercesImpl:2.6.2" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: xerces:xmlParserAPIs:2.6.2" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: poi:poi:2.5.1-final-20040804" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: commons-lang:commons-lang:2.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.derby:derby:10.6.1.0" level="project" />
+ <orderEntry type="library" name="Maven: org.irods.jargon.transfer:jargon-transfer-engine:3.3.0" level="project" />
+ <orderEntry type="library" name="Maven: javassist:javassist:3.8.0.GA" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.hibernate:hibernate-core:3.3.2.GA" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: antlr:antlr:2.7.7" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: dom4j:dom4j:1.6.1" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: javax.transaction:jta:1.1" level="project" />
+ <orderEntry type="library" name="Maven: org.irods.jargon:jargon-ticket:3.3.0" level="project" />
+ <orderEntry type="library" name="Maven: org.netbeans.api:org-netbeans-swing-outline:RELEASE711" level="project" />
+ <orderEntry type="library" name="Maven: org.swinglabs:swing-layout:1.0.3" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-all:1.8.1" level="project" />
+ <orderEntry type="library" name="Maven: org.netbeans.api:org-openide-util:RELEASE711" level="project" />
+ <orderEntry type="library" name="Maven: org.netbeans.api:org-openide-util-lookup:RELEASE711" level="project" />
+ </component>
+</module>
+
diff --git a/idrop-swing/pom.xml b/idrop-swing/pom.xml
index a73df5e..996239c 100644
--- a/idrop-swing/pom.xml
+++ b/idrop-swing/pom.xml
@@ -52,6 +52,11 @@
<scope>compile</scope>
</dependency>
<dependency>
+ <groupId>org.irods.jargon</groupId>
+ <artifactId>jargon-ticket</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
@@ -94,9 +99,14 @@
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
+ <artifactId>slf4j-api</artifactId>
<version>1.5.10</version>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.5.10</version>
+ </dependency>
<dependency>
<groupId>vine_certman</groupId>
<artifactId>libbrowser</artifactId>
@@ -183,7 +193,7 @@
<!--install>false</install-->
<!-- not yet supported -->
- <verbose>false</verbose>
+ <verbose>true</verbose>
</configuration>
</plugin>
<plugin>
@@ -191,7 +201,7 @@
<configuration>
<archive>
<manifest>
- <mainClass>org.irods.jargon.idrop.desktop.systraygui.StartupSequencer</mainClass>
+ <mainClass>org.irods.jargon.idrop.desktop.systraygui.IDROPDesktop</mainClass>
</manifest>
</archive>
</configuration>
@@ -230,7 +240,7 @@
</execution>
</executions>
<configuration>
- <mainClass>org.irods.jargon.idrop.desktop.systraygui.StartupSequencer</mainClass>
+ <mainClass>org.irods.jargon.idrop.desktop.systraygui.IDROPDesktop</mainClass>
</configuration>
</plugin>
<plugin>
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 9a32abe..9e941e0 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
@@ -1,3 +1,4 @@
+
/*
* IDROPConfigurationPanel.java
*
@@ -5,25 +6,19 @@
*/
package org.irods.jargon.idrop.desktop.systraygui;
-import java.awt.Color;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.Toolkit;
+import java.awt.*;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
import java.awt.event.ItemEvent;
+import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
-
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JFileChooser;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JTable;
-import javax.swing.ListSelectionModel;
+import java.util.Set;
+import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
-
import org.irods.jargon.core.connection.DefaultPropertiesJargonConfig;
import org.irods.jargon.core.connection.IRODSAccount;
import org.irods.jargon.core.connection.JargonProperties;
@@ -37,2571 +32,2025 @@ 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.FrequencyType;
+import org.irods.jargon.transfer.dao.domain.LocalIRODSTransfer;
import org.irods.jargon.transfer.dao.domain.Synchronization;
import org.irods.jargon.transfer.dao.domain.SynchronizationType;
import org.irods.jargon.transfer.dao.domain.TransferStatus;
+import org.irods.jargon.transfer.engine.synch.ConflictingSynchException;
import org.irods.jargon.transfer.engine.synch.SynchException;
import org.irods.jargon.transfer.engine.synch.SynchManagerService;
import org.irods.jargon.transfer.util.HibernateUtil;
+import org.openide.util.Exceptions;
import org.slf4j.LoggerFactory;
/**
* Tools/Preferences dialog to set preferences
- *
+ *
* @author mikeconway
*/
public class IDROPConfigurationPanel extends javax.swing.JDialog {
- /**
- *
- */
- private static final long serialVersionUID = 6853489664356886078L;
- private final IDROPCore idropCore;
- private static final org.slf4j.Logger log = LoggerFactory
- .getLogger(IDROPConfigurationPanel.class);
- private JTable jTableSynch = null;
- private Synchronization selectedSynchronization = null;
- private DateFormat dateFormat = SimpleDateFormat.getDateTimeInstance();
- private final iDrop idropGui;
- private boolean initializing = true;
-
- /**
- * Creates new form IDROPConfigurationPanel
- */
- public IDROPConfigurationPanel(final java.awt.Frame parent,
- final boolean modal, final IDROPCore idropCore) {
- super(parent, modal);
- this.idropCore = idropCore;
- idropGui = (iDrop) parent;
- initComponents();
- initWithConfigData();
- }
-
- private boolean checkIfSynchChanged() throws IdropRuntimeException {
- // compare data and update synch first if necessary
-
- boolean areEqual = true;
-
- if (!selectedSynchronization.getLocalSynchDirectory().equals(
- txtLocalPath.getText())) {
- areEqual = false;
- }
-
- if (!selectedSynchronization.getName().equals(txtSynchName.getText())) {
- areEqual = false;
- }
-
- if (!selectedSynchronization.getIrodsSynchDirectory().equals(
- txtIrodsPath.getText())) {
- areEqual = false;
- }
-
- SynchronizationType currentSynchronizationType = getSynchTypeFromGUI();
-
- if (currentSynchronizationType != selectedSynchronization
- .getSynchronizationMode()) {
- areEqual = false;
- }
-
- FrequencyType currentFrequencyType = null;
- currentFrequencyType = getSynchFrequencyFromGUI();
-
- if (selectedSynchronization.getFrequencyType() != currentFrequencyType) {
- areEqual = false;
- }
-
- return areEqual;
- }
-
- private FrequencyType getSynchFrequencyFromGUI() {
- FrequencyType currentFrequencyType = null;
- if (jcomboSynchFrequency.getSelectedIndex() == 0) {
- currentFrequencyType = FrequencyType.EVERY_HOUR;
- } else if (jcomboSynchFrequency.getSelectedIndex() == 1) {
- currentFrequencyType = FrequencyType.EVERY_WEEK;
- } else if (jcomboSynchFrequency.getSelectedIndex() == 2) {
- currentFrequencyType = FrequencyType.EVERY_DAY;
- } else if (jcomboSynchFrequency.getSelectedIndex() == 3) {
- currentFrequencyType = FrequencyType.EVERY_TWO_MINUTES;
- }
- return currentFrequencyType;
- }
-
- private SynchronizationType getSynchTypeFromGUI()
- throws IdropRuntimeException {
- SynchronizationType currentSynchronizationType;
- if (radioBackup.isSelected()) {
- currentSynchronizationType = SynchronizationType.ONE_WAY_LOCAL_TO_IRODS;
- } else if (radioFeed.isSelected()) {
- currentSynchronizationType = SynchronizationType.ONE_WAY_IRODS_TO_LOCAL;
- } else if (radioSynch.isSelected()) {
- currentSynchronizationType = SynchronizationType.BI_DIRECTIONAL;
- } else {
- log.error("unknown synchronization type in GUI");
- throw new IdropRuntimeException(
- "unknown synchroization type in GUI");
- }
- return currentSynchronizationType;
- }
-
- /**
- * 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;
-
- buttonGroupSynchMode = new javax.swing.ButtonGroup();
- pnlTop = new javax.swing.JPanel();
- pnlCenter = new javax.swing.JPanel();
- tabConfig = new javax.swing.JTabbedPane();
- pnlConfigIdrop = new javax.swing.JPanel();
- checkShowGUI = new javax.swing.JCheckBox();
- checkShowFileProgress = new javax.swing.JCheckBox();
- pnlConfigGrids = new javax.swing.JPanel();
- pnlCurrentGrid = new javax.swing.JPanel();
- lblHostLabel = new javax.swing.JLabel();
- lblHost = new javax.swing.JLabel();
- lblPortLabel = new javax.swing.JLabel();
- lblPort = new javax.swing.JLabel();
- lblZoneLabel = new javax.swing.JLabel();
- lblZone = new javax.swing.JLabel();
- lblResourceLabel = new javax.swing.JLabel();
- lblUserNameLabel = new javax.swing.JLabel();
- lblUserName = new javax.swing.JLabel();
- pnlCurrentGridToolbar = new javax.swing.JPanel();
- btnLogout = new javax.swing.JButton();
- btnChangePassword = new javax.swing.JButton();
- comboPrefsDefaultResource = new javax.swing.JComboBox();
- pnlConfigTransfers = new javax.swing.JPanel();
- pnlTransferManagement = new javax.swing.JPanel();
- checkLogSuccessfulTransfer = new javax.swing.JCheckBox();
- checkVerifyChecksumOnTransfer = new javax.swing.JCheckBox();
- checkAllowRerouting = new javax.swing.JCheckBox();
- checkConnectionRestart = new javax.swing.JCheckBox();
- plnPipelineConfiguration = new javax.swing.JPanel();
- lblIrodsSocketTimeout = new javax.swing.JLabel();
- spinnerIrodsSocketTimeout = new javax.swing.JSpinner();
- pnlParallelTransferOptions = new javax.swing.JPanel();
- checkAllowParallelTransfers = new javax.swing.JCheckBox();
- checkUseNIOForParallelTransfers = new javax.swing.JCheckBox();
- checkUseExecutorPool = new javax.swing.JCheckBox();
- lblIrodsParallelSocketTimeout = new javax.swing.JLabel();
- spinnerIrodsParallelSocketTimeout = new javax.swing.JSpinner();
- lblMaximumParallelTransferThreads = new javax.swing.JLabel();
- spinnerIrodsMaxParallelThreads = new javax.swing.JSpinner();
- pnlBuffers = new javax.swing.JPanel();
- lblInternalInputBufferSize = new javax.swing.JLabel();
- txtInternalInputBufferSize = new javax.swing.JTextField();
- lblInternalOutputBufferSize = new javax.swing.JLabel();
- txtInternalOutputBufferSize = new javax.swing.JTextField();
- lblLocalFileInputBufferSize = new javax.swing.JLabel();
- txtLocalFileInputBufferSize = new javax.swing.JTextField();
- lblLocalFileOutputBufferSize = new javax.swing.JLabel();
- txtLocalFileOutputBufferSize = new javax.swing.JTextField();
- lblPutBufferSize = new javax.swing.JLabel();
- txtPutBufferSize = new javax.swing.JTextField();
- lblGetBufferSize = new javax.swing.JLabel();
- txtGetBufferSize = new javax.swing.JTextField();
- lblIputToOutputCopyBufferSize = new javax.swing.JLabel();
- txtInputToOutputCopyBufferSize = new javax.swing.JTextField();
- lblInternalCacheBufferSize = new javax.swing.JLabel();
- txtInternalCacheBufferSize = new javax.swing.JTextField();
- btnRestoreDefaults = new javax.swing.JButton();
- btnApplyPipelineConfig = new javax.swing.JButton();
- pnlConfigSynch = new javax.swing.JPanel();
- pnlConfigSynchListing = new javax.swing.JPanel();
- pnlSynchRefresh = new javax.swing.JPanel();
- btnRefreshSynch = new javax.swing.JButton();
- scrollSynchTable = new javax.swing.JScrollPane();
- pnlConfigSynchDetails = new javax.swing.JPanel();
- pnlSynchData = new javax.swing.JPanel();
- pnlSynchName = new javax.swing.JPanel();
- lblSynchName = new javax.swing.JLabel();
- txtSynchName = new javax.swing.JTextField();
- lblSynchDateLabel = new javax.swing.JLabel();
- lblSynchDate = new javax.swing.JLabel();
- pnlSynchIcon = new javax.swing.JPanel();
- lblSynchStatus = new javax.swing.JLabel();
- pnlLocalSynch = new javax.swing.JPanel();
- txtLocalPath = new javax.swing.JTextField();
- btnChooseLocalSynch = new javax.swing.JButton();
- pnlSynchMode = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- radioBackup = new javax.swing.JRadioButton();
- radioFeed = new javax.swing.JRadioButton();
- radioSynch = new javax.swing.JRadioButton();
- pnlSynchFrequency = new javax.swing.JPanel();
- jLabel5 = new javax.swing.JLabel();
- jcomboSynchFrequency = new javax.swing.JComboBox();
- pnlIrodsSynch = new javax.swing.JPanel();
- txtIrodsPath = new javax.swing.JTextField();
- btnChooseIrodsSynch = new javax.swing.JButton();
- panelSynchToolbar = new javax.swing.JPanel();
- btnDeleteSynch = new javax.swing.JButton();
- btnNewSynch = new javax.swing.JButton();
- btnUpdateSynch = new javax.swing.JButton();
- btnSynchNow = new javax.swing.JButton();
- pnlBottom = new javax.swing.JPanel();
- btnOK = new javax.swing.JButton();
-
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setTitle(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class, "IDROPConfigurationPanel.title")); // NOI18N
-
- org.jdesktop.layout.GroupLayout pnlTopLayout = new org.jdesktop.layout.GroupLayout(
- pnlTop);
- pnlTop.setLayout(pnlTopLayout);
- pnlTopLayout.setHorizontalGroup(pnlTopLayout.createParallelGroup(
- org.jdesktop.layout.GroupLayout.LEADING).add(0, 1067,
- Short.MAX_VALUE));
- pnlTopLayout.setVerticalGroup(pnlTopLayout.createParallelGroup(
- org.jdesktop.layout.GroupLayout.LEADING).add(0, 0,
- Short.MAX_VALUE));
-
- getContentPane().add(pnlTop, java.awt.BorderLayout.NORTH);
-
- pnlConfigIdrop.setLayout(new java.awt.GridBagLayout());
-
- checkShowGUI.setMnemonic('s');
- checkShowGUI.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkShowGUI.text")); // NOI18N
- checkShowGUI.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkShowGUI.toolTipText")); // NOI18N
- checkShowGUI.addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(final java.awt.event.ItemEvent evt) {
- checkShowGUIItemStateChanged(evt);
- }
- });
- checkShowGUI.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- checkShowGUIActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlConfigIdrop.add(checkShowGUI, gridBagConstraints);
-
- checkShowFileProgress.setMnemonic('w');
- checkShowFileProgress.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkShowFileProgress.text")); // NOI18N
- checkShowFileProgress
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkShowFileProgress.toolTipText")); // NOI18N
- checkShowFileProgress
- .addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(
- final java.awt.event.ItemEvent evt) {
- checkShowFileProgressItemStateChanged(evt);
- }
- });
- checkShowFileProgress
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- checkShowFileProgressActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlConfigIdrop.add(checkShowFileProgress, gridBagConstraints);
-
- tabConfig
- .addTab(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlConfigIdrop.TabConstraints.tabTitle"),
- pnlConfigIdrop); // NOI18N
-
- pnlConfigGrids.setLayout(new java.awt.BorderLayout());
-
- pnlCurrentGrid
- .setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlCurrentGrid.border.title"))); // NOI18N
- pnlCurrentGrid.setLayout(new java.awt.GridBagLayout());
-
- lblHostLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
- lblHostLabel.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblHostLabel.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlCurrentGrid.add(lblHostLabel, gridBagConstraints);
-
- lblHost.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblHost.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlCurrentGrid.add(lblHost, gridBagConstraints);
- lblHost.getAccessibleContext()
- .setAccessibleDescription(
- org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblHost.AccessibleContext.accessibleDescription")); // NOI18N
-
- lblPortLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
- lblPortLabel.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblPortLabel.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlCurrentGrid.add(lblPortLabel, gridBagConstraints);
-
- lblPort.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblPort.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlCurrentGrid.add(lblPort, gridBagConstraints);
- lblPort.getAccessibleContext()
- .setAccessibleDescription(
- org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblPort.AccessibleContext.accessibleDescription")); // NOI18N
-
- lblZoneLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
- lblZoneLabel.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblZoneLabel.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlCurrentGrid.add(lblZoneLabel, gridBagConstraints);
-
- lblZone.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblZone.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlCurrentGrid.add(lblZone, gridBagConstraints);
- lblZone.getAccessibleContext()
- .setAccessibleDescription(
- org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblZone.AccessibleContext.accessibleDescription")); // NOI18N
-
- lblResourceLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
- lblResourceLabel.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblResourceLabel.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlCurrentGrid.add(lblResourceLabel, gridBagConstraints);
-
- lblUserNameLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
- lblUserNameLabel.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblUserNameLabel.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 3;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlCurrentGrid.add(lblUserNameLabel, gridBagConstraints);
-
- lblUserName.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblUserName.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 3;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlCurrentGrid.add(lblUserName, gridBagConstraints);
- lblUserName
- .getAccessibleContext()
- .setAccessibleName(
- org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblUserName.AccessibleContext.accessibleName")); // NOI18N
-
- btnLogout.setMnemonic('l');
- btnLogout.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnLogout.text")); // NOI18N
- btnLogout.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnLogout.toolTipText")); // NOI18N
- btnLogout.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnLogoutActionPerformed(evt);
- }
- });
- pnlCurrentGridToolbar.add(btnLogout);
-
- btnChangePassword.setMnemonic('c');
- btnChangePassword.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnChangePassword.text")); // NOI18N
- btnChangePassword.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnChangePassword.toolTipText")); // NOI18N
- btnChangePassword
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- btnChangePasswordActionPerformed(evt);
- }
- });
- pnlCurrentGridToolbar.add(btnChangePassword);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 5;
- gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
- gridBagConstraints.insets = new java.awt.Insets(20, 0, 0, 0);
- pnlCurrentGrid.add(pnlCurrentGridToolbar, gridBagConstraints);
-
- comboPrefsDefaultResource
- .setModel(new javax.swing.DefaultComboBoxModel(new String[] {
- "Item 1", "Item 2", "Item 3", "Item 4" }));
- comboPrefsDefaultResource
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- comboPrefsDefaultResourceActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlCurrentGrid.add(comboPrefsDefaultResource, gridBagConstraints);
-
- pnlConfigGrids.add(pnlCurrentGrid, java.awt.BorderLayout.CENTER);
-
- tabConfig
- .addTab(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlConfigGrids.TabConstraints.tabTitle"),
- pnlConfigGrids); // NOI18N
-
- pnlConfigTransfers.setLayout(new java.awt.GridBagLayout());
-
- pnlTransferManagement
- .setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlTransferManagement.border.title"))); // NOI18N
- pnlTransferManagement.setLayout(new javax.swing.BoxLayout(
- pnlTransferManagement, javax.swing.BoxLayout.PAGE_AXIS));
-
- checkLogSuccessfulTransfer
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkLogSuccessfulTransfer.text")); // NOI18N
- checkLogSuccessfulTransfer
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkLogSuccessfulTransfer.toolTipText")); // NOI18N
- checkLogSuccessfulTransfer
- .addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(
- final java.awt.event.ItemEvent evt) {
- checkLogSuccessfulTransferItemStateChanged(evt);
- }
- });
- checkLogSuccessfulTransfer
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- checkLogSuccessfulTransferActionPerformed(evt);
- }
- });
- pnlTransferManagement.add(checkLogSuccessfulTransfer);
-
- checkVerifyChecksumOnTransfer
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkVerifyChecksumOnTransfer.text")); // NOI18N
- checkVerifyChecksumOnTransfer
- .addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(
- final java.awt.event.ItemEvent evt) {
- checkVerifyChecksumOnTransferItemStateChanged(evt);
- }
- });
- checkVerifyChecksumOnTransfer
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- checkVerifyChecksumOnTransferActionPerformed(evt);
- }
- });
- pnlTransferManagement.add(checkVerifyChecksumOnTransfer);
-
- checkAllowRerouting.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkAllowRerouting.text")); // NOI18N
- checkAllowRerouting
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkAllowRerouting.toolTipText")); // NOI18N
- checkAllowRerouting.addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(final java.awt.event.ItemEvent evt) {
- checkAllowReroutingItemStateChanged(evt);
- }
- });
- pnlTransferManagement.add(checkAllowRerouting);
-
- checkConnectionRestart.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkConnectionRestart.text")); // NOI18N
- checkConnectionRestart
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkConnectionRestart.toolTipText")); // NOI18N
- checkConnectionRestart
- .addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(
- final java.awt.event.ItemEvent evt) {
- checkConnectionRestartItemStateChanged(evt);
- }
- });
- checkConnectionRestart
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- checkConnectionRestartActionPerformed(evt);
- }
- });
- pnlTransferManagement.add(checkConnectionRestart);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
- gridBagConstraints.gridheight = java.awt.GridBagConstraints.RELATIVE;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- pnlConfigTransfers.add(pnlTransferManagement, gridBagConstraints);
-
- plnPipelineConfiguration
- .setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.plnPipelineConfiguration.border.title"))); // NOI18N
- plnPipelineConfiguration.setLayout(new java.awt.GridBagLayout());
-
- lblIrodsSocketTimeout.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblIrodsSocketTimeout.text")); // NOI18N
- lblIrodsSocketTimeout.setPreferredSize(null);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- plnPipelineConfiguration.add(lblIrodsSocketTimeout, gridBagConstraints);
-
- spinnerIrodsSocketTimeout.setModel(new javax.swing.SpinnerNumberModel(
- 0, 0, 600, 10));
- spinnerIrodsSocketTimeout
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.spinnerIrodsSocketTimeout.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- plnPipelineConfiguration.add(spinnerIrodsSocketTimeout,
- gridBagConstraints);
-
- pnlParallelTransferOptions
- .setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlParallelTransferOptions.border.title"))); // NOI18N
- pnlParallelTransferOptions.setLayout(new java.awt.GridBagLayout());
-
- checkAllowParallelTransfers.setMnemonic('p');
- checkAllowParallelTransfers
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkAllowParallelTransfers.text")); // NOI18N
- checkAllowParallelTransfers
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkAllowParallelTransfers.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlParallelTransferOptions.add(checkAllowParallelTransfers,
- gridBagConstraints);
-
- checkUseNIOForParallelTransfers
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkUseNIOForParallelTransfers.text")); // NOI18N
- checkUseNIOForParallelTransfers
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkUseNIOForParallelTransfers.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlParallelTransferOptions.add(checkUseNIOForParallelTransfers,
- gridBagConstraints);
-
- checkUseExecutorPool.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.checkUseExecutorPool.text")); // NOI18N
- checkUseExecutorPool.addItemListener(new java.awt.event.ItemListener() {
- @Override
- public void itemStateChanged(final java.awt.event.ItemEvent evt) {
- checkUseExecutorPoolItemStateChanged(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlParallelTransferOptions
- .add(checkUseExecutorPool, gridBagConstraints);
-
- lblIrodsParallelSocketTimeout
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblIrodsParallelSocketTimeout.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 6;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
- gridBagConstraints.insets = new java.awt.Insets(28, 0, 0, 0);
- pnlParallelTransferOptions.add(lblIrodsParallelSocketTimeout,
- gridBagConstraints);
-
- spinnerIrodsParallelSocketTimeout
- .setModel(new javax.swing.SpinnerNumberModel(0, 0, 600, 10));
- spinnerIrodsParallelSocketTimeout
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.spinnerIrodsParallelSocketTimeout.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 6;
- gridBagConstraints.ipadx = 159;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
- gridBagConstraints.insets = new java.awt.Insets(22, 0, 0, 0);
- pnlParallelTransferOptions.add(spinnerIrodsParallelSocketTimeout,
- gridBagConstraints);
-
- lblMaximumParallelTransferThreads
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblMaximumParallelTransferThreads.text")); // NOI18N
- lblMaximumParallelTransferThreads
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblMaximumParallelTransferThreads.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 7;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
- gridBagConstraints.insets = new java.awt.Insets(6, 180, 0, 0);
- pnlParallelTransferOptions.add(lblMaximumParallelTransferThreads,
- gridBagConstraints);
-
- spinnerIrodsMaxParallelThreads
- .setModel(new javax.swing.SpinnerNumberModel(4, 0, 16, 1));
- spinnerIrodsMaxParallelThreads
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.spinnerIrodsMaxParallelThreads.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 7;
- gridBagConstraints.gridheight = 2;
- gridBagConstraints.ipadx = 171;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
- gridBagConstraints.insets = new java.awt.Insets(0, 0, 22, 0);
- pnlParallelTransferOptions.add(spinnerIrodsMaxParallelThreads,
- gridBagConstraints);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- plnPipelineConfiguration.add(pnlParallelTransferOptions,
- gridBagConstraints);
-
- pnlBuffers.setBorder(javax.swing.BorderFactory
- .createTitledBorder(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlBuffers.border.title"))); // NOI18N
- pnlBuffers.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlBuffers.toolTipText")); // NOI18N
- pnlBuffers.setLayout(new java.awt.GridBagLayout());
-
- lblInternalInputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblInternalInputBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
- pnlBuffers.add(lblInternalInputBufferSize, gridBagConstraints);
-
- txtInternalInputBufferSize.setColumns(20);
- txtInternalInputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInternalInputBufferSize.text")); // NOI18N
- txtInternalInputBufferSize
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInternalInputBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- pnlBuffers.add(txtInternalInputBufferSize, gridBagConstraints);
-
- lblInternalOutputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblInternalOutputBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
- pnlBuffers.add(lblInternalOutputBufferSize, gridBagConstraints);
-
- txtInternalOutputBufferSize.setColumns(20);
- txtInternalOutputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInternalOutputBufferSize.text")); // NOI18N
- txtInternalOutputBufferSize
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInternalOutputBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- pnlBuffers.add(txtInternalOutputBufferSize, gridBagConstraints);
-
- lblLocalFileInputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblLocalFileInputBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlBuffers.add(lblLocalFileInputBufferSize, gridBagConstraints);
-
- txtLocalFileInputBufferSize.setColumns(20);
- txtLocalFileInputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtLocalFileInputBufferSize.text")); // NOI18N
- txtLocalFileInputBufferSize
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtLocalFileInputBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlBuffers.add(txtLocalFileInputBufferSize, gridBagConstraints);
-
- lblLocalFileOutputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblLocalFileOutputBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 3;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlBuffers.add(lblLocalFileOutputBufferSize, gridBagConstraints);
-
- txtLocalFileOutputBufferSize.setColumns(20);
- txtLocalFileOutputBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtLocalFileOutputBufferSize.text")); // NOI18N
- txtLocalFileOutputBufferSize
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtLocalFileOutputBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 3;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlBuffers.add(txtLocalFileOutputBufferSize, gridBagConstraints);
-
- lblPutBufferSize.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblPutBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 5;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlBuffers.add(lblPutBufferSize, gridBagConstraints);
-
- txtPutBufferSize.setColumns(20);
- txtPutBufferSize.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtPutBufferSize.text")); // NOI18N
- txtPutBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtPutBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 5;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlBuffers.add(txtPutBufferSize, gridBagConstraints);
-
- lblGetBufferSize.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblGetBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlBuffers.add(lblGetBufferSize, gridBagConstraints);
-
- txtGetBufferSize.setColumns(20);
- txtGetBufferSize.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtGetBufferSize.text")); // NOI18N
- txtGetBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtGetBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlBuffers.add(txtGetBufferSize, gridBagConstraints);
-
- lblIputToOutputCopyBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblIputToOutputCopyBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 6;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlBuffers.add(lblIputToOutputCopyBufferSize, gridBagConstraints);
-
- txtInputToOutputCopyBufferSize.setColumns(20);
- txtInputToOutputCopyBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInputToOutputCopyBufferSize.text")); // NOI18N
- txtInputToOutputCopyBufferSize
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInputToOutputCopyBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 6;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlBuffers.add(txtInputToOutputCopyBufferSize, gridBagConstraints);
-
- lblInternalCacheBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblInternalCacheBufferSize.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 7;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlBuffers.add(lblInternalCacheBufferSize, gridBagConstraints);
-
- txtInternalCacheBufferSize.setColumns(20);
- txtInternalCacheBufferSize
- .setText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInternalCacheBufferSize.text")); // NOI18N
- txtInternalCacheBufferSize
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtInternalCacheBufferSize.toolTipText")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 7;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlBuffers.add(txtInternalCacheBufferSize, gridBagConstraints);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.gridwidth = 3;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- plnPipelineConfiguration.add(pnlBuffers, gridBagConstraints);
-
- btnRestoreDefaults.setMnemonic('a');
- btnRestoreDefaults.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnRestoreDefaults.text")); // NOI18N
- btnRestoreDefaults.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnRestoreDefaults.toolTipText")); // NOI18N
- btnRestoreDefaults
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- btnRestoreDefaultsActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 3;
- plnPipelineConfiguration.add(btnRestoreDefaults, gridBagConstraints);
-
- btnApplyPipelineConfig.setMnemonic('a');
- btnApplyPipelineConfig.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnApplyPipelineConfig.text")); // NOI18N
- btnApplyPipelineConfig
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnApplyPipelineConfig.toolTipText")); // NOI18N
- btnApplyPipelineConfig
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- btnApplyPipelineConfigActionPerformed(evt);
- }
- });
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 3;
- gridBagConstraints.gridy = 3;
- plnPipelineConfiguration
- .add(btnApplyPipelineConfig, gridBagConstraints);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- pnlConfigTransfers.add(plnPipelineConfiguration, gridBagConstraints);
-
- tabConfig
- .addTab(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlConfigTransfers.TabConstraints.tabTitle"),
- pnlConfigTransfers); // NOI18N
-
- pnlConfigSynch
- .addComponentListener(new java.awt.event.ComponentAdapter() {
- @Override
- public void componentShown(
- final java.awt.event.ComponentEvent evt) {
- pnlConfigSynchComponentShown(evt);
- }
- });
- pnlConfigSynch.setLayout(new java.awt.BorderLayout());
-
- pnlConfigSynchListing.setMinimumSize(new java.awt.Dimension(23, 100));
- pnlConfigSynchListing.setLayout(new java.awt.BorderLayout());
-
- btnRefreshSynch.setMnemonic('r');
- btnRefreshSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnRefreshSynch.text")); // NOI18N
- btnRefreshSynch.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnRefreshSynch.toolTipText")); // NOI18N
- btnRefreshSynch.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnRefreshSynchActionPerformed(evt);
- }
- });
- pnlSynchRefresh.add(btnRefreshSynch);
-
- pnlConfigSynchListing.add(pnlSynchRefresh, java.awt.BorderLayout.NORTH);
-
- scrollSynchTable.setMinimumSize(new java.awt.Dimension(23, 100));
- scrollSynchTable.setPreferredSize(new java.awt.Dimension(100, 100));
- pnlConfigSynchListing.add(scrollSynchTable,
- java.awt.BorderLayout.CENTER);
-
- pnlConfigSynch.add(pnlConfigSynchListing, java.awt.BorderLayout.CENTER);
-
- pnlConfigSynchDetails.setLayout(new java.awt.BorderLayout());
-
- pnlSynchData.setBorder(javax.swing.BorderFactory
- .createBevelBorder(javax.swing.border.BevelBorder.RAISED));
- pnlSynchData.setLayout(new java.awt.GridBagLayout());
-
- pnlSynchName.setLayout(new java.awt.GridBagLayout());
-
- lblSynchName.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblSynchName.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlSynchName.add(lblSynchName, gridBagConstraints);
-
- txtSynchName.setColumns(40);
- txtSynchName.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtSynchName.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlSynchName.add(txtSynchName, gridBagConstraints);
-
- lblSynchDateLabel.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblSynchDateLabel.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
- pnlSynchName.add(lblSynchDateLabel, gridBagConstraints);
-
- lblSynchDate.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblSynchDate.text")); // NOI18N
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
- pnlSynchName.add(lblSynchDate, gridBagConstraints);
-
- lblSynchStatus.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.lblSynchStatus.text")); // NOI18N
- lblSynchStatus.setMaximumSize(null);
- lblSynchStatus.setMinimumSize(new java.awt.Dimension(10, 10));
- lblSynchStatus.setPreferredSize(new java.awt.Dimension(10, 10));
- pnlSynchIcon.add(lblSynchStatus);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.gridwidth = 3;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- pnlSynchName.add(pnlSynchIcon, gridBagConstraints);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 0;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(20, 20, 30, 20);
- pnlSynchData.add(pnlSynchName, gridBagConstraints);
-
- txtLocalPath.setColumns(80);
- txtLocalPath.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtLocalPath.text")); // NOI18N
- txtLocalPath.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtLocalPath.toolTipText")); // NOI18N
- txtLocalPath.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- txtLocalPathActionPerformed(evt);
- }
- });
- pnlLocalSynch.add(txtLocalPath);
-
- btnChooseLocalSynch.setMnemonic('c');
- btnChooseLocalSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnChooseLocalSynch.text")); // NOI18N
- btnChooseLocalSynch
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnChooseLocalSynch.toolTipText")); // NOI18N
- btnChooseLocalSynch
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- btnChooseLocalSynchActionPerformed(evt);
- }
- });
- pnlLocalSynch.add(btnChooseLocalSynch);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.gridwidth = 9;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 10);
- pnlSynchData.add(pnlLocalSynch, gridBagConstraints);
-
- pnlSynchMode.setBorder(javax.swing.BorderFactory
- .createLineBorder(new java.awt.Color(0, 0, 0)));
- pnlSynchMode.setLayout(new java.awt.GridLayout(0, 1));
-
- jLabel1.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.jLabel1.text")); // NOI18N
- pnlSynchMode.add(jLabel1);
-
- buttonGroupSynchMode.add(radioBackup);
- radioBackup.setSelected(true);
- radioBackup.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.radioBackup.text")); // NOI18N
- pnlSynchMode.add(radioBackup);
-
- buttonGroupSynchMode.add(radioFeed);
- radioFeed.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.radioFeed.text")); // NOI18N
- radioFeed.setEnabled(false);
- pnlSynchMode.add(radioFeed);
-
- buttonGroupSynchMode.add(radioSynch);
- radioSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.radioSynch.text")); // NOI18N
- radioSynch.setEnabled(false);
- pnlSynchMode.add(radioSynch);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.gridwidth = 9;
- gridBagConstraints.gridheight = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.insets = new java.awt.Insets(20, 20, 20, 20);
- pnlSynchData.add(pnlSynchMode, gridBagConstraints);
-
- pnlSynchFrequency.setBorder(javax.swing.BorderFactory
- .createLineBorder(new java.awt.Color(0, 0, 0)));
- pnlSynchFrequency.setLayout(new java.awt.GridLayout(0, 1));
-
- jLabel5.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.jLabel5.text")); // NOI18N
- pnlSynchFrequency.add(jLabel5);
-
- jcomboSynchFrequency.setModel(new javax.swing.DefaultComboBoxModel(
- new String[] { "Hourly", "Weekly", "Daily",
- "Every 2 Minutes (testing)", "", "" }));
- jcomboSynchFrequency
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.jcomboSynchFrequency.toolTipText")); // NOI18N
- pnlSynchFrequency.add(jcomboSynchFrequency);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 4;
- gridBagConstraints.gridwidth = 9;
- gridBagConstraints.gridheight = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.insets = new java.awt.Insets(20, 20, 20, 20);
- pnlSynchData.add(pnlSynchFrequency, gridBagConstraints);
-
- txtIrodsPath.setColumns(80);
- txtIrodsPath.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtIrodsPath.text")); // NOI18N
- txtIrodsPath.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.txtIrodsPath.toolTipText")); // NOI18N
- txtIrodsPath.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- txtIrodsPathActionPerformed(evt);
- }
- });
- pnlIrodsSynch.add(txtIrodsPath);
-
- btnChooseIrodsSynch.setMnemonic('i');
- btnChooseIrodsSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnChooseIrodsSynch.text")); // NOI18N
- btnChooseIrodsSynch
- .setToolTipText(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnChooseIrodsSynch.toolTipText")); // NOI18N
- btnChooseIrodsSynch
- .addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(
- final java.awt.event.ActionEvent evt) {
- btnChooseIrodsSynchActionPerformed(evt);
- }
- });
- pnlIrodsSynch.add(btnChooseIrodsSynch);
-
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 6;
- gridBagConstraints.gridwidth = 9;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 10);
- pnlSynchData.add(pnlIrodsSynch, gridBagConstraints);
-
- pnlConfigSynchDetails.add(pnlSynchData, java.awt.BorderLayout.CENTER);
-
- btnDeleteSynch.setMnemonic('d');
- btnDeleteSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnDeleteSynch.text")); // NOI18N
- btnDeleteSynch.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnDeleteSynch.toolTipText")); // NOI18N
- btnDeleteSynch.setEnabled(false);
- btnDeleteSynch.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnDeleteSynchActionPerformed(evt);
- }
- });
- panelSynchToolbar.add(btnDeleteSynch);
-
- btnNewSynch.setMnemonic('n');
- btnNewSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnNewSynch.text")); // NOI18N
- btnNewSynch.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnNewSynch.toolTipText")); // NOI18N
- btnNewSynch.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnNewSynchActionPerformed(evt);
- }
- });
- panelSynchToolbar.add(btnNewSynch);
-
- btnUpdateSynch.setMnemonic('u');
- btnUpdateSynch.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnUpdateSynch.text")); // NOI18N
- btnUpdateSynch.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnUpdateSynch.toolTipText")); // NOI18N
- btnUpdateSynch.setEnabled(false);
- btnUpdateSynch.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnUpdateSynchActionPerformed(evt);
- }
- });
- panelSynchToolbar.add(btnUpdateSynch);
-
- btnSynchNow.setMnemonic('s');
- btnSynchNow.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnSynchNow.text")); // NOI18N
- btnSynchNow.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnSynchNow.toolTipText")); // NOI18N
- btnSynchNow.setEnabled(false);
- btnSynchNow.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnSynchNowActionPerformed(evt);
- }
- });
- panelSynchToolbar.add(btnSynchNow);
-
- pnlConfigSynchDetails.add(panelSynchToolbar,
- java.awt.BorderLayout.SOUTH);
-
- pnlConfigSynch.add(pnlConfigSynchDetails, java.awt.BorderLayout.SOUTH);
-
- tabConfig
- .addTab(org.openide.util.NbBundle
- .getMessage(IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.pnlConfigSynch.TabConstraints.tabTitle"),
- pnlConfigSynch); // NOI18N
-
- pnlCenter.add(tabConfig);
-
- getContentPane().add(pnlCenter, java.awt.BorderLayout.CENTER);
-
- pnlBottom.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
-
- btnOK.setMnemonic('O');
- btnOK.setText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnOK.text")); // NOI18N
- btnOK.setToolTipText(org.openide.util.NbBundle.getMessage(
- IDROPConfigurationPanel.class,
- "IDROPConfigurationPanel.btnOK.toolTipText")); // NOI18N
- btnOK.addActionListener(new java.awt.event.ActionListener() {
- @Override
- public void actionPerformed(final java.awt.event.ActionEvent evt) {
- btnOKActionPerformed(evt);
- }
- });
- pnlBottom.add(btnOK);
-
- getContentPane().add(pnlBottom, java.awt.BorderLayout.SOUTH);
-
- pack();
- }// </editor-fold>//GEN-END:initComponents
-
- /**
- * Refresh the displayed synch
- *
- * @param evt
- */
- private void btnRefreshSynchActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnRefreshSynchActionPerformed
- refreshSynchConfigPanel();
- }// GEN-LAST:event_btnRefreshSynchActionPerformed
-
- private void checkShowFileProgressActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_checkShowFileProgressActionPerformed
- //
- }// GEN-LAST:event_checkShowFileProgressActionPerformed
-
- private void checkShowGUIItemStateChanged(final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkShowGUIItemStateChanged
-
- boolean isSelected = false;
- if (evt.getStateChange() == ItemEvent.SELECTED) {
- isSelected = true;
- }
- log.info("updating show gui at startup to:{}", isSelected);
- try {
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.SHOW_GUI,
- Boolean.toString(isSelected));
- } catch (IdropException ex) {
- log.error("error setting show gui property", ex);
- throw new IdropRuntimeException(ex);
- }
- }// GEN-LAST:event_checkShowGUIItemStateChanged
-
- private void checkShowFileProgressItemStateChanged(
- final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkShowFileProgressItemStateChanged
- boolean isSelected = false;
- if (evt.getStateChange() == ItemEvent.SELECTED) {
- isSelected = true;
- }
- log.info("updating show intra-file progress to:{}", isSelected);
- try {
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.INTRA_FILE_STATUS_CALLBACKS,
- Boolean.toString(isSelected));
- idropCore.getIdropConfigurationService()
- .updateJargonPropertiesBasedOnIDROPConfig();
- } catch (Exception ex) {
- log.error("error setting property", ex);
- throw new IdropRuntimeException(ex);
- }
- }// GEN-LAST:event_checkShowFileProgressItemStateChanged
-
- private void checkVerifyChecksumOnTransferItemStateChanged(
- final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkVerifyChecksumOnTransferItemStateChanged
- updateConfigForGivenPropertyBasedOnCheckboxStateChange(evt,
- IdropConfigurationService.VERIFY_CHECKSUM_ON_TRANSFER);
- }
-
- private void updateConfigForGivenPropertyBasedOnCheckboxStateChange(
- final ItemEvent evt, final String propertyName)
- throws IdropRuntimeException {
- boolean isSelected = false;
- if (evt.getStateChange() == ItemEvent.SELECTED) {
- isSelected = true;
- }
- log.info("updating verify checksum to:{}", isSelected);
- try {
- idropCore.getIdropConfigurationService().updateConfig(propertyName,
- Boolean.toString(isSelected));
- idropCore.getIdropConfigurationService()
- .updateJargonPropertiesBasedOnIDROPConfig();
- } catch (Exception ex) {
- log.error("error setting property", ex);
- throw new IdropRuntimeException(ex);
- }
- }// GEN-LAST:event_checkVerifyChecksumOnTransferItemStateChanged
-
- private void checkLogSuccessfulTransferItemStateChanged(
- final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkLogSuccessfulTransferItemStateChanged
-
- updateConfigForGivenPropertyBasedOnCheckboxStateChange(
- evt,
- IdropConfigurationService.TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES);
- }// GEN-LAST:event_checkLogSuccessfulTransferItemStateChanged
-
- private void checkUseExecutorPoolItemStateChanged(
- final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkUseExecutorPoolItemStateChanged
- updateConfigForGivenPropertyBasedOnCheckboxStateChange(evt,
- IdropConfigurationService.IRODS_PARALLEL_USE_POOL);
- }// GEN-LAST:event_checkUseExecutorPoolItemStateChanged
-
- private void checkAllowReroutingItemStateChanged(
- final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkAllowReroutingItemStateChanged
- boolean isSelected = false;
- if (evt.getStateChange() == ItemEvent.SELECTED) {
- isSelected = true;
- }
- log.info("updating allow rerouting to:{}", isSelected);
- try {
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.ALLOW_CONNECTION_REROUTING,
- Boolean.toString(isSelected));
- idropCore.getIdropConfigurationService()
- .updateJargonPropertiesBasedOnIDROPConfig();
- } catch (Exception ex) {
- log.error("error setting property", ex);
- throw new IdropRuntimeException(ex);
- }
- }// GEN-LAST:event_checkAllowReroutingItemStateChanged
-
- private void resetTransferPipelineEditColors() {
- txtInternalInputBufferSize.setBackground(Color.white);
- txtInternalOutputBufferSize.setBackground(Color.white);
- txtLocalFileInputBufferSize.setBackground(Color.white);
- txtLocalFileOutputBufferSize.setBackground(Color.white);
- txtGetBufferSize.setBackground(Color.white);
- txtPutBufferSize.setBackground(Color.white);
- txtInputToOutputCopyBufferSize.setBackground(Color.white);
- txtInternalCacheBufferSize.setBackground(Color.white);
- }
-
- /**
- * Update the pipeline configuration information properties based on the
- * screen data
- *
- * @param evt
- */
- private void btnApplyPipelineConfigActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnApplyPipelineConfigActionPerformed
- try {
-
- resetTransferPipelineEditColors();
- // edit and set
-
- // internal input buffer size
- String actual = txtInternalInputBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_IO_INTERNAL_INPUT_STREAM_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtInternalInputBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this,
- "Invalid internal input buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // internal output buffer size
- actual = txtInternalOutputBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_IO_INTERNAL_OUTPUT_STREAM_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtInternalOutputBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this,
- "Invalid internal output buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // local file input buffer size
- actual = txtLocalFileInputBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_IO_LOCAL_INPUT_STREAM_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtLocalFileInputBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this,
- "Invalid local file input buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // local file output buffer size
- actual = txtLocalFileOutputBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_IO_LOCAL_OUTPUT_STREAM_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtLocalFileOutputBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this,
- "Invalid local file output buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // get buffer size
- actual = txtGetBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.IRODS_IO_GET_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtGetBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this, "Invalid get buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // put buffer size
- actual = txtPutBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.IRODS_IO_PUT_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtPutBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this, "Invalid put buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // input to output copy buffer size
- actual = txtInputToOutputCopyBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_IO_INPUT_TO_OUTPUT_COPY_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtInputToOutputCopyBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this,
- "Invalid input to output copy buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- // internal cache buffer size
- actual = txtInternalCacheBufferSize.getText();
- if (actual.isEmpty()) {
- } else {
- try {
- Integer.parseInt(actual);
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_IO_INTERNAL_CACHE_BUFFER_SIZE,
- actual);
- } catch (NumberFormatException nfe) {
- txtInternalCacheBufferSize.setBackground(Color.red);
- MessageManager.showWarning(this,
- "Invalid internal cache buffer size",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- }
-
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.IRODS_PARALLEL_USE_PARALLEL,
- Boolean.toString(checkAllowParallelTransfers.isSelected()));
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.IRODS_PARALLEL_USE_NIO,
- Boolean.toString(checkUseNIOForParallelTransfers
- .isSelected()));
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_PARALLEL_CONNECTION_MAX_THREADS,
- spinnerIrodsMaxParallelThreads.getValue()
- .toString());
- idropCore
- .getIdropConfigurationService()
- .updateConfig(
- IdropConfigurationService.IRODS_PARALLEL_CONNECTION_TIMEOUT,
- spinnerIrodsParallelSocketTimeout.getValue()
- .toString());
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.IRODS_CONNECTION_TIMEOUT,
- spinnerIrodsSocketTimeout.getValue().toString());
-
- idropCore.getIdropConfigurationService()
- .updateJargonPropertiesBasedOnIDROPConfig();
- } catch (Exception ex) {
- log.error("error setting property", ex);
- throw new IdropRuntimeException(ex);
- }
- }// GEN-LAST:event_btnApplyPipelineConfigActionPerformed
-
- private void btnRestoreDefaultsActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnRestoreDefaultsActionPerformed
- log.info("restoring pipeline config to jargon properties settings");
- try {
- JargonProperties defaultJargonProperties = new DefaultPropertiesJargonConfig();
- IdropConfigurationService configService = idropCore
- .getIdropConfigurationService();
- configService
- .restoreIDROPConfigFromJargonProperties(defaultJargonProperties);
- initWithConfigData();
- MessageManager.showMessage(this,
- "Values restored to defaults, hit apply to update",
- MessageManager.TITLE_MESSAGE);
- } catch (JargonException ex) {
- log.error("unable to restore jargon properties", ex);
- throw new IdropRuntimeException(
- "unable to restore jargon properties", ex);
- }
-
- }// GEN-LAST:event_btnRestoreDefaultsActionPerformed
-
- private void comboPrefsDefaultResourceActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_comboPrefsDefaultResourceActionPerformed
- String newResource = (String) comboPrefsDefaultResource
- .getSelectedItem();
- idropCore.getIrodsAccount().setDefaultStorageResource(newResource);
- if (!initializing) {
- idropGui.reinitializeForChangedIRODSAccount();
- } else {
- initializing = false;
- }
- }// GEN-LAST:event_comboPrefsDefaultResourceActionPerformed
-
- private void checkConnectionRestartActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_checkConnectionRestartActionPerformed
-
- }// GEN-LAST:event_checkConnectionRestartActionPerformed
-
- private void checkConnectionRestartItemStateChanged(
- final java.awt.event.ItemEvent evt) {// GEN-FIRST:event_checkConnectionRestartItemStateChanged
- boolean isSelected = false;
- if (evt.getStateChange() == ItemEvent.SELECTED) {
- isSelected = true;
- }
- log.info("updating connection restart to:{}", isSelected);
- try {
- idropCore.getIdropConfigurationService().updateConfig(
- IdropConfigurationService.IRODS_CONNECTION_RESTART,
- Boolean.toString(isSelected));
- idropCore.getIdropConfigurationService()
- .updateJargonPropertiesBasedOnIDROPConfig();
- } catch (Exception ex) {
- log.error("error setting property", ex);
- throw new IdropRuntimeException(ex);
- }
- }// GEN-LAST:event_checkConnectionRestartItemStateChanged
-
- private void btnOKActionPerformed(final java.awt.event.ActionEvent evt) {
- dispose();
- }
-
- private void checkShowGUIActionPerformed(
- final java.awt.event.ActionEvent evt) {
- //
- }
-
- private void checkLogSuccessfulTransferActionPerformed(
- final java.awt.event.ActionEvent evt) {
- //
- }
-
- private void pnlConfigSynchComponentShown(
- final java.awt.event.ComponentEvent evt) {
-
- refreshSynchConfigPanel();
-
- }
-
- private void refreshSynchConfigPanel() {
- log.info("lazily loading synch data");
-
- final IDROPConfigurationPanel thisPanel = this;
-
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
-
- SynchManagerService synchConfigurationService = idropCore
- .getTransferManager().getTransferServiceFactory()
- .instanceSynchManagerService();
-
- try {
- thisPanel.setCursor(Cursor
- .getPredefinedCursor(Cursor.WAIT_CURSOR));
- List<Synchronization> synchronizations = synchConfigurationService
- .listAllSynchronizations();
- SynchConfigTableModel synchConfigTableModel = null;
- if (jTableSynch == null) {
- synchConfigTableModel = new SynchConfigTableModel(
- idropCore, synchronizations);
- jTableSynch = new JTable(synchConfigTableModel);
- jTableSynch
- .getSelectionModel()
- .addListSelectionListener(
- new SynchListSelectionHandler(thisPanel));
- scrollSynchTable.setViewportView(jTableSynch);
- scrollSynchTable.validate();
- pnlConfigSynchListing.validate();
- } else {
- synchConfigTableModel = (SynchConfigTableModel) jTableSynch
- .getModel();
- synchConfigTableModel
- .setSynchronizations(synchronizations);
- synchConfigTableModel.fireTableDataChanged();
- }
-
- if (synchConfigTableModel.getRowCount() > 0) {
- jTableSynch.setRowSelectionInterval(0, 0);
- } else {
- lockSynchPanelForNewOnly();
- }
- } catch (SynchException ex) {
- log.error("error setting up synchs table", ex);
- throw new IdropRuntimeException(ex);
- } finally {
- thisPanel.setCursor(Cursor
- .getPredefinedCursor(Cursor.DEFAULT_CURSOR));
- }
- }
-
- private void lockSynchPanelForNewOnly() {
- clearAndResetSynchPanel();
- setLockStatusSynchPanel(false);
- }
- });
- }
-
- private void txtLocalPathActionPerformed(
- final java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
-
- private void btnChooseLocalSynchActionPerformed(
- final java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- JFileChooser localFileChooser = new JFileChooser();
- localFileChooser.setMultiSelectionEnabled(false);
- localFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- localFileChooser.showOpenDialog(this);
- txtLocalPath.setText(localFileChooser.getSelectedFile()
- .getAbsolutePath());
- }
-
- private void txtIrodsPathActionPerformed(
- final java.awt.event.ActionEvent evt) {
- // TODO add your handling code here:
- }
-
- private void btnChooseIrodsSynchActionPerformed(
- final java.awt.event.ActionEvent evt) {
- try {
- IRODSFinderDialog irodsFileSystemChooserView = new IRODSFinderDialog(
- null, true, idropCore);
- final Toolkit toolkit = Toolkit.getDefaultToolkit();
- final Dimension screenSize = toolkit.getScreenSize();
- final int x = (screenSize.width - irodsFileSystemChooserView
- .getWidth()) / 2;
- final int y = (screenSize.height - irodsFileSystemChooserView
- .getHeight()) / 2;
- irodsFileSystemChooserView.setLocation(x, y);
- irodsFileSystemChooserView.setVisible(true);
- String absPath = irodsFileSystemChooserView
- .getSelectedAbsolutePath();
- irodsFileSystemChooserView.dispose();
- if (absPath != null) {
- txtIrodsPath.setText(irodsFileSystemChooserView
- .getSelectedAbsolutePath());
- }
-
- // int returnVal = irodsFileChooser.showSaveDialog(this);
- } catch (Exception e) {
- log.error("exception choosings iRODS file");
- throw new IdropRuntimeException("exception choosing irods fie", e);
- } finally {
- idropCore.getIrodsFileSystem().closeAndEatExceptions();
- }
- }
-
- /**
- * Delete the selected synchronization
- *
- * @param evt
- */
- private void btnDeleteSynchActionPerformed(
- final java.awt.event.ActionEvent evt) {
-
- final IDROPConfigurationPanel thisPanel = this;
-
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
-
- if (selectedSynchronization == null) {
- MessageManager.showError(thisPanel,
- "Please select a synchronization from the table",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- Synchronization synchronization = selectedSynchronization;
-
- int result = JOptionPane.showConfirmDialog(thisPanel,
- "Do you wish to delete this synchronization?",
- MessageManager.TITLE_MESSAGE,
- JOptionPane.OK_CANCEL_OPTION);
- if (result == JOptionPane.CANCEL_OPTION) {
- return;
- }
- try {
- thisPanel.setCursor(Cursor
- .getPredefinedCursor(Cursor.WAIT_CURSOR));
- SynchManagerService synchConfigurationService = idropCore
- .getTransferManager().getTransferServiceFactory()
- .instanceSynchManagerService();
- log.info("deleting synchronization:{}", synchronization);
-
- if (synchConfigurationService
- .isSynchRunning(synchronization)) {
- MessageManager
- .showMessage(
- thisPanel,
- "Cannot delete the synchronization, a synch is currently running",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- thisPanel.getSynchTable().getSelectionModel();
- SynchConfigTableModel model = (SynchConfigTableModel) thisPanel
- .getSynchTable().getModel();
-
- synchConfigurationService
- .deleteSynchronization(synchronization);
- log.info("synch deleted, refreshing model");
- List<Synchronization> synchronizations = synchConfigurationService
- .listAllSynchronizations();
-
- model.setSynchronizations(synchronizations);
- model.fireTableDataChanged();
-
- MessageManager.showMessage(thisPanel,
- "Configuration deleted",
- MessageManager.TITLE_MESSAGE);
- btnDeleteSynch.setEnabled(false);
- btnUpdateSynch.setEnabled(false);
- btnSynchNow.setEnabled(false);
- refreshSynchConfigPanel();
- } catch (Exception ex) {
- MessageManager.showError(thisPanel, ex.getMessage(),
- MessageManager.TITLE_MESSAGE);
- } finally {
- thisPanel.setCursor(Cursor
- .getPredefinedCursor(Cursor.DEFAULT_CURSOR));
- idropCore.closeIRODSConnection(idropCore.getIrodsAccount());
- }
- }
- });
- }
-
- /**
- * Called to clear and prepare for adding a new synchronization
- *
- * @param evt
- */
- private void btnNewSynchActionPerformed(final java.awt.event.ActionEvent evt) {
- clearAndResetSynchPanel();
- if (jTableSynch.getModel().getRowCount() > 0) {
- jTableSynch.getSelectionModel().removeIndexInterval(0,
- jTableSynch.getModel().getRowCount() - 1);
- }
- selectedSynchronization = new Synchronization();
- btnDeleteSynch.setEnabled(false);
- btnUpdateSynch.setEnabled(true);
- btnSynchNow.setEnabled(false);
- MessageManager
- .showMessage(
- this,
- "Enter the data for the new Synchronization and press Update to save",
- MessageManager.TITLE_MESSAGE);
- setLockStatusSynchPanel(true);
- btnSynchNow.setEnabled(false);
- btnDeleteSynch.setEnabled(false);
- }
-
- /**
- * User signals that the displayed synchronization should be updated
- *
- * @param evt
- */
- private void btnUpdateSynchActionPerformed(
- final java.awt.event.ActionEvent evt) {
- updateSynch();
- }
-
- private void updateSynch() {
- final IDROPConfigurationPanel thisPanel = this;
-
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
-
- resetSynchPanel();
- if (selectedSynchronization == null) {
- MessageManager.showError(thisPanel,
- "Please select a synchronization from the table",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- if (txtLocalPath.getText().trim().isEmpty()) {
- txtLocalPath.setBackground(Color.RED);
- MessageManager.showError(thisPanel,
- "Please select a local path",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- if (txtIrodsPath.getText().trim().isEmpty()) {
- txtIrodsPath.setBackground(Color.RED);
- MessageManager.showError(thisPanel,
- "Please select an iRODS path",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- if (txtSynchName.getText().trim().isEmpty()) {
- txtSynchName.setBackground(Color.RED);
- MessageManager
- .showError(
- thisPanel,
- "Please enter a unique name for this synchronization",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- boolean isNew = (selectedSynchronization.getId() == null);
- if (isNew) {
- log.info("adding new synch");
- }
-
- SynchManagerService synchConfigurationService = idropCore
- .getTransferManager().getTransferServiceFactory()
- .instanceSynchManagerService();
-
- // edits pass, do update
- log.info("saving synch data");
- Synchronization synchronization = selectedSynchronization;
- synchronization.setUpdatedAt(new Date());
- synchronization.setFrequencyType(getSynchFrequencyFromGUI());
-
- synchronization.setName(txtSynchName.getText().trim());
- synchronization.setSynchronizationMode(getSynchTypeFromGUI());
- synchronization.setLocalSynchDirectory(txtLocalPath.getText()
- .trim());
- synchronization.setIrodsSynchDirectory(txtIrodsPath.getText()
- .trim());
- IRODSAccount irodsAccount = idropCore.getIrodsAccount();
- synchronization.setIrodsHostName(irodsAccount.getHost());
-
- try {
- synchronization.setIrodsPassword(HibernateUtil
- .obfuscate(irodsAccount.getPassword()));
- } catch (JargonException ex) {
- log.error("exception obfuscating password", ex);
- MessageManager.showError(thisPanel, ex.getMessage(),
- MessageManager.TITLE_MESSAGE);
- throw new IdropRuntimeException(ex);
- }
-
- synchronization.setIrodsPort(irodsAccount.getPort());
- synchronization.setIrodsUserName(irodsAccount.getUserName());
- synchronization.setIrodsZone(irodsAccount.getZone());
- synchronization.setDefaultResourceName(irodsAccount
- .getDefaultStorageResource());
- synchronization.setCreatedAt(new Date());
- selectedSynchronization = synchronization;
-
- try {
- thisPanel.setCursor(Cursor
- .getPredefinedCursor(Cursor.WAIT_CURSOR));
- if (synchConfigurationService
- .isSynchRunning(selectedSynchronization)) {
- MessageManager
- .showMessage(
- thisPanel,
- "Cannot update the synchronization, a synch is currently running",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- idropCore.getIdropConfigurationService()
- .updateSynchronization(synchronization);
- MessageManager.showMessage(thisPanel,
- "Configuration updated",
- MessageManager.TITLE_MESSAGE);
- ListSelectionModel lsm = thisPanel.getSynchTable()
- .getSelectionModel();
- SynchConfigTableModel model = (SynchConfigTableModel) thisPanel
- .getSynchTable().getModel();
-
- if (isNew) {
-
- List<Synchronization> synchronizations = synchConfigurationService
- .listAllSynchronizations();
-
- model.setSynchronizations(synchronizations);
- model.fireTableDataChanged();
- } else {
- if (lsm.isSelectionEmpty()) {
- return;
- } else {
- // Find out which indexes are selected.
- int minIndex = lsm.getMinSelectionIndex();
- int maxIndex = lsm.getMaxSelectionIndex();
- for (int i = minIndex; i <= maxIndex; i++) {
- if (lsm.isSelectedIndex(i)) {
- int modelIdx = thisPanel.getSynchTable()
- .convertRowIndexToModel(i);
-
- model.getSynchronizations().set(modelIdx,
- synchronization);
- model.fireTableDataChanged();
- break;
- }
- }
- }
- }
-
- btnDeleteSynch.setEnabled(true);
- btnUpdateSynch.setEnabled(true);
- btnSynchNow.setEnabled(true);
-
- } catch (IdropException ex) {
- MessageManager.showError(thisPanel, ex.getMessage(),
- MessageManager.TITLE_MESSAGE);
- } catch (SynchException ex) {
- MessageManager.showError(thisPanel, ex.getMessage(),
- MessageManager.TITLE_MESSAGE);
- } finally {
- thisPanel.setCursor(Cursor
- .getPredefinedCursor(Cursor.DEFAULT_CURSOR));
- idropCore.closeIRODSConnection(idropCore.getIrodsAccount());
- }
- }
- });
- }
-
- /**
- * Force a synchronization process on the selected synchronization
- *
- * @param evt
- */
- private void btnSynchNowActionPerformed(final java.awt.event.ActionEvent evt) {
- log.info("synch now button pressed");
- if (selectedSynchronization == null) {
- MessageManager.showWarning(this, "Please select a synhronization",
- MessageManager.TITLE_MESSAGE);
- return;
- }
-
- log.info("selected synchronization is:{}", selectedSynchronization);
- boolean synchIsUnchanged = checkIfSynchChanged();
-
- if (!synchIsUnchanged) {
- log.info("synch had been changed, update first");
- updateSynch();
- }
-
- int result = JOptionPane
- .showConfirmDialog(this, "Synchronize?",
- "Do you want to synchronize now?",
- JOptionPane.OK_CANCEL_OPTION);
- if (result == JOptionPane.OK_OPTION) {
- try {
- SynchManagerService synchConfigurationService = idropCore
- .getTransferManager().getTransferServiceFactory()
- .instanceSynchManagerService();
-
- if (synchConfigurationService
- .isSynchRunning(selectedSynchronization)) {
- MessageManager
- .showMessage(
- this,
- "Cannot schedule the synchronization, a synch is currently running",
- MessageManager.TITLE_MESSAGE);
- return;
- }
- idropCore.getTransferManager().enqueueASynch(
- selectedSynchronization,
- selectedSynchronization
- .buildIRODSAccountFromSynchronizationData());
- } catch (Exception ex) {
- log.error("error starting synch", ex);
- MessageManager.showError(this, ex.getMessage(),
- MessageManager.TITLE_MESSAGE);
- throw new IdropRuntimeException(ex);
- }
- }
- }
-
- private void checkVerifyChecksumOnTransferActionPerformed(
- final java.awt.event.ActionEvent evt) {
- //
- }
-
- private void btnLogoutActionPerformed(final java.awt.event.ActionEvent evt) {
- log.info("logging out to log in to a new grid");
-
- final IDROPConfigurationPanel thisPanel = this;
-
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
-
- IRODSAccount savedAccount = idropCore.getIrodsAccount();
- idropCore.setIrodsAccount(null);
- iDrop idrop = (iDrop) thisPanel.getParent();
- LoginDialog loginDialog = new LoginDialog(thisPanel, idropCore);
- loginDialog.setVisible(true);
-
- if (idropCore.getIrodsAccount() == null) {
- log.warn("no account, reverting");
- idropCore.setIrodsAccount(savedAccount);
- } else {
- idrop.reinitializeForChangedIRODSAccount();
- }
- refreshAccountData();
- }
- });
-
- }
-
- private void btnChangePasswordActionPerformed(
- final java.awt.event.ActionEvent evt) {
- ChangePasswordDialog changePasswordDialog = new ChangePasswordDialog(
- (iDrop) getParent(), this, true);
- changePasswordDialog.setLocationRelativeTo(this);
- changePasswordDialog.setVisible(true);
- }
-
- protected JTable getSynchTable() {
- return jTableSynch;
- }
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton btnApplyPipelineConfig;
- private javax.swing.JButton btnChangePassword;
- private javax.swing.JButton btnChooseIrodsSynch;
- private javax.swing.JButton btnChooseLocalSynch;
- private javax.swing.JButton btnDeleteSynch;
- private javax.swing.JButton btnLogout;
- private javax.swing.JButton btnNewSynch;
- private javax.swing.JButton btnOK;
- private javax.swing.JButton btnRefreshSynch;
- private javax.swing.JButton btnRestoreDefaults;
- private javax.swing.JButton btnSynchNow;
- private javax.swing.JButton btnUpdateSynch;
- private javax.swing.ButtonGroup buttonGroupSynchMode;
- private javax.swing.JCheckBox checkAllowParallelTransfers;
- private javax.swing.JCheckBox checkAllowRerouting;
- private javax.swing.JCheckBox checkConnectionRestart;
- private javax.swing.JCheckBox checkLogSuccessfulTransfer;
- private javax.swing.JCheckBox checkShowFileProgress;
- private javax.swing.JCheckBox checkShowGUI;
- private javax.swing.JCheckBox checkUseExecutorPool;
- private javax.swing.JCheckBox checkUseNIOForParallelTransfers;
- private javax.swing.JCheckBox checkVerifyChecksumOnTransfer;
- private javax.swing.JComboBox comboPrefsDefaultResource;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel5;
- private javax.swing.JComboBox jcomboSynchFrequency;
- private javax.swing.JLabel lblGetBufferSize;
- private javax.swing.JLabel lblHost;
- private javax.swing.JLabel lblHostLabel;
- private javax.swing.JLabel lblInternalCacheBufferSize;
- private javax.swing.JLabel lblInternalInputBufferSize;
- private javax.swing.JLabel lblInternalOutputBufferSize;
- private javax.swing.JLabel lblIputToOutputCopyBufferSize;
- private javax.swing.JLabel lblIrodsParallelSocketTimeout;
- private javax.swing.JLabel lblIrodsSocketTimeout;
- private javax.swing.JLabel lblLocalFileInputBufferSize;
- private javax.swing.JLabel lblLocalFileOutputBufferSize;
- private javax.swing.JLabel lblMaximumParallelTransferThreads;
- private javax.swing.JLabel lblPort;
- private javax.swing.JLabel lblPortLabel;
- private javax.swing.JLabel lblPutBufferSize;
- private javax.swing.JLabel lblResourceLabel;
- private javax.swing.JLabel lblSynchDate;
- private javax.swing.JLabel lblSynchDateLabel;
- private javax.swing.JLabel lblSynchName;
- private javax.swing.JLabel lblSynchStatus;
- private javax.swing.JLabel lblUserName;
- private javax.swing.JLabel lblUserNameLabel;
- private javax.swing.JLabel lblZone;
- private javax.swing.JLabel lblZoneLabel;
- private javax.swing.JPanel panelSynchToolbar;
- private javax.swing.JPanel plnPipelineConfiguration;
- private javax.swing.JPanel pnlBottom;
- private javax.swing.JPanel pnlBuffers;
- private javax.swing.JPanel pnlCenter;
- private javax.swing.JPanel pnlConfigGrids;
- private javax.swing.JPanel pnlConfigIdrop;
- private javax.swing.JPanel pnlConfigSynch;
- private javax.swing.JPanel pnlConfigSynchDetails;
- private javax.swing.JPanel pnlConfigSynchListing;
- private javax.swing.JPanel pnlConfigTransfers;
- private javax.swing.JPanel pnlCurrentGrid;
- private javax.swing.JPanel pnlCurrentGridToolbar;
- private javax.swing.JPanel pnlIrodsSynch;
- private javax.swing.JPanel pnlLocalSynch;
- private javax.swing.JPanel pnlParallelTransferOptions;
- private javax.swing.JPanel pnlSynchData;
- private javax.swing.JPanel pnlSynchFrequency;
- private javax.swing.JPanel pnlSynchIcon;
- private javax.swing.JPanel pnlSynchMode;
- private javax.swing.JPanel pnlSynchName;
- private javax.swing.JPanel pnlSynchRefresh;
- private javax.swing.JPanel pnlTop;
- private javax.swing.JPanel pnlTransferManagement;
- private javax.swing.JRadioButton radioBackup;
- private javax.swing.JRadioButton radioFeed;
- private javax.swing.JRadioButton radioSynch;
- private javax.swing.JScrollPane scrollSynchTable;
- private javax.swing.JSpinner spinnerIrodsMaxParallelThreads;
- private javax.swing.JSpinner spinnerIrodsParallelSocketTimeout;
- private javax.swing.JSpinner spinnerIrodsSocketTimeout;
- private javax.swing.JTabbedPane tabConfig;
- private javax.swing.JTextField txtGetBufferSize;
- private javax.swing.JTextField txtInputToOutputCopyBufferSize;
- private javax.swing.JTextField txtInternalCacheBufferSize;
- private javax.swing.JTextField txtInternalInputBufferSize;
- private javax.swing.JTextField txtInternalOutputBufferSize;
- private javax.swing.JTextField txtIrodsPath;
- private javax.swing.JTextField txtLocalFileInputBufferSize;
- private javax.swing.JTextField txtLocalFileOutputBufferSize;
- private javax.swing.JTextField txtLocalPath;
- private javax.swing.JTextField txtPutBufferSize;
- private javax.swing.JTextField txtSynchName;
-
- // End of variables declaration//GEN-END:variables
-
- private void initWithConfigData() {
- resetTransferPipelineEditColors();
- IdropConfig idropConfig = idropCore.getIdropConfig();
- checkShowGUI.setSelected(idropConfig.isShowGuiAtStartup());
- checkLogSuccessfulTransfer.setSelected(idropConfig
- .isLogSuccessfulTransfers());
- checkUseExecutorPool.setSelected(idropConfig.isParallelUsePool());
- checkVerifyChecksumOnTransfer.setSelected(idropConfig
- .isVerifyChecksum());
- checkShowFileProgress.setSelected(idropConfig
- .isIntraFileStatusCallbacks());
- checkAllowRerouting.setSelected(idropConfig
- .isAllowConnectionRerouting());
- checkUseExecutorPool.setSelected(idropConfig.isParallelUsePool());
- spinnerIrodsSocketTimeout.setValue(idropConfig
- .getIrodsConnectionTimeout());
- spinnerIrodsParallelSocketTimeout.setValue(idropConfig
- .getIrodsParallelConnectionTimeout());
- spinnerIrodsMaxParallelThreads.setValue(idropConfig
- .getIrodsParallelTransferMaxThreads());
- checkAllowParallelTransfers.setSelected(idropConfig
- .isUseParallelTransfers());
- checkConnectionRestart.setSelected(idropConfig.isConnectionRestart());
- checkUseNIOForParallelTransfers.setSelected(idropConfig
- .isUseNIOForParallelTransfers());
- txtInternalInputBufferSize.setText(String.valueOf(idropConfig
- .getInternalInputStreamBufferSize()));
- txtInternalOutputBufferSize.setText(String.valueOf(idropConfig
- .getInternalOutputStreamBufferSize()));
- txtLocalFileInputBufferSize.setText(String.valueOf(idropConfig
- .getLocalFileInputStreamBufferSize()));
- txtLocalFileOutputBufferSize.setText(String.valueOf(idropConfig
- .getLocalFileOutputStreamBufferSize()));
- txtGetBufferSize
- .setText(String.valueOf(idropConfig.getGetBufferSize()));
- txtPutBufferSize
- .setText(String.valueOf(idropConfig.getPutBufferSize()));
- txtInputToOutputCopyBufferSize.setText(String.valueOf(idropConfig
- .getInputToOutputCopyBufferByteSize()));
- txtInternalCacheBufferSize.setText(String.valueOf(idropConfig
- .getInternalCacheBufferSize()));
- refreshAccountData();
- }
-
- /**
- * Reset colors in synch panel when re-validating
- */
- private void resetSynchPanel() {
- txtLocalPath.setBackground(Color.WHITE);
- txtIrodsPath.setBackground(Color.WHITE);
- txtSynchName.setBackground(Color.WHITE);
- }
-
- /**
- * Clear synch panel values and colors
- */
- private void clearAndResetSynchPanel() {
- resetSynchPanel();
- txtLocalPath.setText("");
- txtIrodsPath.setText("");
- txtSynchName.setText("");
- radioBackup.setSelected(true);
- lblSynchDate.setText("");
- pnlSynchIcon.removeAll();
- pnlSynchIcon.validate();
- jcomboSynchFrequency.setSelectedIndex(0);
- }
-
- private void refreshAccountData() {
-
- if (idropCore.getIrodsAccount() == null) {
- lblHost.setText("");
- lblPort.setText("");
- lblZone.setText("");
- comboPrefsDefaultResource.setModel(new DefaultComboBoxModel());
- lblUserName.setText("");
- } else {
- lblHost.setText(idropCore.getIrodsAccount().getHost());
- lblPort.setText(String.valueOf(idropCore.getIrodsAccount()
- .getPort()));
- lblZone.setText(idropCore.getIrodsAccount().getZone());
- lblUserName.setText(idropCore.getIrodsAccount().getUserName());
- try {
- ResourceAO resourceAO = idropCore.getIRODSAccessObjectFactory()
- .getResourceAO(idropCore.getIrodsAccount());
- log.info("getting a list of all resources in the zone");
- List<String> resources = resourceAO.listResourceNames();
- comboPrefsDefaultResource.setModel(new DefaultComboBoxModel(
- resources.toArray()));
- comboPrefsDefaultResource.setSelectedItem(idropCore
- .getIrodsAccount().getDefaultStorageResource());
- } catch (JargonException ex) {
- log.error("error getting resource list", ex);
- 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(final int i) {
- // make sure the most up-to-date information is displayed
- int modelIdx = getSynchTable().convertRowIndexToModel(i);
- SynchConfigTableModel model = (SynchConfigTableModel) getSynchTable()
- .getModel();
-
- selectedSynchronization = model.getSynchronizationAt(modelIdx);
-
- if (selectedSynchronization == null) {
- model.removeRow(modelIdx);
- return;
- }
-
- // initialize data
- txtLocalPath.setText(selectedSynchronization.getLocalSynchDirectory());
- txtIrodsPath.setText(selectedSynchronization.getIrodsSynchDirectory());
- txtSynchName.setText(selectedSynchronization.getName());
-
- if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_HOUR) {
- jcomboSynchFrequency.setSelectedIndex(0);
- } else if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_WEEK) {
- jcomboSynchFrequency.setSelectedIndex(1);
- } else if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_DAY) {
- jcomboSynchFrequency.setSelectedIndex(2);
- } else if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_TWO_MINUTES) {
- jcomboSynchFrequency.setSelectedIndex(3);
- } else {
- // default to hourly to avoid errors
- log.error("unknown frequency type for synch:{}",
- selectedSynchronization.getFrequencyType());
- jcomboSynchFrequency.setSelectedIndex(0);
- }
-
- if (selectedSynchronization.getSynchronizationMode() == SynchronizationType.BI_DIRECTIONAL) {
- radioSynch.setSelected(true);
- } else if (selectedSynchronization.getSynchronizationMode() == SynchronizationType.ONE_WAY_IRODS_TO_LOCAL) {
- radioFeed.setSelected(true);
- } else if (selectedSynchronization.getSynchronizationMode() == SynchronizationType.ONE_WAY_LOCAL_TO_IRODS) {
- radioBackup.setSelected(true);
- } else {
- log.error("unknown synchronization mode for synch:{}",
- selectedSynchronization.getSynchronizationMode());
- throw new IdropRuntimeException("unknown synchronization mode");
- }
-
- btnDeleteSynch.setEnabled(true);
- btnUpdateSynch.setEnabled(true);
- btnSynchNow.setEnabled(true);
-
- setSynchIcon(selectedSynchronization);
- if (selectedSynchronization.getLastSynchronized() == null) {
- lblSynchDate.setText("None");
- } else {
- lblSynchDate.setText(dateFormat.format(selectedSynchronization
- .getLastSynchronized()));
- }
-
- }
-
- protected void setLockStatusSynchPanel(final boolean lockStatus) {
- txtSynchName.setEnabled(lockStatus);
- txtLocalPath.setEnabled(lockStatus);
- btnChooseLocalSynch.setEnabled(lockStatus);
- radioBackup.setEnabled(lockStatus);
- // radioFeed.setEnabled(lockStatus);
- // radioSynch.setEnabled(lockStatus);
- jcomboSynchFrequency.setEnabled(lockStatus);
- txtIrodsPath.setEnabled(lockStatus);
- btnChooseIrodsSynch.setEnabled(lockStatus);
- btnDeleteSynch.setEnabled(lockStatus);
- btnUpdateSynch.setEnabled(lockStatus);
- btnSynchNow.setEnabled(lockStatus);
- // btnSynchDetails.setEnabled(lockStatus);
- }
-
- private void setSynchIcon(final Synchronization synchronization) {
-
- JLabel labelToUse = null;
-
- SynchManagerService synchManagerService = idropCore
- .getTransferManager().getTransferServiceFactory()
- .instanceSynchManagerService();
- try {
- boolean isRunning = synchManagerService
- .isSynchRunning(synchronization);
- if (isRunning) {
- labelToUse = IconHelper.getRunningIcon();
- } else if (synchronization.getLastSynchronizationStatus() == null) {
- labelToUse = IconHelper.getOkIcon();
- } else if (synchronization.getLastSynchronizationStatus() == TransferStatus.ERROR) {
- labelToUse = IconHelper.getErrorIcon();
- } else {
- labelToUse = IconHelper.getOkIcon();
- }
- } catch (SynchException ex) {
- log.error("error checking if synch is already running:{}",
- synchronization, ex);
- throw new IdropRuntimeException(
- "exception checking if synch is already running", ex);
- }
-
- pnlSynchIcon.removeAll();
- lblSynchStatus = labelToUse;
- pnlSynchIcon.add(lblSynchStatus);
- pnlSynchIcon.validate();
-
- }
+ private final IDROPCore idropCore;
+ private static final org.slf4j.Logger log = LoggerFactory.getLogger(IDROPConfigurationPanel.class);
+ private JTable jTableSynch = null;
+ private Synchronization selectedSynchronization = null;
+ private DateFormat dateFormat = SimpleDateFormat.getDateTimeInstance();
+ private final iDrop idropGui;
+
+ /**
+ * Creates new form IDROPConfigurationPanel
+ */
+ public IDROPConfigurationPanel(java.awt.Frame parent, boolean modal, IDROPCore idropCore) {
+ super(parent, modal);
+ this.idropCore = idropCore;
+ this.idropGui = (iDrop) parent;
+ initComponents();
+ initPublicLinkComponents();
+ initWithConfigData();
+ }
+
+ private void initPublicLinkComponents(){
+ pnlConfigPublicLinks = new JPanel();
+ pnlConfigPublicLinks.setLayout(new FlowLayout());
+ txtPublicLinks = new JTextField("",30);
+
+ txtPublicLinks.addFocusListener(new FocusListener() {
+
+ @Override
+ public void focusGained(FocusEvent focusEvent) {
+ //noting to do
+ }
+
+ @Override
+ public void focusLost(FocusEvent focusEvent) {
+ JTextField tgt = (JTextField) focusEvent.getSource();
+ try {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IDROP_PUBLIC_LINK_SERVICE, tgt.getText());
+ } catch (IdropException e) {
+ throw new IdropRuntimeException(e);
+ }
+ }
+
+ });
+ pnlConfigPublicLinks.add(txtPublicLinks);
+ tabConfig.addTab("Public links", pnlConfigPublicLinks);
+ }
+
+ private boolean checkIfSynchChanged() throws IdropRuntimeException {
+ // compare data and update synch first if necessary
+
+ boolean areEqual = true;
+
+ if (!selectedSynchronization.getLocalSynchDirectory().equals(txtLocalPath.getText())) {
+ areEqual = false;
+ }
+
+ if (!selectedSynchronization.getName().equals(txtSynchName.getText())) {
+ areEqual = false;
+ }
+
+ if (!selectedSynchronization.getIrodsSynchDirectory().equals(txtIrodsPath.getText())) {
+ areEqual = false;
+ }
+
+ SynchronizationType currentSynchronizationType = getSynchTypeFromGUI();
+
+ if (currentSynchronizationType != selectedSynchronization.getSynchronizationMode()) {
+ areEqual = false;
+ }
+
+ FrequencyType currentFrequencyType = null;
+ currentFrequencyType = getSynchFrequencyFromGUI();
+
+ if (selectedSynchronization.getFrequencyType() != currentFrequencyType) {
+ areEqual = false;
+ }
+
+ return areEqual;
+ }
+
+ private FrequencyType getSynchFrequencyFromGUI() {
+ FrequencyType currentFrequencyType = null;
+ if (jcomboSynchFrequency.getSelectedIndex() == 0) {
+ currentFrequencyType = FrequencyType.EVERY_HOUR;
+ } else if (jcomboSynchFrequency.getSelectedIndex() == 1) {
+ currentFrequencyType = FrequencyType.EVERY_WEEK;
+ } else if (jcomboSynchFrequency.getSelectedIndex() == 2) {
+ currentFrequencyType = FrequencyType.EVERY_DAY;
+ } else if (jcomboSynchFrequency.getSelectedIndex() == 3) {
+ currentFrequencyType = FrequencyType.EVERY_TWO_MINUTES;
+ }
+ return currentFrequencyType;
+ }
+
+ private SynchronizationType getSynchTypeFromGUI() throws IdropRuntimeException {
+ SynchronizationType currentSynchronizationType;
+ if (radioBackup.isSelected()) {
+ currentSynchronizationType = SynchronizationType.ONE_WAY_LOCAL_TO_IRODS;
+ } else if (radioFeed.isSelected()) {
+ currentSynchronizationType = SynchronizationType.ONE_WAY_IRODS_TO_LOCAL;
+ } else if (radioSynch.isSelected()) {
+ currentSynchronizationType = SynchronizationType.BI_DIRECTIONAL;
+ } else {
+ log.error("unknown synchronization type in GUI");
+ throw new IdropRuntimeException("unknown synchroization type in GUI");
+ }
+ return currentSynchronizationType;
+ }
+
+ /**
+ * 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;
+
+ buttonGroupSynchMode = new javax.swing.ButtonGroup();
+ pnlTop = new javax.swing.JPanel();
+ pnlCenter = new javax.swing.JPanel();
+ tabConfig = new javax.swing.JTabbedPane();
+ pnlConfigIdrop = new javax.swing.JPanel();
+ checkShowGUI = new javax.swing.JCheckBox();
+ checkShowFileProgress = new javax.swing.JCheckBox();
+ pnlConfigGrids = new javax.swing.JPanel();
+ pnlCurrentGrid = new javax.swing.JPanel();
+ lblHostLabel = new javax.swing.JLabel();
+ lblHost = new javax.swing.JLabel();
+ lblPortLabel = new javax.swing.JLabel();
+ lblPort = new javax.swing.JLabel();
+ lblZoneLabel = new javax.swing.JLabel();
+ lblZone = new javax.swing.JLabel();
+ lblResourceLabel = new javax.swing.JLabel();
+ lblUserNameLabel = new javax.swing.JLabel();
+ lblUserName = new javax.swing.JLabel();
+ pnlCurrentGridToolbar = new javax.swing.JPanel();
+ btnLogout = new javax.swing.JButton();
+ btnChangePassword = new javax.swing.JButton();
+ comboPrefsDefaultResource = new javax.swing.JComboBox();
+ pnlConfigTransfers = new javax.swing.JPanel();
+ pnlTransferManagement = new javax.swing.JPanel();
+ checkLogSuccessfulTransfer = new javax.swing.JCheckBox();
+ checkVerifyChecksumOnTransfer = new javax.swing.JCheckBox();
+ checkAllowRerouting = new javax.swing.JCheckBox();
+ checkConnectionRestart = new javax.swing.JCheckBox();
+ plnPipelineConfiguration = new javax.swing.JPanel();
+ lblIrodsSocketTimeout = new javax.swing.JLabel();
+ spinnerIrodsSocketTimeout = new javax.swing.JSpinner();
+ pnlParallelTransferOptions = new javax.swing.JPanel();
+ checkAllowParallelTransfers = new javax.swing.JCheckBox();
+ checkUseNIOForParallelTransfers = new javax.swing.JCheckBox();
+ checkUseExecutorPool = new javax.swing.JCheckBox();
+ lblIrodsParallelSocketTimeout = new javax.swing.JLabel();
+ spinnerIrodsParallelSocketTimeout = new javax.swing.JSpinner();
+ lblMaximumParallelTransferThreads = new javax.swing.JLabel();
+ spinnerIrodsMaxParallelThreads = new javax.swing.JSpinner();
+ pnlBuffers = new javax.swing.JPanel();
+ lblInternalInputBufferSize = new javax.swing.JLabel();
+ txtInternalInputBufferSize = new javax.swing.JTextField();
+ lblInternalOutputBufferSize = new javax.swing.JLabel();
+ txtInternalOutputBufferSize = new javax.swing.JTextField();
+ lblLocalFileInputBufferSize = new javax.swing.JLabel();
+ txtLocalFileInputBufferSize = new javax.swing.JTextField();
+ lblLocalFileOutputBufferSize = new javax.swing.JLabel();
+ txtLocalFileOutputBufferSize = new javax.swing.JTextField();
+ lblPutBufferSize = new javax.swing.JLabel();
+ txtPutBufferSize = new javax.swing.JTextField();
+ lblGetBufferSize = new javax.swing.JLabel();
+ txtGetBufferSize = new javax.swing.JTextField();
+ lblIputToOutputCopyBufferSize = new javax.swing.JLabel();
+ txtInputToOutputCopyBufferSize = new javax.swing.JTextField();
+ lblInternalCacheBufferSize = new javax.swing.JLabel();
+ txtInternalCacheBufferSize = new javax.swing.JTextField();
+ btnRestoreDefaults = new javax.swing.JButton();
+ btnApplyPipelineConfig = new javax.swing.JButton();
+ pnlConfigSynch = new javax.swing.JPanel();
+ pnlConfigSynchListing = new javax.swing.JPanel();
+ pnlSynchRefresh = new javax.swing.JPanel();
+ btnRefreshSynch = new javax.swing.JButton();
+ scrollSynchTable = new javax.swing.JScrollPane();
+ pnlConfigSynchDetails = new javax.swing.JPanel();
+ pnlSynchData = new javax.swing.JPanel();
+ pnlSynchName = new javax.swing.JPanel();
+ lblSynchName = new javax.swing.JLabel();
+ txtSynchName = new javax.swing.JTextField();
+ lblSynchDateLabel = new javax.swing.JLabel();
+ lblSynchDate = new javax.swing.JLabel();
+ pnlSynchIcon = new javax.swing.JPanel();
+ lblSynchStatus = new javax.swing.JLabel();
+ pnlLocalSynch = new javax.swing.JPanel();
+ txtLocalPath = new javax.swing.JTextField();
+ btnChooseLocalSynch = new javax.swing.JButton();
+ pnlSynchMode = new javax.swing.JPanel();
+ jLabel1 = new javax.swing.JLabel();
+ radioBackup = new javax.swing.JRadioButton();
+ radioFeed = new javax.swing.JRadioButton();
+ radioSynch = new javax.swing.JRadioButton();
+ pnlSynchFrequency = new javax.swing.JPanel();
+ jLabel5 = new javax.swing.JLabel();
+ jcomboSynchFrequency = new javax.swing.JComboBox();
+ pnlIrodsSynch = new javax.swing.JPanel();
+ txtIrodsPath = new javax.swing.JTextField();
+ btnChooseIrodsSynch = new javax.swing.JButton();
+ panelSynchToolbar = new javax.swing.JPanel();
+ btnDeleteSynch = new javax.swing.JButton();
+ btnNewSynch = new javax.swing.JButton();
+ btnUpdateSynch = new javax.swing.JButton();
+ btnSynchNow = new javax.swing.JButton();
+ pnlBottom = new javax.swing.JPanel();
+ btnOK = new javax.swing.JButton();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ setTitle(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.title")); // NOI18N
+
+ org.jdesktop.layout.GroupLayout pnlTopLayout = new org.jdesktop.layout.GroupLayout(pnlTop);
+ pnlTop.setLayout(pnlTopLayout);
+ pnlTopLayout.setHorizontalGroup(
+ pnlTopLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(0, 1067, Short.MAX_VALUE)
+ );
+ pnlTopLayout.setVerticalGroup(
+ pnlTopLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(0, 0, Short.MAX_VALUE)
+ );
+
+ getContentPane().add(pnlTop, java.awt.BorderLayout.NORTH);
+
+ pnlConfigIdrop.setLayout(new java.awt.GridBagLayout());
+
+ checkShowGUI.setMnemonic('s');
+ checkShowGUI.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkShowGUI.text")); // NOI18N
+ checkShowGUI.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkShowGUI.toolTipText")); // NOI18N
+ checkShowGUI.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkShowGUIItemStateChanged(evt);
+ }
+ });
+ checkShowGUI.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ checkShowGUIActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlConfigIdrop.add(checkShowGUI, gridBagConstraints);
+
+ checkShowFileProgress.setMnemonic('w');
+ checkShowFileProgress.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkShowFileProgress.text")); // NOI18N
+ checkShowFileProgress.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkShowFileProgress.toolTipText")); // NOI18N
+ checkShowFileProgress.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkShowFileProgressItemStateChanged(evt);
+ }
+ });
+ checkShowFileProgress.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ checkShowFileProgressActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlConfigIdrop.add(checkShowFileProgress, gridBagConstraints);
+
+ tabConfig.addTab(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlConfigIdrop.TabConstraints.tabTitle"), pnlConfigIdrop); // NOI18N
+
+ pnlConfigGrids.setLayout(new java.awt.BorderLayout());
+
+ pnlCurrentGrid.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlCurrentGrid.border.title"))); // NOI18N
+ pnlCurrentGrid.setLayout(new java.awt.GridBagLayout());
+
+ lblHostLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
+ lblHostLabel.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblHostLabel.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlCurrentGrid.add(lblHostLabel, gridBagConstraints);
+
+ lblHost.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblHost.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlCurrentGrid.add(lblHost, gridBagConstraints);
+ lblHost.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblHost.AccessibleContext.accessibleDescription")); // NOI18N
+
+ lblPortLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
+ lblPortLabel.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblPortLabel.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlCurrentGrid.add(lblPortLabel, gridBagConstraints);
+
+ lblPort.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblPort.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlCurrentGrid.add(lblPort, gridBagConstraints);
+ lblPort.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblPort.AccessibleContext.accessibleDescription")); // NOI18N
+
+ lblZoneLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
+ lblZoneLabel.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblZoneLabel.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlCurrentGrid.add(lblZoneLabel, gridBagConstraints);
+
+ lblZone.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblZone.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlCurrentGrid.add(lblZone, gridBagConstraints);
+ lblZone.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblZone.AccessibleContext.accessibleDescription")); // NOI18N
+
+ lblResourceLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
+ lblResourceLabel.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblResourceLabel.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlCurrentGrid.add(lblResourceLabel, gridBagConstraints);
+
+ lblUserNameLabel.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
+ lblUserNameLabel.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblUserNameLabel.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 3;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlCurrentGrid.add(lblUserNameLabel, gridBagConstraints);
+
+ lblUserName.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblUserName.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 3;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlCurrentGrid.add(lblUserName, gridBagConstraints);
+ lblUserName.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblUserName.AccessibleContext.accessibleName")); // NOI18N
+
+ btnLogout.setMnemonic('l');
+ btnLogout.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnLogout.text")); // NOI18N
+ btnLogout.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnLogout.toolTipText")); // NOI18N
+ btnLogout.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnLogoutActionPerformed(evt);
+ }
+ });
+ pnlCurrentGridToolbar.add(btnLogout);
+
+ btnChangePassword.setMnemonic('c');
+ btnChangePassword.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnChangePassword.text")); // NOI18N
+ btnChangePassword.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnChangePassword.toolTipText")); // NOI18N
+ btnChangePassword.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnChangePasswordActionPerformed(evt);
+ }
+ });
+ pnlCurrentGridToolbar.add(btnChangePassword);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 5;
+ gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
+ gridBagConstraints.insets = new java.awt.Insets(20, 0, 0, 0);
+ pnlCurrentGrid.add(pnlCurrentGridToolbar, gridBagConstraints);
+
+ comboPrefsDefaultResource.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ comboPrefsDefaultResource.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ comboPrefsDefaultResourceActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlCurrentGrid.add(comboPrefsDefaultResource, gridBagConstraints);
+
+ pnlConfigGrids.add(pnlCurrentGrid, java.awt.BorderLayout.CENTER);
+
+ tabConfig.addTab(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlConfigGrids.TabConstraints.tabTitle"), pnlConfigGrids); // NOI18N
+
+ pnlConfigTransfers.setLayout(new java.awt.GridBagLayout());
+
+ pnlTransferManagement.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlTransferManagement.border.title"))); // NOI18N
+ pnlTransferManagement.setLayout(new javax.swing.BoxLayout(pnlTransferManagement, javax.swing.BoxLayout.PAGE_AXIS));
+
+ checkLogSuccessfulTransfer.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkLogSuccessfulTransfer.text")); // NOI18N
+ checkLogSuccessfulTransfer.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkLogSuccessfulTransfer.toolTipText")); // NOI18N
+ checkLogSuccessfulTransfer.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkLogSuccessfulTransferItemStateChanged(evt);
+ }
+ });
+ checkLogSuccessfulTransfer.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ checkLogSuccessfulTransferActionPerformed(evt);
+ }
+ });
+ pnlTransferManagement.add(checkLogSuccessfulTransfer);
+
+ checkVerifyChecksumOnTransfer.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkVerifyChecksumOnTransfer.text")); // NOI18N
+ checkVerifyChecksumOnTransfer.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkVerifyChecksumOnTransferItemStateChanged(evt);
+ }
+ });
+ checkVerifyChecksumOnTransfer.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ checkVerifyChecksumOnTransferActionPerformed(evt);
+ }
+ });
+ pnlTransferManagement.add(checkVerifyChecksumOnTransfer);
+
+ checkAllowRerouting.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkAllowRerouting.text")); // NOI18N
+ checkAllowRerouting.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkAllowRerouting.toolTipText")); // NOI18N
+ checkAllowRerouting.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkAllowReroutingItemStateChanged(evt);
+ }
+ });
+ pnlTransferManagement.add(checkAllowRerouting);
+
+ checkConnectionRestart.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkConnectionRestart.text")); // NOI18N
+ checkConnectionRestart.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkConnectionRestart.toolTipText")); // NOI18N
+ checkConnectionRestart.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkConnectionRestartItemStateChanged(evt);
+ }
+ });
+ checkConnectionRestart.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ checkConnectionRestartActionPerformed(evt);
+ }
+ });
+ pnlTransferManagement.add(checkConnectionRestart);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
+ gridBagConstraints.gridheight = java.awt.GridBagConstraints.RELATIVE;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlConfigTransfers.add(pnlTransferManagement, gridBagConstraints);
+
+ plnPipelineConfiguration.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.plnPipelineConfiguration.border.title"))); // NOI18N
+ plnPipelineConfiguration.setLayout(new java.awt.GridBagLayout());
+
+ lblIrodsSocketTimeout.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblIrodsSocketTimeout.text")); // NOI18N
+ lblIrodsSocketTimeout.setPreferredSize(null);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ plnPipelineConfiguration.add(lblIrodsSocketTimeout, gridBagConstraints);
+
+ spinnerIrodsSocketTimeout.setModel(new javax.swing.SpinnerNumberModel(0, 0, 600, 10));
+ spinnerIrodsSocketTimeout.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.spinnerIrodsSocketTimeout.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ plnPipelineConfiguration.add(spinnerIrodsSocketTimeout, gridBagConstraints);
+
+ pnlParallelTransferOptions.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlParallelTransferOptions.border.title"))); // NOI18N
+ pnlParallelTransferOptions.setLayout(new java.awt.GridBagLayout());
+
+ checkAllowParallelTransfers.setMnemonic('p');
+ checkAllowParallelTransfers.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkAllowParallelTransfers.text")); // NOI18N
+ checkAllowParallelTransfers.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkAllowParallelTransfers.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.gridwidth = 2;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlParallelTransferOptions.add(checkAllowParallelTransfers, gridBagConstraints);
+
+ checkUseNIOForParallelTransfers.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkUseNIOForParallelTransfers.text")); // NOI18N
+ checkUseNIOForParallelTransfers.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkUseNIOForParallelTransfers.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.gridwidth = 2;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlParallelTransferOptions.add(checkUseNIOForParallelTransfers, gridBagConstraints);
+
+ checkUseExecutorPool.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.checkUseExecutorPool.text")); // NOI18N
+ checkUseExecutorPool.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ checkUseExecutorPoolItemStateChanged(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlParallelTransferOptions.add(checkUseExecutorPool, gridBagConstraints);
+
+ lblIrodsParallelSocketTimeout.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblIrodsParallelSocketTimeout.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+ gridBagConstraints.insets = new java.awt.Insets(28, 0, 0, 0);
+ pnlParallelTransferOptions.add(lblIrodsParallelSocketTimeout, gridBagConstraints);
+
+ spinnerIrodsParallelSocketTimeout.setModel(new javax.swing.SpinnerNumberModel(0, 0, 600, 10));
+ spinnerIrodsParallelSocketTimeout.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.spinnerIrodsParallelSocketTimeout.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.ipadx = 159;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+ gridBagConstraints.insets = new java.awt.Insets(22, 0, 0, 0);
+ pnlParallelTransferOptions.add(spinnerIrodsParallelSocketTimeout, gridBagConstraints);
+
+ lblMaximumParallelTransferThreads.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblMaximumParallelTransferThreads.text")); // NOI18N
+ lblMaximumParallelTransferThreads.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblMaximumParallelTransferThreads.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+ gridBagConstraints.insets = new java.awt.Insets(6, 180, 0, 0);
+ pnlParallelTransferOptions.add(lblMaximumParallelTransferThreads, gridBagConstraints);
+
+ spinnerIrodsMaxParallelThreads.setModel(new javax.swing.SpinnerNumberModel(4, 0, 16, 1));
+ spinnerIrodsMaxParallelThreads.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.spinnerIrodsMaxParallelThreads.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.gridheight = 2;
+ gridBagConstraints.ipadx = 171;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+ gridBagConstraints.insets = new java.awt.Insets(0, 0, 22, 0);
+ pnlParallelTransferOptions.add(spinnerIrodsMaxParallelThreads, gridBagConstraints);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ plnPipelineConfiguration.add(pnlParallelTransferOptions, gridBagConstraints);
+
+ pnlBuffers.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlBuffers.border.title"))); // NOI18N
+ pnlBuffers.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlBuffers.toolTipText")); // NOI18N
+ pnlBuffers.setLayout(new java.awt.GridBagLayout());
+
+ lblInternalInputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblInternalInputBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+ pnlBuffers.add(lblInternalInputBufferSize, gridBagConstraints);
+
+ txtInternalInputBufferSize.setColumns(20);
+ txtInternalInputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInternalInputBufferSize.text")); // NOI18N
+ txtInternalInputBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInternalInputBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ pnlBuffers.add(txtInternalInputBufferSize, gridBagConstraints);
+
+ lblInternalOutputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblInternalOutputBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+ pnlBuffers.add(lblInternalOutputBufferSize, gridBagConstraints);
+
+ txtInternalOutputBufferSize.setColumns(20);
+ txtInternalOutputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInternalOutputBufferSize.text")); // NOI18N
+ txtInternalOutputBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInternalOutputBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ pnlBuffers.add(txtInternalOutputBufferSize, gridBagConstraints);
+
+ lblLocalFileInputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblLocalFileInputBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlBuffers.add(lblLocalFileInputBufferSize, gridBagConstraints);
+
+ txtLocalFileInputBufferSize.setColumns(20);
+ txtLocalFileInputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtLocalFileInputBufferSize.text")); // NOI18N
+ txtLocalFileInputBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtLocalFileInputBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlBuffers.add(txtLocalFileInputBufferSize, gridBagConstraints);
+
+ lblLocalFileOutputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblLocalFileOutputBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 3;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlBuffers.add(lblLocalFileOutputBufferSize, gridBagConstraints);
+
+ txtLocalFileOutputBufferSize.setColumns(20);
+ txtLocalFileOutputBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtLocalFileOutputBufferSize.text")); // NOI18N
+ txtLocalFileOutputBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtLocalFileOutputBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 3;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlBuffers.add(txtLocalFileOutputBufferSize, gridBagConstraints);
+
+ lblPutBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblPutBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 5;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlBuffers.add(lblPutBufferSize, gridBagConstraints);
+
+ txtPutBufferSize.setColumns(20);
+ txtPutBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtPutBufferSize.text")); // NOI18N
+ txtPutBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtPutBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 5;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlBuffers.add(txtPutBufferSize, gridBagConstraints);
+
+ lblGetBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblGetBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlBuffers.add(lblGetBufferSize, gridBagConstraints);
+
+ txtGetBufferSize.setColumns(20);
+ txtGetBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtGetBufferSize.text")); // NOI18N
+ txtGetBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtGetBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlBuffers.add(txtGetBufferSize, gridBagConstraints);
+
+ lblIputToOutputCopyBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblIputToOutputCopyBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlBuffers.add(lblIputToOutputCopyBufferSize, gridBagConstraints);
+
+ txtInputToOutputCopyBufferSize.setColumns(20);
+ txtInputToOutputCopyBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInputToOutputCopyBufferSize.text")); // NOI18N
+ txtInputToOutputCopyBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInputToOutputCopyBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlBuffers.add(txtInputToOutputCopyBufferSize, gridBagConstraints);
+
+ lblInternalCacheBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblInternalCacheBufferSize.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlBuffers.add(lblInternalCacheBufferSize, gridBagConstraints);
+
+ txtInternalCacheBufferSize.setColumns(20);
+ txtInternalCacheBufferSize.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInternalCacheBufferSize.text")); // NOI18N
+ txtInternalCacheBufferSize.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtInternalCacheBufferSize.toolTipText")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlBuffers.add(txtInternalCacheBufferSize, gridBagConstraints);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.gridwidth = 3;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ plnPipelineConfiguration.add(pnlBuffers, gridBagConstraints);
+
+ btnRestoreDefaults.setMnemonic('a');
+ btnRestoreDefaults.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnRestoreDefaults.text")); // NOI18N
+ btnRestoreDefaults.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnRestoreDefaults.toolTipText")); // NOI18N
+ btnRestoreDefaults.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnRestoreDefaultsActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 3;
+ plnPipelineConfiguration.add(btnRestoreDefaults, gridBagConstraints);
+
+ btnApplyPipelineConfig.setMnemonic('a');
+ btnApplyPipelineConfig.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnApplyPipelineConfig.text")); // NOI18N
+ btnApplyPipelineConfig.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnApplyPipelineConfig.toolTipText")); // NOI18N
+ btnApplyPipelineConfig.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnApplyPipelineConfigActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 3;
+ gridBagConstraints.gridy = 3;
+ plnPipelineConfiguration.add(btnApplyPipelineConfig, gridBagConstraints);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlConfigTransfers.add(plnPipelineConfiguration, gridBagConstraints);
+
+ tabConfig.addTab(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlConfigTransfers.TabConstraints.tabTitle"), pnlConfigTransfers); // NOI18N
+
+ pnlConfigSynch.addComponentListener(new java.awt.event.ComponentAdapter() {
+ public void componentShown(java.awt.event.ComponentEvent evt) {
+ pnlConfigSynchComponentShown(evt);
+ }
+ });
+ pnlConfigSynch.setLayout(new java.awt.BorderLayout());
+
+ pnlConfigSynchListing.setMinimumSize(new java.awt.Dimension(23, 100));
+ pnlConfigSynchListing.setLayout(new java.awt.BorderLayout());
+
+ btnRefreshSynch.setMnemonic('r');
+ btnRefreshSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnRefreshSynch.text")); // NOI18N
+ btnRefreshSynch.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnRefreshSynch.toolTipText")); // NOI18N
+ btnRefreshSynch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnRefreshSynchActionPerformed(evt);
+ }
+ });
+ pnlSynchRefresh.add(btnRefreshSynch);
+
+ pnlConfigSynchListing.add(pnlSynchRefresh, java.awt.BorderLayout.NORTH);
+
+ scrollSynchTable.setMinimumSize(new java.awt.Dimension(23, 100));
+ scrollSynchTable.setPreferredSize(new java.awt.Dimension(100, 100));
+ pnlConfigSynchListing.add(scrollSynchTable, java.awt.BorderLayout.CENTER);
+
+ pnlConfigSynch.add(pnlConfigSynchListing, java.awt.BorderLayout.CENTER);
+
+ pnlConfigSynchDetails.setLayout(new java.awt.BorderLayout());
+
+ pnlSynchData.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
+ pnlSynchData.setLayout(new java.awt.GridBagLayout());
+
+ pnlSynchName.setLayout(new java.awt.GridBagLayout());
+
+ lblSynchName.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblSynchName.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlSynchName.add(lblSynchName, gridBagConstraints);
+
+ txtSynchName.setColumns(40);
+ txtSynchName.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtSynchName.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlSynchName.add(txtSynchName, gridBagConstraints);
+
+ lblSynchDateLabel.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblSynchDateLabel.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlSynchName.add(lblSynchDateLabel, gridBagConstraints);
+
+ lblSynchDate.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblSynchDate.text")); // NOI18N
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlSynchName.add(lblSynchDate, gridBagConstraints);
+
+ lblSynchStatus.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.lblSynchStatus.text")); // NOI18N
+ lblSynchStatus.setMaximumSize(null);
+ lblSynchStatus.setMinimumSize(new java.awt.Dimension(10, 10));
+ lblSynchStatus.setPreferredSize(new java.awt.Dimension(10, 10));
+ pnlSynchIcon.add(lblSynchStatus);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.gridwidth = 3;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlSynchName.add(pnlSynchIcon, gridBagConstraints);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 0;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ gridBagConstraints.insets = new java.awt.Insets(20, 20, 30, 20);
+ pnlSynchData.add(pnlSynchName, gridBagConstraints);
+
+ txtLocalPath.setColumns(80);
+ txtLocalPath.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtLocalPath.text")); // NOI18N
+ txtLocalPath.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtLocalPath.toolTipText")); // NOI18N
+ txtLocalPath.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ txtLocalPathActionPerformed(evt);
+ }
+ });
+ pnlLocalSynch.add(txtLocalPath);
+
+ btnChooseLocalSynch.setMnemonic('c');
+ btnChooseLocalSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnChooseLocalSynch.text")); // NOI18N
+ btnChooseLocalSynch.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnChooseLocalSynch.toolTipText")); // NOI18N
+ btnChooseLocalSynch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnChooseLocalSynchActionPerformed(evt);
+ }
+ });
+ pnlLocalSynch.add(btnChooseLocalSynch);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 1;
+ gridBagConstraints.gridwidth = 9;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 10);
+ pnlSynchData.add(pnlLocalSynch, gridBagConstraints);
+
+ pnlSynchMode.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
+ pnlSynchMode.setLayout(new java.awt.GridLayout(0, 1));
+
+ jLabel1.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.jLabel1.text")); // NOI18N
+ pnlSynchMode.add(jLabel1);
+
+ buttonGroupSynchMode.add(radioBackup);
+ radioBackup.setSelected(true);
+ radioBackup.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.radioBackup.text")); // NOI18N
+ pnlSynchMode.add(radioBackup);
+
+ buttonGroupSynchMode.add(radioFeed);
+ radioFeed.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.radioFeed.text")); // NOI18N
+ radioFeed.setEnabled(false);
+ pnlSynchMode.add(radioFeed);
+
+ buttonGroupSynchMode.add(radioSynch);
+ radioSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.radioSynch.text")); // NOI18N
+ radioSynch.setEnabled(false);
+ pnlSynchMode.add(radioSynch);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.gridwidth = 9;
+ gridBagConstraints.gridheight = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.insets = new java.awt.Insets(20, 20, 20, 20);
+ pnlSynchData.add(pnlSynchMode, gridBagConstraints);
+
+ pnlSynchFrequency.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
+ pnlSynchFrequency.setLayout(new java.awt.GridLayout(0, 1));
+
+ jLabel5.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.jLabel5.text")); // NOI18N
+ pnlSynchFrequency.add(jLabel5);
+
+ jcomboSynchFrequency.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Hourly", "Weekly", "Daily", "Every 2 Minutes (testing)", "", "" }));
+ jcomboSynchFrequency.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.jcomboSynchFrequency.toolTipText")); // NOI18N
+ pnlSynchFrequency.add(jcomboSynchFrequency);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 4;
+ gridBagConstraints.gridwidth = 9;
+ gridBagConstraints.gridheight = 2;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.insets = new java.awt.Insets(20, 20, 20, 20);
+ pnlSynchData.add(pnlSynchFrequency, gridBagConstraints);
+
+ txtIrodsPath.setColumns(80);
+ txtIrodsPath.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtIrodsPath.text")); // NOI18N
+ txtIrodsPath.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.txtIrodsPath.toolTipText")); // NOI18N
+ txtIrodsPath.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ txtIrodsPathActionPerformed(evt);
+ }
+ });
+ pnlIrodsSynch.add(txtIrodsPath);
+
+ btnChooseIrodsSynch.setMnemonic('i');
+ btnChooseIrodsSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnChooseIrodsSynch.text")); // NOI18N
+ btnChooseIrodsSynch.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnChooseIrodsSynch.toolTipText")); // NOI18N
+ btnChooseIrodsSynch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnChooseIrodsSynchActionPerformed(evt);
+ }
+ });
+ pnlIrodsSynch.add(btnChooseIrodsSynch);
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 6;
+ gridBagConstraints.gridwidth = 9;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 10);
+ pnlSynchData.add(pnlIrodsSynch, gridBagConstraints);
+
+ pnlConfigSynchDetails.add(pnlSynchData, java.awt.BorderLayout.CENTER);
+
+ btnDeleteSynch.setMnemonic('d');
+ btnDeleteSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnDeleteSynch.text")); // NOI18N
+ btnDeleteSynch.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnDeleteSynch.toolTipText")); // NOI18N
+ btnDeleteSynch.setEnabled(false);
+ btnDeleteSynch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnDeleteSynchActionPerformed(evt);
+ }
+ });
+ panelSynchToolbar.add(btnDeleteSynch);
+
+ btnNewSynch.setMnemonic('n');
+ btnNewSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnNewSynch.text")); // NOI18N
+ btnNewSynch.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnNewSynch.toolTipText")); // NOI18N
+ btnNewSynch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnNewSynchActionPerformed(evt);
+ }
+ });
+ panelSynchToolbar.add(btnNewSynch);
+
+ btnUpdateSynch.setMnemonic('u');
+ btnUpdateSynch.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnUpdateSynch.text")); // NOI18N
+ btnUpdateSynch.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnUpdateSynch.toolTipText")); // NOI18N
+ btnUpdateSynch.setEnabled(false);
+ btnUpdateSynch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnUpdateSynchActionPerformed(evt);
+ }
+ });
+ panelSynchToolbar.add(btnUpdateSynch);
+
+ btnSynchNow.setMnemonic('s');
+ btnSynchNow.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnSynchNow.text")); // NOI18N
+ btnSynchNow.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnSynchNow.toolTipText")); // NOI18N
+ btnSynchNow.setEnabled(false);
+ btnSynchNow.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnSynchNowActionPerformed(evt);
+ }
+ });
+ panelSynchToolbar.add(btnSynchNow);
+
+ pnlConfigSynchDetails.add(panelSynchToolbar, java.awt.BorderLayout.SOUTH);
+
+ pnlConfigSynch.add(pnlConfigSynchDetails, java.awt.BorderLayout.SOUTH);
+
+ tabConfig.addTab(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.pnlConfigSynch.TabConstraints.tabTitle"), pnlConfigSynch); // NOI18N
+
+ pnlCenter.add(tabConfig);
+
+ getContentPane().add(pnlCenter, java.awt.BorderLayout.CENTER);
+
+ pnlBottom.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
+
+ btnOK.setMnemonic('O');
+ btnOK.setText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnOK.text")); // NOI18N
+ btnOK.setToolTipText(org.openide.util.NbBundle.getMessage(IDROPConfigurationPanel.class, "IDROPConfigurationPanel.btnOK.toolTipText")); // NOI18N
+ btnOK.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnOKActionPerformed(evt);
+ }
+ });
+ pnlBottom.add(btnOK);
+
+ getContentPane().add(pnlBottom, java.awt.BorderLayout.SOUTH);
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ /**
+ * Refresh the displayed synch
+ *
+ * @param evt
+ */
+ private void btnRefreshSynchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshSynchActionPerformed
+ refreshSynchConfigPanel();
+ }//GEN-LAST:event_btnRefreshSynchActionPerformed
+
+ private void checkShowFileProgressActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkShowFileProgressActionPerformed
+ //
+ }//GEN-LAST:event_checkShowFileProgressActionPerformed
+
+ private void checkShowGUIItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkShowGUIItemStateChanged
+
+ boolean isSelected = false;
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ isSelected = true;
+ }
+ log.info("updating show gui at startup to:{}", isSelected);
+ try {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.SHOW_GUI, Boolean.toString(isSelected));
+ } catch (IdropException ex) {
+ log.error("error setting show gui property", ex);
+ throw new IdropRuntimeException(ex);
+ }
+ }//GEN-LAST:event_checkShowGUIItemStateChanged
+
+ private void checkShowFileProgressItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkShowFileProgressItemStateChanged
+ boolean isSelected = false;
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ isSelected = true;
+ }
+ log.info("updating show intra-file progress to:{}", isSelected);
+ try {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.INTRA_FILE_STATUS_CALLBACKS, Boolean.toString(isSelected));
+ idropCore.getIdropConfigurationService().updateJargonPropertiesBasedOnIDROPConfig();
+ } catch (Exception ex) {
+ log.error("error setting property", ex);
+ throw new IdropRuntimeException(ex);
+ }
+ }//GEN-LAST:event_checkShowFileProgressItemStateChanged
+
+ private void checkVerifyChecksumOnTransferItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkVerifyChecksumOnTransferItemStateChanged
+ updateConfigForGivenPropertyBasedOnCheckboxStateChange(evt, IdropConfigurationService.VERIFY_CHECKSUM_ON_TRANSFER);
+ }
+
+ private void updateConfigForGivenPropertyBasedOnCheckboxStateChange(ItemEvent evt, String propertyName) throws IdropRuntimeException {
+ boolean isSelected = false;
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ isSelected = true;
+ }
+ log.info("updating verify checksum to:{}", isSelected);
+ try {
+ idropCore.getIdropConfigurationService().updateConfig(propertyName, Boolean.toString(isSelected));
+ idropCore.getIdropConfigurationService().updateJargonPropertiesBasedOnIDROPConfig();
+ } catch (Exception ex) {
+ log.error("error setting property", ex);
+ throw new IdropRuntimeException(ex);
+ }
+ }//GEN-LAST:event_checkVerifyChecksumOnTransferItemStateChanged
+
+ private void checkLogSuccessfulTransferItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkLogSuccessfulTransferItemStateChanged
+
+ updateConfigForGivenPropertyBasedOnCheckboxStateChange(evt, IdropConfigurationService.TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES);
+ }//GEN-LAST:event_checkLogSuccessfulTransferItemStateChanged
+
+ private void checkUseExecutorPoolItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkUseExecutorPoolItemStateChanged
+ updateConfigForGivenPropertyBasedOnCheckboxStateChange(evt, IdropConfigurationService.IRODS_PARALLEL_USE_POOL);
+ }//GEN-LAST:event_checkUseExecutorPoolItemStateChanged
+
+ private void checkAllowReroutingItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkAllowReroutingItemStateChanged
+ boolean isSelected = false;
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ isSelected = true;
+ }
+ log.info("updating allow rerouting to:{}", isSelected);
+ try {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ALLOW_CONNECTION_REROUTING, Boolean.toString(isSelected));
+ idropCore.getIdropConfigurationService().updateJargonPropertiesBasedOnIDROPConfig();
+ } catch (Exception ex) {
+ log.error("error setting property", ex);
+ throw new IdropRuntimeException(ex);
+ }
+ }//GEN-LAST:event_checkAllowReroutingItemStateChanged
+
+ private void resetTransferPipelineEditColors() {
+ txtInternalInputBufferSize.setBackground(Color.white);
+ txtInternalOutputBufferSize.setBackground(Color.white);
+ txtLocalFileInputBufferSize.setBackground(Color.white);
+ txtLocalFileOutputBufferSize.setBackground(Color.white);
+ txtGetBufferSize.setBackground(Color.white);
+ txtPutBufferSize.setBackground(Color.white);
+ txtInputToOutputCopyBufferSize.setBackground(Color.white);
+ txtInternalCacheBufferSize.setBackground(Color.white);
+ }
+
+ /**
+ * Update the pipeline configuration information properties based on the screen data
+ *
+ * @param evt
+ */
+ private void btnApplyPipelineConfigActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnApplyPipelineConfigActionPerformed
+ try {
+
+ resetTransferPipelineEditColors();
+ // edit and set
+
+ // internal input buffer size
+ String actual = txtInternalInputBufferSize.getText();
+ int actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_INTERNAL_INPUT_STREAM_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtInternalInputBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid internal input buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // internal output buffer size
+ actual = txtInternalOutputBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_INTERNAL_OUTPUT_STREAM_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtInternalOutputBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid internal output buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // local file input buffer size
+ actual = txtLocalFileInputBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_LOCAL_INPUT_STREAM_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtLocalFileInputBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid local file input buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // local file output buffer size
+ actual = txtLocalFileOutputBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_LOCAL_OUTPUT_STREAM_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtLocalFileOutputBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid local file output buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // get buffer size
+ actual = txtGetBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_GET_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtGetBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid get buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // put buffer size
+ actual = txtPutBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_PUT_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtPutBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid put buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // input to output copy buffer size
+ actual = txtInputToOutputCopyBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_INPUT_TO_OUTPUT_COPY_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtInputToOutputCopyBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid input to output copy buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ // internal cache buffer size
+ actual = txtInternalCacheBufferSize.getText();
+ actualAsInt = 0;
+ if (actual.isEmpty()) {
+ actualAsInt = 0;
+ } else {
+ try {
+ actualAsInt = Integer.parseInt(actual);
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_IO_INTERNAL_CACHE_BUFFER_SIZE, actual);
+ } catch (NumberFormatException nfe) {
+ txtInternalCacheBufferSize.setBackground(Color.red);
+ MessageManager.showWarning(this, "Invalid internal cache buffer size", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ }
+
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_PARALLEL_USE_PARALLEL, Boolean.toString(checkAllowParallelTransfers.isSelected()));
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_PARALLEL_USE_NIO, Boolean.toString(checkUseNIOForParallelTransfers.isSelected()));
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_PARALLEL_CONNECTION_MAX_THREADS, spinnerIrodsMaxParallelThreads.getValue().toString());
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_PARALLEL_CONNECTION_TIMEOUT, spinnerIrodsParallelSocketTimeout.getValue().toString());
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_CONNECTION_TIMEOUT, spinnerIrodsSocketTimeout.getValue().toString());
+
+ idropCore.getIdropConfigurationService().updateJargonPropertiesBasedOnIDROPConfig();
+ } catch (Exception ex) {
+ log.error("error setting property", ex);
+ throw new IdropRuntimeException(ex);
+ }
+ }//GEN-LAST:event_btnApplyPipelineConfigActionPerformed
+
+ private void btnRestoreDefaultsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRestoreDefaultsActionPerformed
+ log.info("restoring pipeline config to jargon properties settings");
+ try {
+ JargonProperties defaultJargonProperties = new DefaultPropertiesJargonConfig();
+ IdropConfigurationService configService = idropCore.getIdropConfigurationService();
+ configService.restoreIDROPConfigFromJargonProperties(defaultJargonProperties);
+ initWithConfigData();
+ MessageManager.showMessage(this, "Values restored to defaults, hit apply to update", MessageManager.TITLE_MESSAGE);
+ } catch (JargonException ex) {
+ log.error("unable to restore jargon properties", ex);
+ throw new IdropRuntimeException("unable to restore jargon properties", ex);
+ }
+
+ }//GEN-LAST:event_btnRestoreDefaultsActionPerformed
+
+ private void comboPrefsDefaultResourceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboPrefsDefaultResourceActionPerformed
+ String newResource = (String)comboPrefsDefaultResource.getSelectedItem();
+ idropCore.getIrodsAccount().setDefaultStorageResource(newResource);
+ idropGui.reinitializeForChangedIRODSAccount();
+ }//GEN-LAST:event_comboPrefsDefaultResourceActionPerformed
+
+ private void checkConnectionRestartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkConnectionRestartActionPerformed
+
+
+
+
+
+ }//GEN-LAST:event_checkConnectionRestartActionPerformed
+
+ private void checkConnectionRestartItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_checkConnectionRestartItemStateChanged
+ boolean isSelected = false;
+ if (evt.getStateChange() == ItemEvent.SELECTED) {
+ isSelected = true;
+ }
+ log.info("updating connection restart to:{}", isSelected);
+ try {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.IRODS_CONNECTION_RESTART, Boolean.toString(isSelected));
+ idropCore.getIdropConfigurationService().updateJargonPropertiesBasedOnIDROPConfig();
+ } catch (Exception ex) {
+ log.error("error setting property", ex);
+ throw new IdropRuntimeException(ex);
+ }
+ }//GEN-LAST:event_checkConnectionRestartItemStateChanged
+
+ private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
+ this.dispose();
+ }
+
+ private void checkShowGUIActionPerformed(java.awt.event.ActionEvent evt) {
+ //
+ }
+
+ private void checkLogSuccessfulTransferActionPerformed(java.awt.event.ActionEvent evt) {
+ //
+ }
+
+ private void pnlConfigSynchComponentShown(java.awt.event.ComponentEvent evt) {
+
+ refreshSynchConfigPanel();
+
+ }
+
+ private void refreshSynchConfigPanel() {
+ log.info("lazily loading synch data");
+
+ final IDROPConfigurationPanel thisPanel = this;
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+
+
+ SynchManagerService synchConfigurationService = idropCore.getTransferManager().getTransferServiceFactory().instanceSynchManagerService();
+
+ try {
+ thisPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ List<Synchronization> synchronizations = synchConfigurationService.listAllSynchronizations();
+ SynchConfigTableModel synchConfigTableModel = null;
+ if (jTableSynch == null) {
+ synchConfigTableModel = new SynchConfigTableModel(idropCore, synchronizations);
+ jTableSynch = new JTable(synchConfigTableModel);
+ jTableSynch.getSelectionModel().addListSelectionListener(new SynchListSelectionHandler(thisPanel));
+ scrollSynchTable.setViewportView(jTableSynch);
+ scrollSynchTable.validate();
+ pnlConfigSynchListing.validate();
+ } else {
+ synchConfigTableModel = (SynchConfigTableModel) jTableSynch.getModel();
+ synchConfigTableModel.setSynchronizations(synchronizations);
+ synchConfigTableModel.fireTableDataChanged();
+ }
+
+ if (synchConfigTableModel.getRowCount() > 0) {
+ jTableSynch.setRowSelectionInterval(0, 0);
+ } else {
+ lockSynchPanelForNewOnly();
+ }
+ } catch (SynchException ex) {
+ log.error("error setting up synchs table", ex);
+ throw new IdropRuntimeException(ex);
+ } finally {
+ thisPanel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+ }
+
+ private void lockSynchPanelForNewOnly() {
+ clearAndResetSynchPanel();
+ setLockStatusSynchPanel(false);
+ }
+ });
+ }
+
+ private void txtLocalPathActionPerformed(java.awt.event.ActionEvent evt) {
+ // TODO add your handling code here:
+ }
+
+ private void btnChooseLocalSynchActionPerformed(java.awt.event.ActionEvent evt) {
+ // TODO add your handling code here:
+ JFileChooser localFileChooser = new JFileChooser();
+ localFileChooser.setMultiSelectionEnabled(false);
+ localFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ int returnVal = localFileChooser.showOpenDialog(this);
+ txtLocalPath.setText(localFileChooser.getSelectedFile().getAbsolutePath());
+ }
+
+ private void txtIrodsPathActionPerformed(java.awt.event.ActionEvent evt) {
+ // TODO add your handling code here:
+ }
+
+ private void btnChooseIrodsSynchActionPerformed(java.awt.event.ActionEvent evt) {
+ try {
+ IRODSFinderDialog irodsFileSystemChooserView = new IRODSFinderDialog(null, true, idropCore);
+ final Toolkit toolkit = Toolkit.getDefaultToolkit();
+ final Dimension screenSize = toolkit.getScreenSize();
+ final int x = (screenSize.width - irodsFileSystemChooserView.getWidth()) / 2;
+ final int y = (screenSize.height - irodsFileSystemChooserView.getHeight()) / 2;
+ irodsFileSystemChooserView.setLocation(x, y);
+ irodsFileSystemChooserView.setVisible(true);
+ String absPath = irodsFileSystemChooserView.getSelectedAbsolutePath();
+ irodsFileSystemChooserView.dispose();
+ if (absPath != null) {
+ txtIrodsPath.setText(irodsFileSystemChooserView.getSelectedAbsolutePath());
+ }
+
+ // int returnVal = irodsFileChooser.showSaveDialog(this);
+ } catch (Exception e) {
+ log.error("exception choosings iRODS file");
+ throw new IdropRuntimeException("exception choosing irods fie", e);
+ } finally {
+ idropCore.getIrodsFileSystem().closeAndEatExceptions();
+ }
+ }
+
+ /**
+ * Delete the selected synchronization
+ *
+ * @param evt
+ */
+ private void btnDeleteSynchActionPerformed(java.awt.event.ActionEvent evt) {
+
+ final IDROPConfigurationPanel thisPanel = this;
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+
+ if (selectedSynchronization == null) {
+ MessageManager.showError(thisPanel, "Please select a synchronization from the table", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ Synchronization synchronization = selectedSynchronization;
+
+ int result = JOptionPane.showConfirmDialog(thisPanel,
+ "Do you wish to delete this synchronization?",
+ MessageManager.TITLE_MESSAGE,
+ JOptionPane.OK_CANCEL_OPTION);
+ if (result == JOptionPane.CANCEL_OPTION) {
+ return;
+ }
+ try {
+ thisPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ SynchManagerService synchConfigurationService = idropCore.getTransferManager().getTransferServiceFactory().instanceSynchManagerService();
+ log.info("deleting synchronization:{}", synchronization);
+
+ if (synchConfigurationService.isSynchRunning(synchronization)) {
+ MessageManager.showMessage(thisPanel, "Cannot delete the synchronization, a synch is currently running", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ ListSelectionModel lsm = (ListSelectionModel) thisPanel.getSynchTable().getSelectionModel();
+ SynchConfigTableModel model = (SynchConfigTableModel) thisPanel.getSynchTable().getModel();
+
+ synchConfigurationService.deleteSynchronization(synchronization);
+ log.info("synch deleted, refreshing model");
+ List<Synchronization> synchronizations = synchConfigurationService.listAllSynchronizations();
+
+ model.setSynchronizations(synchronizations);
+ model.fireTableDataChanged();
+
+ MessageManager.showMessage(thisPanel, "Configuration deleted", MessageManager.TITLE_MESSAGE);
+ btnDeleteSynch.setEnabled(false);
+ btnUpdateSynch.setEnabled(false);
+ btnSynchNow.setEnabled(false);
+ refreshSynchConfigPanel();
+ } catch (Exception ex) {
+ MessageManager.showError(thisPanel, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ } finally {
+ thisPanel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ idropCore.closeIRODSConnection(
+ idropCore.getIrodsAccount());
+ }
+ }
+ });
+ }
+
+ /**
+ * Called to clear and prepare for adding a new synchronization
+ *
+ * @param evt
+ */
+ private void btnNewSynchActionPerformed(java.awt.event.ActionEvent evt) {
+ clearAndResetSynchPanel();
+ if (jTableSynch.getModel().getRowCount() > 0) {
+ jTableSynch.getSelectionModel().removeIndexInterval(0, jTableSynch.getModel().getRowCount() - 1);
+ }
+ selectedSynchronization = new Synchronization();
+ btnDeleteSynch.setEnabled(false);
+ btnUpdateSynch.setEnabled(true);
+ btnSynchNow.setEnabled(false);
+ MessageManager.showMessage(this, "Enter the data for the new Synchronization and press Update to save", MessageManager.TITLE_MESSAGE);
+ setLockStatusSynchPanel(true);
+ btnSynchNow.setEnabled(false);
+ btnDeleteSynch.setEnabled(false);
+ }
+
+ /**
+ * User signals that the displayed synchronization should be updated
+ *
+ * @param evt
+ */
+ private void btnUpdateSynchActionPerformed(java.awt.event.ActionEvent evt) {
+ updateSynch();
+ }
+
+ private void updateSynch() {
+ final IDROPConfigurationPanel thisPanel = this;
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+
+ resetSynchPanel();
+ if (selectedSynchronization == null) {
+ MessageManager.showError(thisPanel, "Please select a synchronization from the table", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ if (txtLocalPath.getText().trim().isEmpty()) {
+ txtLocalPath.setBackground(Color.RED);
+ MessageManager.showError(thisPanel, "Please select a local path", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ if (txtIrodsPath.getText().trim().isEmpty()) {
+ txtIrodsPath.setBackground(Color.RED);
+ MessageManager.showError(thisPanel, "Please select an iRODS path", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ if (txtSynchName.getText().trim().isEmpty()) {
+ txtSynchName.setBackground(Color.RED);
+ MessageManager.showError(thisPanel, "Please enter a unique name for this synchronization", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ boolean isNew = (selectedSynchronization.getId() == null);
+ if (isNew) {
+ log.info("adding new synch");
+ }
+
+ SynchManagerService synchConfigurationService = idropCore.getTransferManager().getTransferServiceFactory().instanceSynchManagerService();
+
+ // edits pass, do update
+ log.info("saving synch data");
+ Synchronization synchronization = selectedSynchronization;
+ synchronization.setUpdatedAt(new Date());
+ synchronization.setFrequencyType(getSynchFrequencyFromGUI());
+
+ synchronization.setName(txtSynchName.getText().trim());
+ synchronization.setSynchronizationMode(getSynchTypeFromGUI());
+ synchronization.setLocalSynchDirectory(txtLocalPath.getText().trim());
+ synchronization.setIrodsSynchDirectory(txtIrodsPath.getText().trim());
+ IRODSAccount irodsAccount = idropCore.getIrodsAccount();
+ synchronization.setIrodsHostName(irodsAccount.getHost());
+
+ try {
+ synchronization.setIrodsPassword(HibernateUtil.obfuscate(irodsAccount.getPassword()));
+ } catch (JargonException ex) {
+ log.error("exception obfuscating password", ex);
+ MessageManager.showError(thisPanel, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ throw new IdropRuntimeException(ex);
+ }
+
+ synchronization.setIrodsPort(irodsAccount.getPort());
+ synchronization.setIrodsUserName(irodsAccount.getUserName());
+ synchronization.setIrodsZone(irodsAccount.getZone());
+ synchronization.setDefaultResourceName(irodsAccount.getDefaultStorageResource());
+ synchronization.setCreatedAt(new Date());
+ selectedSynchronization = synchronization;
+
+ try {
+ thisPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ if (synchConfigurationService.isSynchRunning(selectedSynchronization)) {
+ MessageManager.showMessage(thisPanel, "Cannot update the synchronization, a synch is currently running", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ idropCore.getIdropConfigurationService().updateSynchronization(synchronization);
+ MessageManager.showMessage(thisPanel, "Configuration updated", MessageManager.TITLE_MESSAGE);
+ ListSelectionModel lsm = (ListSelectionModel) thisPanel.getSynchTable().getSelectionModel();
+ SynchConfigTableModel model = (SynchConfigTableModel) thisPanel.getSynchTable().getModel();
+
+ if (isNew) {
+
+ List<Synchronization> synchronizations = synchConfigurationService.listAllSynchronizations();
+
+ model.setSynchronizations(synchronizations);
+ model.fireTableDataChanged();
+ } else {
+ if (lsm.isSelectionEmpty()) {
+ return;
+ } else {
+ // Find out which indexes are selected.
+ int minIndex = lsm.getMinSelectionIndex();
+ int maxIndex = lsm.getMaxSelectionIndex();
+ for (int i = minIndex; i <= maxIndex; i++) {
+ if (lsm.isSelectedIndex(i)) {
+ int modelIdx = thisPanel.getSynchTable().convertRowIndexToModel(i);
+
+ model.getSynchronizations().set(modelIdx, synchronization);
+ model.fireTableDataChanged();
+ break;
+ }
+ }
+ }
+ }
+
+ btnDeleteSynch.setEnabled(true);
+ btnUpdateSynch.setEnabled(true);
+ btnSynchNow.setEnabled(true);
+
+ } catch (IdropException ex) {
+ MessageManager.showError(thisPanel, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ } catch (SynchException ex) {
+ MessageManager.showError(thisPanel, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ } finally {
+ thisPanel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ idropCore.closeIRODSConnection(
+ idropCore.getIrodsAccount());
+ }
+ }
+ });
+ }
+
+ /**
+ * Force a synchronization process on the selected synchronization
+ *
+ * @param evt
+ */
+ private void btnSynchNowActionPerformed(java.awt.event.ActionEvent evt) {
+ log.info("synch now button pressed");
+ if (selectedSynchronization == null) {
+ MessageManager.showWarning(this, "Please select a synhronization", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+
+ log.info("selected synchronization is:{}", selectedSynchronization);
+ boolean synchIsUnchanged = checkIfSynchChanged();
+
+ if (!synchIsUnchanged) {
+ log.info("synch had been changed, update first");
+ updateSynch();
+ }
+
+ int result = JOptionPane.showConfirmDialog(this,
+ "Synchronize?",
+ "Do you want to synchronize now?",
+ JOptionPane.OK_CANCEL_OPTION);
+ if (result == JOptionPane.OK_OPTION) {
+ try {
+ SynchManagerService synchConfigurationService = idropCore.getTransferManager().getTransferServiceFactory().instanceSynchManagerService();
+
+ if (synchConfigurationService.isSynchRunning(selectedSynchronization)) {
+ MessageManager.showMessage(this, "Cannot schedule the synchronization, a synch is currently running", MessageManager.TITLE_MESSAGE);
+ return;
+ }
+ idropCore.getTransferManager().enqueueASynch(selectedSynchronization, selectedSynchronization.buildIRODSAccountFromSynchronizationData());
+ } catch (Exception ex) {
+ log.error("error starting synch", ex);
+ MessageManager.showError(this, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ throw new IdropRuntimeException(ex);
+ }
+ }
+ }
+
+ private void checkVerifyChecksumOnTransferActionPerformed(java.awt.event.ActionEvent evt) {
+ //
+ }
+
+ private void btnLogoutActionPerformed(java.awt.event.ActionEvent evt) {
+ log.info("logging out to log in to a new grid");
+
+ final IDROPConfigurationPanel thisPanel = this;
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+
+ IRODSAccount savedAccount = idropCore.getIrodsAccount();
+ idropCore.setIrodsAccount(null);
+ iDrop idrop = (iDrop) thisPanel.getParent();
+ LoginDialog loginDialog = new LoginDialog(thisPanel, idropCore);
+ loginDialog.setVisible(true);
+
+ if (idropCore.getIrodsAccount() == null) {
+ log.warn("no account, reverting");
+ idropCore.setIrodsAccount(savedAccount);
+ } else {
+ idrop.reinitializeForChangedIRODSAccount();
+ }
+ refreshAccountData();
+ }
+ });
+
+ }
+
+ private void btnChangePasswordActionPerformed(java.awt.event.ActionEvent evt) {
+ ChangePasswordDialog changePasswordDialog = new ChangePasswordDialog((iDrop) this.getParent(), this, true);
+ changePasswordDialog.setLocationRelativeTo(this);
+ changePasswordDialog.setVisible(true);
+ }
+
+ protected JTable getSynchTable() {
+ return jTableSynch;
+ }
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton btnApplyPipelineConfig;
+ private javax.swing.JButton btnChangePassword;
+ private javax.swing.JButton btnChooseIrodsSynch;
+ private javax.swing.JButton btnChooseLocalSynch;
+ private javax.swing.JButton btnDeleteSynch;
+ private javax.swing.JButton btnLogout;
+ private javax.swing.JButton btnNewSynch;
+ private javax.swing.JButton btnOK;
+ private javax.swing.JButton btnRefreshSynch;
+ private javax.swing.JButton btnRestoreDefaults;
+ private javax.swing.JButton btnSynchNow;
+ private javax.swing.JButton btnUpdateSynch;
+ private javax.swing.ButtonGroup buttonGroupSynchMode;
+ private javax.swing.JCheckBox checkAllowParallelTransfers;
+ private javax.swing.JCheckBox checkAllowRerouting;
+ private javax.swing.JCheckBox checkConnectionRestart;
+ private javax.swing.JCheckBox checkLogSuccessfulTransfer;
+ private javax.swing.JCheckBox checkShowFileProgress;
+ private javax.swing.JCheckBox checkShowGUI;
+ private javax.swing.JCheckBox checkUseExecutorPool;
+ private javax.swing.JCheckBox checkUseNIOForParallelTransfers;
+ private javax.swing.JCheckBox checkVerifyChecksumOnTransfer;
+ private javax.swing.JComboBox comboPrefsDefaultResource;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel5;
+ private javax.swing.JComboBox jcomboSynchFrequency;
+ private javax.swing.JLabel lblGetBufferSize;
+ private javax.swing.JLabel lblHost;
+ private javax.swing.JLabel lblHostLabel;
+ private javax.swing.JLabel lblInternalCacheBufferSize;
+ private javax.swing.JLabel lblInternalInputBufferSize;
+ private javax.swing.JLabel lblInternalOutputBufferSize;
+ private javax.swing.JLabel lblIputToOutputCopyBufferSize;
+ private javax.swing.JLabel lblIrodsParallelSocketTimeout;
+ private javax.swing.JLabel lblIrodsSocketTimeout;
+ private javax.swing.JLabel lblLocalFileInputBufferSize;
+ private javax.swing.JLabel lblLocalFileOutputBufferSize;
+ private javax.swing.JLabel lblMaximumParallelTransferThreads;
+ private javax.swing.JLabel lblPort;
+ private javax.swing.JLabel lblPortLabel;
+ private javax.swing.JLabel lblPutBufferSize;
+ private javax.swing.JLabel lblResourceLabel;
+ private javax.swing.JLabel lblSynchDate;
+ private javax.swing.JLabel lblSynchDateLabel;
+ private javax.swing.JLabel lblSynchName;
+ private javax.swing.JLabel lblSynchStatus;
+ private javax.swing.JLabel lblUserName;
+ private javax.swing.JLabel lblUserNameLabel;
+ private javax.swing.JLabel lblZone;
+ private javax.swing.JLabel lblZoneLabel;
+ private javax.swing.JPanel panelSynchToolbar;
+ private javax.swing.JPanel plnPipelineConfiguration;
+ private javax.swing.JPanel pnlBottom;
+ private javax.swing.JPanel pnlBuffers;
+ private javax.swing.JPanel pnlCenter;
+ private javax.swing.JPanel pnlConfigGrids;
+ private javax.swing.JPanel pnlConfigIdrop;
+ private javax.swing.JPanel pnlConfigSynch;
+ private javax.swing.JPanel pnlConfigSynchDetails;
+ private javax.swing.JPanel pnlConfigSynchListing;
+ private javax.swing.JPanel pnlConfigTransfers;
+ private javax.swing.JPanel pnlCurrentGrid;
+ private javax.swing.JPanel pnlCurrentGridToolbar;
+ private javax.swing.JPanel pnlIrodsSynch;
+ private javax.swing.JPanel pnlLocalSynch;
+ private javax.swing.JPanel pnlParallelTransferOptions;
+ private javax.swing.JPanel pnlSynchData;
+ private javax.swing.JPanel pnlSynchFrequency;
+ private javax.swing.JPanel pnlSynchIcon;
+ private javax.swing.JPanel pnlSynchMode;
+ private javax.swing.JPanel pnlSynchName;
+ private javax.swing.JPanel pnlSynchRefresh;
+ private javax.swing.JPanel pnlTop;
+ private javax.swing.JPanel pnlTransferManagement;
+ private javax.swing.JRadioButton radioBackup;
+ private javax.swing.JRadioButton radioFeed;
+ private javax.swing.JRadioButton radioSynch;
+ private javax.swing.JScrollPane scrollSynchTable;
+ private javax.swing.JSpinner spinnerIrodsMaxParallelThreads;
+ private javax.swing.JSpinner spinnerIrodsParallelSocketTimeout;
+ private javax.swing.JSpinner spinnerIrodsSocketTimeout;
+ private javax.swing.JTabbedPane tabConfig;
+ private javax.swing.JTextField txtGetBufferSize;
+ private javax.swing.JTextField txtInputToOutputCopyBufferSize;
+ private javax.swing.JTextField txtInternalCacheBufferSize;
+ private javax.swing.JTextField txtInternalInputBufferSize;
+ private javax.swing.JTextField txtInternalOutputBufferSize;
+ private javax.swing.JTextField txtIrodsPath;
+ private javax.swing.JTextField txtLocalFileInputBufferSize;
+ private javax.swing.JTextField txtLocalFileOutputBufferSize;
+ private javax.swing.JTextField txtLocalPath;
+ private javax.swing.JTextField txtPutBufferSize;
+ private javax.swing.JTextField txtSynchName;
+ // End of variables declaration//GEN-END:variables
+
+ // variable declarations for non-generated components
+ private javax.swing.JPanel pnlConfigPublicLinks;
+ private javax.swing.JTextField txtPublicLinks;
+ // end
+
+ private void initWithConfigData() {
+ resetTransferPipelineEditColors();
+ IdropConfig idropConfig = idropCore.getIdropConfig();
+ checkShowGUI.setSelected(idropConfig.isShowGuiAtStartup());
+ checkLogSuccessfulTransfer.setSelected(idropConfig.isLogSuccessfulTransfers());
+ checkUseExecutorPool.setSelected(idropConfig.isParallelUsePool());
+ checkVerifyChecksumOnTransfer.setSelected(idropConfig.isVerifyChecksum());
+ checkShowFileProgress.setSelected(idropConfig.isIntraFileStatusCallbacks());
+ checkAllowRerouting.setSelected(idropConfig.isAllowConnectionRerouting());
+ checkUseExecutorPool.setSelected(idropConfig.isParallelUsePool());
+ spinnerIrodsSocketTimeout.setValue(idropConfig.getIrodsConnectionTimeout());
+ spinnerIrodsParallelSocketTimeout.setValue(idropConfig.getIrodsParallelConnectionTimeout());
+ spinnerIrodsMaxParallelThreads.setValue(idropConfig.getIrodsParallelTransferMaxThreads());
+ checkAllowParallelTransfers.setSelected(idropConfig.isUseParallelTransfers());
+ checkConnectionRestart.setSelected(idropConfig.isConnectionRestart());
+ checkUseNIOForParallelTransfers.setSelected(idropConfig.isUseNIOForParallelTransfers());
+ txtInternalInputBufferSize.setText(String.valueOf(idropConfig.getInternalInputStreamBufferSize()));
+ txtInternalOutputBufferSize.setText(String.valueOf(idropConfig.getInternalOutputStreamBufferSize()));
+ txtLocalFileInputBufferSize.setText(String.valueOf(idropConfig.getLocalFileInputStreamBufferSize()));
+ txtLocalFileOutputBufferSize.setText(String.valueOf(idropConfig.getLocalFileOutputStreamBufferSize()));
+ txtGetBufferSize.setText(String.valueOf(idropConfig.getGetBufferSize()));
+ txtPutBufferSize.setText(String.valueOf(idropConfig.getPutBufferSize()));
+ txtInputToOutputCopyBufferSize.setText(String.valueOf(idropConfig.getInputToOutputCopyBufferByteSize()));
+ txtInternalCacheBufferSize.setText(String.valueOf(idropConfig.getInternalCacheBufferSize()));
+ txtPublicLinks.setText(idropConfig.getPublicLinkServiceUrl());
+ refreshAccountData();
+ }
+
+ /**
+ * Reset colors in synch panel when re-validating
+ */
+ private void resetSynchPanel() {
+ txtLocalPath.setBackground(Color.WHITE);
+ txtIrodsPath.setBackground(Color.WHITE);
+ txtSynchName.setBackground(Color.WHITE);
+ }
+
+ /**
+ * Clear synch panel values and colors
+ */
+ private void clearAndResetSynchPanel() {
+ resetSynchPanel();
+ txtLocalPath.setText("");
+ txtIrodsPath.setText("");
+ txtSynchName.setText("");
+ radioBackup.setSelected(true);
+ lblSynchDate.setText("");
+ pnlSynchIcon.removeAll();
+ pnlSynchIcon.validate();
+ jcomboSynchFrequency.setSelectedIndex(0);
+ }
+
+ private void refreshAccountData() {
+
+ if (idropCore.getIrodsAccount() == null) {
+ lblHost.setText("");
+ lblPort.setText("");
+ lblZone.setText("");
+ comboPrefsDefaultResource.setModel(new DefaultComboBoxModel());
+ lblUserName.setText("");
+ } else {
+ lblHost.setText(idropCore.getIrodsAccount().getHost());
+ lblPort.setText(String.valueOf(idropCore.getIrodsAccount().getPort()));
+ lblZone.setText(idropCore.getIrodsAccount().getZone());
+ lblUserName.setText(idropCore.getIrodsAccount().getUserName());
+ try {
+ ResourceAO resourceAO = idropCore.getIRODSAccessObjectFactory().getResourceAO(idropCore.getIrodsAccount());
+ log.info("getting a list of all resources in the zone");
+ List<String> resources = resourceAO.listResourceNames();
+ comboPrefsDefaultResource.setModel(new DefaultComboBoxModel(resources.toArray()));
+ comboPrefsDefaultResource.setSelectedItem(idropCore.getIrodsAccount().getDefaultStorageResource());
+ } catch (JargonException ex) {
+ log.error("error getting resource list", ex);
+ 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) {
+ // make sure the most up-to-date information is displayed
+ int modelIdx = getSynchTable().convertRowIndexToModel(i);
+ SynchConfigTableModel model = (SynchConfigTableModel) getSynchTable().getModel();
+
+ selectedSynchronization = model.getSynchronizationAt(modelIdx);
+
+ if (selectedSynchronization == null) {
+ model.removeRow(modelIdx);
+ return;
+ }
+
+ // initialize data
+ txtLocalPath.setText(selectedSynchronization.getLocalSynchDirectory());
+ txtIrodsPath.setText(selectedSynchronization.getIrodsSynchDirectory());
+ txtSynchName.setText(selectedSynchronization.getName());
+
+ if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_HOUR) {
+ jcomboSynchFrequency.setSelectedIndex(0);
+ } else if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_WEEK) {
+ jcomboSynchFrequency.setSelectedIndex(1);
+ } else if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_DAY) {
+ jcomboSynchFrequency.setSelectedIndex(2);
+ } else if (selectedSynchronization.getFrequencyType() == FrequencyType.EVERY_TWO_MINUTES) {
+ jcomboSynchFrequency.setSelectedIndex(3);
+ } else {
+ // default to hourly to avoid errors
+ log.error("unknown frequency type for synch:{}", selectedSynchronization.getFrequencyType());
+ jcomboSynchFrequency.setSelectedIndex(0);
+ }
+
+ if (selectedSynchronization.getSynchronizationMode() == SynchronizationType.BI_DIRECTIONAL) {
+ radioSynch.setSelected(true);
+ } else if (selectedSynchronization.getSynchronizationMode() == SynchronizationType.ONE_WAY_IRODS_TO_LOCAL) {
+ radioFeed.setSelected(true);
+ } else if (selectedSynchronization.getSynchronizationMode() == SynchronizationType.ONE_WAY_LOCAL_TO_IRODS) {
+ radioBackup.setSelected(true);
+ } else {
+ log.error("unknown synchronization mode for synch:{}", selectedSynchronization.getSynchronizationMode());
+ throw new IdropRuntimeException("unknown synchronization mode");
+ }
+
+ btnDeleteSynch.setEnabled(true);
+ btnUpdateSynch.setEnabled(true);
+ btnSynchNow.setEnabled(true);
+
+ setSynchIcon(selectedSynchronization);
+ if (selectedSynchronization.getLastSynchronized() == null) {
+ lblSynchDate.setText("None");
+ } else {
+ lblSynchDate.setText(dateFormat.format(selectedSynchronization.getLastSynchronized()));
+ }
+
+ }
+
+ protected void setLockStatusSynchPanel(boolean lockStatus) {
+ txtSynchName.setEnabled(lockStatus);
+ txtLocalPath.setEnabled(lockStatus);
+ btnChooseLocalSynch.setEnabled(lockStatus);
+ radioBackup.setEnabled(lockStatus);
+ //radioFeed.setEnabled(lockStatus);
+ //radioSynch.setEnabled(lockStatus);
+ jcomboSynchFrequency.setEnabled(lockStatus);
+ txtIrodsPath.setEnabled(lockStatus);
+ btnChooseIrodsSynch.setEnabled(lockStatus);
+ btnDeleteSynch.setEnabled(lockStatus);
+ btnUpdateSynch.setEnabled(lockStatus);
+ btnSynchNow.setEnabled(lockStatus);
+ //btnSynchDetails.setEnabled(lockStatus);
+ }
+
+ private void setSynchIcon(Synchronization synchronization) {
+
+ JLabel labelToUse = null;
+
+ SynchManagerService synchManagerService = idropCore.getTransferManager().getTransferServiceFactory().instanceSynchManagerService();
+ try {
+ boolean isRunning = synchManagerService.isSynchRunning(synchronization);
+ if (isRunning) {
+ labelToUse = IconHelper.getRunningIcon();
+ } else if (synchronization.getLastSynchronizationStatus() == null) {
+ labelToUse = IconHelper.getOkIcon();
+ } else if (synchronization.getLastSynchronizationStatus() == TransferStatus.ERROR) {
+ labelToUse = IconHelper.getErrorIcon();
+ } else {
+ labelToUse = IconHelper.getOkIcon();
+ }
+ } catch (SynchException ex) {
+ log.error("error checking if synch is already running:{}", synchronization, ex);
+ throw new IdropRuntimeException("exception checking if synch is already running", ex);
+ }
+
+ pnlSynchIcon.removeAll();
+ lblSynchStatus = labelToUse;
+ pnlSynchIcon.add(lblSynchStatus);
+ pnlSynchIcon.validate();
+
+ }
}
class SynchListSelectionHandler implements ListSelectionListener {
- private final IDROPConfigurationPanel idropConfigurationPanel;
+ private final IDROPConfigurationPanel idropConfigurationPanel;
- SynchListSelectionHandler(final IDROPConfigurationPanel configurationPanel) {
- idropConfigurationPanel = configurationPanel;
- }
+ SynchListSelectionHandler(IDROPConfigurationPanel configurationPanel) {
+ this.idropConfigurationPanel = configurationPanel;
+ }
- @Override
- public void valueChanged(final ListSelectionEvent e) {
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
- if (e.getValueIsAdjusting() == true) {
- return;
- }
+ if (e.getValueIsAdjusting() == true) {
+ return;
+ }
- ListSelectionModel lsm = (ListSelectionModel) e.getSource();
+ ListSelectionModel lsm = (ListSelectionModel) e.getSource();
- if (lsm.isSelectionEmpty()) {
- return;
- } else {
- // Find out which indexes are selected.
- int minIndex = lsm.getMinSelectionIndex();
- int maxIndex = lsm.getMaxSelectionIndex();
- for (int i = minIndex; i <= maxIndex; i++) {
- if (lsm.isSelectedIndex(i)) {
- idropConfigurationPanel.updateDetailsForSelectedSynch(i);
- }
- }
- }
+ if (lsm.isSelectionEmpty()) {
+ return;
+ } else {
+ // Find out which indexes are selected.
+ int minIndex = lsm.getMinSelectionIndex();
+ int maxIndex = lsm.getMaxSelectionIndex();
+ for (int i = minIndex; i <= maxIndex; i++) {
+ if (lsm.isSelectedIndex(i)) {
+ idropConfigurationPanel.updateDetailsForSelectedSynch(i);
+ }
+ }
+ }
- }
+ }
} \ No newline at end of file
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java
index dac2fce..aa80d05 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java
@@ -175,7 +175,7 @@ public class IDROPDesktop {
loginDialog.setLocation(x, y);
idropSplashWindow.toBack();
loginDialog.toFront();
- loginDialog.setVisible(true);
+ loginDialog.setVisible(!loginDialog.isLoginTrialSuccesful());
if (idropCore.getIrodsAccount() == null) {
log.warn("no login account, exiting");
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPSplashWindow.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPSplashWindow.java
index 95c47e0..c510978 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPSplashWindow.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPSplashWindow.java
@@ -25,7 +25,7 @@ public class IDROPSplashWindow extends JWindow {
.getLogger(IDROPSplashWindow.class);
private ImageIcon splashImage = new ImageIcon(IDROPSplashWindow.class
.getClassLoader().getResource(
- "org/irods/jargon/idrop/desktop/images/iDrop.png"));
+ "org/irods/jargon/idrop/desktop/images/qcg-logo-large-color1.png"));
private JLabel jlblImage = new JLabel();
private JProgressBar jProgressBar1 = new JProgressBar();
private iDrop iDrop;
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form
index 5f8df5f..425ee1f 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form
@@ -593,6 +593,15 @@
<Property name="horizontalGap" type="int" value="2"/>
</Layout>
<SubComponents>
+ <Component class="javax.swing.JCheckBox" name="chkRememberPass">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Login Automatically"/>
+ <Property name="actionCommand" type="java.lang.String" value="Login Auto"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chkRememberPassActionPerformed"/>
+ </Events>
+ </Component>
<Component class="javax.swing.JButton" name="btnOK">
<Properties>
<Property name="mnemonic" type="int" value="76"/>
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java
index 6c25374..0c52aa6 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java
@@ -51,14 +51,19 @@ public class LoginDialog extends JDialog {
private static final long serialVersionUID = 1L;
private IDROPCore idropCore = null;
- public static org.slf4j.Logger log = LoggerFactory
- .getLogger(LoginDialog.class);
-
- // Indexes of gsi modes used in properties to store users choice
- static final int PEM_MODE = 1;
- static final int P12_MODE = 2;
- static final int BROWSER_MODE = 3;
- static final int PROXY_MODE = 4;
+ public static org.slf4j.Logger log = LoggerFactory.getLogger(LoginDialog.class);
+
+ private boolean loginTrialSuccesful = false;
+
+ public boolean isLoginTrialSuccesful() {
+ return loginTrialSuccesful;
+ }
+
+ // Indexes of gsi modes used in properties to store users choice
+ static final int PEM_MODE = 1;
+ static final int P12_MODE = 2;
+ static final int BROWSER_MODE = 3;
+ static final int PROXY_MODE = 4;
public LoginDialog(final JDialog parentDialog, final IDROPCore idropCore) {
super(parentDialog, true);
@@ -67,7 +72,7 @@ public class LoginDialog extends JDialog {
}
this.idropCore = idropCore;
initComponents();
-
+
if (idropCore.getIdropConfig().isLoginPreset()) {
loginUsingPreset();
} else {
@@ -100,42 +105,42 @@ public class LoginDialog extends JDialog {
comboLoginMode.setSelectedItem(mode);
}
- String proxy = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION);
-
- if(proxy!=null){
- txtProxy.setText(proxy);
- }
-
- String certificates = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION);
-
- if(certificates!=null){
- txtCerts.setText(certificates);
- }
+ String proxy = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION);
+
+ if(proxy!=null){
+ txtProxy.setText(proxy);
+ }
+
+ String certificates = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION);
+
+ if(certificates!=null){
+ txtCerts.setText(certificates);
+ }
- // Read paths from propeties: PEM certificate, PEM key, p12 certificate
- String pemcert = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_PEM_LOCATION);
- if(pemcert!=null){
- txtPEMCertificateLocation.setText(pemcert);
-
- }
- String p12cert = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_P12_LOCATION);
- if(p12cert!=null){
- txtP12CertificateLocation.setText(p12cert);
- }
-
- String keyLoc = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_KEY_PEM_LOCATION);
- if(keyLoc!=null){
- txtKeyLocation.setText(keyLoc);
- }
- // Read gsi mode from properties (p12, PEM, browser, proxy file)
- String certMode = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE);
- try{
- int certModeNum = Integer.parseInt(certMode);
- setSelectedModeFields(certModeNum);
- }catch(Exception ex){
- Logger.getLogger(LoginDialog.class.getName()).log(Level.WARNING,null, ex);
- }
- //
+ // Read paths from propeties: PEM certificate, PEM key, p12 certificate
+ String pemcert = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_PEM_LOCATION);
+ if(pemcert!=null){
+ txtPEMCertificateLocation.setText(pemcert);
+
+ }
+ String p12cert = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_P12_LOCATION);
+ if(p12cert!=null){
+ txtP12CertificateLocation.setText(p12cert);
+ }
+
+ String keyLoc = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_KEY_PEM_LOCATION);
+ if(keyLoc!=null){
+ txtKeyLocation.setText(keyLoc);
+ }
+ // Read gsi mode from properties (p12, PEM, browser, proxy file)
+ String certMode = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE);
+ try{
+ int certModeNum = Integer.parseInt(certMode);
+ setSelectedModeFields(certModeNum);
+ }catch(Exception ex){
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.WARNING,null, ex);
+ }
+ //
txtPort.setText(port);
String zone = idropCore.getIdropConfig().getPropertyForKey(
IdropConfigurationService.ACCOUNT_CACHE_ZONE);
@@ -146,9 +151,24 @@ public class LoginDialog extends JDialog {
String username = idropCore.getIdropConfig().getPropertyForKey(
IdropConfigurationService.ACCOUNT_CACHE_USER_NAME);
txtUserName.setText(username);
- hideAdvancedViewFields();
- hideProxyLoginFields();
+
+ String save = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS);
+ boolean saveP = "true".equals(save);
+ if(saveP){
+ String savedPassword = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD);
+ password.setText(savedPassword);
+ chkRememberPass.setSelected(true);
+
+ String gsi = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI);
+ boolean autoGsi = "true".equals(gsi);
+ chkProxyLogin.setSelected(autoGsi);
+
+ loginTrialSuccesful = !processLogin();
+ }
+
+ hideAdvancedViewFields();
+ hideProxyLoginFields();
}
private void loginUsingPreset() {
@@ -174,7 +194,7 @@ public class LoginDialog extends JDialog {
*/
private boolean processLogin() throws NumberFormatException {
// validate various inputs based on whether a full login, or a uid only
- // login is indicated
+ // login is indicated
if (!idropCore.getIdropConfig().isLoginPreset()) {
txtHost.setBackground(Color.white);
txtPort.setBackground(Color.white);
@@ -253,7 +273,7 @@ public class LoginDialog extends JDialog {
presetPort, txtUserName.getText(), new String(
password.getPassword()), sb.toString(),
presetZone, presetResource);
- }
+ }
} else {
sb.append('/');
sb.append(txtZone.getText());
@@ -328,15 +348,26 @@ public class LoginDialog extends JDialog {
.getAuthenticatedIRODSAccount());
try {
idropCore.getIdropConfigurationService()
- .saveLogin(irodsAccount);
+
+ .saveLogin(irodsAccount, chkRememberPass.isSelected());
+
idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION, txtProxy.getText());
idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION, txtCerts.getText());
+
+ if(chkProxyLogin.isSelected()){
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI,"true");
+ }else{
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI,"false");
+ }
+
// Save in properties: paths to certificates, key and gsi mode
idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_PEM_LOCATION, txtPEMCertificateLocation.getText());
idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_KEY_PEM_LOCATION, txtKeyLocation.getText());
idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_P12_LOCATION, txtP12CertificateLocation.getText());
idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE, ""+getSelectedModeFieldNum());
+
//todo save proxy path and certificates location
+
} catch (IdropException ex) {
throw new IdropRuntimeException("error saving irodsAccount", ex);
}
@@ -469,6 +500,7 @@ public class LoginDialog extends JDialog {
cmbCertificates = new javax.swing.JComboBox();
btnCheckCertsInBrowser = new javax.swing.JButton();
pnlToolbar = new javax.swing.JPanel();
+ chkRememberPass = new javax.swing.JCheckBox();
btnOK = new javax.swing.JButton();
btnCancel = new javax.swing.JButton();
lblLogin = new javax.swing.JLabel();
@@ -868,6 +900,15 @@ public class LoginDialog extends JDialog {
pnlToolbar.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 2, 5));
+ chkRememberPass.setText("Login Automatically");
+ chkRememberPass.setActionCommand("Login Auto");
+ chkRememberPass.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ chkRememberPassActionPerformed(evt);
+ }
+ });
+ pnlToolbar.add(chkRememberPass);
+
btnOK.setMnemonic('L');
btnOK.setText("Login");
btnOK.setMaximumSize(new java.awt.Dimension(100, 100));
@@ -896,6 +937,10 @@ public class LoginDialog extends JDialog {
pack();
}// </editor-fold>//GEN-END:initComponents
+ private void chkRememberPassActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkRememberPassActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_chkRememberPassActionPerformed
+
private void chkProxyLoginActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkProxyLoginActionPerformed
if(chkProxyLogin.isSelected()){
chkGuestLogin.setSelected(false);
@@ -1057,6 +1102,7 @@ public class LoginDialog extends JDialog {
private javax.swing.JCheckBox chkAdvancedLogin;
private javax.swing.JCheckBox chkGuestLogin;
private javax.swing.JCheckBox chkProxyLogin;
+ private javax.swing.JCheckBox chkRememberPass;
private javax.swing.JComboBox cmbBrowsers;
private javax.swing.JComboBox cmbCertificates;
private javax.swing.JComboBox comboLoginMode;
@@ -1095,43 +1141,51 @@ public class LoginDialog extends JDialog {
private javax.swing.JTextField txtZone;
// End of variables declaration//GEN-END:variables
- private void showAdvancedViewFields() {
- txtResource.setVisible(true);
- txtPort.setVisible(true);
- lblPort.setVisible(true);
- lblResource.setVisible(true);
- //show advanced option
- lblCerts.setVisible(true);
- txtCerts.setVisible(true);
- btnCerts.setVisible(true);
- }
-
- private void hideAdvancedViewFields() {
- txtResource.setVisible(false);
- txtPort.setVisible(false);
- lblPort.setVisible(false);
- lblResource.setVisible(false);
- //hide advanced option
- lblCerts.setVisible(false);
- txtCerts.setVisible(false);
- btnCerts.setVisible(false);
- }
+ private void showAdvancedViewFields() {
+ lblHost.setVisible(true);
+ txtHost.setVisible(true);
+ lblZone.setVisible(true);
+ txtZone.setVisible(true);
+ txtResource.setVisible(true);
+ txtPort.setVisible(true);
+ lblPort.setVisible(true);
+ lblResource.setVisible(true);
+
+ lblCerts.setVisible(true);
+ txtCerts.setVisible(true);
+ btnCerts.setVisible(true);
+ }
- private void hideForGuestLogin() {
- lblUserName.setVisible(false);
- txtUserName.setVisible(false);
- lblPassword.setVisible(false);
- password.setVisible(false);
- lblLoginMode.setVisible(false);
- comboLoginMode.setVisible(false);
- }
+ private void hideAdvancedViewFields() {
+ lblHost.setVisible(false);
+ txtHost.setVisible(false);
+ lblZone.setVisible(false);
+ txtZone.setVisible(false);
+ txtResource.setVisible(false);
+ txtPort.setVisible(false);
+ lblPort.setVisible(false);
+ lblResource.setVisible(false);
+
+ lblCerts.setVisible(false);
+ txtCerts.setVisible(false);
+ btnCerts.setVisible(false);
+ }
+
+ private void hideForGuestLogin() {
+ lblUserName.setVisible(false);
+ txtUserName.setVisible(false);
+ lblPassword.setVisible(false);
+ password.setVisible(false);
+ lblLoginMode.setVisible(false);
+ comboLoginMode.setVisible(false);
+ }
- private void showWhenGuestLogin() {
- lblUserName.setVisible(true);
- txtUserName.setVisible(true);
- lblPassword.setVisible(true);
- password.setVisible(true);
- }
+ private void showWhenGuestLogin() {
+ lblUserName.setVisible(true);
+ txtUserName.setVisible(true);
+ lblPassword.setVisible(true);
+ password.setVisible(true);
+ }
private void showProxyLoginFields(){
//show buttngroup to let user choose a way to authenticate
@@ -1153,7 +1207,6 @@ public class LoginDialog extends JDialog {
hideCertP12Fields();
hideCertInBrowserFields();
hideProxyFileFields();
-
lblPassword.setVisible(true);
password.setVisible(true);
}
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 4267691..199862b 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
@@ -17,7 +17,6 @@
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
- <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
@@ -65,7 +64,7 @@
<Dimension value="[622, 125]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
- <Dimension value="[1121, 120]"/>
+ <Dimension value="[1121, 190]"/>
</Property>
</Properties>
<Constraints>
@@ -462,6 +461,40 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
</Container>
+ <Component class="javax.swing.JButton" name="btnMainToolbarSettings1">
+ <Properties>
+ <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+ <Image iconType="3" name="/icon_metasearch.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.btnMainToolbarSettings1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+ </Property>
+ <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+ <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
+ <EmptyBorder/>
+ </Border>
+ </Property>
+ <Property name="horizontalTextPosition" type="int" value="0"/>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[65, 70]"/>
+ </Property>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[60, 69]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[60, 69]"/>
+ </Property>
+ <Property name="verticalTextPosition" type="int" value="3"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnMainToolbarSettings1ActionPerformed"/>
+ </Events>
+ <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="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>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="pnlMainIrodsTree">
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 e21fb60..e6dfe07 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
@@ -166,7 +166,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
IRODSAccount savedAccount = iDropCore.getIrodsAccount();
iDropCore.setIrodsAccount(null);
- LoginDialog loginDialog = new LoginDialog(null, iDropCore);
+ LoginDialog loginDialog = new LoginDialog(null, iDropCore);
loginDialog.setLocationRelativeTo(null);
loginDialog.setVisible(true);
@@ -1335,6 +1335,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
txtMainToolbarSearchTerms = new javax.swing.JTextField();
lblBreadCrumb = new javax.swing.JLabel();
pnlBreadCrumbNav = new javax.swing.JPanel();
+ btnMainToolbarSettings1 = new javax.swing.JButton();
pnlMainIrodsTree = new javax.swing.JPanel();
splitPanelTrees = new javax.swing.JSplitPane();
scrollIrodsTree = new javax.swing.JScrollPane();
@@ -1383,7 +1384,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
pnlMainToolbarIcons.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 20, 10, 20));
pnlMainToolbarIcons.setMinimumSize(new java.awt.Dimension(622, 125));
- pnlMainToolbarIcons.setPreferredSize(new java.awt.Dimension(1121, 120));
+ pnlMainToolbarIcons.setPreferredSize(new java.awt.Dimension(1121, 190));
pnlMainToolbarIcons.setLayout(new java.awt.GridBagLayout());
btnMainToolbarTree.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_tree.png"))); // NOI18N
@@ -1622,6 +1623,21 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
pnlMainToolbarIcons.add(pnlBreadCrumbNav, gridBagConstraints);
+ btnMainToolbarSettings1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_metasearch.png"))); // NOI18N
+ btnMainToolbarSettings1.setText(org.openide.util.NbBundle.getMessage(iDrop.class, "iDrop.btnMainToolbarSettings1.text")); // NOI18N
+ btnMainToolbarSettings1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
+ btnMainToolbarSettings1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
+ btnMainToolbarSettings1.setMaximumSize(new java.awt.Dimension(65, 70));
+ btnMainToolbarSettings1.setMinimumSize(new java.awt.Dimension(60, 69));
+ btnMainToolbarSettings1.setPreferredSize(new java.awt.Dimension(60, 69));
+ btnMainToolbarSettings1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
+ btnMainToolbarSettings1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnMainToolbarSettings1ActionPerformed(evt);
+ }
+ });
+ pnlMainToolbarIcons.add(btnMainToolbarSettings1, new java.awt.GridBagConstraints());
+
pnlMain.add(pnlMainToolbarIcons, java.awt.BorderLayout.PAGE_START);
pnlMainIrodsTree.setBorder(javax.swing.BorderFactory.createEtchedBorder());
@@ -1877,6 +1893,12 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
popup.show(pnlBreadCrumbNav, p.x, p.y + btnMainToolbarTree.getHeight());
}//GEN-LAST:event_btnMainToolbarTreeActionPerformed
+ private void btnMainToolbarSettings1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMainToolbarSettings1ActionPerformed
+ MetaSearch idropMetaSearch = new MetaSearch(this, true);
+ idropMetaSearch.setLocationRelativeTo(null);
+ idropMetaSearch.setVisible(true);
+ }//GEN-LAST:event_btnMainToolbarSettings1ActionPerformed
+
private void btnMainToolbarSettingsActionPerformed(
final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnMainToolbarSettingsActionPerformed
IDROPConfigurationPanel idropConfigurationPanel = new IDROPConfigurationPanel(
@@ -2044,6 +2066,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
private javax.swing.JButton btnMainToolbarRefresh;
private javax.swing.JButton btnMainToolbarSearchFiles;
private javax.swing.JButton btnMainToolbarSettings;
+ private javax.swing.JButton btnMainToolbarSettings1;
private javax.swing.JButton btnMainToolbarSync;
private javax.swing.JButton btnMainToolbarTools;
private javax.swing.JButton btnMainToolbarTree;
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java
index 64e41df..108f74f 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java
@@ -1,7 +1,6 @@
package org.irods.jargon.idrop.desktop.systraygui.services;
import java.util.Properties;
-
import org.irods.jargon.core.connection.IRODSAccount;
import org.irods.jargon.core.connection.JargonProperties;
import org.irods.jargon.core.exception.JargonException;
@@ -13,6 +12,7 @@ import org.irods.jargon.transfer.engine.synch.ConflictingSynchException;
*
* @author mikeconway
*/
+
public interface IdropConfigurationService {
public static final String IDROP_VERSION_FILE_NAME = ".idropVersion";
@@ -33,16 +33,19 @@ public interface IdropConfigurationService {
public static final String ACCOUNT_CACHE_ZONE = "irods.account.zone";
public static final String ACCOUNT_CACHE_RESOURCE = "irods.account.resource";
public static final String ACCOUNT_CACHE_USER_NAME = "irods.account.user";
+ public static final String ACCOUNT_CACHE_USER_PASSWORD = "irods.account.password";
+ public static final String ACCOUNT_CACHE_USER_SAVE_PASS = "irods.account.savepassword";
public static final String ACCOUNT_CACHE_ROOT_DIR = "irods.account.root.dir";
public static final String ACCOUNT_CACHE_LOGIN_MODE = "irods.account.login.mode";
- // for GSI
- public static final String ACCOUNT_CACHE_PROXY_LOCATION = "irods.account.gsi.proxy.location";
- public static final String ACCOUNT_CACHE_CERTIFICATES_LOCATION = "irods.account.gsi.certificates.location";
- public static final String ACCOUNT_CACHE_CERT_PEM_LOCATION = "irods.account.gsi.cert.pem.location";
- public static final String ACCOUNT_CACHE_KEY_PEM_LOCATION = "irods.account.gsi.key.pem.location";
- public static final String ACCOUNT_CACHE_CERT_P12_LOCATION = "irods.account.gsi.cert.p12.location";
- public static final String ACCOUNT_CACHE_CERT_LOGIN_MODE = "irods.account.gsi.cert.login.mode";
- // /for GSI
+ // for GSI
+ public static final String ACCOUNT_CACHE_PROXY_LOCATION = "irods.account.gsi.proxy.location";
+ public static final String ACCOUNT_CACHE_CERTIFICATES_LOCATION = "irods.account.gsi.certificates.location";
+ public static final String ACCOUNT_CACHE_USER_AUTO_GSI = "irods.account.autogsi";
+ public static final String ACCOUNT_CACHE_CERT_PEM_LOCATION = "irods.account.gsi.cert.pem.location";
+ public static final String ACCOUNT_CACHE_KEY_PEM_LOCATION = "irods.account.gsi.key.pem.location";
+ public static final String ACCOUNT_CACHE_CERT_P12_LOCATION = "irods.account.gsi.cert.p12.location";
+ public static final String ACCOUNT_CACHE_CERT_LOGIN_MODE = "irods.account.gsi.cert.login.mode";
+ // /for GSI
public static final String POLICY_AWARE_PROPERTY = "policy.aware";
public static final String LOOK_AND_FEEL = "idrop.lookandfeel";
public static final String TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES = "transferengine.record.successful.files";
@@ -66,6 +69,7 @@ public interface IdropConfigurationService {
public static final String IRODS_IO_GET_BUFFER_SIZE = "jargon.get.buffer.size";
public static final String IRODS_CONNECTION_RESTART = "transfer.reconnect";
public static final String IDROP_ENABLE_RESC_EDIT = "idrop.settings.enable_default_resc_edit";
+ public static final String IDROP_PUBLIC_LINK_SERVICE = "idrop.public.link.service.url";
Properties bootstrapConfigurationAndMergePropertiesFromLocalAndClasspath()
throws IdropException;
@@ -96,7 +100,7 @@ public interface IdropConfigurationService {
* {@link IRODSAccount} to be cached
* @throws IdropException
*/
- void saveLogin(final IRODSAccount irodsAccount) throws IdropException;
+ void saveLogin(final IRODSAccount irodsAccount, boolean savePassword) throws IdropException;
void removeConfigProperty(final String key) throws IdropException;
@@ -136,4 +140,5 @@ public interface IdropConfigurationService {
void restoreIDROPConfigFromJargonProperties(
final JargonProperties jargonProperties) throws JargonException;
+
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java
index e65e245..264f361 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java
@@ -99,7 +99,7 @@ public class IdropConfigurationServiceImpl implements IdropConfigurationService
throw new IdropException(ex);
}
- }
+ }
log.debug("properties from database:{}", databaseProperties);
if (databaseProperties.isEmpty()) {
@@ -250,7 +250,7 @@ public class IdropConfigurationServiceImpl implements IdropConfigurationService
}
@Override
- public void saveLogin(final IRODSAccount irodsAccount)
+ public void saveLogin(final IRODSAccount irodsAccount, boolean savePassword)
throws IdropException {
log.info("save login");
if (irodsAccount == null) {
@@ -272,6 +272,17 @@ public class IdropConfigurationServiceImpl implements IdropConfigurationService
irodsAccount.getUserName());
updateConfig(IdropConfigurationService.ACCOUNT_CACHE_LOGIN_MODE,
irodsAccount.getAuthenticationScheme().name());
+ if(savePassword){
+ updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD,
+ irodsAccount.getPassword());
+ updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS,
+ "true");
+ }else{
+ updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD,
+ "");
+ updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS,
+ "false");
+ }
log.info("config updated");
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/IdropConfig.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/IdropConfig.java
index 2663d32..89aa42e 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/IdropConfig.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/IdropConfig.java
@@ -7,498 +7,489 @@ import org.apache.log4j.Level;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.irods.jargon.core.connection.IRODSCommands;
-import org.irods.jargon.core.connection.IRODSConnection;
import org.irods.jargon.idrop.desktop.systraygui.services.IdropConfigurationService;
/**
- * Access data about the configuration of Idrop. This serves as a view to the
- * loaded cache of properties that iDrop consults. The properties are originally
- * 'bootstrapped' at load time and resolved from various sources to come up with
- * the operative set. This bootstrapping is done by the
- * {@link IdropConfigurationService}.
+ * Access data about the configuration of Idrop. This serves as a view to the loaded cache of
+ * properties that iDrop consults. The properties are originally 'bootstrapped' at load time and
+ * resolved from various sources to come up with the operative set. This bootstrapping is done by
+ * the {@link IdropConfigurationService}.
* <p/>
- * In normal operation, this config class is queried by iDrop to save database
- * accesses. When any configuration information is updated, this is through the
- * <code>IdropConfigurationService</code>, which will make necessary database
- * updates, and then update this cache.
- *
+ * In normal operation, this config class is queried by iDrop to save database accesses. When any
+ * configuration information is updated, this is through the
+ * <code>IdropConfigurationService</code>, which will make necessary database updates, and then
+ * update this cache.
+ *
* @author Mike Conway - DICE (www.irods.org)
*/
public class IdropConfig {
- private final Properties idropProperties;
-
- /**
- * Given a key, get the value in the cached properties (this is not going
- * against the config database)
- *
- * @param propKey
- * <code>String</code> with the key of the property
- * @return <code>String</code> with the resulting value, or
- * <code>null</code> if not found
- */
- public String getPropertyForKey(final String propKey) {
- return idropProperties.getProperty(propKey);
- }
-
- /**
- * General method to set a property in the cached properties (this does not
- * update the config database)
- *
- * @param propKey
- * <code>String</code> with the name of the property, cannot be
- * null
- * @param propValue
- * <code>String</code> with the value of the property, can be
- * null
- */
- public void setProperty(final String propKey, final String propValue) {
- if (propKey == null) {
- throw new IllegalArgumentException("null propKey");
- }
- idropProperties.put(propKey, propValue);
- }
-
- public Properties getIdropProperties() {
- return idropProperties;
- }
-
- /**
- * Initialize this wrapper around properties with the
- * <code>Properties</code> that represent the idrop configuration.
- *
- * @param properties
- */
- public IdropConfig(final Properties properties) {
- if (properties == null) {
- throw new IllegalArgumentException("null properties");
- }
- idropProperties = properties;
- }
-
- /**
- * Does iDrop need to display policy-aware features?
- *
- * @return <code>boolean</code> that will be <code>true</code> if policy
- * features are displayed.
- */
- public boolean isPolicyAware() {
- boolean policyAware = false;
- String policyAwareValue = idropProperties
- .getProperty(IdropConfigurationService.POLICY_AWARE_PROPERTY);
-
- if (policyAwareValue != null && policyAwareValue.equals("true")) {
- policyAware = true;
- }
-
- return policyAware;
-
- }
-
- /**
- * Does iDrop need to display advanced options? Otherwise, a simpler client
- * is presented
- *
- * @return <code>boolean</code> that will be <code>true</code> if policy
- * features are displayed.
- */
- public boolean isAdvancedView() {
- boolean advancedView = false;
- String propValue = idropProperties
- .getProperty(IdropPropertiesHelper.ADVANCED_VIEW_PROPERTY);
-
- if (propValue != null && propValue.equals("true")) {
- advancedView = true;
- }
-
- return advancedView;
-
- }
-
- public String getTransferDatabaseName() {
- String propValue = idropProperties
- .getProperty(IdropPropertiesHelper.TRANSFER_DATABASE_NAME);
-
- if (propValue != null) {
- return propValue;
- } else {
- return "transferDatabase";
- }
- }
-
- /**
- * Should iDrop display a preset login limited to a user's home directory?
- *
- * @return
- */
- public boolean isLoginPreset() {
- boolean loginPreset = false;
- String loginPresetValue = idropProperties
- .getProperty(IdropPropertiesHelper.LOGIN_PRESET);
-
- if (loginPresetValue != null && loginPresetValue.equals("true")) {
- loginPreset = true;
- }
-
- return loginPreset;
- }
-
- /**
- * Should successful transfers be logged to the internal database?
- *
- * @return
- */
- public boolean isLogSuccessfulTransfers() {
- boolean logSuccessful = false;
- String logSuccessfulTransfers = idropProperties
- .getProperty(IdropConfigurationService.TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES);
-
- if (logSuccessfulTransfers != null
- && logSuccessfulTransfers.equals("true")) {
- logSuccessful = true;
- }
-
- return logSuccessful;
- }
-
- /**
- * Should a checksum be created and verifed during get/put transfers?
- *
- * @return
- */
- public boolean isVerifyChecksum() {
- boolean verify = false;
- String verifyChecksumValue = idropProperties
- .getProperty(IdropConfigurationService.VERIFY_CHECKSUM_ON_TRANSFER);
-
- if (verifyChecksumValue != null && verifyChecksumValue.equals("true")) {
- verify = true;
- }
-
- return verify;
- }
-
- /**
- * Should connections be re-routed on put/get based on file resource
- * containing files
- *
- * @return
- */
- public boolean isAllowConnectionRerouting() {
- boolean bool = false;
- String val = idropProperties
- .getProperty(IdropConfigurationService.ALLOW_CONNECTION_REROUTING);
-
- if (val != null && val.equals("true")) {
- bool = true;
- }
- return bool;
- }
-
- /**
- * Should transfer progress within a file be shown?
- *
- * @return <code>boolean</code> that will be <code>true</code> if intra-file
- * call-backs are desired.
- */
- public boolean isIntraFileStatusCallbacks() {
- return getBooleanForKey(IdropConfigurationService.INTRA_FILE_STATUS_CALLBACKS);
- }
-
- /**
- * Time-out (in seconds) for the main iRODS connection. This can be set to 0
- * or less to inactivate
- *
- * @return
- */
- public int getIrodsConnectionTimeout() {
- return getIntForKey(IdropConfigurationService.IRODS_CONNECTION_TIMEOUT);
- }
-
- /**
- * Time-out (in seconds) for iRODS connections during parallel transfer.
- * This can be set to 0 or less to inactivate
- *
- * @return
- */
- public int getIrodsParallelConnectionTimeout() {
- return getIntForKey(IdropConfigurationService.IRODS_PARALLEL_CONNECTION_TIMEOUT);
- }
-
- /**
- * Maximum number of threads in parallel transfers. This is a trade-off in
- * performance and through-put
- *
- * @return
- */
- public int getIrodsParallelTransferMaxThreads() {
- return getIntForKey(IdropConfigurationService.IRODS_PARALLEL_CONNECTION_MAX_THREADS);
- }
-
- /**
- * Indicates whether a pool is used to maintain parallel transfer threads
- *
- * @return
- */
- public boolean isParallelUsePool() {
- return getBooleanForKey(IdropConfigurationService.IRODS_PARALLEL_USE_POOL);
- }
-
- /**
- * Do I use parallel transfers at all?
- *
- * @return
- */
- public boolean isUseParallelTransfers() {
- return getBooleanForKey(IdropConfigurationService.IRODS_PARALLEL_USE_PARALLEL);
- }
-
- public boolean isUseNIOForParallelTransfers() {
- return getBooleanForKey(IdropConfigurationService.IRODS_PARALLEL_USE_NIO);
- }
-
- /**
- * Get the internal buffer size used for the input stream between Jargon and
- * iRODS. See https://code.renci.org/gf/project/jargon/wiki/?pagename=
- * NormalIOArrangement return <code>int</code> with the buffer size for the
- * input stream buffer. (0 = use defaults, -1 = do not wrap with buffered
- * input stream) jargon.io.internal.input.stream.buffer.size
- */
- public int getInternalInputStreamBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_INTERNAL_INPUT_STREAM_BUFFER_SIZE);
- }
-
- /**
- * Get the internal buffer size used for the output stream between Jargon
- * and iRODS. See https://code.renci.org/gf/project/jargon/wiki/?pagename=
- * NormalIOArrangement return <code>int</code> with the buffer size for the
- * output stream buffer. (0 = use defaults, -1 = do not wrap with buffered
- * input stream) jargon.io.internal.output.stream.buffer.size
- */
- public int getInternalOutputStreamBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_INTERNAL_OUTPUT_STREAM_BUFFER_SIZE);
- }
-
- /**
- * Get the size of the internal buffer cache . See
- * https://code.renci.org/gf/
- * project/jargon/wiki/?pagename=NormalIOArrangement. Jargon has an internal
- * buffer where the various <code>send()</code> methods in
- * {@link IRODSConnection} write data to iRODS. In these methods, Jargon
- * uses an internal cache buffer for the sends. This has been done
- * historically, but the benefits of this cache have not yet been measured.
- * Setting this as a parameter to turn off will assist in testing the use of
- * the buffer, and the option of eliminating the buffer altogether. return
- * <code>int</code> with the size of the internal cache (0 = do not utilize
- * the cache buffer) jargon.io.internal.cache.buffer.size
- */
- public int getInternalCacheBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_INTERNAL_CACHE_BUFFER_SIZE);
- }
-
- /**
- * Get the buffer size used for the input stream between Jargon and iRODS
- * passed to the <code>send()</code> method of {@link IRODSConnection}. This
- * input stream would typically be from a local file that was being sent to
- * iRODS, or other such source. The {@link IRODSCommands} object, using the
- * <code>irodsFunction</code> method with the <code>InputStream</code>
- * parameter, will wrap the given input stream in a
- * <code>BufferedInputStream</code> based on the setting of this parameter.
- *
- * See https://code.renci.org/gf/project/jargon/wiki/?pagename=
- * NormalIOArrangement return <code>int</code> with the buffer size for the
- * buffered stream that will wrap an <code>InputStream</code> to be sent to
- * iRODS. (0 = use defaults, -1 = do not wrap with buffered input stream)
- * jargon.io.send.input.stream.buffer.size
- */
- public int getSendInputStreamBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_SEND_INPUT_STREAM_BUFFER_SIZE);
- }
-
- /**
- * Get the size of the buffer used in read/write operations to copy data
- * from an input stream to output stream in the {@link IRODSConnection}
- * class <code>send()</code> methods.
- *
- * @return <code>int</code> with the size of the read/write loop buffer
- * jargon.io.input.to.output.copy.byte.buffer.size
- */
- public int getInputToOutputCopyBufferByteSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_INPUT_TO_OUTPUT_COPY_BUFFER_SIZE);
- }
-
- /**
- * Get the size of the buffer used in a <code>BufferedOutputStream</code>
- * that wraps the output stream for the local file. This is used in
- * processing get operations where the iRODS data is being saved to the
- * local file system. (0 = use defaults, -1 = do not wrap with buffered
- * output stream) jargon.io.local.output.stream.buffer.size
- *
- * @return <code>int</code> with the buffer size
- */
- public int getLocalFileOutputStreamBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_LOCAL_OUTPUT_STREAM_BUFFER_SIZE);
- }
-
- /**
- * Get the size of the buffer used in a <code>BufferedInputStream</code>
- * that wraps the intput stream for the local file. This is used in
- * processing operations where the data is being read from the local file
- * system. (0 = use defaults, -1 = do not wrap with buffered output stream)
- * jargon.io.local.input.stream.buffer.size
- *
- * @return <code>int</code> with the buffer size
- */
- public int getLocalFileInputStreamBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_LOCAL_INPUT_STREAM_BUFFER_SIZE);
- }
-
- /**
- * Get the size of the file segment for each successive call in normal put
- * operations.
- *
- * @return
- */
- public int getPutBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_PUT_BUFFER_SIZE);
- }
-
- /**
- * Get the size of the file segment for each successive call in normal get
- * operations.
- *
- * @return <code>int</code> with buffer size
- */
- public int getGetBufferSize() {
- return getIntForKey(IdropConfigurationService.IRODS_IO_GET_BUFFER_SIZE);
- }
-
- /**
- * Get the configured synch device name. If not set, this will return a
- * <code>null</code>
- *
- * @return
- */
- public String getSynchDeviceName() {
- return idropProperties
- .getProperty(IdropConfigurationService.DEVICE_NAME);
- }
-
- /**
- * Should the startup wizard be shown
- *
- * @return
- */
- public boolean isShowStartupWizard() {
- boolean showWizard = false;
- String showStartup = idropProperties
- .getProperty(IdropConfigurationService.SHOW_STARTUP);
-
- if (showStartup != null && showStartup.equals("true")) {
- showWizard = true;
- }
-
- return showWizard;
-
- }
-
- /**
- * Should I have a rolling log in the user dir? Will return null of no
- * logging desired, otherwise, will return a log level
- *
- * @return
- */
- public String getLogLevelForRollingLog() {
- String propValue = idropProperties
- .getProperty(IdropPropertiesHelper.ROLLING_LOG_LEVEL);
- return propValue;
-
- }
-
- public void setUpLogging() {
- String rollingLogLevel = getLogLevelForRollingLog();
-
- if (rollingLogLevel == null) {
- return;
- }
-
- // log level is specified, set up a rolling logger
-
- String userHomeDirectory = System.getProperty("user.home");
- StringBuilder sb = new StringBuilder();
- sb.append(userHomeDirectory);
- sb.append("/.idrop/idrop.log");
-
- org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger
- .getRootLogger();
- if (rollingLogLevel.equalsIgnoreCase("INFO")) {
- rootLogger.setLevel(Level.INFO);
- } else if (rollingLogLevel.equalsIgnoreCase("DEBUG")) {
- rootLogger.setLevel(Level.DEBUG);
- } else if (rollingLogLevel.equalsIgnoreCase("WARN")) {
- rootLogger.setLevel(Level.WARN);
- } else {
- rootLogger.setLevel(Level.ERROR);
- }
-
- PatternLayout layout = new PatternLayout(
- "%d %-4r [%t] %-5p %c %x - %m%n");
-
- try {
- RollingFileAppender rfa = new RollingFileAppender(layout,
- sb.toString());
- rfa.setMaximumFileSize(1000000);
- rootLogger.addAppender(rfa);
- } catch (IOException e) {
- // e.printStackTrace();
- }
-
- }
-
- public boolean isShowGuiAtStartup() {
- boolean propBoolean = false;
- String propString = idropProperties
- .getProperty(IdropConfigurationService.SHOW_GUI);
-
- if (propString != null && propString.equals("true")) {
- propBoolean = true;
- }
-
- return propBoolean;
- }
-
- private boolean getBooleanForKey(final String key) {
- boolean propBoolean = false;
- String propString = idropProperties.getProperty(key);
-
- if (propString != null && propString.equals("true")) {
- propBoolean = true;
- }
- return propBoolean;
- }
-
- private int getIntForKey(final String key) {
- int propInt = -1;
- String propString = idropProperties.getProperty(key);
-
- if (propString == null) {
- return propInt;
- }
-
- propInt = Integer.parseInt(propString.trim());
-
- return propInt;
- }
-
- public boolean isConnectionRestart() {
- boolean propBoolean = false;
- String propString = idropProperties
- .getProperty(IdropConfigurationService.IRODS_CONNECTION_RESTART);
-
- if (propString != null && propString.equals("true")) {
- propBoolean = true;
- }
-
- return propBoolean;
- }
+ private final Properties idropProperties;
+
+ /**
+ * Given a key, get the value in the cached properties (this is not going against the config
+ * database)
+ *
+ * @param propKey
+ * <code>String</code> with the key of the property
+ * @return
+ * <code>String</code> with the resulting value, or
+ * <code>null</code> if not found
+ */
+ public String getPropertyForKey(final String propKey) {
+ return idropProperties.getProperty(propKey);
+ }
+
+ /**
+ * General method to set a property in the cached properties (this does not update the config
+ * database)
+ *
+ * @param propKey
+ * <code>String</code> with the name of the property, cannot be null
+ * @param propValue
+ * <code>String</code> with the value of the property, can be null
+ */
+ public void setProperty(final String propKey, final String propValue) {
+ if (propKey == null) {
+ throw new IllegalArgumentException("null propKey");
+ }
+ idropProperties.put(propKey, propValue);
+ }
+
+ public Properties getIdropProperties() {
+ return idropProperties;
+ }
+
+ /**
+ * Initialize this wrapper around properties with the
+ * <code>Properties</code> that represent the idrop configuration.
+ *
+ * @param properties
+ */
+ public IdropConfig(final Properties properties) {
+ if (properties == null) {
+ throw new IllegalArgumentException("null properties");
+ }
+ this.idropProperties = properties;
+ }
+
+ /**
+ * Does iDrop need to display policy-aware features?
+ *
+ * @return
+ * <code>boolean</code> that will be
+ * <code>true</code> if policy features are displayed.
+ */
+ public boolean isPolicyAware() {
+ boolean policyAware = false;
+ String policyAwareValue = idropProperties.getProperty(IdropConfigurationService.POLICY_AWARE_PROPERTY);
+
+ if (policyAwareValue != null && policyAwareValue.equals("true")) {
+ policyAware = true;
+ }
+
+ return policyAware;
+
+ }
+
+ /**
+ * Does iDrop need to display advanced options? Otherwise, a simpler client is presented
+ *
+ * @return
+ * <code>boolean</code> that will be
+ * <code>true</code> if policy features are displayed.
+ */
+ public boolean isAdvancedView() {
+ boolean advancedView = false;
+ String propValue = idropProperties.getProperty(IdropPropertiesHelper.ADVANCED_VIEW_PROPERTY);
+
+ if (propValue != null && propValue.equals("true")) {
+ advancedView = true;
+ }
+
+ return advancedView;
+
+ }
+
+ public String getTransferDatabaseName() {
+ String propValue = idropProperties.getProperty(IdropPropertiesHelper.TRANSFER_DATABASE_NAME);
+
+ if (propValue != null) {
+ return propValue;
+ } else {
+ return "transferDatabase";
+ }
+ }
+
+ /**
+ * Should iDrop display a preset login limited to a user's home directory?
+ *
+ * @return
+ */
+ public boolean isLoginPreset() {
+ boolean loginPreset = false;
+ String loginPresetValue = idropProperties.getProperty(IdropPropertiesHelper.LOGIN_PRESET);
+
+ if (loginPresetValue != null && loginPresetValue.equals("true")) {
+ loginPreset = true;
+ }
+
+ return loginPreset;
+ }
+
+ /**
+ * Should successful transfers be logged to the internal database?
+ *
+ * @return
+ */
+ public boolean isLogSuccessfulTransfers() {
+ boolean logSuccessful = false;
+ String logSuccessfulTransfers = idropProperties.getProperty(IdropConfigurationService.TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES);
+
+ if (logSuccessfulTransfers != null
+ && logSuccessfulTransfers.equals("true")) {
+ logSuccessful = true;
+ }
+
+ return logSuccessful;
+ }
+
+ /**
+ * Should a checksum be created and verifed during get/put transfers?
+ *
+ * @return
+ */
+ public boolean isVerifyChecksum() {
+ boolean verify = false;
+ String verifyChecksumValue = idropProperties.getProperty(IdropConfigurationService.VERIFY_CHECKSUM_ON_TRANSFER);
+
+ if (verifyChecksumValue != null
+ && verifyChecksumValue.equals("true")) {
+ verify = true;
+ }
+
+ return verify;
+ }
+
+ /**
+ * Should connections be re-routed on put/get based on file resource containing files
+ *
+ * @return
+ */
+ public boolean isAllowConnectionRerouting() {
+ boolean bool = false;
+ String val = idropProperties.getProperty(IdropConfigurationService.ALLOW_CONNECTION_REROUTING);
+
+ if (val != null
+ && val.equals("true")) {
+ bool = true;
+ }
+ return bool;
+ }
+
+ /**
+ * Should transfer progress within a file be shown?
+ *
+ * @return
+ * <code>boolean</code> that will be
+ * <code>true</code> if intra-file call-backs are desired.
+ */
+ public boolean isIntraFileStatusCallbacks() {
+ return getBooleanForKey(IdropConfigurationService.INTRA_FILE_STATUS_CALLBACKS);
+ }
+
+ /**
+ * Time-out (in seconds) for the main iRODS connection. This can be set to 0 or less to
+ * inactivate
+ *
+ * @return
+ */
+ public int getIrodsConnectionTimeout() {
+ return getIntForKey(IdropConfigurationService.IRODS_CONNECTION_TIMEOUT);
+ }
+
+ /**
+ * Time-out (in seconds) for iRODS connections during parallel transfer. This can be set to 0 or
+ * less to inactivate
+ *
+ * @return
+ */
+ public int getIrodsParallelConnectionTimeout() {
+ return getIntForKey(IdropConfigurationService.IRODS_PARALLEL_CONNECTION_TIMEOUT);
+ }
+
+ /**
+ * Maximum number of threads in parallel transfers. This is a trade-off in performance and
+ * through-put
+ *
+ * @return
+ */
+ public int getIrodsParallelTransferMaxThreads() {
+ return getIntForKey(IdropConfigurationService.IRODS_PARALLEL_CONNECTION_MAX_THREADS);
+ }
+
+ /**
+ * Indicates whether a pool is used to maintain parallel transfer threads
+ *
+ * @return
+ */
+ public boolean isParallelUsePool() {
+ return getBooleanForKey(IdropConfigurationService.IRODS_PARALLEL_USE_POOL);
+ }
+
+ /**
+ * Do I use parallel transfers at all?
+ * @return
+ */
+ public boolean isUseParallelTransfers() {
+ return getBooleanForKey(IdropConfigurationService.IRODS_PARALLEL_USE_PARALLEL);
+ }
+
+ public boolean isUseNIOForParallelTransfers() {
+ return getBooleanForKey(IdropConfigurationService.IRODS_PARALLEL_USE_NIO);
+ }
+
+ /**
+ * Get the internal buffer size used for the input stream between Jargon and iRODS. See
+ * https://code.renci.org/gf/project/jargon/wiki/?pagename= NormalIOArrangement return
+ * <code>int</code> with the buffer size for the input stream buffer. (0 = use defaults, -1 = do
+ * not wrap with buffered input stream) jargon.io.internal.input.stream.buffer.size
+ */
+ public int getInternalInputStreamBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_INTERNAL_INPUT_STREAM_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the internal buffer size used for the output stream between Jargon and iRODS. See
+ * https://code.renci.org/gf/project/jargon/wiki/?pagename= NormalIOArrangement return
+ * <code>int</code> with the buffer size for the output stream buffer. (0 = use defaults, -1 =
+ * do not wrap with buffered input stream) jargon.io.internal.output.stream.buffer.size
+ */
+ public int getInternalOutputStreamBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_INTERNAL_OUTPUT_STREAM_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the size of the internal buffer cache . See https://code.renci.org/gf/
+ * project/jargon/wiki/?pagename=NormalIOArrangement. Jargon has an internal buffer where the
+ * various
+ * <code>send()</code> methods in
+ * {@link IRODSConnection} write data to iRODS. In these methods, Jargon uses an internal cache
+ * buffer for the sends. This has been done historically, but the benefits of this cache have
+ * not yet been measured. Setting this as a parameter to turn off will assist in testing the use
+ * of the buffer, and the option of eliminating the buffer altogether. return
+ * <code>int</code> with the size of the internal cache (0 = do not utilize the cache buffer)
+ * jargon.io.internal.cache.buffer.size
+ */
+ public int getInternalCacheBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_INTERNAL_CACHE_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the buffer size used for the input stream between Jargon and iRODS passed to the
+ * <code>send()</code> method of {@link IRODSConnection}. This input stream would typically be
+ * from a local file that was being sent to iRODS, or other such source. The {@link IRODSCommands}
+ * object, using the
+ * <code>irodsFunction</code> method with the
+ * <code>InputStream</code> parameter, will wrap the given input stream in a
+ * <code>BufferedInputStream</code> based on the setting of this parameter.
+ *
+ * See https://code.renci.org/gf/project/jargon/wiki/?pagename= NormalIOArrangement return
+ * <code>int</code> with the buffer size for the buffered stream that will wrap an
+ * <code>InputStream</code> to be sent to iRODS. (0 = use defaults, -1 = do not wrap with
+ * buffered input stream) jargon.io.send.input.stream.buffer.size
+ */
+ public int getSendInputStreamBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_SEND_INPUT_STREAM_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the size of the buffer used in read/write operations to copy data from an input stream to
+ * output stream in the {@link IRODSConnection} class
+ * <code>send()</code> methods.
+ *
+ * @return
+ * <code>int</code> with the size of the read/write loop buffer
+ * jargon.io.input.to.output.copy.byte.buffer.size
+ */
+ public int getInputToOutputCopyBufferByteSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_INPUT_TO_OUTPUT_COPY_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the size of the buffer used in a
+ * <code>BufferedOutputStream</code> that wraps the output stream for the local file. This is
+ * used in processing get operations where the iRODS data is being saved to the local file
+ * system. (0 = use defaults, -1 = do not wrap with buffered output stream)
+ * jargon.io.local.output.stream.buffer.size
+ *
+ * @return
+ * <code>int</code> with the buffer size
+ */
+ public int getLocalFileOutputStreamBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_LOCAL_OUTPUT_STREAM_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the size of the buffer used in a
+ * <code>BufferedInputStream</code> that wraps the intput stream for the local file. This is
+ * used in processing operations where the data is being read from the local file system. (0 =
+ * use defaults, -1 = do not wrap with buffered output stream)
+ * jargon.io.local.input.stream.buffer.size
+ *
+ * @return
+ * <code>int</code> with the buffer size
+ */
+ public int getLocalFileInputStreamBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_LOCAL_INPUT_STREAM_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the size of the file segment for each successive call in normal put operations.
+ *
+ * @return
+ */
+ public int getPutBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_PUT_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the size of the file segment for each successive call in normal get operations.
+ *
+ * @return
+ * <code>int</code> with buffer size
+ */
+ public int getGetBufferSize() {
+ return getIntForKey(IdropConfigurationService.IRODS_IO_GET_BUFFER_SIZE);
+ }
+
+ /**
+ * Get the configured synch device name. If not set, this will return a
+ * <code>null</code>
+ *
+ * @return
+ */
+ public String getSynchDeviceName() {
+ return idropProperties.getProperty(IdropConfigurationService.DEVICE_NAME);
+ }
+
+ /**
+ * Should the startup wizard be shown
+ *
+ * @return
+ */
+ public boolean isShowStartupWizard() {
+ boolean showWizard = false;
+ String showStartup = idropProperties.getProperty(IdropConfigurationService.SHOW_STARTUP);
+
+ if (showStartup != null && showStartup.equals("true")) {
+ showWizard = true;
+ }
+
+ return showWizard;
+
+ }
+
+ /**
+ * Should I have a rolling log in the user dir? Will return null of no logging desired,
+ * otherwise, will return a log level
+ *
+ * @return
+ */
+ public String getLogLevelForRollingLog() {
+ String propValue = idropProperties.getProperty(IdropPropertiesHelper.ROLLING_LOG_LEVEL);
+ return propValue;
+
+ }
+
+ public void setUpLogging() {
+ String rollingLogLevel = getLogLevelForRollingLog();
+
+ if (rollingLogLevel == null) {
+ return;
+ }
+
+ // log level is specified, set up a rolling logger
+
+ String userHomeDirectory = System.getProperty("user.home");
+ StringBuilder sb = new StringBuilder();
+ sb.append(userHomeDirectory);
+ sb.append("/.idrop/idrop.log");
+
+ org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
+ if (rollingLogLevel.equalsIgnoreCase("INFO")) {
+ rootLogger.setLevel(Level.INFO);
+ } else if (rollingLogLevel.equalsIgnoreCase("DEBUG")) {
+ rootLogger.setLevel(Level.DEBUG);
+ } else if (rollingLogLevel.equalsIgnoreCase("WARN")) {
+ rootLogger.setLevel(Level.WARN);
+ } else {
+ rootLogger.setLevel(Level.ERROR);
+ }
+
+ PatternLayout layout = new PatternLayout(
+ "%d %-4r [%t] %-5p %c %x - %m%n");
+
+ try {
+ RollingFileAppender rfa = new RollingFileAppender(layout,
+ sb.toString());
+ rfa.setMaximumFileSize(1000000);
+ rootLogger.addAppender(rfa);
+ } catch (IOException e) {
+ // e.printStackTrace();
+ }
+
+ }
+
+ public boolean isShowGuiAtStartup() {
+ boolean propBoolean = false;
+ String propString = idropProperties.getProperty(IdropConfigurationService.SHOW_GUI);
+
+ if (propString != null && propString.equals("true")) {
+ propBoolean = true;
+ }
+
+ return propBoolean;
+ }
+
+ private boolean getBooleanForKey(String key) {
+ boolean propBoolean = false;
+ String propString = idropProperties.getProperty(key);
+
+ if (propString != null && propString.equals("true")) {
+ propBoolean = true;
+ }
+ return propBoolean;
+ }
+
+ private int getIntForKey(String key) {
+ int propInt = -1;
+ String propString = idropProperties.getProperty(key);
+
+ if (propString == null) {
+ return propInt;
+ }
+
+
+ propInt = Integer.parseInt(propString.trim());
+
+ return propInt;
+ }
+
+ public boolean isConnectionRestart() {
+ boolean propBoolean = false;
+ String propString = idropProperties.getProperty(IdropConfigurationService.IRODS_CONNECTION_RESTART);
+
+ if (propString != null && propString.equals("true")) {
+ propBoolean = true;
+ }
+
+ return propBoolean;
+ }
+
+ public String getPublicLinkServiceUrl(){
+ return idropProperties.getProperty(IdropConfigurationService.IDROP_PUBLIC_LINK_SERVICE);
+ }
+
+
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
index b37b121..8f9c8b2 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
@@ -1,5 +1,5 @@
package org.irods.jargon.idrop.desktop.systraygui.utils;
public final class Version {
public static String VERSION="2.0.1-SNAPSHOT";
- public static String BUILD_TIME="20130704-1120";
+ public static String BUILD_TIME="20130813-1014";
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSOutlineModel.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSOutlineModel.java
index 6a06167..fd89aac 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSOutlineModel.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSOutlineModel.java
@@ -13,8 +13,10 @@ import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import org.irods.jargon.core.exception.JargonException;
+import org.irods.jargon.core.pub.IRODSFileSystemAO;
import org.irods.jargon.core.pub.io.IRODSFile;
import org.irods.jargon.core.pub.io.IRODSFileFactory;
+import org.irods.jargon.core.pub.io.IRODSFileImpl;
import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry;
import org.irods.jargon.core.transfer.TransferStatus;
import org.irods.jargon.core.transfer.TransferStatus.TransferState;
@@ -31,184 +33,170 @@ import org.slf4j.LoggerFactory;
*/
public class IRODSOutlineModel extends DefaultOutlineModel {
- public static final org.slf4j.Logger log = LoggerFactory
- .getLogger(IRODSOutlineModel.class);
- private final IRODSFileSystemModel treeModel;
-
- public IRODSFileSystemModel getTreeModel() {
- return treeModel;
- }
-
- private iDrop idrop;
-
- public IRODSOutlineModel(final iDrop idrop, final TreeModel tm,
- final TableModel tm1, final boolean bln, final String string) {
- super(tm, tm1, bln, string);
- treeModel = (IRODSFileSystemModel) tm;
- this.idrop = idrop;
-
- }
-
- public IRODSOutlineModel(final iDrop idrop, final TreeModel tm,
- final RowModel rm, final boolean bln, final String string) {
- super(tm, rm, bln, string);
- treeModel = (IRODSFileSystemModel) tm;
-
- this.idrop = idrop;
- }
-
- public void notifyFileShouldBeRemoved(final IRODSNode deletedNode)
- throws IdropException {
-
- if (deletedNode == null) {
- return;
- }
- log.info("deleting node from parent:{}", deletedNode);
- final IRODSNode parent = (IRODSNode) deletedNode.getParent();
-
- if (parent == null) {
- return;
- }
-
- final IRODSOutlineModel thisModel = this;
-
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
- deletedNode.getUserObject();
- CollectionAndDataObjectListingEntry entry = (CollectionAndDataObjectListingEntry) (parent)
- .getUserObject();
- IRODSTree stagingViewTree = idrop.getIrodsTree();
- try {
- TreeUtils.buildTreePathForIrodsAbsolutePath(
- stagingViewTree, entry.getFormattedAbsolutePath());
-
- } catch (IdropException ex) {
- Logger.getLogger(IRODSOutlineModel.class.getName()).log(
- Level.SEVERE, null, ex);
- throw new IdropRuntimeException(ex);
- }
-
- thisModel.treeModel.removeNodeFromParent(deletedNode);
-
- }
- });
- }
-
- public void notifyCompletionOfOperation(final IRODSTree irodsTree,
- final TransferStatus transferStatus) throws IdropException {
- log.info("tree model notified of status:{}", transferStatus);
-
- if (transferStatus.getTransferState() != TransferState.OVERALL_COMPLETION) {
- return;
- }
-
- // for put or copy operation, highlight the new node
- if (transferStatus.getTransferType() == TransferStatus.TransferType.PUT
- || transferStatus.getTransferType() == TransferStatus.TransferType.COPY) {
- log.info("successful put transfer, find the parent tree node, and clear the children");
- notifyFileShouldBeAdded(irodsTree,
- transferStatus.getTargetFileAbsolutePath());
-
- }
- }
-
- public void notifyFileShouldBeAdded(final IRODSTree irodsTree,
- final String irodsFileAbsolutePath) {
- log.info("notifyFileShouldBeAdded() for node:{}", irodsFileAbsolutePath);
-
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
-
- IRODSFileFactory irodsFileFactory = idrop.getiDropCore()
- .getIRODSFileFactoryForLoggedInAccount();
- try {
- try {
- // if the node already exists (e.g. an overwrite, don'
- // add it
-
- TreePath currentPath = TreeUtils
- .buildTreePathForIrodsAbsolutePath(irodsTree,
- irodsFileAbsolutePath);
- // build treePath will return parent if child not found
- if (currentPath == null) {
- log.warn(
- "null tree path found for:{} logged and ignored as a warning",
- irodsFileAbsolutePath);
- return;
- }
- IRODSNode irodsNode = (IRODSNode) currentPath
- .getLastPathComponent();
- CollectionAndDataObjectListingEntry lastPathNodeEntry = (CollectionAndDataObjectListingEntry) irodsNode
- .getUserObject();
- if (irodsFileAbsolutePath.equals(lastPathNodeEntry
- .getFormattedAbsolutePath())) {
- log.info("path already exists, do not double-add");
- return;
- }
-
- } catch (IdropException ex) {
- Logger.getLogger(IRODSOutlineModel.class.getName())
- .log(Level.SEVERE, null, ex);
- throw new IdropRuntimeException(ex);
- }
-
- IRODSFile addedFile = irodsFileFactory
- .instanceIRODSFile(irodsFileAbsolutePath);
- if (!addedFile.exists()) {
- log.info(
- "looking for file that was added, I don't find it, so just move on: {}",
- irodsFileAbsolutePath);
- return;
- }
- TreePath parentPath;
- try {
- parentPath = TreeUtils
- .buildTreePathForIrodsAbsolutePath(irodsTree,
- addedFile.getParent());
- } catch (IdropException ex) {
- Logger.getLogger(IRODSOutlineModel.class.getName())
- .log(Level.SEVERE, null, ex);
- throw new IdropRuntimeException(ex);
- }
-
- if (parentPath == null) {
- log.info("null path for lookup, just move on");
- return;
- }
- log.info("building a new node");
- CollectionAndDataObjectListingEntry newEntry = new CollectionAndDataObjectListingEntry();
- newEntry.setCreatedAt(new Date(addedFile.lastModified()));
- newEntry.setDataSize(addedFile.length());
- newEntry.setModifiedAt(new Date(addedFile.lastModified()));
-
- if (addedFile.isDirectory()) {
- newEntry.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.COLLECTION);
- newEntry.setParentPath(addedFile.getParent());
- newEntry.setPathOrName(addedFile.getAbsolutePath());
- } else {
- newEntry.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.DATA_OBJECT);
- newEntry.setParentPath(addedFile.getParent());
- newEntry.setPathOrName(addedFile.getName());
- }
-
- IRODSNode newNode = new IRODSNode(newEntry, idrop
- .getiDropCore().getIrodsAccount(), idrop
- .getiDropCore().getIrodsFileSystem(), irodsTree);
- ((IRODSNode) parentPath.getLastPathComponent())
- .add(newNode);
- irodsTree.highlightPath(parentPath);
- } catch (JargonException ex) {
- Logger.getLogger(IRODSOutlineModel.class.getName()).log(
- Level.SEVERE, null, ex);
- } finally {
- idrop.getiDropCore()
- .closeIRODSConnectionForLoggedInAccount();
- }
- }
- });
- }
+ public static final org.slf4j.Logger log = LoggerFactory.getLogger(IRODSOutlineModel.class);
+ private final IRODSFileSystemModel treeModel;
+
+ public IRODSFileSystemModel getTreeModel() {
+ return treeModel;
+ }
+ private iDrop idrop;
+
+ public IRODSOutlineModel(final iDrop idrop, final TreeModel tm,
+ final TableModel tm1, final boolean bln, final String string) {
+ super(tm, tm1, bln, string);
+ this.treeModel = (IRODSFileSystemModel) tm;
+ this.idrop = idrop;
+
+ }
+
+ public IRODSOutlineModel(final iDrop idrop, final TreeModel tm,
+ final RowModel rm, final boolean bln, final String string) {
+ super(tm, rm, bln, string);
+ this.treeModel = (IRODSFileSystemModel) tm;
+
+ this.idrop = idrop;
+ }
+
+ public void notifyFileShouldBeRemoved(final IRODSNode deletedNode)
+ throws IdropException {
+
+ if (deletedNode == null) {
+ return;
+ }
+ log.info("deleting node from parent:{}", deletedNode);
+ final IRODSNode parent = (IRODSNode) deletedNode.getParent();
+
+ if (parent == null) {
+ return;
+ }
+
+ final IRODSOutlineModel thisModel = this;
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ deletedNode.getUserObject();
+ CollectionAndDataObjectListingEntry entry = (CollectionAndDataObjectListingEntry) (parent).getUserObject();
+ IRODSTree stagingViewTree = idrop.getIrodsTree();
+ try {
+ TreeUtils.buildTreePathForIrodsAbsolutePath(
+ stagingViewTree, entry.getFormattedAbsolutePath());
+
+ } catch (IdropException ex) {
+ Logger.getLogger(IRODSOutlineModel.class.getName()).log(
+ Level.SEVERE, null, ex);
+ throw new IdropRuntimeException(ex);
+ }
+
+ thisModel.treeModel.removeNodeFromParent(deletedNode);
+
+ }
+ });
+ }
+
+ public void notifyCompletionOfOperation(final IRODSTree irodsTree,
+ final TransferStatus transferStatus) throws IdropException {
+ log.info("tree model notified of status:{}", transferStatus);
+
+ if (transferStatus.getTransferState() != TransferState.OVERALL_COMPLETION) {
+ return;
+ }
+
+ // for put or copy operation, highlight the new node
+ if (transferStatus.getTransferType() == TransferStatus.TransferType.PUT
+ || transferStatus.getTransferType() == TransferStatus.TransferType.COPY) {
+ log.info("successful put transfer, find the parent tree node, and clear the children");
+ notifyFileShouldBeAdded(irodsTree,
+ transferStatus.getTargetFileAbsolutePath());
+
+ }
+ }
+
+ public void notifyFileShouldBeAdded(final IRODSTree irodsTree,
+ final String irodsFileAbsolutePath) {
+ log.info("notifyFileShouldBeAdded() for node:{}", irodsFileAbsolutePath);
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+
+ IRODSFileFactory irodsFileFactory = idrop.getiDropCore().getIRODSFileFactoryForLoggedInAccount();
+ try {
+ try {
+ // if the node already exists (e.g. an overwrite, don'
+ // add it
+
+ TreePath currentPath = TreeUtils.buildTreePathForIrodsAbsolutePath(irodsTree,
+ irodsFileAbsolutePath);
+ // build treePath will return parent if child not found
+ if (currentPath == null) {
+ log.warn(
+ "null tree path found for:{} logged and ignored as a warning",
+ irodsFileAbsolutePath);
+ return;
+ }
+ IRODSNode irodsNode = (IRODSNode) currentPath.getLastPathComponent();
+ CollectionAndDataObjectListingEntry lastPathNodeEntry = (CollectionAndDataObjectListingEntry) irodsNode.getUserObject();
+ if (irodsFileAbsolutePath.equals(lastPathNodeEntry.getFormattedAbsolutePath())) {
+ log.info("path already exists, do not double-add");
+ return;
+ }
+
+ } catch (IdropException ex) {
+ Logger.getLogger(IRODSOutlineModel.class.getName()).log(Level.SEVERE, null, ex);
+ throw new IdropRuntimeException(ex);
+ }
+
+ IRODSFile addedFile = irodsFileFactory.instanceIRODSFile(irodsFileAbsolutePath);
+ if (!addedFile.exists()) {
+ log.info(
+ "looking for file that was added, I don't find it, so just move on: {}",
+ irodsFileAbsolutePath);
+ return;
+ }
+ TreePath parentPath;
+ try {
+ parentPath = TreeUtils.buildTreePathForIrodsAbsolutePath(irodsTree,
+ addedFile.getParent());
+ } catch (IdropException ex) {
+ Logger.getLogger(IRODSOutlineModel.class.getName()).log(Level.SEVERE, null, ex);
+ throw new IdropRuntimeException(ex);
+ }
+
+ if (parentPath == null) {
+ log.info("null path for lookup, just move on");
+ return;
+ }
+ log.info("building a new node");
+ CollectionAndDataObjectListingEntry newEntry = new CollectionAndDataObjectListingEntry();
+ newEntry.setCreatedAt(new Date(addedFile.lastModified()));
+ newEntry.setDataSize(addedFile.length());
+ newEntry.setModifiedAt(new Date(addedFile.lastModified()));
+
+ if (addedFile.isDirectory()) {
+ newEntry.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.COLLECTION);
+ newEntry.setParentPath(addedFile.getParent());
+ newEntry.setPathOrName(addedFile.getAbsolutePath());
+ } else {
+ newEntry.setObjectType(CollectionAndDataObjectListingEntry.ObjectType.DATA_OBJECT);
+ newEntry.setParentPath(addedFile.getParent());
+ newEntry.setPathOrName(addedFile.getName());
+ IRODSFileSystemAO ao = idrop.getiDropCore().getIRODSAccessObjectFactory().getIRODSFileSystemAO(idrop.getIrodsAccount());
+ newEntry.setOwnerName(ao.getObjStat(addedFile.getAbsolutePath()).getOwnerName());
+ }
+
+ IRODSNode newNode = new IRODSNode(newEntry, idrop.getiDropCore().getIrodsAccount(), idrop.getiDropCore().getIrodsFileSystem(), irodsTree);
+ ((IRODSNode) parentPath.getLastPathComponent()).add(newNode);
+ irodsTree.highlightPath(parentPath);
+ } catch (JargonException ex) {
+ Logger.getLogger(IRODSOutlineModel.class.getName()).log(
+ Level.SEVERE, null, ex);
+ } finally {
+ idrop.getiDropCore().closeIRODSConnectionForLoggedInAccount();
+ }
+ }
+ });
+ }
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSTree.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSTree.java
index 18dd7c5..5804965 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSTree.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/viscomponents/IRODSTree.java
@@ -1,18 +1,26 @@
package org.irods.jargon.idrop.desktop.systraygui.viscomponents;
-import java.awt.Cursor;
+import java.awt.*;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.JOptionPane;
-import javax.swing.JPopupMenu;
+import javax.swing.*;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeWillExpandListener;
@@ -20,391 +28,502 @@ import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
+import org.irods.jargon.core.exception.JargonException;
+import org.irods.jargon.core.pub.DataObjectAO;
+import org.irods.jargon.core.pub.io.IRODSFile;
+import org.irods.jargon.core.pub.io.IRODSFileFactory;
import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry;
+import org.irods.jargon.core.utils.MiscIRODSUtils;
import org.irods.jargon.idrop.desktop.systraygui.DeleteIRODSDialog;
import org.irods.jargon.idrop.desktop.systraygui.IRODSTreeContainingComponent;
import org.irods.jargon.idrop.desktop.systraygui.NewIRODSDirectoryDialog;
import org.irods.jargon.idrop.desktop.systraygui.RenameIRODSDirectoryDialog;
import org.irods.jargon.idrop.desktop.systraygui.iDrop;
+import org.irods.jargon.idrop.desktop.systraygui.services.IdropConfigurationService;
import org.irods.jargon.idrop.exceptions.IdropException;
import org.irods.jargon.idrop.exceptions.IdropRuntimeException;
+import org.irods.jargon.ticket.TicketAdminService;
+import org.irods.jargon.ticket.TicketServiceFactory;
+import org.irods.jargon.ticket.TicketServiceFactoryImpl;
+import org.irods.jargon.ticket.packinstr.TicketCreateModeEnum;
import org.netbeans.swing.outline.DefaultOutlineModel;
import org.netbeans.swing.outline.Outline;
+import org.netbeans.swing.outline.OutlineModel;
import org.netbeans.swing.outline.TreePathSupport;
import org.slf4j.LoggerFactory;
/**
* Swing JTree component for viewing iRODS server file system
- *
+ *
* @author Mike Conway - DICE (www.irods.org)
*/
public class IRODSTree extends Outline implements TreeWillExpandListener,
- TreeExpansionListener, IRODSTreeContainingComponent {
-
- /**
- *
- */
- private static final long serialVersionUID = -7815706939610881953L;
- public static org.slf4j.Logger log = LoggerFactory
- .getLogger(IRODSTree.class);
- protected iDrop idropParentGui = null;
- protected JPopupMenu m_popup = null;
- protected Action m_action;
- protected TreePath m_clickedPath;
- protected IRODSTree thisTree;
- private boolean refreshingTree = false;
- TreePathSupport tps;
-
- @Override
- public boolean isRefreshingTree() {
- synchronized (this) {
- return refreshingTree;
- }
- }
-
- public void setRefreshingTree(final boolean refreshingTree) {
- synchronized (this) {
- this.refreshingTree = refreshingTree;
- }
- }
-
- public IRODSTree(final TreeModel newModel, final iDrop idropParentGui) {
- super();
-
- DefaultOutlineModel.createOutlineModel(newModel, new IRODSRowModel(),
- true, "File System");
- this.idropParentGui = idropParentGui;
-
- initializeMenusAndListeners();
- }
-
- public IRODSTree() {
- super();
- }
-
- public IRODSTree(final iDrop idropParentGui) {
- super();
- this.idropParentGui = idropParentGui;
- initializeMenusAndListeners();
- }
-
- private void initializeMenusAndListeners() {
- tps = new TreePathSupport(getOutlineModel(), getLayoutCache());
- tps.addTreeExpansionListener(this);
- tps.addTreeWillExpandListener(this);
- setDragEnabled(true);
- setTransferHandler(new IRODSTreeTransferHandler(idropParentGui,
- "selectionModel"));
- setDropMode(javax.swing.DropMode.USE_SELECTION);
- setRenderDataProvider(new OutlineRenderProvider(this));
- setUpTreeMenu();
- IrodsSelectionListenerForBuildingInfoPanel treeListener;
- try {
- treeListener = new IrodsSelectionListenerForBuildingInfoPanel(
- idropParentGui);
- } catch (IdropException ex) {
- Logger.getLogger(IRODSTree.class.getName()).log(Level.SEVERE, null,
- ex);
- throw new IdropRuntimeException(
- "error initializing selection listener", ex);
- }
-
- getSelectionModel().addListSelectionListener(treeListener);
-
- /*
- * ActionMap map = this.getActionMap();
- * map.put(IRODSTreeTransferHandler.
- * getCutAction().getValue(Action.NAME),
- * IRODSTreeTransferHandler.getCutAction());
- * map.put(IRODSTreeTransferHandler
- * .getCopyAction().getValue(Action.NAME),
- * IRODSTreeTransferHandler.getCopyAction());
- * map.put(IRODSTreeTransferHandler
- * .getPasteAction().getValue(Action.NAME),
- * IRODSTreeTransferHandler.getPasteAction());
- *
- * InputMap imap = this.getInputMap();
- * imap.put(KeyStroke.getKeyStroke("ctrl X"),
- * TransferHandler.getCutAction().getValue(Action.NAME));
- * imap.put(KeyStroke.getKeyStroke("ctrl C"),
- * TransferHandler.getCopyAction().getValue(Action.NAME));
- * imap.put(KeyStroke.getKeyStroke("ctrl V"),
- * TransferHandler.getPasteAction().getValue(Action.NAME));
- */
-
- }
-
- /**
- * Set up context sensitive tree menu
- */
- private void setUpTreeMenu() {
- thisTree = this;
- m_popup = new JPopupMenu();
- m_action = new AbstractAction() {
-
- @Override
- public void actionPerformed(final ActionEvent e) {
- if (m_clickedPath == null) {
- return;
- }
-
- if (thisTree.isExpanded(m_clickedPath)) {
- thisTree.collapsePath(m_clickedPath);
- } else {
- thisTree.expandPath(m_clickedPath);
- }
- }
- };
-
- m_popup.add(m_action);
-
- Action newAction = new AbstractAction("New Folder") {
-
- @Override
- public void actionPerformed(final ActionEvent e) {
-
- log.info("adding new node");
-
- IRODSNode parent = (IRODSNode) m_clickedPath
- .getLastPathComponent();
- log.info("parent of new node is: {}", parent);
- CollectionAndDataObjectListingEntry dataEntry = (CollectionAndDataObjectListingEntry) parent
- .getUserObject();
- if (dataEntry.getObjectType() == CollectionAndDataObjectListingEntry.ObjectType.DATA_OBJECT) {
- JOptionPane
- .showMessageDialog(
- thisTree,
- "The selected item is not a folder, cannot create a new directory",
- "Info", JOptionPane.INFORMATION_MESSAGE);
- log.info("new folder not created, the selected parent is not a collection");
- return;
- }
- // show a dialog asking for the new directory name...
- NewIRODSDirectoryDialog newDirectoryDialog = new NewIRODSDirectoryDialog(
- idropParentGui, true, dataEntry.getPathOrName(),
- thisTree, parent);
- newDirectoryDialog
- .setLocation(
- (int) (idropParentGui.getLocation().getX() + idropParentGui
- .getWidth() / 2), (int) (idropParentGui
- .getLocation().getY() + idropParentGui
- .getHeight() / 2));
- newDirectoryDialog.setVisible(true);
- }
- };
- m_popup.add(newAction);
-
- m_popup.addSeparator();
-
- Action a1 = new AbstractAction("Delete") {
-
- @Override
- public void actionPerformed(final ActionEvent e) {
- log.info("deleting a node");
- int[] rows = thisTree.getSelectedRows();
- log.debug("selected rows for delete:{}", rows);
-
- DeleteIRODSDialog deleteDialog;
-
- if (rows.length == 1) {
-
- IRODSNode toDelete = (IRODSNode) thisTree.getValueAt(
- rows[0], 0);
- log.info("deleting a single node: {}", toDelete);
- deleteDialog = new DeleteIRODSDialog(idropParentGui, true,
- thisTree, toDelete);
- } else {
- List<IRODSNode> nodesToDelete = new ArrayList<IRODSNode>();
- for (int row : rows) {
- nodesToDelete.add((IRODSNode) thisTree.getValueAt(row,
- 0));
-
- }
-
- deleteDialog = new DeleteIRODSDialog(idropParentGui, true,
- thisTree, nodesToDelete);
- }
-
- deleteDialog
- .setLocation(
- (int) (idropParentGui.getLocation().getX() + idropParentGui
- .getWidth() / 2), (int) (idropParentGui
- .getLocation().getY() + idropParentGui
- .getHeight() / 2));
- deleteDialog.setVisible(true);
- }
- };
-
- m_popup.add(a1);
- Action a2 = new AbstractAction("Rename") {
-
- @Override
- public void actionPerformed(final ActionEvent e) {
- log.info("renaming node");
-
- IRODSNode toRename = (IRODSNode) m_clickedPath
- .getLastPathComponent();
- log.info("node to rename is: {}", toRename);
- CollectionAndDataObjectListingEntry dataEntry = (CollectionAndDataObjectListingEntry) toRename
- .getUserObject();
-
- // dialog uses absolute path, so munge it for files
- StringBuilder sb = new StringBuilder();
- if (dataEntry.getObjectType() == CollectionAndDataObjectListingEntry.ObjectType.COLLECTION) {
- sb.append(dataEntry.getPathOrName());
- } else {
- sb.append(dataEntry.getParentPath());
- sb.append('/');
- sb.append(dataEntry.getPathOrName());
- }
-
- // show a dialog asking for the new directory name...
- RenameIRODSDirectoryDialog renameDialog = new RenameIRODSDirectoryDialog(
- idropParentGui, true, sb.toString(), thisTree, toRename);
- renameDialog
- .setLocation(
- (int) (idropParentGui.getLocation().getX() + idropParentGui
- .getWidth() / 2), (int) (idropParentGui
- .getLocation().getY() + idropParentGui
- .getHeight() / 2));
- renameDialog.setVisible(true);
- }
- };
- m_popup.add(a2);
- thisTree.add(m_popup);
- thisTree.addMouseListener(new PopupTrigger());
-
- }
-
- @Override
- public void treeExpanded(final TreeExpansionEvent event) {
- }
-
- @Override
- public void treeCollapsed(final TreeExpansionEvent event) {
- }
-
- class PopupTrigger extends MouseAdapter {
-
- @Override
- public void mouseReleased(final MouseEvent e) {
- if (e.isPopupTrigger()) {
- int x = e.getX();
- int y = e.getY();
-
- TreePath path = thisTree.getClosestPathForLocation(x, y);
- if (path != null) {
- if (thisTree.isExpanded(path)) {
- m_action.putValue(Action.NAME, "Collapse");
- } else {
- m_action.putValue(Action.NAME, "Expand");
- }
- m_popup.show(thisTree, x, y);
- m_clickedPath = path;
- }
- } else if (e.getClickCount() == 2) {
- int x = e.getX();
- int y = e.getY();
- TreePath path = thisTree.getClosestPathForLocation(x, y);
-
- IRODSNode inode = null;
- String fullPath = null;
- if (path != null) {
- Object node = path.getLastPathComponent();
- if (node instanceof IRODSNode) {
- inode = (IRODSNode) node;
- CollectionAndDataObjectListingEntry entry = (CollectionAndDataObjectListingEntry) inode
- .getUserObject();
- fullPath = entry.getPathOrName();
- }
-
- if (fullPath != null) {
- idropParentGui.getiDropCore().setBasePath(fullPath);
- idropParentGui.buildTargetTree(false);
- }
- }
- }
- }
-
- @Override
- public void mousePressed(final MouseEvent e) {
- if (e.isPopupTrigger()) {
- int x = e.getX();
- int y = e.getY();
- TreePath path = thisTree.getClosestPathForLocation(x, y);
- if (path != null) {
- if (thisTree.isExpanded(path)) {
- m_action.putValue(Action.NAME, "Collapse");
- } else {
- m_action.putValue(Action.NAME, "Expand");
- }
- m_popup.show(thisTree, x, y);
- m_clickedPath = path;
- }
- }
- }
- }
-
- @Override
- public void treeWillCollapse(final TreeExpansionEvent event)
- throws ExpandVetoException {
- }
-
- @Override
- public void treeWillExpand(final TreeExpansionEvent event)
-
- // TODO: Need to make this a swing worker??
- throws ExpandVetoException {
- setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
- log.debug("tree expansion event:{}", event);
- IRODSNode expandingNode = (IRODSNode) event.getPath()
- .getLastPathComponent();
- // If I am refreshing the tree, then do not close the connection after
- // each load. It will be closed in the thing
- // doing the refreshing
- try {
- expandingNode.lazyLoadOfChildrenOfThisNode(!isRefreshingTree());
- } catch (IdropException ex) {
- Logger.getLogger(IRODSTree.class.getName()).log(Level.SEVERE, null,
- ex);
- idropParentGui.showIdropException(ex);
- throw new IdropRuntimeException("error expanding irodsNode");
- } finally {
- setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
- }
- }
-
- public void highlightPath(final TreePath pathToHighlight) {
- final IRODSTree highlightTree = this;
- java.awt.EventQueue.invokeLater(new Runnable() {
-
- @Override
- public void run() {
- highlightTree.collapsePath(pathToHighlight);
- highlightTree.expandPath(pathToHighlight);
- // highlightTree.sc
- // highlightTree.scrollPathToVisible(pathToHighlight);
- }
- });
- }
-
- // FIXME: move out?
- /*
- * public class TransferActionListener implements ActionListener,
- * PropertyChangeListener { private JComponent focusOwner = null;
- *
- * public TransferActionListener() { KeyboardFocusManager manager =
- * KeyboardFocusManager. getCurrentKeyboardFocusManager();
- * manager.addPropertyChangeListener("permanentFocusOwner", this); }
- *
- * public void propertyChange(PropertyChangeEvent e) { Object o =
- * e.getNewValue(); if (o instanceof JComponent) { focusOwner =
- * (JComponent)o; } else { focusOwner = null; } }
- *
- * public void actionPerformed(ActionEvent e) { if (focusOwner == null)
- * return; String action = (String)e.getActionCommand(); Action a =
- * focusOwner.getActionMap().get(action); if (a != null) {
- * a.actionPerformed(new ActionEvent(focusOwner,
- * ActionEvent.ACTION_PERFORMED, null)); } } }
- */
+ TreeExpansionListener, IRODSTreeContainingComponent {
+
+ public static org.slf4j.Logger log = LoggerFactory.getLogger(IRODSTree.class);
+ protected iDrop idropParentGui = null;
+ protected JPopupMenu m_popup = null;
+ protected Action m_action;
+ protected Action public_link_action;
+ protected TreePath m_clickedPath;
+ protected IRODSTree thisTree;
+ private boolean refreshingTree = false;
+ TreePathSupport tps;
+
+ @Override
+ public boolean isRefreshingTree() {
+ synchronized (this) {
+ return refreshingTree;
+ }
+ }
+
+ public void setRefreshingTree(final boolean refreshingTree) {
+ synchronized (this) {
+ this.refreshingTree = refreshingTree;
+ }
+ }
+
+ public IRODSTree(final TreeModel newModel, final iDrop idropParentGui) {
+ super();
+
+ OutlineModel mdl = DefaultOutlineModel.createOutlineModel(newModel,
+ new IRODSRowModel(), true, "File System");
+ this.idropParentGui = idropParentGui;
+
+ initializeMenusAndListeners();
+ }
+
+ public IRODSTree() {
+ super();
+ }
+
+ public IRODSTree(final iDrop idropParentGui) {
+ super();
+ this.idropParentGui = idropParentGui;
+ initializeMenusAndListeners();
+ }
+
+ private void initializeMenusAndListeners() {
+ tps = new TreePathSupport(this.getOutlineModel(), this.getLayoutCache());
+ tps.addTreeExpansionListener(this);
+ tps.addTreeWillExpandListener(this);
+ setDragEnabled(true);
+ setTransferHandler(new IRODSTreeTransferHandler(idropParentGui,
+ "selectionModel"));
+ setDropMode(javax.swing.DropMode.USE_SELECTION);
+ this.setRenderDataProvider(new OutlineRenderProvider(this));
+ setUpTreeMenu();
+ IrodsSelectionListenerForBuildingInfoPanel treeListener;
+ try {
+ treeListener = new IrodsSelectionListenerForBuildingInfoPanel(
+ idropParentGui);
+ } catch (IdropException ex) {
+ Logger.getLogger(IRODSTree.class.getName()).log(Level.SEVERE, null,
+ ex);
+ throw new IdropRuntimeException(
+ "error initializing selection listener", ex);
+ }
+
+ this.getSelectionModel().addListSelectionListener(treeListener);
+
+ /*
+ ActionMap map = this.getActionMap();
+ map.put(IRODSTreeTransferHandler.getCutAction().getValue(Action.NAME),
+ IRODSTreeTransferHandler.getCutAction());
+ map.put(IRODSTreeTransferHandler.getCopyAction().getValue(Action.NAME),
+ IRODSTreeTransferHandler.getCopyAction());
+ map.put(IRODSTreeTransferHandler.getPasteAction().getValue(Action.NAME),
+ IRODSTreeTransferHandler.getPasteAction());
+
+ InputMap imap = this.getInputMap();
+ imap.put(KeyStroke.getKeyStroke("ctrl X"),
+ TransferHandler.getCutAction().getValue(Action.NAME));
+ imap.put(KeyStroke.getKeyStroke("ctrl C"),
+ TransferHandler.getCopyAction().getValue(Action.NAME));
+ imap.put(KeyStroke.getKeyStroke("ctrl V"),
+ TransferHandler.getPasteAction().getValue(Action.NAME));
+ *
+ */
+
+
+ }
+
+ /**
+ * Set up context sensitive tree menu
+ */
+ private void setUpTreeMenu() {
+ thisTree = this;
+ m_popup = new JPopupMenu();
+ m_action = new AbstractAction() {
+
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ if (m_clickedPath == null) {
+ return;
+ }
+
+ if (thisTree.isExpanded(m_clickedPath)) {
+ thisTree.collapsePath(m_clickedPath);
+ } else {
+ thisTree.expandPath(m_clickedPath);
+ }
+ }
+ };
+
+ m_popup.add(m_action);
+
+ //public link action
+ public_link_action = new AbstractAction("Public Link") {
+
+ @Override
+ public void actionPerformed(ActionEvent actionEvent) {
+
+ IRODSNode theNode = (IRODSNode) m_clickedPath.getLastPathComponent();
+
+ IRODSFile file;
+
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+
+ String ticketStr = null;
+ try {
+ TicketServiceFactory tsf = new TicketServiceFactoryImpl(idropParentGui.getiDropCore().getIRODSAccessObjectFactory());
+ TicketAdminService tas = tsf.instanceTicketAdminService(idropParentGui.getIrodsAccount());
+ IRODSFileFactory ff = idropParentGui.getiDropCore().getIRODSFileFactory(idropParentGui.getIrodsAccount());
+ file = ff.instanceIRODSFile(theNode.getFullPath());
+ // generate ticket string
+ String ticketString = UUID.randomUUID().toString().replaceAll("-", "");
+ ticketStr = tas.createTicket(TicketCreateModeEnum.READ,file,ticketString);
+ } catch (JargonException e) {
+ idropParentGui.showIdropException(e);
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ throw new IdropRuntimeException("error creating ticket");
+ }
+
+ final GetPublicLink gpl = new GetPublicLink(ticketStr, file.toURI().toString());
+ gpl.addPropertyChangeListener(new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
+ if ("state".equals(propertyChangeEvent.getPropertyName())) {
+ if (propertyChangeEvent.getNewValue().equals(SwingWorker.StateValue.DONE)) {
+ try {
+ String result = gpl.get();
+ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+ StringSelection selection = new StringSelection(result);
+ clipboard.setContents(selection, selection);
+ JOptionPane.showMessageDialog(null, "Public link has been copied to clipboard", "Info", JOptionPane.INFORMATION_MESSAGE);
+ } catch (InterruptedException e) {
+ JOptionPane.showMessageDialog(null, "error occurred while obtaining public link", "error", JOptionPane.ERROR_MESSAGE);
+ } catch (ExecutionException e) {
+ JOptionPane.showMessageDialog(null, "error occurred while obtaining public link", "error", JOptionPane.ERROR_MESSAGE);
+ } finally {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+ }
+ }
+ }
+
+ });
+
+ gpl.execute();
+
+ }
+
+ };
+
+ m_popup.add(public_link_action);
+
+ Action newAction = new AbstractAction("New Folder") {
+
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+
+ log.info("adding new node");
+
+ IRODSNode parent = (IRODSNode) m_clickedPath.getLastPathComponent();
+ log.info("parent of new node is: {}", parent);
+ CollectionAndDataObjectListingEntry dataEntry = (CollectionAndDataObjectListingEntry) parent.getUserObject();
+ if (dataEntry.getObjectType() == CollectionAndDataObjectListingEntry.ObjectType.DATA_OBJECT) {
+ JOptionPane.showMessageDialog(
+ thisTree,
+ "The selected item is not a folder, cannot create a new directory",
+ "Info", JOptionPane.INFORMATION_MESSAGE);
+ log.info("new folder not created, the selected parent is not a collection");
+ return;
+ }
+ // show a dialog asking for the new directory name...
+ NewIRODSDirectoryDialog newDirectoryDialog = new NewIRODSDirectoryDialog(
+ idropParentGui, true, dataEntry.getPathOrName(),
+ thisTree, parent);
+ newDirectoryDialog.setLocation(
+ (int) (idropParentGui.getLocation().getX() + idropParentGui.getWidth() / 2), (int) (idropParentGui.getLocation().getY() + idropParentGui.getHeight() / 2));
+ newDirectoryDialog.setVisible(true);
+ }
+ };
+ m_popup.add(newAction);
+
+ m_popup.addSeparator();
+
+ Action a1 = new AbstractAction("Delete") {
+
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ log.info("deleting a node");
+ int[] rows = thisTree.getSelectedRows();
+ log.debug("selected rows for delete:{}", rows);
+
+ DeleteIRODSDialog deleteDialog;
+
+ if (rows.length == 1) {
+
+ IRODSNode toDelete = (IRODSNode) thisTree.getValueAt(
+ rows[0], 0);
+ log.info("deleting a single node: {}", toDelete);
+ deleteDialog = new DeleteIRODSDialog(idropParentGui, true,
+ thisTree, toDelete);
+ } else {
+ List<IRODSNode> nodesToDelete = new ArrayList<IRODSNode>();
+ for (int row : rows) {
+ nodesToDelete.add((IRODSNode) thisTree.getValueAt(row,
+ 0));
+
+ }
+
+ deleteDialog = new DeleteIRODSDialog(idropParentGui, true,
+ thisTree, nodesToDelete);
+ }
+
+ deleteDialog.setLocation(
+ (int) (idropParentGui.getLocation().getX() + idropParentGui.getWidth() / 2), (int) (idropParentGui.getLocation().getY() + idropParentGui.getHeight() / 2));
+ deleteDialog.setVisible(true);
+ }
+ };
+
+ m_popup.add(a1);
+ Action a2 = new AbstractAction("Rename") {
+
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ log.info("renaming node");
+
+ IRODSNode toRename = (IRODSNode) m_clickedPath.getLastPathComponent();
+ log.info("node to rename is: {}", toRename);
+ CollectionAndDataObjectListingEntry dataEntry = (CollectionAndDataObjectListingEntry) toRename.getUserObject();
+
+ // dialog uses absolute path, so munge it for files
+ StringBuilder sb = new StringBuilder();
+ if (dataEntry.getObjectType() == CollectionAndDataObjectListingEntry.ObjectType.COLLECTION) {
+ sb.append(dataEntry.getPathOrName());
+ } else {
+ sb.append(dataEntry.getParentPath());
+ sb.append('/');
+ sb.append(dataEntry.getPathOrName());
+ }
+
+ // show a dialog asking for the new directory name...
+ RenameIRODSDirectoryDialog renameDialog = new RenameIRODSDirectoryDialog(
+ idropParentGui, true, sb.toString(), thisTree, toRename);
+ renameDialog.setLocation(
+ (int) (idropParentGui.getLocation().getX() + idropParentGui.getWidth() / 2), (int) (idropParentGui.getLocation().getY() + idropParentGui.getHeight() / 2));
+ renameDialog.setVisible(true);
+ }
+ };
+ m_popup.add(a2);
+ thisTree.add(m_popup);
+ thisTree.addMouseListener(new PopupTrigger());
+
+ }
+
+ @Override
+ public void treeExpanded(final TreeExpansionEvent event) {
+ }
+
+ @Override
+ public void treeCollapsed(final TreeExpansionEvent event) {
+ }
+
+ class PopupTrigger extends MouseAdapter {
+
+ @Override
+ public void mouseReleased(final MouseEvent e) {
+ if (e.isPopupTrigger()) {
+ int x = e.getX();
+ int y = e.getY();
+
+ TreePath path = thisTree.getClosestPathForLocation(x, y);
+ if (path != null) {
+ if (thisTree.isExpanded(path)) {
+ m_action.putValue(Action.NAME, "Collapse");
+ } else {
+ m_action.putValue(Action.NAME, "Expand");
+ }
+
+ //public link option only availabe for files
+ IRODSNode currNode = (IRODSNode) path.getLastPathComponent();
+ CollectionAndDataObjectListingEntry entry =
+ (CollectionAndDataObjectListingEntry) currNode.getUserObject();
+ // todo is public link service configured?
+ boolean configured = idropParentGui.getiDropCore().getIdropConfig().getPropertyForKey(IdropConfigurationService.IDROP_PUBLIC_LINK_SERVICE)!=null;
+ public_link_action.setEnabled(configured && entry.isDataObject() && idropParentGui.getIrodsAccount().getUserName().equals(entry.getOwnerName()));
+
+ m_popup.show(thisTree, x, y);
+ m_clickedPath = path;
+ }
+ } else if (e.getClickCount() == 2) {
+ int x = e.getX();
+ int y = e.getY();
+ TreePath path = thisTree.getClosestPathForLocation(x, y);
+
+ IRODSNode inode = null;
+ String fullPath = null;
+ if (path != null) {
+ Object node = path.getLastPathComponent();
+ if (node instanceof IRODSNode) {
+ inode = (IRODSNode) node;
+ CollectionAndDataObjectListingEntry entry =
+ (CollectionAndDataObjectListingEntry) inode.getUserObject();
+ fullPath = entry.getPathOrName();
+ }
+
+ if (fullPath != null) {
+ idropParentGui.getiDropCore().setBasePath(fullPath);
+ idropParentGui.buildTargetTree(false);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void mousePressed(final MouseEvent e) {
+ if (e.isPopupTrigger()) {
+ int x = e.getX();
+ int y = e.getY();
+ TreePath path = thisTree.getClosestPathForLocation(x, y);
+ if (path != null) {
+ if (thisTree.isExpanded(path)) {
+ m_action.putValue(Action.NAME, "Collapse");
+ } else {
+ m_action.putValue(Action.NAME, "Expand");
+ }
+ //public link option only availabe for files
+ IRODSNode currNode = (IRODSNode) path.getLastPathComponent();
+ CollectionAndDataObjectListingEntry entry =
+ (CollectionAndDataObjectListingEntry) currNode.getUserObject();
+ public_link_action.setEnabled(entry.isDataObject() && idropParentGui.getIrodsAccount().getUserName().equals(entry.getOwnerName()));
+
+ m_popup.show(thisTree, x, y);
+ m_clickedPath = path;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void treeWillCollapse(final TreeExpansionEvent event)
+ throws ExpandVetoException {
+ }
+
+ @Override
+ public void treeWillExpand(final TreeExpansionEvent event)
+
+ //TODO: Need to make this a swing worker??
+ throws ExpandVetoException {
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ log.debug("tree expansion event:{}", event);
+ IRODSNode expandingNode = (IRODSNode) event.getPath().getLastPathComponent();
+ // If I am refreshing the tree, then do not close the connection after
+ // each load. It will be closed in the thing
+ // doing the refreshing
+ try {
+ expandingNode.lazyLoadOfChildrenOfThisNode(!isRefreshingTree());
+ } catch (IdropException ex) {
+ Logger.getLogger(IRODSTree.class.getName()).log(Level.SEVERE, null,
+ ex);
+ idropParentGui.showIdropException(ex);
+ throw new IdropRuntimeException("error expanding irodsNode");
+ } finally {
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }
+ }
+
+ public void highlightPath(final TreePath pathToHighlight) {
+ final IRODSTree highlightTree = this;
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ highlightTree.collapsePath(pathToHighlight);
+ highlightTree.expandPath(pathToHighlight);
+ // highlightTree.sc
+ // highlightTree.scrollPathToVisible(pathToHighlight);
+ }
+ });
+ }
+
+ // FIXME: move out?
+ /*
+public class TransferActionListener implements ActionListener,
+ PropertyChangeListener {
+ private JComponent focusOwner = null;
+
+ public TransferActionListener() {
+ KeyboardFocusManager manager = KeyboardFocusManager.
+ getCurrentKeyboardFocusManager();
+ manager.addPropertyChangeListener("permanentFocusOwner", this);
+ }
+
+ public void propertyChange(PropertyChangeEvent e) {
+ Object o = e.getNewValue();
+ if (o instanceof JComponent) {
+ focusOwner = (JComponent)o;
+ } else {
+ focusOwner = null;
+ }
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if (focusOwner == null)
+ return;
+ String action = (String)e.getActionCommand();
+ Action a = focusOwner.getActionMap().get(action);
+ if (a != null) {
+ a.actionPerformed(new ActionEvent(focusOwner,
+ ActionEvent.ACTION_PERFORMED,
+ null));
+ }
+ }
+}
+*/
+
+ class GetPublicLink extends SwingWorker<String, Void> {
+
+ private final String theUri;
+
+ private final String ticket;
+
+ public GetPublicLink(String ticket, String theUri) {
+ this.theUri = theUri;
+ this.ticket = ticket;
+ }
+
+ @Override
+ protected String doInBackground() throws Exception {
+ StringBuilder publinkServiceSb = new StringBuilder(idropParentGui.getiDropCore().getIdropConfig().getPropertyForKey(IdropConfigurationService.IDROP_PUBLIC_LINK_SERVICE));
+ //escape ampersand in query parameter value
+ publinkServiceSb.append("?ticket=").append(ticket).append("&uri=").append(theUri.replaceAll("\\&","%26"));
+ URI u = URI.create(publinkServiceSb.toString());
+ URL url = u.toURL();
+ HttpURLConnection con = (HttpURLConnection) url.openConnection();
+ if (con.getResponseCode() == 200) {
+ BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
+ return br.readLine();
+
+ } else {
+ throw new Exception("error occurred while obtaining link");
+ }
+ }
+
+ }
+
+
}
diff --git a/idrop-swing/src/main/resources/icon_metasearch.png b/idrop-swing/src/main/resources/icon_metasearch.png
new file mode 100644
index 0000000..ed25fde
--- /dev/null
+++ b/idrop-swing/src/main/resources/icon_metasearch.png
Binary files differ
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color1.png b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color1.png
new file mode 100644
index 0000000..aba6538
--- /dev/null
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color1.png
Binary files differ
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties
index 5a524bc..12ea5b3 100644
--- a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/systraygui/Bundle.properties
@@ -348,3 +348,4 @@ DiffViewDialog.lblIrodsFileChecksumLbl.text=iRODS File Checksum:
DiffViewDialog.lblIrodsFileChecksum.text=irodsfilechecksum
iDrop.btnMainToolbarTree.text=Tree
iDrop.btnMainToolbarTree.toolTipText=Adjust the tree root
+iDrop.btnMainToolbarSettings1.text=MetaSearch
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/splashWindow.xml b/idrop-swing/src/main/resources/org/irods/jargon/idrop/splashWindow.xml
index ceff841..3d50de8 100644
--- a/idrop-swing/src/main/resources/org/irods/jargon/idrop/splashWindow.xml
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/splashWindow.xml
@@ -2,7 +2,7 @@
<borderlayout>
<constraint location="Center">
<label>
- <imageicon src="org/irods/jargon/idrop/desktop/images/iDrop.png" setas="icon" />
+ <imageicon src="org/irods/jargon/idrop/desktop/images/qcg-logo-large-color1.png" setas="icon" />
</label>
</constraint>
<constraint location="South">
diff --git a/idrop-web/application.properties b/idrop-web/application.properties
index 06849fd..6f51c02 100644
--- a/idrop-web/application.properties
+++ b/idrop-web/application.properties
@@ -1,6 +1,8 @@
#Grails Metadata file
-#Tue Apr 23 11:13:09 EDT 2013
-app.grails.version=2.2.1
-app.name=idrop-web2
+#Thu Jul 18 14:51:42 CEST 2013
+app.grails.version=2.2.3
+app.name=idrop-web
app.servlet.version=2.5
app.version=2.0.0
+plugins.hibernate=2.2.3
+plugins.tomcat=2.2.3
diff --git a/idrop-web/build.sh b/idrop-web/build.sh
index 8845935..8845935 100644..100755
--- a/idrop-web/build.sh
+++ b/idrop-web/build.sh
diff --git a/idrop-web/grails-app/conf/BuildConfig.groovy b/idrop-web/grails-app/conf/BuildConfig.groovy
index bfa180a..cdee1ac 100755
--- a/idrop-web/grails-app/conf/BuildConfig.groovy
+++ b/idrop-web/grails-app/conf/BuildConfig.groovy
@@ -28,19 +28,15 @@ grails.project.dependency.resolution = {
test 'org.mockito:mockito-all:1.8.1'
compile 'commons-io:commons-io:2.1'
provided 'junit:junit:4.8.1'
- compile ('org.irods.jargon:jargon-core:3.3.1-SNAPSHOT') { excludes ([group:'org.jglobus'])}
- compile ('org.irods.jargon:jargon-data-utils:3.3.1-SNAPSHOT') { excludes ([group:'org.jglobus'])}
- compile ('org.irods.jargon:jargon-ticket:3.3.1-SNAPSHOT') { excludes ([group:'org.jglobus'])}
- compile ('org.irods.jargon:jargon-user-profile:3.3.1-SNAPSHOT') { excludes ([group:'org.jglobus'])}
- compile ('org.irods.jargon:jargon-user-tagging:3.3.1-SNAPSHOT') { excludes ([group:'org.jglobus'])}
+ compile ('org.irods.jargon:jargon-core:3.3.2-SNAPSHOT') { excludes ([group:'org.jglobus'])}
+ compile ('org.irods.jargon:jargon-data-utils:3.3.2-SNAPSHOT') { excludes ([group:'org.jglobus'])}
+ compile ('org.irods.jargon:jargon-ticket:3.3.2-SNAPSHOT') { excludes ([group:'org.jglobus'])}
+ compile ('org.irods.jargon:jargon-user-profile:3.3.2-SNAPSHOT') { excludes ([group:'org.jglobus'])}
+ compile ('org.irods.jargon:jargon-user-tagging:3.3.2-SNAPSHOT') { excludes ([group:'org.jglobus'])}
provided 'javax.servlet:servlet-api:2.5'
compile 'org.jsoup:jsoup:0.2.2'
compile( group: 'log4j', name: 'log4j', version: '1.2.16', export: false )
}
- plugins {
- runtime ":hibernate:$grailsVersion"
- build ":tomcat:$grailsVersion"
- }
}
diff --git a/idrop-web/grails-app/conf/Config.groovy b/idrop-web/grails-app/conf/Config.groovy
index 9b743cc..db1bb49 100755
--- a/idrop-web/grails-app/conf/Config.groovy
+++ b/idrop-web/grails-app/conf/Config.groovy
@@ -17,8 +17,8 @@ environments {
/*production { grails.serverURL = "http://lifetime-library.ils.unc.edu/${appName}" }
production { grails.serverURL = "http://iren-web.renci.org:8080/${appName}" }
production { grails.serverURL = "http://srbbrick15.ucsd.edu:1525//${appName}" }
- production { grails.serverURL = "http://www.irods.org" } */2
- production { grails.serverURL = "http://iren-web.renci.org:8080/${appName}" }
+ production { grails.serverURL = "http://www.irods.org" } */
+ production { grails.serverURL = "http://localhost:8080/${appName}" }
development { grails.serverURL = "http://localhost:8080/${appName}" }
test { grails.serverURL = "http://localhost:8080/${appName}" }
}
@@ -26,13 +26,13 @@ environments {
/*
* 2) If you want to set things up so that the idrop web browser automatically points to a certain grid (i.e. only user ID and password show, then do something like below.
* Take the following outside of the comment block and configure here
- *
- idrop.config.preset.host="diamond.ils.unc.edu"
- idrop.config.preset.port="2247"
- idrop.config.preset.zone="lifelibZone"
- idrop.config.preset.resource="lifelibResc1"
- idrop.config.preset.authScheme="Standard"
*/
+ idrop.config.preset.host="elder10.man.poznan.pl"
+ idrop.config.preset.port="1247"
+ idrop.config.preset.zone="testZone"
+ idrop.config.preset.resource=""
+ idrop.config.preset.authScheme="Standard"
+
/*
@@ -61,9 +61,9 @@ idrop.config.idrop.lite.use.applet.dir=false
* idrop.config.idrop.jnlp="https://lifetime-library.ils.unc.edu/llclient/idrop.jnlp"
*/
-//idrop.config.idrop.jnlp="http://iren-web.renci.org:8080/idrop/idrop.jnlp"
+idrop.config.idrop.jnlp="http://localhost:8080/idrop-web/idrop.jnlp"
//drop.config.idrop.jnlp="http://iren-web.renci.org/idrop-snapshot/idrop.jnlp"
-idrop.config.idrop.jnlp="http://iren-web.renci.org/idrop-snapshot/idrop.jnlp"
+//idrop.config.idrop.jnlp="http://http://iren-web.renci.org/idrop.jnlp"
/*
* 5) Customization properties
*/
@@ -171,7 +171,7 @@ log4j = {
// appender:
//
// appenders {
- // console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
+ // console name:'stdout', layout:pattern(conversionPattern: '%c %m%n')
// }
error 'org.codehaus.groovy.grails.web.servlet', // controllers
diff --git a/idrop-web/grails-app/conf/Config.groovy~ b/idrop-web/grails-app/conf/Config.groovy~
new file mode 100755
index 0000000..749417f
--- /dev/null
+++ b/idrop-web/grails-app/conf/Config.groovy~
@@ -0,0 +1,198 @@
+grails.config.locations = [
+ "file:/etc/idrop-web/idrop-web-config2.groovy"
+]
+
+/*
+ * Configuration for idrop-web - iDROP Cloud browser
+ * Project page: https://code.renci.org/gf/project/irodsidrop/
+ *
+ * Deployment instructions:
+ *
+ * 1) Set configuration for your deployment server. Set the name in production below to the URL you want to use. This value is used by Grails to
+ * compute links, so it should be the front end for your application (e.g. if you run Apache HTTP server in front of Tomcat with SSL, this would be
+ * the end-users 'https://' URL
+ *
+ */
+environments {
+ /*production { grails.serverURL = "http://lifetime-library.ils.unc.edu/${appName}" }
+ production { grails.serverURL = "http://iren-web.renci.org:8080/${appName}" }
+ production { grails.serverURL = "http://srbbrick15.ucsd.edu:1525//${appName}" }
+ production { grails.serverURL = "http://www.irods.org" } */
+ production { grails.serverURL = "http://localhost:8080/${appName}" }
+ development { grails.serverURL = "http://localhost:8080/${appName}" }
+ test { grails.serverURL = "http://localhost:8080/${appName}" }
+}
+
+/*
+ * 2) If you want to set things up so that the idrop web browser automatically points to a certain grid (i.e. only user ID and password show, then do something like below.
+ * Take the following outside of the comment block and configure here
+ */
+ idrop.config.preset.host="elder10.man.poznan.pl"
+ idrop.config.preset.port="1247"
+ idrop.config.preset.zone="testZone"
+ idrop.config.preset.resource=""
+ idrop.config.preset.authScheme="Standard"
+
+
+
+/*
+ * 3) iDROP web includes the idrop-lite Java applet, which is launched from the iDROP web interface. The interface needs to know where to find this jar file.
+ * The Jar file should be placed on a web server in an accessible directory, and configured below
+ *
+ *
+ idrop.config.idrop.lite.applet.jar="idrop-lite-1.0.0-SNAPSHOT-jar-with-dependencies.jar"
+ idrop.config.idrop.lite.codebase="http://iren-web.renci.org/idrop-web/applet"
+ idrop.config.idrop.lite.use.applet.dir=false
+ idrop.config.idrop.lite.applet.jar="idrop-lite-1.0.0-SNAPSHOT-jar-with-dependencies.jar"
+ idrop.config.idrop.lite.codebase="https://lifetime-library.ils.unc.edu/llclient"
+ idrop.config.idrop.lite.use.applet.dir=false
+ */
+
+idrop.config.idrop.lite.applet.jar="idrop-lite-2.0.1-SNAPSHOT-jar-with-dependencies.jar"
+idrop.config.idrop.lite.codebase="http://iren-web.renci.org/idrop-snapshot"
+idrop.config.idrop.lite.use.applet.dir=false
+
+/*
+ * 4) iDROP web includes a link to launch the iDROP desktop GUI, using Java WebStart. WebStart looks for a jnlp file and the accompanying
+ * lib directories. This should be deployed on a web server at some accessible location and referred to here
+ *
+ * idrop.config.idrop.jnlp="http://iren-web.renci.org:8080/idrop/idrop.jnlp"
+ *
+ * idrop.config.idrop.jnlp="https://lifetime-library.ils.unc.edu/llclient/idrop.jnlp"
+ */
+
+idrop.config.idrop.jnlp="http://elder10.man.poznan.pl:8080/idrop-web/idrop.jnlp"
+//drop.config.idrop.jnlp="http://iren-web.renci.org/idrop-snapshot/idrop.jnlp"
+//idrop.config.idrop.jnlp="http://http://iren-web.renci.org/idrop.jnlp"
+/*
+ * 5) Customization properties
+ */
+
+// do I support tickets? This determies whether the ticket feature is available via the interface, it also requires ticket support in iRODS itself (version 3.1+)
+idrop.config.use.tickets=true
+idrop.config.max.thumbnail.size.mb=20
+idrop.config.use.userprofile=true
+// do I support sharing? Requires target server to have specific query support and sharing queries loaded from jargon-user-tagging
+idrop.config.use.sharing=true
+
+// do I want to show the gallery view?
+idrop.config.use.gallery.view=false
+// do I want to show the browse view?
+idrop.config.use.browse.view=true
+/*
+ * Some properties may be set in an external configuration file, as configured below
+ */
+
+// locations to search for config files that get merged into the main config
+// config files can either be Java properties files or ConfigSlurper scripts
+/*
+ * "file:/etc/idrop-web/idrop-web-config.groovy"
+ grails.config.locations = [
+ "file:${userHome}/.grails/${appName}-config.groovy"
+ ]
+ if(System.properties["${appName}.config.location"]) {
+ grails.config.locations << "file:" + System.properties["${appName}.config.location"]
+ }
+ */
+
+
+/* ll config*/
+/*idrop.config.idrop.lite.applet.jar="idrop-lite-1.0.0-SNAPSHOT-jar-with-dependencies.jar"
+ idrop.config.idrop.lite.codebase="https://lifetime-library.ils.unc.edu/llclient"
+ idrop.config.preset.host="diamond.ils.unc.edu"
+ idrop.config.preset.port="2247"
+ idrop.config.preset.zone="lifelibZone"
+ idrop.config.preset.resource="lifelibResc1"
+ idrop.config.idrop.lite.use.applet.dir=false
+ idrop.config.idrop.jnlp="https://lifetime-library.ils.unc.edu/llclient/idrop.jnlp"
+ */
+grails.views.enable.jsessionid=true
+grails.project.groupId = org.irods.mydrop // change this to alter the default package name and Maven publishing destination
+grails.mime.file.extensions = true // enables the parsing of file extensions from URLs into the request format
+grails.mime.use.accept.header = false
+grails.mime.types = [ html: [
+ 'text/html',
+ 'application/xhtml+xml'
+ ],
+ xml: [
+ 'text/xml',
+ 'application/xml'
+ ],
+ text: 'text/plain',
+ js: 'text/javascript',
+ rss: 'application/rss+xml',
+ atom: 'application/atom+xml',
+ css: 'text/css',
+ csv: 'text/csv',
+ all: '*/*',
+ json: [
+ 'application/json',
+ 'text/json'
+ ],
+ form: 'application/x-www-form-urlencoded',
+ multipartForm: 'multipart/form-data'
+]
+
+// URL Mapping Cache Max Size, defaults to 5000
+//grails.urlmapping.cache.maxsize = 1000
+
+// The default codec used to encode data with ${}
+grails.views.default.codec = "none" // none, html, base64
+grails.views.gsp.encoding = "UTF-8"
+grails.converters.encoding = "UTF-8"
+// enable Sitemesh preprocessing of GSP pages
+grails.views.gsp.sitemesh.preprocess = true
+// scaffolding templates configuration
+grails.scaffolding.templates.domainSuffix = 'Instance'
+
+// Set to false to use the new Grails 1.2 JSONBuilder in the render method
+grails.json.legacy.builder = false
+// enabled native2ascii conversion of i18n properties files
+grails.enable.native2ascii = true
+// whether to install the java.util.logging bridge for sl4j. Disable for AppEngine!
+grails.logging.jul.usebridge = true
+// packages to include in Spring bean scanning
+grails.spring.bean.packages = []
+grails.validateable.packages = ['org.irods']
+
+// set per-environment serverURL stem for creating absolute links
+
+// log4j configuration
+log4j = {
+
+ appenders { 'null' name:'stacktrace' }
+
+ root {
+ warn()
+ additivity = true
+ }
+
+ // Example of changing the log pattern for the default console
+ // appender:
+ //
+ // appenders {
+ // console name:'stdout', layout:pattern(conversionPattern: '%c %m%n')
+ // }
+
+ error 'org.codehaus.groovy.grails.web.servlet', // controllers
+ 'org.codehaus.groovy.grails.web.pages', // GSP
+ 'org.codehaus.groovy.grails.web.sitemesh', // layouts
+ 'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
+ 'org.codehaus.groovy.grails.web.mapping', // URL mapping
+ 'org.codehaus.groovy.grails.commons', // core / classloading
+ 'org.codehaus.groovy.grails.plugins', // plugins
+ 'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
+ 'org.hibernate',
+ 'net.sf.ehcache.hibernate'
+
+ //info 'org.irods.mydrop'
+ info 'org.irods.jargon'
+
+ warn 'org.irods.jargon.spring.security'
+ warn 'org.springframework'
+ debug 'grails.app'
+
+ warn 'org.mortbay.log',
+ 'grails.app.controller',
+ 'org.springframework.security'
+}
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/BrowseController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/BrowseController.groovy
index 1fee905..6e0a2db 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/BrowseController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/BrowseController.groovy
@@ -35,7 +35,7 @@ class BrowseController {
StarringService starringService
ViewStateService viewStateService
IRODSAccount irodsAccount
-
+
def grailsApplication
/**
@@ -55,16 +55,16 @@ class BrowseController {
log.debug("closing the session")
irodsAccessObjectFactory.closeSession()
}
-
-
+
+
def index = {
log.info ("in index action")
def mode = params['mode']
def absPath = params['absPath']
-
+
ViewState viewState = viewStateService.getViewStateFromSessionAndCreateIfNotThere()
log.info("viewState:${viewState}")
-
+
if (mode == null && absPath == null) {
log.info("coming in with no params for mode or path, check view state and use the mode and path there (if they exist)")
absPath = viewState.rootPath
@@ -73,7 +73,7 @@ class BrowseController {
mode = "path"
}
}
-
+
if (mode == "path") {
log.info("mode is path, should have an abspath to preset to")
if (absPath == null) {
@@ -83,22 +83,23 @@ class BrowseController {
} else {
log.info("path is ${absPath}")
viewState = viewStateService.saveRootPath(absPath)
-
+
/*
* Decide what to do about the selected path, such that a path we set as root might need to wipe out the previous selected path.
*
* Keep the selected path if the new root is shorter than the selected path and it contains the path
*/
-
+
if (viewState.selectedPath.indexOf(viewState.rootPath) == -1) {
log.info("getting rid of selected path, not under new root path")
viewState = viewStateService.saveSelectedPath("")
}
+
}
}
- render(view: "index", model:[mode:mode,path:absPath,viewState:viewState,irodsAccount:irodsAccount])
+ render(view: "index", model:[mode:mode,path:absPath,viewState:viewState])
}
def showBrowseToolbar = {
@@ -197,44 +198,44 @@ class BrowseController {
// look at the type to decide how to set the root path
if (pathType == "detect") {
-
+
/*
* Detect modes means I am being asked to decide what to show, based on things like whether
* strict acl's are enforced.
*
* If I have a preserved view state, initialize to that
*/
-
+
log.info("path type is detect")
-
+
ViewState viewState = viewStateService.getViewStateFromSessionAndCreateIfNotThere()
-
+
if (viewState.rootPath) {
-
+
parent = viewState.rootPath
-
+
icon = "folder"
state = "closed"
type = "folder"
-
+
def attrBuf = ["id":parent, "rel":type, "absPath":parent]
-
+
jsonBuff.add(
["data": parent,"attr":attrBuf, "state":state,"icon":icon, "type":type]
)
-
+
} else {
-
-
+
+
log.info("no parent parm set, detect display as either root or home")
-
+
if (irodsAccount.userName == "anonymous") {
log.info("user is anonymous, default to view the public directory")
-
+
parent = "/" + irodsAccount.zone + "/home/public"
-
+
} else {
-
+
def isStrict;
try {
isStrict = environmentalInfoAO.isStrictACLs()
@@ -242,7 +243,7 @@ class BrowseController {
log.warn("error getting rule info for strict acl's currently overheaded see idrop bug [#1219] error on intiial display centos6")
isStrict = false
}
-
+
log.info "is strict?:{isStrict}"
if (isStrict) {
parent = "/" + irodsAccount.zone + "/home/" + irodsAccount.userName
@@ -250,15 +251,15 @@ class BrowseController {
parent = "/"
}
}
-
+
viewStateService.saveRootPath(parent)
-
+
icon = "folder"
state = "closed"
type = "folder"
-
+
def attrBuf = ["id":parent, "rel":type, "absPath":parent]
-
+
jsonBuff.add(
["data": parent,"attr":attrBuf, "state":state,"icon":icon, "type":type]
)
@@ -273,7 +274,7 @@ class BrowseController {
icon = "folder"
state = "closed"
type = "folder"
-
+
viewStateService.saveRootPath(parent)
def attrBuf = ["id":parent, "rel":type, "absPath":parent]
@@ -304,7 +305,7 @@ class BrowseController {
type = "folder"
viewStateService.saveRootPath(parent)
-
+
def attrBuf = ["id":parent, "rel":type, "absPath":parent]
jsonBuff.add(
@@ -318,13 +319,13 @@ class BrowseController {
if (parent == "") {
parent = "/"
}
-
+
// display a root node
icon = "folder"
state = "closed"
type = "folder"
-
+
viewStateService.saveRootPath(parent)
def attrBuf = ["id":parent, "rel":type, "absPath":parent]
@@ -335,49 +336,39 @@ class BrowseController {
} else if (pathType == "list") {
log.info("parent dir for listing provided as:${parent}")
-
+
def pagingOffset = params['partialStart']
def splitMode = params['splitMode']
-
+
if (pagingOffset == null) {
pagingOffset = 0;
}
-
+
if (splitMode == null) {
throw new JargonException("missing the splitMode")
}
-
+
def collectionAndDataObjectListAndSearchAO = irodsAccessObjectFactory.getCollectionAndDataObjectListAndSearchAO(irodsAccount)
+ def collectionAndDataObjectList = collectionAndDataObjectListAndSearchAO.listDataObjectsAndCollectionsUnderPath(parent)
+ log.debug("retrieved collectionAndDataObjectList: ${collectionAndDataObjectList}")
+ collectionAndDataObjectList.each {
- try {
-
- def collectionAndDataObjectList = collectionAndDataObjectListAndSearchAO.listDataObjectsAndCollectionsUnderPath(parent)
- log.debug("retrieved collectionAndDataObjectList: ${collectionAndDataObjectList}")
- collectionAndDataObjectList.each {
+ if (it.isDataObject()) {
+ icon = "../images/file.png"
+ state = "open"
+ type = "file"
+ } else {
+ icon = "folder"
+ state = "closed"
+ type = "folder"
+ }
- if (it.isDataObject()) {
- icon = "../images/file.png"
- state = "open"
- type = "file"
- } else {
- icon = "folder"
- state = "closed"
- type = "folder"
- }
-
- def attrBuf = ["id":it.formattedAbsolutePath, "rel":type, "absPath":it.formattedAbsolutePath]
+ def attrBuf = ["id":it.formattedAbsolutePath, "rel":type, "absPath":it.formattedAbsolutePath]
- jsonBuff.add(
- ["data": it.nodeLabelDisplayValue,"attr":attrBuf, "state":state,"icon":icon, "type":type]
- )
- }
- } catch (ZoneUnavailableException e) {
- log.error("zone unavailable exception", e)
- response.sendError(500, message(code:"message.zone.unavailable"))
- } catch (JargonException e) {
- log.error("jargon exception", e)
- response.sendError(500, e.message)
+ jsonBuff.add(
+ ["data": it.nodeLabelDisplayValue,"attr":attrBuf, "state":state,"icon":icon, "type":type]
+ )
}
} else {
throw new JargonException("invalid path type:${pathType}")
@@ -391,9 +382,9 @@ class BrowseController {
if (absPath == null) {
throw new JargonException("no absolute path passed to the method")
}
-
+
ViewState viewState = viewStateService.saveViewModeAndSelectedPath("browse", absPath)
-
+
log.info "displayBrowseGridDetails for absPath: ${absPath}"
try {
CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = irodsAccessObjectFactory.getCollectionAndDataObjectListAndSearchAO(irodsAccount)
@@ -413,7 +404,7 @@ class BrowseController {
PagingActions pagingActions = PagingAnalyser.buildPagingActionsFromListOfIRODSDomainObjects(entries, pageSize)
log.debug("retrieved collectionAndDataObjectList: ${entries}")
log.debug("pagingActions:${pagingActions}")
-
+
render(view:"browseDetails", model:[collection:entries, parent:retObj, showLite:collectionAndDataObjectListAndSearchAO.getIRODSServerProperties().isTheIrodsServerAtLeastAtTheGivenReleaseVersion("rods3.0"), viewState:viewState, pagingActions:pagingActions])
} catch (FileNotFoundException fnf) {
log.info("file not found looking for data, show stand-in page", fnf)
@@ -443,7 +434,7 @@ class BrowseController {
if (absPath == null) {
throw new JargonException("no absolute path passed to the method")
}
-
+
viewStateService.saveViewModeAndSelectedPath("info", absPath)
ViewNameAndModelValues mav = handleInfoLookup(absPath)
@@ -591,7 +582,7 @@ class BrowseController {
String fileName = targetFile.name
render(view:"newFolderDialog", model:[absPath:absPath])
}
-
+
/**
* Prepare the 'new folder' dialog
*/
@@ -607,11 +598,11 @@ class BrowseController {
log.info("abs path:${absPath}")
-
+
render(view:"starDialog", model:[absPath:absPath])
}
-
+
/**
* Show gallery view for given directory
*/
@@ -621,7 +612,7 @@ class BrowseController {
if (absPath == null) {
throw new JargonException("no absolute path passed to the method")
}
-
+
viewStateService.saveViewModeAndSelectedPath("gallery", absPath)
try {
@@ -644,7 +635,7 @@ class BrowseController {
render(view:"noInfo")
}
}
-
+
/**
* Set a folder to starred
*/
@@ -655,7 +646,7 @@ class BrowseController {
def message = message(code:"error.no.path.provided")
response.sendError(500,message)
}
-
+
def description = params['description']
if (description == null) {
def message = message(code:"error.no.description.provided")
@@ -672,7 +663,7 @@ class BrowseController {
response.sendError(500,message)
}
}
-
+
/**
* Set a folder to not starred
*/
@@ -683,7 +674,7 @@ class BrowseController {
def message = message(code:"error.no.path.provided")
response.sendError(500,message)
}
-
+
try {
log.info "unstarring absPath: ${absPath}"
starringService.unStar(irodsAccount, absPath)
@@ -725,15 +716,11 @@ class BrowseController {
FreeTaggingService freeTaggingService = taggingServiceFactory.instanceFreeTaggingService(irodsAccount)
IRODSTaggingService irodsTaggingService = taggingServiceFactory.instanceIrodsTaggingService(irodsAccount)
- IRODSStarredFileOrCollection irodsStarredFileOrCollection;
+
log.info("seeing if this is starred")
- try {
- irodsStarredFileOrCollection = starringService.findStarred(irodsAccount, absPath)
- } catch (SpecificQueryException sqe) {
- irodsStarredFileOrCollection = null
- }
+ IRODSStarredFileOrCollection irodsStarredFileOrCollection = starringService.findStarred(irodsAccount, absPath)
log.info "starring info:${irodsStarredFileOrCollection}"
-
+
if (isDataObject) {
long maxSize
String maxSizeParm = grailsApplication.config.idrop.config.max.thumbnail.size.mb
@@ -798,7 +785,7 @@ class BrowseController {
ResourceAO resourceAO = irodsAccessObjectFactory.getResourceAO(irodsAccount)
List<String> resources = new ArrayList<String>()
resources.add("")
-
+
try {
resources.addAll(resourceAO.listResourceAndResourceGroupNames())
} catch (Exception e) {
@@ -822,7 +809,7 @@ class BrowseController {
session["SPRING_SECURITY_CONTEXT"] = irodsAccount
render "OK"
}
-
+
/**
* Create the contents of a 'public link' dialog that will either display a url to copy, or create the appropriate ACL alterations
* to support such a public link
@@ -830,43 +817,43 @@ class BrowseController {
def preparePublicLinkDialog = {
def absPath = params['absPath']
if (absPath == null) {
- log.error "no file name in request"
+ log.error "no file name in request"
def message = message(code:"error.no.path.provided")
response.sendError(500,message)
}
-
+
// see if anonymous already has access
AnonymousAccessService anonymousAccessService = new AnonymousAccessServiceImpl(irodsAccessObjectFactory, irodsAccount)
-
+
boolean accessSet = anonymousAccessService.isAnonymousAccessSetUp(absPath)
URI irodsUri = IRODSUriUtils.buildURIForAnAccountWithNoUserInformationIncluded(irodsAccount, absPath)
String irodsUriPath = irodsUri.toString()
String accessUrlString = buildAnonymousAccessUrl(irodsUriPath)
render(view:"publicLinkDialog", model:[absPath:absPath, accessSet:accessSet, accessUrlString:accessUrlString])
- }
-
+ }
+
def updatePublicLinkDialog = {
def absPath = params['absPath']
if (absPath == null) {
- log.error "no file name in request"
+ log.error "no file name in request"
def message = message(code:"error.no.path.provided")
response.sendError(500,message)
}
-
+
// see if anonymous already has access
AnonymousAccessService anonymousAccessService = new AnonymousAccessServiceImpl(irodsAccessObjectFactory, irodsAccount)
try {
log.info("adding anonymous access...")
anonymousAccessService.permitAnonymousToFileOrCollectionSettingCollectionAndDataObjectProperties(absPath, FilePermissionEnum.READ, null)
log.info("add successful, link generated")
- } catch (JargonException je) {
+ } catch (JargonException je) {
log.error("unable to update anonymous access", je)
def message = message(code:"error.unable.to.add.anonymous.access")
response.sendError(500,message)
return
}
-
+
URI irodsUri = IRODSUriUtils.buildURIForAnAccountWithNoUserInformationIncluded(irodsAccount, absPath)
String irodsUriPath = irodsUri.toString()
String accessUrlString = buildAnonymousAccessUrl(irodsUriPath)
@@ -874,7 +861,7 @@ class BrowseController {
boolean accessSet = true
render(view:"publicLinkDialog", model:[absPath:absPath, accessSet:accessSet, accessUrlString:accessUrlString])
}
-
+
/**
* Build a url that will set up anonymous access to the given file
* @return
@@ -884,10 +871,10 @@ class BrowseController {
String grailsServerURL = grailsApplication.config.grails.serverURL
log.info("server URL for context: ${grailsServerURL}")
grailsServerURL = grailsServerURL + "/home/link?irodsURI=" + URLEncoder.encode(irodsUriString, grailsApplication.config.grails.views.gsp.encoding)
- return grailsServerURL
+ return grailsServerURL
}
-
-
+
+
}
class ViewNameAndModelValues {
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/FileController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/FileController.groovy
index aca5fb5..137b225 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/FileController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/FileController.groovy
@@ -79,11 +79,11 @@ class FileController {
def length = irodsFile.length()
log.info("file length = ${length}")
log.info("opened input stream")
-
+
response.setContentType("application/octet-stream")
response.setContentLength((int) length)
response.setHeader("Content-disposition", "attachment;filename=\"${irodsFile.name}\"")
-
+
response.outputStream << irodsFileInputStream // Performing a binary stream copy
} catch (CatNoAccessException e) {
log.error("no access error", e)
@@ -127,14 +127,14 @@ class FileController {
render(view:"uploadDialog", model:[irodsTargetCollection:irodsTargetCollection])
}
-
+
/**
* Prepare a quick upload dialog to upload a file to the default location using the quick upload service
*
*/
def prepareQuickUploadDialog = {
log.info("prepareQuickUploadDialog")
-
+
log.info("checking if uploads default directory needs to be created")
/* here we could do any processing on irods, such as provisioning of metadata fields based on target
@@ -313,20 +313,20 @@ class FileController {
log.info("name for create folder:${newFolderName}")
IRODSFileFactory irodsFileFactory = irodsAccessObjectFactory.getIRODSFileFactory(irodsAccount)
IRODSFile targetFile = irodsFileFactory.instanceIRODSFile(parent + "/" + newFolderName)
-
+
if (targetFile.exists()) {
log.error "no name in request"
def message = message(code:"error.duplicate.file")
response.sendError(500,message)
}
-
+
targetFile.mkdirs()
log.info("file created:${targetFile.absolutePath}")
render targetFile.getAbsolutePath()
} catch (CatNoAccessException e) {
- log.error("no access error", e)
- response.sendError(500, message(code:"message.no.access"))
- }
+ log.error("no access error", e)
+ response.sendError(500, message(code:"message.no.access"))
+ }
}
@@ -368,12 +368,12 @@ class FileController {
}
try {
prevFile.renameTo(newFile)
-
+
// return the parent, which will be reloaded
render newFile.parent
} catch (CatNoAccessException e) {
- log.error("no access error", e)
- response.sendError(500, message(code:"message.no.access"))
+ log.error("no access error", e)
+ response.sendError(500, message(code:"message.no.access"))
}
}
@@ -414,44 +414,6 @@ class FileController {
render targetAbsPath
}
- /**
- * Do a check for access rights to a file at a given path, if it exists, is a data object, and the user has read access, return "OK", otherwise
- * throw an appropriate exception
- */
- def screenForDownloadRights = {
- log.info("screenForDownloadRights")
-
- String sourceAbsPath = params['absPath']
- if (!sourceAbsPath) {
- log.error "no source path in request"
- def message = message(code:"error.no.path.provided")
- response.sendError(500,message)
- }
-
- log.info("getting file for path:${sourceAbsPath}")
- IRODSFile irodsFile = irodsAccessObjectFactory.getIRODSFileFactory(irodsAccount).instanceIRODSFile(sourceAbsPath)
- if (!irodsFile.exists()) {
- log.error "file does not exist"
- def message = message(code:"error.file.not.found")
- response.sendError(500,message)
- }
-
- if (!irodsFile.isFile()) {
- log.error "not a file"
- def message = message(code:"error.file.not.found")
- response.sendError(500,message)
- }
-
- if (!irodsFile.canRead()) {
- log.error "no access to file"
- def message = message(code:"error.no.access.permission")
- response.sendError(500,message)
- }
-
- render "OK"
-
- }
-
/**
* Copy a file in iRODS
*/
@@ -471,7 +433,7 @@ class FileController {
def message = message(code:"error.no.path.provided")
response.sendError(500,message)
}
-
+
String defaultResource = irodsAccount.defaultStorageResource
log.info("defaultResource:${defaultResource}")
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/HomeController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/HomeController.groovy
index e5f0337..49c7413 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/HomeController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/HomeController.groovy
@@ -1,7 +1,6 @@
package org.irods.mydrop.controller
import org.irods.jargon.core.connection.IRODSAccount
-import org.irods.jargon.core.exception.JargonException
import org.irods.jargon.core.exception.OperationNotSupportedByThisServerException
import org.irods.jargon.core.exception.SpecificQueryException
import org.irods.jargon.core.pub.IRODSAccessObjectFactory
@@ -14,7 +13,7 @@ class HomeController {
StarringService starringService
SharingService sharingService
IRODSAccessObjectFactory irodsAccessObjectFactory
-
+
/**
* Interceptor grabs IRODSAccount from the SecurityContextHolder
*/
@@ -29,9 +28,10 @@ class HomeController {
irodsAccount = session["SPRING_SECURITY_CONTEXT"]
}
- def afterInterceptor = {
+ def afterInterceptor = {
log.debug("closing the session")
irodsAccessObjectFactory.closeSession()
+
}
def index() {
@@ -65,74 +65,61 @@ class HomeController {
log.info("irodsFilePath:${filePath}")
String zone = MiscIRODSUtils.getZoneInPath(filePath)
log.info("zone:${zone}")
-
- irodsAccount = session["SPRING_SECURITY_CONTEXT"]
- if (irodsAccount == null) {
- log.info("no account set up, create an anonymous login")
- irodsAccount = anonymousIrodsAccountForURIString(mungedIRODSURI)
- session["SPRING_SECURITY_CONTEXT"] = irodsAccount
- }
-
+ IRODSAccount irodsAccount = anonymousIrodsAccountForURIString(mungedIRODSURI)
+ session["SPRING_SECURITY_CONTEXT"] = irodsAccount
/*
* Need to figure out how to signal interface to 'reset' to new account and path?
*/
render(view:"link", model:[absPath:filePath])
- }
+ }
+
def starredCollections() {
log.info "starredCollections()"
-
- try {
- def listing = starringService.listStarredCollections(irodsAccount, 0)
-
- if (listing.isEmpty()) {
- render(view:"noInfo")
- } else {
- render(view:"quickViewList",model:[listing:listing])
- }
- } catch (SpecificQueryException sqe) {
- log.error("error in specific query", sqe)
- render(view:"noSupport")
- } catch (JargonException je) {
- log.error("jargon exception", je)
- response.sendError(500,je.message)
+
+ def listing = starringService.listStarredCollections(irodsAccount, 0)
+
+ if (listing.isEmpty()) {
+ render(view:"noInfo")
+ } else {
+ render(view:"quickViewList",model:[listing:listing])
}
}
-
+
def starredDataObjects() {
log.info "starredDataObjects()"
- try {
- def listing = starringService.listStarredDataObjects(irodsAccount, 0)
- if (listing.isEmpty()) {
- render(view:"noInfo")
- } else {
- render(view:"quickViewList",model:[listing:listing])
- }
- } catch (SpecificQueryException sqe) {
- log.error("error in specific query", sqe)
- render(view:"noSupport")
- } catch (JargonException je) {
- log.error("jargon exception", je)
- response.sendError(500,je.message)
+ def listing = starringService.listStarredDataObjects(irodsAccount, 0)
+ if (listing.isEmpty()) {
+ render(view:"noInfo")
+ } else {
+ render(view:"quickViewList",model:[listing:listing])
}
}
-
+
/**
* Listing of collections shared by me with others
* @return
*/
def sharedCollectionsByMe() {
log.info "sharedCollectionsByMe"
-
+
boolean sharing = sharingService.isSharingSupported(irodsAccount)
if (!sharing) {
log.info("no sharing support on this grid")
- render(view:"noSupport")
+ render(view:"noInfo")
return
}
-
-
+
+ /*
+ * is sharing configured?
+ */
+ if (!sharing) {
+ log.info("no sharing support on this grid")
+ render(view:"noInfo")
+ return
+ }
+
try {
def listing = sharingService.listCollectionsSharedByMe(irodsAccount);
if (listing.isEmpty()) {
@@ -140,32 +127,31 @@ class HomeController {
} else {
render(view:"shareQuickViewList",model:[listing:listing])
}
- } catch (SpecificQueryException sqe) {
- log.error("error in specific query", sqe)
- render(view:"noSupport")
- } catch (OperationNotSupportedByThisServerException sqe) {
- log.error("error in specific query", sqe)
- render(view:"noSupport")
- } catch (JargonException je) {
- log.error("jargon exception", je)
- response.sendError(500,je.message)
+ } catch (SpecificQueryException e) {
+ log.error "speific query exception", e
+ def message = message(code:"error.no.specific.query")
+ response.sendError(500,message)
+ } catch (OperationNotSupportedByThisServerException e) {
+ log.error "speific query exception", e
+ def message = message(code:"error.no.specific.query")
+ response.sendError(500,message)
}
}
-
+
/**
* Listing of collections shared by me with others
* @return
*/
def sharedCollectionsWithMe() {
log.info "sharedCollectionsByMe"
-
+
boolean sharing = sharingService.isSharingSupported(irodsAccount)
if (!sharing) {
log.info("no sharing support on this grid")
- render(view:"noSupport")
+ render(view:"noInfo")
return
}
-
+
try {
def listing = sharingService.listCollectionsSharedWithMe(irodsAccount)
if (listing.isEmpty()) {
@@ -173,18 +159,19 @@ class HomeController {
} else {
render(view:"shareWithMeQuickViewList",model:[listing:listing])
}
- } catch (SpecificQueryException sqe) {
- log.error("error in specific query", sqe)
- render(view:"noSupport")
- } catch (OperationNotSupportedByThisServerException sqe) {
- log.error("error in specific query", sqe)
- render(view:"noSupport")
- } catch (JargonException je) {
- log.error("jargon exception", je)
- response.sendError(500,je.message)
+ } catch (SpecificQueryException e) {
+ log.error "speific query exception", e
+ def message = message(code:"error.no.specific.query")
+ response.sendError(500,message)
+ } catch (OperationNotSupportedByThisServerException e) {
+ log.error "speific query exception", e
+ def message = message(code:"error.no.specific.query")
+ response.sendError(500,message)
}
+
+
}
-
+
// FIXME: refactor into jargon-core
private IRODSAccount anonymousIrodsAccountForURIString(String uriString) {
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy
index 1b404b1..6cbe5e6 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy
@@ -55,6 +55,7 @@ class LoginController {
loginCommand.host = presetHost
loginCommand.usePresets = true
} else {
+ loginCommand.host = "elder10.man.poznan.pl"
loginCommand.usePresets = false
}
@@ -66,6 +67,8 @@ class LoginController {
if (presetZone) {
loginCommand.zone = presetZone
+ } else {
+ loginCommand.zone = "testZone"
}
if (presetResource) {
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy~ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy~
new file mode 100755
index 0000000..d9a2a6e
--- /dev/null
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/LoginController.groovy~
@@ -0,0 +1,309 @@
+package org.irods.mydrop.controller
+
+import org.irods.jargon.core.connection.IRODSAccount
+import org.irods.jargon.core.connection.auth.AuthResponse
+import org.irods.jargon.core.exception.JargonException
+import org.irods.jargon.core.pub.IRODSAccessObjectFactory
+import org.irods.jargon.core.pub.ResourceAO
+import org.irods.jargon.core.pub.UserAO
+import org.irods.mydrop.service.ViewStateService
+
+class LoginController {
+
+ IRODSAccessObjectFactory irodsAccessObjectFactory
+ IRODSAccount irodsAccount
+ ViewStateService viewStateService
+
+ def afterInterceptor = {
+ //log.debug("closing the session")
+ //irodsAccessObjectFactory.closeSession()
+ }
+
+
+ //static allowedMethods = [authenticate:'POST']
+
+ def beforeInterceptor = [action:this.&auth, except:[
+ 'login',
+ 'index',
+ 'authenticate'
+ ]]
+
+ def auth() {
+ if(!session["SPRING_SECURITY_CONTEXT"]) {
+ redirect(controller:"login", action:"login")
+ return false
+ }
+ irodsAccount = session["SPRING_SECURITY_CONTEXT"]
+ }
+
+ def login = {
+ log.info "in login"
+ //log.info "params:${request.parameterMap}"
+ log.info "params:${params}"
+ log.info("config is:${grailsApplication.config}")
+ def presetHost = grailsApplication.config.idrop.config.preset.host
+ def presetPort = grailsApplication.config.idrop.config.preset.port
+ def presetZone = grailsApplication.config.idrop.config.preset.zone
+ def presetResource = grailsApplication.config.idrop.config.preset.resource
+ def presetAuthScheme = grailsApplication.config.idrop.config.preset.authScheme
+
+ response.setHeader("apptimeout","apptimeout")
+
+ LoginCommand loginCommand = new LoginCommand()
+
+ if (presetHost) {
+ loginCommand.host = presetHost
+ loginCommand.usePresets = true
+ } else {
+ loginCommand.host = "elder10.man.poznan.pl"
+ loginCommand.usePresets = false
+ }
+
+ if (presetPort) {
+ loginCommand.port = Integer.parseInt(presetPort)
+ } else {
+ loginCommand.port = 1247
+ }
+
+ if (presetZone) {
+ loginCommand.zone = presetZone
+ } else {
+ login.Command.zone = "testZone"
+ }
+
+ if (presetResource) {
+ loginCommand.defaultStorageResource = presetResource
+ }
+
+ if (presetAuthScheme) {
+ log.info("preset auth scheme is:${presetAuthScheme}")
+ loginCommand.authMethod = presetAuthScheme
+ }
+
+ render(view:"login", model:[loginCommand:loginCommand])
+
+ }
+
+ def index ={ redirect(action: "login") }
+
+ def authenticate(LoginCommand loginCommand) {
+
+ log.info "cmd: ${loginCommand}"
+
+ /**
+ * If there is an error send back the view for redisplay with error messages
+ */
+ if (!loginCommand.validate()) {
+ log.info("errors in page, returning with error info:${loginCommand}")
+ flash.error = message(code:"error.data.error")
+ render(view:"login", model:[loginCommand:loginCommand])
+ return
+ }
+
+ log.info("edits pass")
+
+ def resource = loginCommand.defaultStorageResource ? loginCommand.defaultStorageResource : ""
+ def userName = loginCommand.user ? loginCommand.user : ""
+ def password = loginCommand.password ? loginCommand.password : ""
+
+ log.info("default storage resource: ${resource}")
+
+ boolean success = true
+ IRODSAccount irodsAccount
+
+ if (loginCommand.useGuestLogin) {
+
+ log.info("generate a guest login")
+ irodsAccount = IRODSAccount.instanceForAnonymous(loginCommand.host,
+ loginCommand.port,
+ "",
+ loginCommand.zone,
+ resource)
+
+ } else {
+
+ log.info("normal login mode")
+ if (userName == "") {
+ loginCommand.errors.reject("error.auth.invalid.user","Invalid user or password")
+ render(view:"login", model:[loginCommand:loginCommand])
+ return
+ }
+
+ if (password == "" ) {
+ loginCommand.errors.reject("error.auth.invalid.user","Invalid user or password")
+ render(view:"login", model:[loginCommand:loginCommand])
+ return
+ }
+
+ irodsAccount = IRODSAccount.instance(
+ loginCommand.host,
+ loginCommand.port,
+ userName,
+ password,
+ "",
+ loginCommand.zone,
+ resource)
+ }
+
+ log.info("login mode: ${loginCommand.authMethod}")
+
+ if (loginCommand.authMethod == "Standard") {
+ irodsAccount.authenticationScheme = IRODSAccount.AuthScheme.STANDARD
+ } else if (loginCommand.authMethod == "PAM") {
+ irodsAccount.authenticationScheme = IRODSAccount.AuthScheme.PAM
+ } else {
+ log.error("authentication scheme invalid", e)
+ response.sendError(500,e.message)
+ return
+ }
+
+ log.info("built irodsAccount:${irodsAccount}")
+ AuthResponse authResponse
+ try {
+ authResponse = irodsAccessObjectFactory.authenticateIRODSAccount(irodsAccount)
+ viewStateService.clearViewState()
+ } catch (JargonException e) {
+ log.error("unable to authenticate, JargonException", e)
+
+ if (e.getCause() == null) {
+ if (e.getMessage().indexOf("-826000") > -1) {
+ log.warn("invalid user/password")
+ loginCommand.errors.reject("error.auth.invalid.user","Invalid user or password")
+ success = false
+ } else {
+ log.error("authentication service exception", e)
+
+ loginCommand.errors.reject("error.auth.invalid.user","Unable to authenticate")
+ success = false
+ }
+ } else if (e.getCause() instanceof UnknownHostException) {
+ log.warn("cause is invalid host")
+ loginCommand.errors.reject("error.auth.invalid.host","Unknown host")
+ success = false
+ } else if (e.getCause().getMessage().indexOf("refused") > -1) {
+ log.error("cause is refused or invalid port")
+ loginCommand.errors.reject("error.auth.connection.refused","Connection refused")
+ success = false
+ } else {
+ log.error("authentication service exception", e)
+ response.sendError(500,e.message)
+ return
+ }
+ }
+
+ if (!success) {
+ log.warn("unsuccessful, render the login again")
+ render(view:"login", model:[loginCommand:loginCommand])
+ return
+ }
+ session["SPRING_SECURITY_CONTEXT"] = authResponse.authenticatedIRODSAccount
+ redirect(controller:"home")
+ }
+
+ def logout = {
+ session["SPRING_SECURITY_CONTEXT"] = null
+ session.invalidate()
+ redirect(action:"login")
+ }
+
+
+ /**
+ * FIXME: deprecated
+ * Show information about the current user/host
+ */
+ def showLoginBar = {
+ log.info("showLoginBar()")
+ ResourceAO resourceAO = irodsAccessObjectFactory.getResourceAO(irodsAccount)
+ List<String> resources = new ArrayList<String>()
+ resources.add("")
+ resources.addAll(resourceAO.listResourceAndResourceGroupNames())
+ render(view:"defaultStorageResource", model:[irodsAccount:irodsAccount, resources:resources])
+ }
+
+ /**
+ * Show a dialog to set the default storage resource
+ */
+ def defaultResource = {
+ log.info("showLoginBar()")
+ ResourceAO resourceAO = irodsAccessObjectFactory.getResourceAO(irodsAccount)
+ List<String> resources = new ArrayList<String>()
+ resources.add("")
+ resources.addAll(resourceAO.listResourceAndResourceGroupNames())
+ render(view:"defaultStorageResource", model:[irodsAccount:irodsAccount, resources:resources])
+ }
+
+ /**
+ * Show the password change dialog
+ * @return
+ */
+ def changePasswordForm() {
+ PasswordCommand cmd = new PasswordCommand()
+ render (view:"passwordChange", model:[irodsAccount:irodsAccount, password:cmd])
+ }
+
+ /**
+ * process a password change
+ * @return
+ */
+ def changePassword(PasswordCommand cmd) {
+ log.info "passwordChange()"
+ log.info "cmd: ${cmd}"
+
+ /**
+ * If there is an error send back the view for redisplay with error messages
+ */
+ if (!cmd.validate()) {
+ log.info("errors in page, returning with error info:${cmd}")
+ flash.error = message(code:"error.data.error")
+ render (view:"passwordChange", model:[irodsAccount:irodsAccount, password:cmd])
+ return
+ }
+
+ log.info("edits pass")
+
+ UserAO userAO = irodsAccessObjectFactory.getUserAO(irodsAccount)
+ userAO.changeAUserPasswordByThatUser(irodsAccount.userName, irodsAccount.password, cmd.password)
+ irodsAccount.password = cmd.password
+ log.info("password changed, fixed account in session")
+ flash.message = message(code:"message.password.updated")
+
+ render (view:"passwordChange", model:[irodsAccount:irodsAccount, password:cmd])
+
+ }
+
+
+}
+class LoginCommand {
+ boolean useGuestLogin
+ boolean usePresets
+ String user
+ String password
+ String host
+ String zone
+ int port
+ String defaultStorageResource
+ String authMethod
+
+ static constraints = {
+ host(blank:false)
+ zone(blank:false)
+ port( min:1, max:Integer.MAX_VALUE)
+ authMethod(blank:false)
+ }
+}
+
+class PasswordCommand {
+
+ String password
+ String confirmPassword
+
+ static constraints = {
+ password(blank:false)
+ confirmPassword validator: {
+ val, obj ->
+ if (!val) return ['error.confirm.password.missing']
+ if (val != obj.password) return['error.passwords.dont.match']
+ }
+ }
+ }
+
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy
index ece2f82..1edb684 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy
@@ -43,6 +43,7 @@ class MetadataController {
irodsAccessObjectFactory.closeSession()
}
+ def index = { }
/**
* Load the metadata details area, this will show the main form, and subsequently, the table will be loaded via AJAX
*/
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy
new file mode 100644
index 0000000..17cc84d
--- /dev/null
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy
@@ -0,0 +1,231 @@
+package org.irods.mydrop.controller
+
+import org.apache.commons.collections.FactoryUtils
+import org.apache.commons.collections.ListUtils
+import org.irods.jargon.core.connection.IRODSAccount
+import org.irods.jargon.core.pub.CollectionAO
+import org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAO;
+import org.irods.jargon.core.pub.IRODSAccessObjectFactory
+import org.irods.jargon.core.query.AVUQueryElement
+import org.irods.jargon.core.query.AVUQueryOperatorEnum
+import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry;
+import org.irods.jargon.core.query.MetaDataAndDomainData
+import org.irods.jargon.core.query.AVUQueryElement.AVUQueryPart
+import org.irods.jargon.core.pub.DataObjectAO;
+
+
+
+import java.util.ArrayList;
+
+class MetadataSearchController {
+
+ IRODSAccessObjectFactory irodsAccessObjectFactory
+ IRODSAccount irodsAccount
+
+ /**
+ * Interceptor grabs IRODSAccount from the SecurityContextHolder
+ */
+ def beforeInterceptor = [action:this.&auth]
+
+ def auth() {
+ if(!session["SPRING_SECURITY_CONTEXT"]) {
+ redirect(controller:"login", action:"login")
+ return false
+ }
+ irodsAccount = session["SPRING_SECURITY_CONTEXT"]
+ }
+
+
+ def afterInterceptor = {
+ log.debug("closing the session")
+ irodsAccessObjectFactory.closeSession()
+ }
+
+ def index = {
+
+ }
+
+ /**
+ * Search iRODS metadata
+ */
+ def search (MetadataSearchCommand metadataSearchCommand) {
+
+ CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = irodsAccessObjectFactory.getCollectionAndDataObjectListAndSearchAO(irodsAccount)
+ DataObjectAO dataObjAO = irodsAccessObjectFactory.getDataObjectAO(irodsAccount) //dataObjects
+ CollectionAO collectionAO = irodsAccessObjectFactory.getCollectionAO(irodsAccount) //folders
+
+ List<CollectionAndDataObjectListingEntry> results = new ArrayList<CollectionAndDataObjectListingEntry>()
+ List<MetaDataAndDomainData> queryResults = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> finalResults = new ArrayList<MetaDataAndDomainData>()
+
+ int counter = -1
+
+ for(AVUNode avuNode in metadataSearchCommand.AVUNodes) { //for every condition node do:
+ if(avuNode.andOr == "Every") { //if every condition has to be fulfilled
+ queryResults = connectedByAnd(avuNode, dataObjAO, collectionAO)
+ } else { //if at least one condition has to be fulfilled
+ queryResults = connectedByOr(avuNode, dataObjAO, collectionAO)
+ }
+ if(counter >= 0) { //if there's more than one node, check operator between nodes
+ log.info("OPERATOR:" + metadataSearchCommand.AVUOps[counter])
+ if (metadataSearchCommand.AVUOps[counter] == "AND") {
+ finalResults = intersectLists(finalResults, queryResults)
+ } else {
+ finalResults = sumOfLists(finalResults, queryResults)
+ }
+ } else {
+ finalResults = sumOfLists(finalResults, queryResults)
+ }
+ counter++
+ }
+
+
+
+ for (MetaDataAndDomainData data : finalResults){
+ results.add(collectionAndDataObjectListAndSearchAO.getCollectionAndDataObjectListingEntryAtGivenAbsolutePath(data.domainObjectUniqueName))
+ }
+
+
+ render(view:"/search/searchResult", model:[results:results])
+ }
+
+ private def connectedByAnd(AVUNode avuNode, DataObjectAO dataObjAO, CollectionAO collectionAO) {
+ List<MetaDataAndDomainData> queryRes1 = collectionAO.findMetadataValuesByMetadataQuery(createAVUQ(avuNode), true) //match folders names
+ List<MetaDataAndDomainData> queryRes2 = dataObjAO.findMetadataValuesByMetadataQuery(createAVUQ(avuNode)) //match dataObj names
+ List<MetaDataAndDomainData> queryResults = ListUtils.sum(queryRes1, queryRes2) //connect lists
+
+ queryResults
+ }
+
+ private def connectedByOr(AVUNode avuNode, DataObjectAO dataObjAO, CollectionAO collectionAO) {
+ List<AVUQueryElement> metadataQuery = new ArrayList<AVUQueryElement>()
+ List<MetaDataAndDomainData> finalResult = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> queryRes1 = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> queryRes2 = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> queryResults = new ArrayList<MetaDataAndDomainData>()
+
+ for(AVUCommand avu in avuNode.AVUs){
+ metadataQuery.clear()
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.ATTRIBUTE, AVUQueryOperatorEnum.EQUAL, avu.attribute));
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.VALUE, chooseOperator(avu.operator), avu.value));
+ if(!avu.unit.empty){
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.UNITS, AVUQueryOperatorEnum.EQUAL, avu.unit));
+ }
+
+ queryRes1 = collectionAO.findMetadataValuesByMetadataQuery(metadataQuery, true)
+ queryRes2 = dataObjAO.findMetadataValuesByMetadataQuery(metadataQuery)
+ queryResults = ListUtils.sum(queryRes1, queryRes2)
+
+ finalResult = sumOfLists(finalResult, queryResults)
+ }
+
+ finalResult //return list without duplicates
+
+ }
+
+ def createAVUQ(AVUNode avuNode) {
+
+ List<AVUQueryElement> metadataQuery = new ArrayList<AVUQueryElement>()
+
+ for(AVUCommand avu in avuNode.AVUs){
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.ATTRIBUTE, AVUQueryOperatorEnum.EQUAL, avu.attribute));
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.VALUE, chooseOperator(avu.operator), avu.value));
+ if(!avu.unit.empty){
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.UNITS, AVUQueryOperatorEnum.EQUAL, avu.unit));
+ }
+ }
+
+ metadataQuery
+ }
+
+ //create one list from two ones without duplicates
+ private def sumOfLists(List<MetaDataAndDomainData> list1, List<MetaDataAndDomainData> list2) {
+
+ boolean alreadyEx = false
+
+ for(MetaDataAndDomainData elem1 in list1) {
+ alreadyEx = false
+ for(MetaDataAndDomainData elem2 in list2) {
+ if(elem1.getDomainObjectUniqueName() == elem2.getDomainObjectUniqueName())
+ alreadyEx = true
+ }
+ if(!alreadyEx) list2.add(elem1)
+ }
+ list2
+ }
+
+ private def intersectLists(List<MetaDataAndDomainData> list1, List<MetaDataAndDomainData> list2) {
+
+ List<MetaDataAndDomainData> finalList = new ArrayList<MetaDataAndDomainData>()
+ boolean ex = false
+
+ for(MetaDataAndDomainData elem1 in list1) {
+ ex = false
+ for(MetaDataAndDomainData elem2 in list2) {
+ if(elem1.getDomainObjectUniqueName() == elem2.getDomainObjectUniqueName())
+ ex = true
+ }
+ if(ex) finalList.add(elem1)
+ }
+ finalList
+ }
+
+
+
+ def chooseOperator(String op) {
+ switch(op){
+ case "=":
+ AVUQueryOperatorEnum.EQUAL;
+ break
+ case ">":
+ AVUQueryOperatorEnum.GREATER_THAN;
+ break
+ case "<":
+ AVUQueryOperatorEnum.LESS_THAN;
+ break
+ case ">=":
+ AVUQueryOperatorEnum.GREATER_OR_EQUAL;
+ break
+ case "<=":
+ AVUQueryOperatorEnum.LESS_OR_EQUAL;
+ break
+ case "<>":
+ AVUQueryOperatorEnum.NOT_EQUAL;
+ break
+ case "like":
+ AVUQueryOperatorEnum.LIKE;
+ break
+ case "not like":
+ AVUQueryOperatorEnum.NOT_LIKE;
+ break
+ }
+ }
+
+}
+
+
+
+class MetadataSearchCommand { //constists of the condition nodes and operators connecting them
+ List <AVUNode> AVUNodes = ListUtils.lazyList([], FactoryUtils.instantiateFactory(AVUNode))
+ List <String> AVUOps = ListUtils.lazyList([], FactoryUtils.instantiateFactory(String))
+
+}
+
+class AVUCommand {
+ String attribute
+ String operator //=, <, >, <=, >=, <>, like, not like
+ String value
+ String unit //unused
+
+ static constraints = {
+ attribute(blank:false)
+ value(blank:false)
+ }
+
+}
+
+class AVUNode {
+ List <AVUCommand> AVUs = ListUtils.lazyList([], FactoryUtils.instantiateFactory(AVUCommand))
+ String andOr //every condition fulfilled or at least one
+}
+
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/ProfileController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/ProfileController.groovy
index 0a750b5..39db3d9 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/ProfileController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/ProfileController.groovy
@@ -2,6 +2,7 @@ package org.irods.mydrop.controller
import org.irods.jargon.core.connection.IRODSAccount
import org.irods.jargon.core.pub.IRODSAccessObjectFactory
+import org.irods.jargon.core.pub.UserAO
import org.irods.jargon.userprofile.UserProfile
import org.irods.mydrop.service.ProfileService
import org.jsoup.Jsoup
@@ -40,7 +41,7 @@ class ProfileController {
if (irodsAccount.userName == IRODSAccount.PUBLIC_USERNAME) {
render(view:"noProfileData")
} else {
-
+
try {
UserProfile userProfile = profileService.retrieveProfile(irodsAccount)
ProfileCommand profileCommand = new ProfileCommand()
@@ -58,53 +59,53 @@ class ProfileController {
profileCommand.postOfficeBox = Jsoup.clean(userProfile.userProfilePublicFields.postOfficeBox,Whitelist.basic())
profileCommand.telephoneNumber = Jsoup.clean(userProfile.userProfilePublicFields.telephoneNumber,Whitelist.basic())
profileCommand.title = Jsoup.clean(userProfile.userProfilePublicFields.title,Whitelist.basic())
-
+
render(view:"index", model:[userProfile:profileCommand])
} catch (Exception e) {
- log.error("eception retrieving or creating user profile", e)
response.sendError(500,e.message)
}
}
+
}
-
+
/**
* Update the profile
* @return
*/
def updateProfile(ProfileCommand profileCommand) {
-
+
log.info("updateProfile")
log.info "profileCommand: ${profileCommand}"
-
- /**
- * If there is an error send back the view for redisplay with error messages
- */
- if (!profileCommand.validate()) {
- log.info("errors in page, returning with error info")
- flash.error = message(code:"error.data.error")
- render(view:"index", model:[userProfile:profileCommand])
- return
- }
-
- log.info("edits pass")
-
+
+ /**
+ * If there is an error send back the view for redisplay with error messages
+ */
+ if (!profileCommand.validate()) {
+ log.info("errors in page, returning with error info")
+ flash.error = message(code:"error.data.error")
+ render(view:"index", model:[userProfile:profileCommand])
+ return
+ }
+
+ log.info("edits pass")
+
/*
* Massage the params into the user profile
*/
-
+
UserProfile userProfile
try {
- userProfile = profileService.retrieveProfile(irodsAccount)
+ userProfile = profileService.retrieveProfile(irodsAccount)
} catch (Exception e) {
log.error("error retrieving user profile", e)
flash.error = e.message
render(view:"index", model:[userProfile:profileCommand])
return
}
-
+
userProfile.userName = irodsAccount.userName
userProfile.userProfilePublicFields.nickName = Jsoup.clean(profileCommand.nickName,Whitelist.basic())
userProfile.userProfilePublicFields.description = Jsoup.clean(profileCommand.description,Whitelist.basic())
@@ -120,7 +121,7 @@ class ProfileController {
userProfile.userProfilePublicFields.postOfficeBox = Jsoup.clean(profileCommand.postOfficeBox,Whitelist.basic())
userProfile.userProfilePublicFields.telephoneNumber = Jsoup.clean(profileCommand.telephoneNumber,Whitelist.basic())
userProfile.userProfilePublicFields.title = Jsoup.clean(profileCommand.title,Whitelist.basic())
-
+
log.info "updating profile...."
try {
profileService.updateProfile(irodsAccount, userProfile)
@@ -130,12 +131,15 @@ class ProfileController {
render(view:"index", model:[userProfile:profileCommand])
return
}
-
+
log.info "updated"
flash.message = message(code:"message.update.successful")
-
+
redirect(view:"index", model:[userProfile:profileCommand])
+
}
+
+
}
class ProfileCommand {
@@ -153,7 +157,7 @@ class ProfileCommand {
String postOfficeBox
String telephoneNumber
String title
-
+
static constraints = {
nickName(null:false)
givenName( null:false)
@@ -165,7 +169,7 @@ class ProfileCommand {
labeledURL(null:false)
postalAddress(null:false)
postalCode(null:false)
- postOfficeBox(null:false)
+ postOfficeBox(null:false)
telephoneNumber(null:false)
title(null:false)
}
diff --git a/idrop-web/grails-app/i18n/messages.properties b/idrop-web/grails-app/i18n/messages.properties
index 6d60c26..f5ce9e6 100755
--- a/idrop-web/grails-app/i18n/messages.properties
+++ b/idrop-web/grails-app/i18n/messages.properties
@@ -59,6 +59,7 @@ text.length=Size
text.login=Login
text.logout=Logout
text.metadata=Metadata
+text.metaSearch=By Metadata
text.modified=Modified
text.name=Name
text.new.folder=New Folder
@@ -131,7 +132,6 @@ text.type=Type
text.tools=Tools
text.unit=Unit
text.update=Update
-text.update.tags=Update Tags
text.updated=Updated
text.upload=Upload
text.upload.and.download=Upload and Download
@@ -179,7 +179,6 @@ browse.page.prompt=Select a directory or file to see info and actions
# messages
error.confirm.password.missing=Confirmation password is null or blank
error.nothing.selected=Nothing was selected for the action
-error.no.access.permission=No access permission
error.no.action=No action found
error.no.audit.access=This user does not have permission to view audit data
error.no.data.found=No data found
@@ -217,21 +216,15 @@ error.some.error.occurred=An error occurred processing your request, please info
message.update.successful=Update successful
message.no.resource=A default resource needs to be selected from the combo box in the upper right-hand corner. Select a resource and try your request again
message.error.in.upload=An error occurred in uploading this file. If the problem persists, contact the service administrator
-message.login=Please enter your credentials to log into iRODS
message.password.updated=The password was successfully updated
message.resource.updated=Default storage resource updated successfully
message.update.successful=Update successful
message.no.access=You do not have access rights to perform that operation
message.no.starred=No starred files or folders to display
message.cannot.create.profile=A profile cannot be created for this user, this may be a mis-configuration
-message.no.files.to.display=Nothing to display! Star or Share files or folders to see them on your home page
-message.no.support.specific.query=Nothing to display! Sharing and starring support need to be added to this iRODS grid
-
+message.no.files.to.display=No files to display
message.share.delete.successful=Delete of share successful, note that permissions still remain as defined before
message.update.share.successful=Update of share successful
-message.zone.unavailable=Zone is unavailable, it may be down
-
-
# validation errors
org.irods.mydrop.controller.AddMetadataCommand.attribute.blank.error.attribute=Attribute must be entered
org.irods.mydrop.controller.AddMetadataCommand.value.blank.error.value=Value must be entered
diff --git a/idrop-web/grails-app/views/browse/_browseTabContent.gsp b/idrop-web/grails-app/views/browse/_browseTabContent.gsp
index e184204..2d27b70 100755
--- a/idrop-web/grails-app/views/browse/_browseTabContent.gsp
+++ b/idrop-web/grails-app/views/browse/_browseTabContent.gsp
@@ -1,87 +1,60 @@
-
-<div id="browseDialogArea">
- <!-- general area to spawn jquery dialogs -->
-</div>
-<div id="browseToolbar"
- style="display: block; width: 100%; position: relative;">
-
- <div id="infoDivPathArea"
- style="overflow: hidden; display: block; margin: 3px; font-size: 120%; position: relative;">
- <!-- area for the path crumb-trails -->
- </div>
-
-</div>
-<!-- browseToolbar -->
-<div id="browseMenuDiv"
- style="display: block; width: 100%; position: relative;">
- <g:render template="/common/topToolbar" />
-</div>
-
-<div id="browseDialogArea">
- <!-- general area to spawn jquery dialogs -->
-</div>
-
-<div id="browser" class="wrapper"
- style="height: 85%; width: 100%; clear: both; overflow: hidden;">
- <div id="dataTreeView"
- style="width: 100%; height: 700px; overflow: hidden;">
-
- <div id="dataTreeDivWrapper" class="ui-layout-west"
- style="width: 25%; height: 100%; overflow: hidden;">
- <div id="dataTreeToolbar"
- style="width: 100%; height: 4%; display: block; margin: 5px;"
- class="fg-toolbar">
-
-
- <div id="dataTreeMenu">
- <button type="button" id="refreshTreeButton"
- value="refreshTreeButton" onclick="refreshTree()")>
- <i class="icon-refresh"></i>
- </button>
-
- <g:if test="${!irodsAccount.anonymousAccount}">
-
- <button type="button" id="homeTreeButton"
- onclick="setTreeToUserHome()")>
- <i class="icon-home"></i>
- </button>
- <button type="button" id="rootTreeButton" value="rootTreeButton"
- onclick="setTreeToRoot()")>
- <i class="icon-arrow-up"></i>
- </button>
-
- </g:if>
-
- </div>
- <!-- dataTreeMenu -->
-
- </div>
- <!-- dataTreeToolbar -->
-
- <div id="dataTreeDiv" class="clearfix"
- style="height: 95%; width: 100%; overflow: auto;">
- <!-- no empty div -->
- </div>
- </div>
- <!-- dataTreeDivWrapper -->
-
- <div id="infoDivOuter"
- style="display: block; width: 75%; height: 100%; position: relative; overflow: auto;"
- class="ui-layout-center">
-
- <div id="infoDiv" class="">
- <h2>
- <g:message code="browse.page.prompt" />
- </h2>
- </div>
- <!-- infoDiv -->
-
+ <div id="browseDialogArea"><!-- general area to spawn jquery dialogs --></div>
+ <div id="browseToolbar" style="display:block; width:100%;position:relative;">
+
+ <div id="infoDivPathArea"
+ style="overflow: hidden; display:block; margin: 3px; font-size: 120%;position:relative;">
+ <!-- area for the path crumb-trails -->
</div>
- <!-- infoDivOuter -->
- </div>
- <!-- data tree view -->
-</div>
-<!-- browser -->
-<script>
+
+ </div> <!-- browseToolbar -->
+ <div id="browseMenuDiv" style="display:block; width:100%;position:relative;">
+ <g:render template="/common/topToolbar" />
+ </div>
+
+ <div id="browseDialogArea"><!-- general area to spawn jquery dialogs --></div>
+
-</script>
+
+ <div id="browser" class="wrapper" style="height:85%;width:100%;clear:both;overflow:hidden;">
+ <div id="dataTreeView" style="width: 100%; height: 700px; overflow: hidden;">
+
+ <div id="dataTreeDivWrapper" class="ui-layout-west" style="width: 25%; height: 100%; overflow:hidden;">
+ <div id="dataTreeToolbar" style="width:100%; height:4%;display:block; margin:5px;" class="fg-toolbar">
+
+
+ <div id="dataTreeMenu">
+ <button type="button" id="refreshTreeButton"
+ value="refreshTreeButton"
+ onclick="refreshTree()")>
+ <img class="icon-refresh"/>
+ </button>
+ <button type="button" id="homeTreeButton"
+
+ onclick="setTreeToUserHome()")>
+ <img class="icon-home"/>
+ </button>
+ <button type="button" id="rootTreeButton"
+ value="rootTreeButton"
+ onclick="setTreeToRoot()")>
+ <img class="icon-arrow-up"/>
+ </button>
+ </div> <!-- dataTreeMenu -->
+
+ </div> <!-- dataTreeToolbar -->
+
+ <div id="dataTreeDiv" class="clearfix" style="height:95%; width:100%; overflow:auto;"><!-- no empty div --></div>
+ </div> <!-- dataTreeDivWrapper -->
+
+ <div id="infoDivOuter" style="display: block; width: 75%; height: 100%; position: relative; overflow: auto;"
+ class="ui-layout-center">
+
+ <div id="infoDiv" style=""><h2><g:message code="browse.page.prompt" /></h2>
+ </div> <!-- infoDiv -->
+
+ </div> <!-- infoDivOuter -->
+ </div> <!-- data tree view -->
+ </div> <!-- browser -->
+ <script>
+
+
+ </script>
diff --git a/idrop-web/grails-app/views/browse/_collectionInfoToolbar.gsp b/idrop-web/grails-app/views/browse/_collectionInfoToolbar.gsp
index 7e37fc0..4c1eb28 100755
--- a/idrop-web/grails-app/views/browse/_collectionInfoToolbar.gsp
+++ b/idrop-web/grails-app/views/browse/_collectionInfoToolbar.gsp
@@ -3,36 +3,36 @@
<div id="collectionInfoToolbarMenu" class="btn-toolbar">
<div id="collectionInfoButtonGroup1" class="btn-group">
- <button id="setCollectionAsRoot" onclick="cibSetCollectionAsRoot()"><i class="icon-hand-left"></i><g:message
+ <button id="setCollectionAsRoot" onclick="cibSetCollectionAsRoot()"><img class="icon-hand-left"/><g:message
code="text.set.as.root" /></button>
<g:if test="${irodsStarredFileOrCollection}">
- <button id="unstarCollection" onclick="cibUnstarCollection()"><i class="icon-star"></i><g:message
+ <button id="unstarCollection" onclick="cibUnstarCollection()"><img class="icon-star"/><g:message
code="text.unstar" /></button>
</g:if>
<g:else>
- <button id="starCollection" onclick="cibStarCollection()"><i class="icon-star-empty"></i><g:message
+ <button id="starCollection" onclick="cibStarCollection()"><img class="icon-star-empty"/><g:message
code="text.star" /></button>
</g:else>
</div>
<div id="collectionInfoButtonGroup2" class="btn-group">
- <button id="addCollectionToCart" onclick="addToCartViaToolbar()"><i class="icon-shopping-cart"></i><g:message
+ <button id="addCollectionToCart" onclick="addToCartViaToolbar()"><img class="icon-shopping-cart"/><g:message
code="text.add.to.cart" /></button>
- <button id="uploadViaBrowser" onclick="cibUploadViaBrowser()"><i class="icon-upload"></i><g:message
+ <button id="uploadViaBrowser" onclick="cibUploadViaBrowser()"><img class="icon-upload"/><g:message
code="text.upload" /></button>
- <button id="bulkUploadViaBrowser" onclick="cibBulkUploadViaBrowser()"><i class="icon-upload"></i><g:message
+ <button id="bulkUploadViaBrowser" onclick="cibBulkUploadViaBrowser()"><img class="icon-upload"/><g:message
code="text.bulk.upload" /></button>
</div>
<div id="collectionInfoButtonGroup3" class="btn-group">
- <button id="newCollection" onclick="cibNewFolder()"><i class="icon-plus-sign"></i><g:message
+ <button id="newCollection" onclick="cibNewFolder()"><img class="icon-plus-sign"/><g:message
code="text.new.folder" /></button>
- <button id="renameCollection" onclick="cibRenameCollection()"><i class="icon-pencil"></i><g:message
+ <button id="renameCollection" onclick="cibRenameCollection()"><img class="icon-pencil"/><g:message
code="text.rename" /></button>
- <button id="deleteCollection" onclick="cibDeleteCollection()"><i class="icon-trash"></i><g:message
+ <button id="deleteCollection" onclick="cibDeleteCollection()"><img class="icon-trash"/><g:message
code="text.delete" /></button>
</div>
</div>
diff --git a/idrop-web/grails-app/views/browse/_dataObjectInfoToolbar.gsp b/idrop-web/grails-app/views/browse/_dataObjectInfoToolbar.gsp
index 10b1654..20b7923 100755
--- a/idrop-web/grails-app/views/browse/_dataObjectInfoToolbar.gsp
+++ b/idrop-web/grails-app/views/browse/_dataObjectInfoToolbar.gsp
@@ -4,22 +4,22 @@
<div id="dataObjectInfoButtonGroup1" class="btn-group">
<g:if test="${irodsStarredFileOrCollection}">
- <button id="unstarDataObject" onclick="dibUnstarFile()"><i class="icon-star"></i><g:message
+ <button id="unstarDataObject" onclick="dibUnstarFile()"><img class="icon-star"/><g:message
code="text.unstar" /></button>
</g:if>
<g:else>
- <button id="starDataobject" onclick="dibStarFile()"><i class="icon-star-empty"></i><g:message
+ <button id="starDataobject" onclick="dibStarFile()"><img class="icon-star-empty"/><g:message
code="text.star.file" /></button>
</g:else>
- <button id="downloadFile" onclick="dibDownloadFile()"><i class="icon-download"></i><g:message
+ <button id="downloadFile" onclick="dibDownloadFile()"><img class="icon-download"/><g:message
code="text.download" /></button>
- <button id="addToCart" onclick="addToCartViaToolbar()"><i class="icon-shopping-cart"></i><g:message
+ <button id="addToCart" onclick="addToCartViaToolbar()"><img class="icon-shopping-cart"/><g:message
code="text.add.to.cart" /></button>
</div>
<div id="dataObjectInfoButtonGroup2" class="btn-group">
- <button id="renameDataObject" onclick="dibRenameFile()"><i class="icon-pencil"></i><g:message
+ <button id="renameDataObject" onclick="dibRenameFile()"><img class="icon-pencil"/><g:message
code="text.rename" /></button>
- <button id="deleteDataObject" onclick="dibDeleteFile()"><i class="icon-trash"></i><g:message
+ <button id="deleteDataObject" onclick="dibDeleteFile()"><img class="icon-trash"/><g:message
code="text.delete" /></button>
</div>
</div>
diff --git a/idrop-web/grails-app/views/browse/browseDetails.gsp b/idrop-web/grails-app/views/browse/browseDetails.gsp
index 87d21cc..24a7a1e 100755
--- a/idrop-web/grails-app/views/browse/browseDetails.gsp
+++ b/idrop-web/grails-app/views/browse/browseDetails.gsp
@@ -1,166 +1,149 @@
<div id="browseDetailsMessageArea"></div>
<div id=browseDetailsDialogArea" style-"height:0px;></div>
<g:hiddenField id="browseDetailsAbsPath" name="absolutePath"
- value="${parent.collectionName}" />
-
-<div style="overflow: visible; position: relative;">
- <div id="idropLiteArea">
- <!-- area to show idrop lite applet -->
- </div>
- <div id="toggleHtmlArea">
- <div id="infoDialogArea">
- <!-- no empty divs -->
- </div>
- <!-- render the paging controls if needed -->
- <g:if test="${pagingActions.paging}">
- <g:render template="/browse/browseDetailsToolbar" />
- </g:if>
-
- <div id="detailsTopSection">
- <form id="browseDetailsForm" name="browseDetailsForm">
- <table class="table table-striped table-hover" cellspacing="0"
- cellpadding="0" border="0" id="browseDataDetailsTable">
- <thead>
- <tr>
- <th></th>
- <th>
-
- <div class="btn-group">
- <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">Action<span
- class="caret"></span></a>
- <ul class="dropdown-menu">
- <li id="menuAddToCartDetails"><a
- href="#addAllToCartDetails" onclick="addSelectedToCart()"><g:message
- code="text.add.all.to.cart" /></a></li>
- <li id="menuDeleteDetails"><a href="#deleteAllDetails"
- onclick="deleteSelected()"><g:message
- code="text.delete.all" /></a></li>
- <!-- dropdown menu links -->
- </ul>
- </div>
-
- </th>
- <th><g:message code="text.name" /></th>
- <th><g:message code="text.type" /></th>
- <th><g:message code="text.modified" /></th>
- <th><g:message code="text.length" /></th>
- </tr>
- </thead>
- <tbody>
- <g:each in="${collection}" var="entry">
- <tr id="${entry.formattedAbsolutePath}" class="draggableFile">
-
- <td><span
- class="ui-icon-circle-plus browse_detail_icon ui-icon"></span>
- </td>
- <td><g:checkBox name="selectDetail"
- value="${entry.formattedAbsolutePath}" checked="false" /> <g:if
- test="${entry.objectType.toString() == 'COLLECTION'}">
- <i class="icon-info-sign"
- onclick="infoHere('${entry.formattedAbsolutePath}')" ></i>
- </g:if> <g:else>
- <i class="icon-info-sign"
- onclick="infoHere('${entry.formattedAbsolutePath}')" ></i>
- </g:else></td>
- <td><g:if
- test="${entry.objectType.toString() == 'COLLECTION'}">
- <a href="#" id="${entry.formattedAbsolutePath}"
- onclick="clickOnPathInBrowseDetails(this.id)">
- ${entry.nodeLabelDisplayValue}
- </a>
-
- </g:if> <g:else>
- ${entry.nodeLabelDisplayValue}
-
-
- <i class="icon-download"
- onclick="downloadViaToolbarGivenPath('${entry.formattedAbsolutePath}')" ></i>
-
- </g:else></td>
- <td>
- ${entry.objectType}
- </td>
- <td>
- ${entry.modifiedAt}
- </td>
- <td>
- ${entry.displayDataSize}
- </td>
- </tr>
- </g:each>
-
- </tbody>
-
- <tfoot>
- <tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- </tfoot>
- </table>
- </form>
- </div>
- </div>
+ value="${parent.collectionName}" />
+
+<div style="overflow:visible; position:relative;">
+ <div id="idropLiteArea">
+ <!-- area to show idrop lite applet -->
+ </div>
+ <div id="toggleHtmlArea">
+ <div id="infoDialogArea">
+ <!-- no empty divs -->
+ </div>
+ <!-- render the paging controls if needed -->
+ <g:if test="${pagingActions.paging}">
+ <g:render template="/browse/browseDetailsToolbar" />
+ </g:if>
+
+ <div id="detailsTopSection" >
+ <form id="browseDetailsForm" name="browseDetailsForm">
+ <table class="table table-striped table-hover" cellspacing="0" cellpadding="0" border="0"
+ id="browseDataDetailsTable">
+ <thead>
+ <tr>
+ <th></th>
+ <th>
+
+ <div class="btn-group">
+ <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">Action<span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li id="menuAddToCartDetails"><a href="#addAllToCartDetails" onclick="addSelectedToCart()"><g:message code="text.add.all.to.cart" /></a></li>
+ <li id="menuDeleteDetails"><a href="#deleteAllDetails" onclick="deleteSelected()"><g:message code="text.delete.all" /></a></li>
+ <!-- dropdown menu links -->
+ </ul>
+ </div>
+
+ </th>
+ <th><g:message code="text.name" /></th>
+ <th><g:message code="text.type" /></th>
+ <th><g:message code="text.modified" /></th>
+ <th><g:message code="text.length" /></th>
+ </tr>
+ </thead>
+ <tbody>
+ <g:each in="${collection}" var="entry">
+ <tr id="${entry.formattedAbsolutePath}" class="draggableFile">
+
+ <td><span
+ class="ui-icon-circle-plus browse_detail_icon ui-icon"></span>
+ </td>
+ <td><g:checkBox name="selectDetail"
+ value="${entry.formattedAbsolutePath}" checked="false" />
+ <g:if test="${entry.objectType.toString() == 'COLLECTION'}"><img class="icon-info-sign" onclick="infoHere('${entry.formattedAbsolutePath}')"/></g:if> <g:else><img class="icon-info-sign" onclick="infoHere('${entry.formattedAbsolutePath}')"/></g:else>
+ </td>
+ <td><g:if
+ test="${entry.objectType.toString() == 'COLLECTION'}">
+ <a href="#" id="${entry.formattedAbsolutePath}" onclick="clickOnPathInBrowseDetails(this.id)">${entry.nodeLabelDisplayValue}</a>
+
+ </g:if> <g:else>
+ ${entry.nodeLabelDisplayValue}
+
+ <!-- <g:link url="${'file/download' + entry.formattedAbsolutePath}">
+${entry.nodeLabelDisplayValue} -->
+ </g:link>
+ </g:else></td>
+ <td>
+${entry.objectType}
+ </td>
+ <td>
+${entry.modifiedAt}
+ </td>
+ <td>
+${entry.displayDataSize}
+ </td>
+ </tr>
+ </g:each>
+
+ </tbody>
+
+ <tfoot>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ </tfoot>
+ </table>
+ </form>
+ </div>
+ </div>
</div>
<script>
- var dataTable;
- tableParams = {
- "bJQueryUI" : true,
- "bLengthChange" : false,
- "bFilter" : false,
- "iDisplayLength" : 500,
- "sDom" : "<'row'<'span10'l><'span8'f>r>t<'row'<'span10'i><'span10'p>>",
- "aoColumns" : [ {
- 'sWidth' : '20px',
- 'bSortable' : false
- }, {
- 'sWidth' : '20px',
- 'bSortable' : false
- }, {
- 'sWidth' : '120px'
- }, {
- 'sWidth' : '30px'
- }, {
- 'sWidth' : '40px'
- }, {
- 'sWidth' : '40px'
- }
+ var dataTable;
+
+ tableParams = {"bJQueryUI" : true,
+ "bLengthChange": false,
+ "bFilter": false,
+ "iDisplayLength" : 500,
+ "sDom": "<'row'<'span10'l><'span8'f>r>t<'row'<'span10'i><'span10'p>>",
+ "aoColumns" : [
+ {'sWidth': '20px', 'bSortable':false},
+ {'sWidth': '20px', 'bSortable':false},
+ { 'sWidth': '120px' },
+ { 'sWidth': '30px' },
+ { 'sWidth': '40px' },
+ { 'sWidth': '40px' }
+
+ ],
+
+ "fnInitComplete": function() {
+ this.fnAdjustColumnSizing(true);
+ }
+
+ }
+
+ $(function() {
+ //alert("building table ");
+ dataTable = lcBuildTableInPlace("#browseDataDetailsTable", browseDetailsClick, ".browse_detail_icon", tableParams);
+ $("#infoDiv").resize();
+ $.extend( $.fn.dataTableExt.oStdClasses, {
+ "sSortAsc": "header headerSortDown",
+ "sSortDesc": "header headerSortUp",
+ "sSortable": "header"
+ } );
+ });
+
+ function showLegend() {
+ $("#legend").show("slow");
+ }
+
+ function hideLegend() {
+ $("#legend").hide("slow");
+ }
- ],
-
- "fnInitComplete" : function() {
- this.fnAdjustColumnSizing(true);
- }
-
- }
-
- $(function() {
- //alert("building table ");
- dataTable = lcBuildTableInPlace("#browseDataDetailsTable",
- browseDetailsClick, ".browse_detail_icon", tableParams);
- $("#infoDiv").resize();
- $.extend($.fn.dataTableExt.oStdClasses, {
- "sSortAsc" : "header headerSortDown",
- "sSortDesc" : "header headerSortUp",
- "sSortable" : "header"
- });
- });
-
- function showLegend() {
- $("#legend").show("slow");
- }
-
- function hideLegend() {
- $("#legend").hide("slow");
- }
function infoHere(path) {
setDefaultView("info");
selectTreePathFromIrodsPath(path);
}
+
+
+
+
+
</script> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/browse/collectionInfo.gsp b/idrop-web/grails-app/views/browse/collectionInfo.gsp
index cf4b20d..6308786 100755
--- a/idrop-web/grails-app/views/browse/collectionInfo.gsp
+++ b/idrop-web/grails-app/views/browse/collectionInfo.gsp
@@ -1,215 +1,156 @@
<g:hiddenField id="infoAbsPath" name="absolutePath"
value="${collection.collectionName}" />
<div id="infoMessageArea">
- <!-- -->
-</div>
+ <!-- -->
+ </div>
<div id="idropLiteArea">
- <!-- area to show idrop lite applet -->
+ <!-- area to show idrop lite applet -->
</div>
-<div id="toggleHtmlArea" style="width: 100%;">
+<div id="toggleHtmlArea">
<g:render template="/browse/collectionInfoToolbar" />
- <div id="infoDialogArea">
- <!-- no empty divs -->
- </div>
- <!-- display area lays out info in a main and side column -->
+ <div id="infoDialogArea"><!-- no empty divs --></div>
+
+ <!-- display area lays out info in a main and side column -->
+ <div id="infoDisplayLayout" style="width:100%;height:100%;">
+
<div class="well">
- <image style="float:left;margin-right:10px;"
- src="<g:resource dir="images" file="folder.png" alt="folder icon" />" />
- <h3>
- ${collection.collectionName}
- </h3>
- </div>
-
-
- <ul class="nav nav-tabs" id="infoTabs">
- <li class="active"><a href="#info" id="infoTab"><g:message
- code="text.info" /></a></li>
- <li><a href="#metadata" id="metadataTab"><g:message
- code="text.metadata" /></a></li>
- <li><a href="#permissions" id="permissionTab"><g:message
- code="text.sharing" /></a></li>
- <g:if
- test="${grailsApplication.config.idrop.config.use.tickets==true}">
- <li><a href="#tickets" id="ticketTab"><g:message
- code="text.tickets" /></a></li>
- </g:if>
- <li><a href="#audit" id="auditTab"><g:message
- code="text.audit" /></a></li>
- </ul>
-
- <div class="tab-content" style="width: 100%;">
- <div class="tab-pane active" id="info">
+ <image style="float:left;margin-right:10px;" src="<g:resource dir="images" file="folder.png" alt="folder icon" />"/>
+ <h3>${collection.collectionName}</h3>
+ </div>
+</div>
- <div class="container">
- <div class="row">
- <div class="span12">
- <h4>
- <g:message code="text.info" />
- </h4>
- </div>
- </div>
- <div class="row alert alert-info">
- <div class="span12">
- <g:message code="heading.info" />
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.created" />:</strong>
- </div>
- <div class="span10">
- ${collection.createdAt}
- </div>
+<ul class="nav nav-tabs" id="infoTabs">
+ <li class="active"><a href="#info" id="infoTab"><g:message code="text.info" /></a></li>
+ <li><a href="#metadata" id="metadataTab"><g:message code="text.metadata" /></a></li>
+ <li><a href="#permissions" id="permissionTab"><g:message code="text.sharing" /></a></li>
+ <g:if test="${grailsApplication.config.idrop.config.use.tickets==true}">
+ <li><a href="#tickets" id="ticketTab"><g:message code="text.tickets" /></a></li>
+ </g:if>
+ <li><a href="#audit" id="auditTab"><g:message code="text.audit" /></a></li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane active" id="info">
+
+ <h4><g:message code="text.info" /></h4>
+ <div class="alert alert-info">
+ <g:message code="heading.info" />
+ </div>
+
+ <div id="container" style="height:100%;width:100%;">
+ <div>
+ <div style="width:15%;"><label><g:message code="text.created" />:</label></div>
+ <div>${collection.createdAt}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.updated" />:</strong>
- </div>
- <div class="span10">
- ${collection.modifiedAt}
- </div>
+ <div>
+ <div><label><g:message code="text.updated" />:</label></div>
+ <div>${collection.modifiedAt}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.owner" />:</strong>
- </div>
- <div class="span10">
- ${collection.collectionOwnerName}
- </div>
+ <div>
+ <div><label><g:message code="text.owner" />:</label></div>
+ <div>${collection.collectionOwnerName}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.owner.zone" />:</strong>
- </div>
- <div class="span10">
- ${collection.collectionOwnerZone}
- </div>
+ <div>
+ <div><label><g:message code="text.owner.zone" />:</label></div>
+ <div>${collection.collectionOwnerZone}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.type" />:</strong>
- </div>
- <div class="span10">
- ${collection.specColType}
- </div>
+ <div>
+ <div><label><g:message code="text.type" />:</label></div>
+ <div>${collection.specColType}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.object.path" />:</strong>
- </div>
- <div class="span10">
- ${collection.objectPath}
- </div>
+ <div>
+ <div><label><g:message code="text.object.path" />:</label></div>
+ <div>${collection.objectPath}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.description" />:</strong>
- </div>
- <div class="span10">
- ${collection.comments}
- </div>
+ <div>
+ <div><label><g:message code="text.description" />:</label></div>
+ <div>${collection.comments}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.info" />1:</strong>
- </div>
- <div class="span10">
- ${collection.info1}
- </div>
+ <div>
+ <div><label><g:message code="text.info" />1:</label></div>
+ <div>${collection.info1}</div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.info" />2:</strong>
- </div>
- <div class="span10">
- ${collection.info2}
- </div>
+ <div>
+ <div><label><g:message code="text.info" />2:</label></div>
+ <div>${collection.info2}</div>
</div>
-
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.tags" />:</strong>
- </div>
- <div class="span10">
- <g:textField id="infoTags" name="tags"
- value="${tags.spaceDelimitedTagsForDomain}" />
- </div>
+
+ </div>
+ <div id="container" style="height:100%;width:100%;">
+ <div>
+ <div><label><g:message code="text.tags" />:</label></div>
+ <div><g:textField id="infoTags" name="tags"
+ value="${tags.spaceDelimitedTagsForDomain}" /></div>
</div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.comment" />:</strong>
- </div>
- <div class="span10">
- <g:textArea id="infoComment" name="comment" rows="5" cols="80"
- value="${comment}" />
- </div>
+ <div>
+ <div><label><g:message code="text.comment" />:</label></div>
+ <div><g:textArea id="infoComment" name="comment" rows="5" cols="80"
+ value="${comment}" /></div>
</div>
- <div class="row">
- <div class="span2"></div>
- <div class="span10">
- <button type="button" id="updateTags" value="updateTags"
- onclick="updateTags()"><g:message code="text.update.tags" /></button>
- </div>
+ <div>
+ <div></div>
+ <div><button type="button" id="updateTags" value="updateTags" onclick="updateTags()">Update Tags</button></div>
</div>
</div>
-
- </div>
- <div class="tab-pane" id="metadata">
- <div id="infoAccordionMetadataInner"></div>
- </div>
- <div class="tab-pane" id="permissions">
- <div id="infoAccordionACLInner"></div>
- </div>
- <g:if
- test="${grailsApplication.config.idrop.config.use.tickets==true}">
- <div class="tab-pane" id="tickets">
- <div id="infoAccordionTicketsInner"></div>
- </div>
- </g:if>
- <div class="tab-pane" id="audit">
- <div id="infoAccordionAuditInner"></div>
+
+ </div>
+ <div class="tab-pane" id="metadata">
+ <div id="infoAccordionMetadataInner"></div>
+ </div>
+ <div class="tab-pane" id="permissions">
+ <div id="infoAccordionACLInner"></div>
+ </div>
+ <g:if test="${grailsApplication.config.idrop.config.use.tickets==true}">
+ <div class="tab-pane" id="tickets">
+ <div id="infoAccordionTicketsInner">
+ </div>
</div>
- </div>
-
+ </g:if>
+ <div class="tab-pane" id="audit">
+ <div id="infoAccordionAuditInner"></div>
+ </div>
</div>
-<!-- toggle html area -->
-
-
-<script>
- $(function() {
-
- $(".idropLiteBulkUpload").show();
- $("#menuDownload").hide();
- $("#menuUpload").show();
- $("#menuBulkUpload").show();
-
- $('#infoTabs a').click(function(e) {
- e.preventDefault();
- $(this).tab('show');
- });
-
- $('#infoTab').on('shown', function(e) {
- //e.target // activated tab
- //e.relatedTarget // previous tab
- showMetadataView(selectedPath, "#infoAccordionMetadataInner");
- });
-
- $('#metadataTab').on('shown', function(e) {
- showMetadataView(selectedPath, "#infoAccordionMetadataInner");
- });
-
- $('#permissionTab').on('shown', function(e) {
- showSharingView(selectedPath, "#infoAccordionACLInner");
- });
-
- $('#ticketTab').on('shown', function(e) {
- showTicketView(selectedPath, "#infoAccordionTicketsInner");
- });
-
- $('#auditTab').on('shown', function(e) {
- showAuditView(selectedPath, "#infoAccordionAuditInner");
- });
- });
-</script>
+</div><!-- toggle html area -->
+
+
+ <script>
+ $(function() {
+
+ $(".idropLiteBulkUpload").show();
+ $("#menuDownload").hide();
+ $("#menuUpload").show();
+ $("#menuBulkUpload").show();
+
+
+ $('#infoTabs a').click(function (e) {
+ e.preventDefault();
+ $(this).tab('show');
+ });
+
+ $('#infoTab').on('shown', function (e) {
+ //e.target // activated tab
+ //e.relatedTarget // previous tab
+ showMetadataView(selectedPath, "#infoAccordionMetadataInner");
+ });
+
+ $('#metadataTab').on('shown', function (e) {
+ showMetadataView(selectedPath, "#infoAccordionMetadataInner");
+ });
+
+ $('#permissionTab').on('shown', function (e) {
+ showSharingView(selectedPath, "#infoAccordionACLInner");
+ });
+
+ $('#ticketTab').on('shown', function (e) {
+ showTicketView(selectedPath, "#infoAccordionTicketsInner");
+ });
+
+ $('#auditTab').on('shown', function (e) {
+ showAuditView(selectedPath, "#infoAccordionAuditInner");
+ });
+
+ });
+
+ </script>
diff --git a/idrop-web/grails-app/views/browse/dataObjectInfo.gsp b/idrop-web/grails-app/views/browse/dataObjectInfo.gsp
index e37c7c7..d562d2a 100644
--- a/idrop-web/grails-app/views/browse/dataObjectInfo.gsp
+++ b/idrop-web/grails-app/views/browse/dataObjectInfo.gsp
@@ -10,335 +10,229 @@
<div id="toggleHtmlArea">
<div id="displayArea">
<g:render template="/browse/dataObjectInfoToolbar" />
- <div id="infoDialogArea">
- <!-- no empty divs -->
+ <div id="infoDialogArea"><!-- no empty divs --></div>
+
+ <div class="well">
+ <image style="float:left;margin-right:10px;" src="<g:resource dir='images' file='file.png' alt='file icon' />"/>
+
+ <div id="container" style="height:100%;width:100%;">
+
+ <div >
+ <div><label><g:message code="text.file.name" />:</label></div>
+ <div style="overflow:auto;"><a href="#" onclick="dibDownloadFile( )">${dataObject.dataName}</a></div>
+ </div>
+ <div>
+ <div style="width:20%;"><label><g:message code="text.parent" />:</label></div>
+ <div style="overflow:auto;">${dataObject.collectionName}</div>
+ </div>
+ </div>
+ <div id="infoThumbnailLoadArea"></div>
+ <g:if test="${renderMedia}">
+ <a class="media" href="${resource(absolute:true,dir:'file/download',file:dataObject.absolutePath)}"></a>
+ </g:if>
+ <g:else>
+ <a href="${resource(absolute:true,dir:'file/download',file:dataObject.absolutePath)}"></a>
+ </g:else>
+ </div>
+ </div>
</div>
-
-
- <div class="well">
- <image style="float:left;margin-right:10px;"
- src='<g:resource dir="images" file="file.png" alt="file icon" />' />
-
-
- <h3>
- ${dataObject.dataName}
- </h3>
+
+ <ul class="nav nav-tabs" id="infoTabs">
+ <li class="active"><a href="#info" id="infoTab"><g:message code="text.info" /></a></li>
+ <li><a href="#metadata" id="metadataTab"><g:message code="text.metadata" /></a></li>
+ <li><a href="#permissions" id="permissionTab"><g:message code="text.permissions" /></a></li>
+ <g:if test="${grailsApplication.config.idrop.config.use.tickets==true}">
+ <li><a href="#tickets" id="ticketTab"><g:message code="text.tickets" /></a></li>
+ </g:if>
+ <li><a href="#audit" id="auditTab"><g:message code="text.audit" /></a></li>
+ </ul>
+
+ <div class="tab-content">
+ <div class="tab-pane active" id="info">
+ <div id="container" style="height:100%;width:100%;">
+
+ <div >
+ <div style="width:20%;"><label><g:message code="text.length" />:</label></div>
+ <div>${dataObject.displayDataSize}</div>
+ </div>
+
+ <div>
+ <div><label><g:message code="text.created" />:</label></div>
+ <div>${dataObject.createdAt}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.modified" />:</label></div>
+ <div>${dataObject.updatedAt}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.owner" />:</label></div>
+ <div>${dataObject.dataOwnerName}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.owner.zone" />:</label></div>
+ <div>${dataObject.dataOwnerZone}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.data.path" />:</label></div>
+ <div style="overflow:auto;"><span class="longText">${dataObject.dataPath}</span></div>
+ </div>
+ <div>
+ <div><label><g:message code="text.resource.group" />:</label></div>
+ <div>${dataObject.resourceGroupName}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.checksum" />:</label></div>
+ <div>${dataObject.checksum}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.resource" />:</label></div>
+ <div>${dataObject.resourceName}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.replica.number" />:</label></div>
+ <div>${dataObject.dataReplicationNumber}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.replication.status" />:</label></div>
+ <div>${dataObject.replicationStatus}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.status" />:</label></div>
+ <div>${dataObject.dataStatus}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.type" />:</label></div>
+ <div>${dataObject.dataTypeName}</div>
+ </div>
+ <div>
+ <div><label><g:message code="text.version" />:</label></div>
+ <div>${dataObject.dataVersion}</div>
+ </div>
+
</div>
-
-
-
- <ul class="nav nav-tabs" id="infoTabs">
- <li class="active"><a href="#info" id="infoTab"><g:message
- code="text.info" /></a></li>
- <li><a href="#metadata" id="metadataTab"><g:message
- code="text.metadata" /></a></li>
- <li><a href="#permissions" id="permissionTab"><g:message
- code="text.sharing" /></a></li>
- <g:if
- test="${grailsApplication.config.idrop.config.use.tickets==true}">
- <li><a href="#tickets" id="ticketTab"><g:message
- code="text.tickets" /></a></li>
- </g:if>
- <li><a href="#audit" id="auditTab"><g:message
- code="text.audit" /></a></li>
- </ul>
-
- <div class="tab-content">
- <div class="tab-pane active" id="info">
- <div class="container">
- <div class="row">
- <div class="span12">
- <h4>
- <g:message code="text.info" />
- </h4>
- </div>
- </div>
- <div class="row alert alert-info">
- <div class="span12">
- <g:message code="heading.info" />
- </div>
- </div>
-
- <div class="row" id="infoThumbnailLoadArea">
- <div class="span12">
- <g:if test="${renderMedia}">
- <a class="media"
- href="${resource(absolute:true,dir:'file/download',file:dataObject.absolutePath)}"></a>
- </g:if>
- <g:else>
- <a
- href="${resource(absolute:true,dir:'file/download',file:dataObject.absolutePath)}"></a>
- </g:else>
- </div>
- </div>
-
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.length" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.displayDataSize}
- </div>
- </div>
-
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.created" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.createdAt}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.modified" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.updatedAt}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.owner" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.dataOwnerName}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.owner.zone" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.dataOwnerZone}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.data.path" />
- :</strong>
- </div>
- <div class="span10 longText" style="overflow: auto;">
- ${dataObject.dataPath}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.resource.group" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.resourceGroupName}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.checksum" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.checksum}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.resource" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.resourceName}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.replica.number" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.dataReplicationNumber}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.replication.status" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.replicationStatus}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.status" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.dataStatus}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.type" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.dataTypeName}
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.version" />
- :</strong>
- </div>
- <div class="span10">
- ${dataObject.dataVersion}
- </div>
- </div>
-
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.tags" />
- :</strong>
- </div>
- <div class="span10">
- <g:textField id="infoTags" name="tags"
- value="${tags.spaceDelimitedTagsForDomain}" />
- </div>
- </div>
- <div class="row">
- <div class="span2">
- <strong><g:message code="text.comment" />
- :</strong>
- </div>
- <div class="span10">
- <g:textArea id="infoComment" name="comment" rows="5" cols="80"
- value="${comment}" />
- </div>
- </div>
- <div class="row">
- <div class="span2"></div>
- <div class="span10">
- <button type="button" id="updateTags" value="updateTags"
- onclick="updateTags()"><g:message code="text.update.tags" /></button>
- </div>
- </div>
-
-
+ <div id="container" style="height:100%;width:100%;">
+ <div>
+ <div><label><g:message code="text.tags" />:</label></div>
+ <div><g:textField id="infoTags" name="tags"
+ value="${tags.spaceDelimitedTagsForDomain}" /></div>
</div>
- </div>
- <div class="tab-pane" id="metadata">
- <div id="infoAccordionMetadataInner"></div>
- </div>
- <div class="tab-pane" id="permissions">
- <div id="infoAccordionACLInner"></div>
- </div>
- <g:if
- test="${grailsApplication.config.idrop.config.use.tickets==true}">
- <div class="tab-pane" id="tickets">
- <div id="infoAccordionTicketsInner"></div>
+ <div>
+ <div><label><g:message code="text.comment" />:</label></div>
+ <div><g:textArea id="infoComment" name="comment" rows="5" cols="80"
+ value="${comment}" /></div>
+ </div>
+ <div>
+ <div></div>
+ <div><button type="button" id="updateTags" value="updateTags" onclick="updateTags()">Update Tags</button></div>
</div>
- </g:if>
- <div class="tab-pane" id="audit">
- <div id="infoAccordionAuditInner"></div>
- </div>
</div>
-
</div>
- <!-- toggle html area -->
-
- <script type="text/javascript">
- $(function() {
- $(".idropLiteBulkUpload").hide();
- $("#menuDownload").show();
- $("#menuUpload").hide();
- $("#menuBulkUpload").hide();
-
- $('#infoTabs a').click(function(e) {
- e.preventDefault();
- $(this).tab('show');
- });
-
- $('#infoTab').on('shown', function(e) {
- //e.target // activated tab
- //e.relatedTarget // previous tab
- showMetadataView(selectedPath, "#infoAccordionMetadataInner");
- });
-
- $('#metadataTab').on('shown', function(e) {
- showMetadataView(selectedPath, "#infoAccordionMetadataInner");
- });
+ <div class="tab-pane" id="metadata">
+ <div id="infoAccordionMetadataInner"></div>
+ </div>
+ <div class="tab-pane" id="permissions">
+ <div id="infoAccordionACLInner"></div>
+ </div>
+ <g:if test="${grailsApplication.config.idrop.config.use.tickets==true}">
+ <div class="tab-pane" id="tickets">
+ <div id="infoAccordionTicketsInner">
+ </div>
+ </div>
+ </g:if>
+ <div class="tab-pane" id="audit">
+ <div id="infoAccordionAuditInner"></div>
+ </div>
+</div>
- $('#permissionTab').on('shown', function(e) {
- showSharingView(selectedPath, "#infoAccordionACLInner");
- });
+</div><!-- toggle html area -->
+
+<script>
+ $(function() {
+ $(".idropLiteBulkUpload").hide();
+ $("#menuDownload").show();
+ $("#menuUpload").hide();
+ $("#menuBulkUpload").hide();
- $('#ticketTab').on('shown', function(e) {
- showTicketView(selectedPath, "#infoAccordionTicketsInner");
- });
- $('#auditTab').on('shown', function(e) {
- showAuditView(selectedPath, "#infoAccordionAuditInner");
- });
+ $('#infoTabs a').click(function (e) {
+ e.preventDefault();
+ $(this).tab('show');
+ });
+
+ $('#infoTab').on('shown', function (e) {
+ //e.target // activated tab
+ //e.relatedTarget // previous tab
+ showMetadataView(selectedPath, "#infoAccordionMetadataInner");
+ });
+
+ $('#metadataTab').on('shown', function (e) {
+ showMetadataView(selectedPath, "#infoAccordionMetadataInner");
+ });
+ $('#permissionTab').on('shown', function (e) {
+ showSharingView(selectedPath, "#infoAccordionACLInner");
});
- function callUpdateTags() {
- updateTags();
- }
+ $('#ticketTab').on('shown', function (e) {
+ showTicketView(selectedPath, "#infoAccordionTicketsInner");
+ });
- /*
+ $('#auditTab').on('shown', function (e) {
+ showAuditView(selectedPath, "#infoAccordionAuditInner");
+ });
+ });
- $("#infoAccordion").accordion({
- clearStyle : true,
- autoHeight : false
- }).bind("accordionchange", function(event, ui) {
- var infoSection = ui.newHeader[0].id;
- updateDataObjectInfoSection(infoSection);
- });
- */
+ function callUpdateTags() {
+ updateTags();
+ }
- /**
- Update the info for a section in the info accordion based on the provided section id
- */
- function updateDataObjectInfoSection(sectionToUpdate) {
- //alert("sectionToUpdate:" + sectionToUpdate);
- if (sectionToUpdate == "infoAccordionMetadata") {
- showMetadataView(selectedPath, "#infoAccordionMetadataInner");
- } else if (sectionToUpdate == "infoAccordionACL") {
- showSharingView(selectedPath, "#infoAccordionACLInner");
- } else if (sectionToUpdate == "infoAccordionTickets") {
- showTicketView(selectedPath, "#infoAccordionTicketsInner");
- } else if (sectionToUpdate == "infoAccordionAudit") {
- showAuditView(selectedPath, "#infoAccordionAuditInner");
- } else {
- }
+ /*
+
+
+ $("#infoAccordion").accordion({
+ clearStyle : true,
+ autoHeight : false
+ }).bind("accordionchange", function(event, ui) {
+ var infoSection = ui.newHeader[0].id;
+ updateDataObjectInfoSection(infoSection);
+ });
+ */
+
+ /**
+ Update the info for a section in the info accordion based on the provided section id
+ */
+ function updateDataObjectInfoSection(sectionToUpdate) {
+ //alert("sectionToUpdate:" + sectionToUpdate);
+ if (sectionToUpdate == "infoAccordionMetadata") {
+ showMetadataView(selectedPath, "#infoAccordionMetadataInner");
+ } else if (sectionToUpdate == "infoAccordionACL") {
+ showSharingView(selectedPath, "#infoAccordionACLInner");
+ } else if (sectionToUpdate == "infoAccordionTickets") {
+ showTicketView(selectedPath, "#infoAccordionTicketsInner");
+ } else if (sectionToUpdate == "infoAccordionAudit") {
+ showAuditView(selectedPath, "#infoAccordionAuditInner");
+ } else {
}
+ }
+</script>
+<g:if test="${getThumbnail}">
+ <script>
+ $(function() {
+ requestThumbnailImageForInfoPane();
+ });
</script>
- <g:if test="${getThumbnail}">
- <script type="text/javascript">
- $(function() {
- requestThumbnailImageForInfoPane();
- });
- </script>
- </g:if>
- <g:else>
- <script type="text/javascript">
- $(function() {
- //$.fn.media.mapFormat('pdf', 'quicktime');
- $('.media').media({
- width : 300,
- height : 200,
- autoplay : true
- });
+</g:if>
+<g:else>
+<script>
+ $(function() {
+ //$.fn.media.mapFormat('pdf', 'quicktime');
+ $('.media').media({
+ width : 300,
+ height : 200,
+ autoplay : true
+ });
- });
- </script>
- </g:else>
-</div>
-</div> \ No newline at end of file
+ });
+</script>
+</g:else>
diff --git a/idrop-web/grails-app/views/common/_cssAndJs.gsp b/idrop-web/grails-app/views/common/_cssAndJs.gsp
index a516319..cf957dd 100755
--- a/idrop-web/grails-app/views/common/_cssAndJs.gsp
+++ b/idrop-web/grails-app/views/common/_cssAndJs.gsp
@@ -1,5 +1,6 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><g:layoutTitle default="iDrop-web - iRODS Cloud Browser" /></title>
+ <link rel="stylesheet" href="${resource(dir:'css',file:'dhx_comboStyle.css')}" />
<link rel="stylesheet" href="${resource(dir:'css',file:'style.css')}" />
<link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap.css')}" />
<link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap-responsive.min.css')}" />
@@ -38,4 +39,4 @@
<g:javascript library="galleria-1.2.6" />
<g:javascript library="jquery.gritter.min" />
<g:javascript library="jquery.opacityrollover" />
- <g:javascript library="superfish" /> \ No newline at end of file
+ <g:javascript library="superfish" />
diff --git a/idrop-web/grails-app/views/common/_cssAndJs.gsp~ b/idrop-web/grails-app/views/common/_cssAndJs.gsp~
new file mode 100755
index 0000000..a516319
--- /dev/null
+++ b/idrop-web/grails-app/views/common/_cssAndJs.gsp~
@@ -0,0 +1,41 @@
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title><g:layoutTitle default="iDrop-web - iRODS Cloud Browser" /></title>
+ <link rel="stylesheet" href="${resource(dir:'css',file:'style.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap-responsive.min.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'jqcloud.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'layout-default-latest.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'jquery.fileupload-ui.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'superfish.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'jquery.gritter.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'overcast/jquery-ui-1.9.0.custom.css')}" />
+ <link rel="shortcut icon"
+ href="${resource(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
+ <g:layoutHead />
+ <g:javascript library="jquery-1.7.2.min" />
+ <g:javascript library="jquery-ui-1.8.7.custom.min" />
+ <g:javascript library="bootstrap.min" />
+ <g:javascript library="jquery.hotkeys" />
+ <g:javascript library="jquery.jstree" />
+ <g:javascript library="jquery.jeditable.mini" />
+ <g:javascript library="jquery.dataTables.min" />
+ <g:javascript library="mydrop/ticket" />
+ <g:javascript library="jquery.i18n.properties-min-1.0.9" />
+ <g:javascript library="jqcloud-0.1.6" />
+ <g:javascript library="jquery.fileupload-ui" />
+ <g:javascript library="jquery.fileupload" />
+ <g:javascript library="jquery.media" />
+ <g:javascript library="mydrop/lingo_common" />
+ <g:javascript library="mydrop/main" />
+ <g:javascript library="jquery-ui-13" />
+ <g:javascript library="jquery.blockUI" />
+ <g:javascript library="jquery.ba-bbq.min" />
+ <g:javascript library="jquery.layout-latest.min" />
+ <g:javascript library="jquery-ui-13" />
+ <g:javascript library="jquery.tools.min" />
+ <g:javascript library="mydrop/shopping_cart" />
+ <g:javascript library="mydrop/user" />
+ <g:javascript library="galleria-1.2.6" />
+ <g:javascript library="jquery.gritter.min" />
+ <g:javascript library="jquery.opacityrollover" />
+ <g:javascript library="superfish" /> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/common/_topToolbar.gsp b/idrop-web/grails-app/views/common/_topToolbar.gsp
index 71ff685..5c23047 100755
--- a/idrop-web/grails-app/views/common/_topToolbar.gsp
+++ b/idrop-web/grails-app/views/common/_topToolbar.gsp
@@ -3,26 +3,23 @@
<div id="topToolbarMenu" class="btn-toolbar">
<div id="menuFileDetails" class="btn-group">
- <button id="menuRefresh" onclick="refreshTree()"><i class="icon-refresh"></i><g:message
+ <button id="menuRefresh" onclick="refreshTree()"><img class="icon-refresh"/><g:message
code="text.refresh" /></button>
<button id="menuNewFolderDetails"
- onclick="newFolderViaBrowseDetailsToolbar()"><i class="icon-plus-sign"></i><g:message
+ onclick="newFolderViaBrowseDetailsToolbar()"><img class="icon-plus-sign"/><g:message
code="text.new.folder" /></button>
</div>
<div id="menuView" class="btn-group">
- <g:if test="${grailsApplication.config.idrop.config.use.browse.view==true}">
- <button id="menuBrowseView"
- onclick="browseView()"><i class="icon-list"></i><g:message
- code="text.browse" /></button>
- </g:if>
- <button id="menuInfoView" onclick="infoView()"><i class="icon-info-sign"></i> <g:message code="text.info" /></button>
- <g:if test="${grailsApplication.config.idrop.config.use.gallery.view==true}">
- <button id="menuGalleryView"
- onclick="galleryView()"><i class="icon-picture"></i><g:message
- code="text.gallery" /></button>
- </g:if>
+
+ <button id="menuBrowseView"
+ onclick="browseView()"><img class="icon-list"/><g:message
+ code="text.browse" /></button>
+ <button id="menuInfoView" onclick="infoView()"><img class="icon-info-sign"/> <g:message code="text.info" /></button>
+ <button id="menuGalleryView"
+ onclick="galleryView()"><img class="icon-picture"/><g:message
+ code="text.gallery" /></button>
</div>
</div>
diff --git a/idrop-web/grails-app/views/common/_topbar.gsp b/idrop-web/grails-app/views/common/_topbar.gsp
index fee43d3..43f7c6f 100755
--- a/idrop-web/grails-app/views/common/_topbar.gsp
+++ b/idrop-web/grails-app/views/common/_topbar.gsp
@@ -21,6 +21,8 @@
<ul class="dropdown-menu">
<!-- <li><a href="#" id="searchFileName" onclick="xxx()")>Search By File Name</a></li> -->
<li><a href="#" id="searchTag"><g:link controller="tags" action="index"><g:message code="text.tags" /></g:link></li>
+ <li><a href="#" id="searchMeta"><g:link controller="MetadataSearch" action="index"><g:message code="text.metaSearch" /></g:link></li>
+
<!-- <li><a href="#" id="searchMetadata" onclick="xxx()")>Search By Metadata</a></li> -->
</ul>
</li>
diff --git a/idrop-web/grails-app/views/common/_topbar.gsp~ b/idrop-web/grails-app/views/common/_topbar.gsp~
new file mode 100755
index 0000000..fee43d3
--- /dev/null
+++ b/idrop-web/grails-app/views/common/_topbar.gsp~
@@ -0,0 +1,75 @@
+<div class="navbar navbar-fixed-top navbar-inverse">
+<div class="navbar-inner">
+ <a class="brand" href="#">iDrop</a>
+
+ <ul class="nav">
+ <g:ifAuthenticated>
+
+ <!-- menu items shown if user has been authenticated -->
+
+ <li id="topbarHome" class="topbarItem"><g:link controller="home" action="index"><g:message code="text.home" /></g:link></li>
+ <li id="topbarBrowser" class="topbarItem"><g:link controller="browse" action="index"><g:message code="text.browse" /></g:link></li>
+
+ <g:ifNotGuestAccount>
+ <g:if test="${grailsApplication.config.idrop.config.use.userprofile==true}">
+ <li id="topbarPreferences" class="topbarItem"><g:link controller="profile" action="index">Profile</g:link></li>
+ </g:if>
+ </g:ifNotGuestAccount>
+ <li id="topbarSearch" class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <g:message code="text.search" /><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <!-- <li><a href="#" id="searchFileName" onclick="xxx()")>Search By File Name</a></li> -->
+ <li><a href="#" id="searchTag"><g:link controller="tags" action="index"><g:message code="text.tags" /></g:link></li>
+ <!-- <li><a href="#" id="searchMetadata" onclick="xxx()")>Search By Metadata</a></li> -->
+ </ul>
+ </li>
+ <li id="topbarTools" class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <g:message code="text.tools" /><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="${grailsApplication.config.idrop.config.idrop.jnlp}" id="idropDesktop")>iDrop Desktop</a></li>
+ </ul>
+ </li>
+
+ </g:ifAuthenticated>
+
+ <li id="topbarAccount" class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <g:message code="text.account" /> <g:ifAuthenticated> <g:ifNotGuestAccount>( <span id="accountZoneAndUserDisplay"><g:accountInfo /></span> )<b class="caret"></b> </g:ifNotGuestAccount></g:ifAuthenticated></a>
+ <ul class="dropdown-menu">
+ <g:ifAuthenticated>
+ <li><g:link controller="login" action="logout"><g:message code="text.logout" /></g:link></li>
+ <g:ifNotGuestAccount>
+ <li><a href="#" id="changePasswordButton"><g:link controller="login" action="changePasswordForm"><g:message code="text.change.password" /></g:link></a></li>
+ </g:ifNotGuestAccount>
+ <li><a href="#" id="setDefaultResourceButton"><g:link controller="login" action="defaultResource"><g:message code="text.set.default.resource" /></g:link></a></li>
+ </g:ifAuthenticated>
+ <g:ifNotAuthenticated>
+ <li><g:link href="#" id="loginButton" controller="login" action="login"><g:message code="text.login" /></g:link></li>
+ </g:ifNotAuthenticated>
+
+ </ul>
+ </li>
+
+ <g:ifAuthenticated>
+ <li id="topbarShoppingCart" class="topbarItem"><g:link class="pull-right" controller="shoppingCart" action="index"><span id="shoppingCartToolbarLabel"><g:message code="text.shopping.cart" /></span></g:link></li>
+ </g:ifAuthenticated>
+
+ </ul>
+ </div>
+</div>
+ <g:ifAuthenticated>
+<script>
+ var currentZone = "${irodsAccount?.zone}";
+ var currentUser = "${irodsAccount?.userName}";
+ //$(function() {
+ //$("#accountZoneAndUserDisplay").html(currentZone + ":" + currentUser);
+// });
+ </g:ifAuthenticated>
+</script>
+
+
+
+
+
diff --git a/idrop-web/grails-app/views/home/link.gsp b/idrop-web/grails-app/views/home/link.gsp
index d8bfef5..f1e7e87 100755
--- a/idrop-web/grails-app/views/home/link.gsp
+++ b/idrop-web/grails-app/views/home/link.gsp
@@ -17,6 +17,6 @@
return false;
}
baseAbsPath = escape(baseAbsPath);
- window.location.href = context + "/browse/index?mode=path&absPath=" + baseAbsPath;
+ window.location.href = context + "/home/index?mode=path&absPath=" + baseAbsPath;
});
</script> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/home/noInfo.gsp b/idrop-web/grails-app/views/home/noInfo.gsp
index a9ba3c3..2651776 100755
--- a/idrop-web/grails-app/views/home/noInfo.gsp
+++ b/idrop-web/grails-app/views/home/noInfo.gsp
@@ -1,6 +1,3 @@
<div>
-<g:img dir="images" file="qmark.png" width="128" height="128"/>
-</div>
-<div>
<h2><g:message code="message.no.files.to.display" /></h2>
</div> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/login/login.gsp b/idrop-web/grails-app/views/login/login.gsp
index ecc9059..76af435 100755
--- a/idrop-web/grails-app/views/login/login.gsp
+++ b/idrop-web/grails-app/views/login/login.gsp
@@ -3,49 +3,18 @@
<head>
<title>iDrop-web - iRODS Personal Cloud"</title>
<meta name="layout" content="basic" />
-<style type="text/css">
-/* Override some defaults */
-html,body {
- background-color: #eee;
-}
-
-body {
- padding-top: 40px;
-}
-
-.container {
- width: 600px;
-}
-
-/* The white background content wrapper */
-.container>.content {
- background-color: #fff;
- padding: 20px;
- margin: 0 -20px;
- -webkit-border-radius: 10px 10px 10px 10px;
- -moz-border-radius: 10px 10px 10px 10px;
- border-radius: 10px 10px 10px 10px;
- -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
- -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
- box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
-}
-
-.login-form {
- margin-left: 65px;
-}
-
-legend {
- margin-right: -50px;
- font-weight: bold;
- color: #404040;
-}
-</style>
</head>
-<body>
- <div class="container">
- <div class="row-fluid content">
- <div class="span12">
+<div class="row-fluid">
+ <div class="span5 offset4">
+ <div id="normalLoginForm" class="well">
+
+ <g:form id="normalLogin" method="post" controller="login"
+ action="authenticate">
+
+
+ <g:hiddenField name="usePresets" id="usePresets"
+ value="${loginCommand.usePresets}" />
<g:hasErrors bean="${loginCommand}">
<div class="alert alert-error">
<ul>
@@ -55,96 +24,127 @@ legend {
</ul>
</div>
</g:hasErrors>
- </div>
- <div class="span12">
-
- <g:form id="normalLogin" method="post" controller="login"
- action="authenticate" class="loginForm">
- <g:hiddenField name="usePresets" id="usePresets"
- value="${loginCommand.usePresets}" />
- <fieldset>
- <legend>
- <g:message code="message.login" />
- </legend>
-
-
-
- <g:if test="${loginCommand.usePresets}">
-
- <g:hiddenField name="host" id="host" value="${loginCommand.host}" />
- <g:hiddenField name="port" id="port" value="${loginCommand.port}" />
- <g:hiddenField name="zone" id="zone" value="${loginCommand.zone}" />
- <g:hiddenField name="defaultStorageResource" id="resource"
- value="${loginCommand.defaultStorageResource}" />
- <g:hiddenField name="authMethod" id="authMethod"
- value="${loginCommand.authMethod}" />
- </g:if>
- <g:else>
-
- <label><g:message code="text.host" />:</label>
-
- <input type="text" class="input-text" name="host" id="host"
- value="${loginCommand.host}" />
-
- <label><g:message code="text.port" />:</label>
-
- <input type="text" class="input-text" name="port" id="port"
- value="${loginCommand.port}" />
- <label><g:message code="text.zone" />:</label>
-
- <input type="text" class="input-text" name="zone" id="zone"
- value="${loginCommand.zone}" />
-
- <label><g:message code="text.auth.method" />:</label>
-
- <g:select name="authMethod" from="${['Standard', 'PAM']}"
- value="${loginCommand.authMethod}" />
- </g:else>
-
-
- <label><g:message code="text.guest.login" />:</label>
-
- <g:checkBox name="useGuestLogin" id="useGuestLogin"
- value="${loginCommand.useGuestLogin}"
- onclick="toggleGuestLogin()" />
-
-
- <label><g:message code="text.user" />:</label> <input type="text"
- class="input-text" name="user" id="user"
- value="${loginCommand.user}" /> <label><g:message
- code="text.password" />:</label> <input type="password"
- class="input-text" name="password" id="password"
- value="${loginCommand.password}" />
+ <div id="container" style="height: auto; width: auto;">
+
+ <g:if test="${loginCommand.usePresets}">
+
+ <g:hiddenField name="host" id="host" value="${loginCommand.host}" />
+ <g:hiddenField name="port" id="port" value="${loginCommand.port}" />
+ <g:hiddenField name="zone" id="zone" value="${loginCommand.zone}" />
+ <g:hiddenField name="defaultStorageResource" id="resource"
+ value="${loginCommand.defaultStorageResource}" />
+ <g:hiddenField name="authMethod" id="authMethod"
+ value="${loginCommand.authMethod}" />
+ </g:if>
+ <g:else>
+ <div>
+ <div style="width: 30%;">
+ <label><g:message code="text.host" />:</label>
+ </div>
+ <div>
+ <input type="text" class="input-text" name="host" id="host"
+ value="${loginCommand.host}" />
+ </div>
+ </div>
+ <div>
+ <div>
+ <label><g:message code="text.port" />:</label>
+ </div>
+ <div>
+ <input type="text" class="input-text" name="port" id="port"
+ value="${loginCommand.port}" />
+ </div>
+ </div>
+ <div>
+ <div>
+ <label><g:message code="text.zone" />:</label>
+ </div>
+ <div>
+ <input type="text" class="input-text" name="zone" id="zone"
+ value="${loginCommand.zone}" />
+ </div>
+ </div>
+ <div>
+ <div>
+ <label><g:message code="text.auth.method" />:</label>
+ </div>
+ <div>
+ <g:select name="authMethod" from="${['Standard', 'PAM']}"
+ value="${loginCommand.authMethod}" />
+ </div>
+ </div>
+ </g:else>
+
+ <div>
+ <div>
+ <label><g:message code="text.guest.login" />:</label>
+ </div>
+ <div>
+ <g:checkBox name="useGuestLogin" id="useGuestLogin"
+ value="${loginCommand.useGuestLogin}"
+ onclick="toggleGuestLogin()" />
+ </div>
+ </div>
- <button id="login" name="login"
- style="margin-left: 150px; margin-top: 20px; margin-bottom: 20px;" type="submit">
- <g:message code="text.login" />
- </button>
+ <div class="userLoginData">
+ <div>
+ <label><g:message code="text.user" />:</label>
+ </div>
+ <div>
+ <input type="text" class="input-text" name="user" id="user"
+ value="${loginCommand.user}" />
+ </div>
+ </div>
+ <div class="userLoginData">
+ <div>
+ <label><g:message code="text.password" />:</label>
+ </div>
+ <div>
+ <input type="password" class="input-text" name="password"
+ id="password" value="${loginCommand.password}" />
+ </div>
+ </div>
- <g:if test="${!loginCommand.usePresets}">
+ </span>
+ <div>
+ <div></div>
+ <div>
+ <button id="login" name="login"
+ style="margin-left: 150px; margin-top: 20px; margin-bottom: 20px;">
+ <g:message code="text.login" />
+ </button>
+ </div>
+ </div>
+ <g:if test="${!loginCommand.usePresets}">
+ <div>
<div>
- <div>
- <label><g:message code="text.resource" />:</label>
- </div>
- <div>
- <input type="text" class="input-text" name="resource"
- id="resource" value="${loginCommand.defaultStorageResource}" />
- <stong> <g:message code="text.optional" /> <strong></strong>
- </stong>
- </div>
+ <label><g:message code="text.resource" />:</label>
</div>
- </g:if>
- </fieldset>
- </g:form>
+ <div>
+ <input type="text" class="input-text" name="resource"
+ id="resource" value="${loginCommand.defaultStorageResource}" />
+ <stong>
+ <g:message code="text.optional" />
+ </strong>
+ </div>
+ </div>
+ </g:if>
+ </div>
+ <!-- container div -->
- <!--end-normalLogin-->
- </div>
+ </g:form>
+ <!--end-normalLogin-->
</div>
</div>
- <script type="text/javascript">
+
+</div>
+</div>
+</div>
+</html>
+<script>
$(function() {
toggleGuestLogin();
@@ -160,9 +160,6 @@ legend {
}
}
</script>
-</body>
-</html>
-
diff --git a/idrop-web/grails-app/views/metadata/index.gsp b/idrop-web/grails-app/views/metadata/index.gsp
new file mode 100644
index 0000000..c775f34
--- /dev/null
+++ b/idrop-web/grails-app/views/metadata/index.gsp
@@ -0,0 +1,104 @@
+<head>
+ <meta name="layout" content="mainNoSidebar" />
+<g:javascript library="mydrop/metadata"/>
+<g:javascript library="mydrop/metaFiltering"/>
+<g:javascript library="mydrop/myScript"/>
+
+</head>
+
+
+
+<ul class="nav nav-tabs" id="searchTabsMeta">
+ <li><a href="#">Search</a></li>
+ <li><a href="#">Results</a></li>
+</ul>
+
+
+<div class="row-fluid">
+ <div class="span2">
+ <div class="nav-header">Help</div>
+ <div class="metaHelp">
+ <p>
+ There'll be help
+ <br><br><br><br><br><br><br><br>
+ </p>
+ </div>
+
+ </div>
+ <div class="span9">
+ <table class="filterMetaTable" id="filterTab1">
+ <thead>
+ <tr>
+ <th colspan="2">
+
+ </th>
+ <th colspan="2">
+ <button class="deleteNodeBtn" id="del" disabled>X</button>
+ </th>
+ </tr>
+ <tr>
+ <th colspan="2">
+ <input type="radio" value="Every" id="every" name="condOption0" checked>
+ <label class="labelRadio" for="every"> Every condition fulfilled </label>
+ </th>
+ <th colspan="2">
+ <input type="radio" value="One" id="one" name="condOption0">
+ <label class="labelRadio" for="one"> At least one condition fulfilled</label>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="filterRow0">
+ <!-- <td colspan="2">
+ <!-- <form class="formMeta">
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Attribute </div>
+ <div class="dhx_combo_box dhx_skyblue" style="width: 180px;">
+ <input class="dhx_combo_input" type="text" autocomplete="off" style="width: 155px;">
+ <input type="hidden" name="" value="">
+ <input type="hidden" name="_new_value" value="false">
+ <img class="dhx_combo_img" src="<g:resource dir="imgs" file="combo_select_dhx_skyblue.gif" alt="file icon"/>"/>
+ </div>
+ </td>
+ <!-- </div>
+ <div class="singleFilter"> -->
+ <td>
+ <div class="meta-header"> Operator</div>
+ <select id="MetaOp1" class="metaOperator">
+ <option> = </option>
+ <option> > </option>
+ <option> < </option>
+ <option> >= </option>
+ <option> <= </option>
+ <option> <> </option>
+ </select>
+ </td>
+ <!--</div>
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Value </div><input type="text">
+ </td>
+ <!--</div>
+ <div class="singleFilter">-->
+ <td>
+ <br>
+ <button class="delConditionBtn" disabled>DELETE</button>
+ </td>
+ <!--</div>
+ </form>-->
+ <!-- </td> -->
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan ="2">
+ <button class="addConditionBtn">ADD CONDITION</button>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+
+ <div><button id="newNodeBtn">New conditions node</button></div>
+ <div><button id="searchBtn">SEARCH</button></div>
+ </div>
+</div>
+
diff --git a/idrop-web/grails-app/views/metadata/metadataDetails.gsp b/idrop-web/grails-app/views/metadata/metadataDetails.gsp
index 1828bfb..e7e1aa2 100755
--- a/idrop-web/grails-app/views/metadata/metadataDetails.gsp
+++ b/idrop-web/grails-app/views/metadata/metadataDetails.gsp
@@ -1,9 +1,9 @@
+<h4><g:message code="text.metadata" /></h4>
-<g:hiddenField name='metadataDetailsAbsPath' id='metadataDetailsAbsPath'
- value='${absPath}' />
+<g:hiddenField name='metadataDetailsAbsPath' id='metadataDetailsAbsPath' value='${absPath}'/>
-<!-- div for metadata table -->
-<div></div>
+ <!-- div for metadata table -->
+</div>
<div id="metadataMessageArea">
@@ -14,54 +14,50 @@
<!-- area for generating dialogs -->
</div>
-<div id="metadataDetailsArea" class="container-fluid">
+<div id="metadataDetailsArea">
- <div class="row">
- <div class="span12">
- <h4>
- <g:message code="text.metadata" />
- </h4>
- </div>
- </div>
- <div class="row alert alert-info">
- <div class="span12">
+ <div class="alert alert-info">
<g:message code="heading.metadata" />
- </div>
</div>
- <div id="detailsToolbar" class="row well">
- <div id="detailsMenu" class="span12 btn-group">
- <button type="button" id="addMetadataButton" value="addMetadata"
+
+ <div id="detailsToolbar" class="well">
+ <div id="detailsMenu"
+ style="float: left, clear : both;">
+ <button type="button" id="addMetadataButton"
+ value="addMetadata"
onclick="prepareMetadataDialog()")>
<g:message code="default.button.create.label" />
</button>
<button type="button" id="deleteMetadataButton"
- value="deleteMetadata" onclick="deleteMetadata()")>
+ value="deleteMetadata"
+ onclick="deleteMetadata()")>
<g:message code="default.button.delete.label" />
</button>
- <button type="button" id="reloadAclButton" value="reloadMetadata"
+ <button type="button" id="reloadAclButton"
+ value="reloadMetadata"
onclick="reloadMetadataDetailsTable()")>
<g:message code="default.button.reload.label" />
</button>
</div>
</div>
- <div class="row">
- <div id="metadataTableDiv" class="span12">
- <!-- table goes here -->
- </div>
- </div>
+ <div id="metadataTableDiv"><!-- table goes here --></div>
</div>
<script type="text/javascript">
+
var origData = "";
var path = $("#metadataDetailsAbsPath").val();
if (path == null) {
path = baseAbsPath;
}
-
+
+
$(function() {
-
+
reloadMetadataDetailsTable(path);
});
-</script> \ No newline at end of file
+
+
+ </script> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/metadataSearch/index.gsp b/idrop-web/grails-app/views/metadataSearch/index.gsp
new file mode 100644
index 0000000..7076b50
--- /dev/null
+++ b/idrop-web/grails-app/views/metadataSearch/index.gsp
@@ -0,0 +1,155 @@
+<head>
+ <meta name="layout" content="mainNoSidebar" />
+<g:javascript library="mydrop/metadata"/>
+<g:javascript library="mydrop/metaFiltering"/>
+<g:javascript library="mydrop/search" />
+<g:javascript library="mydrop/dhtmlxcombo"/>
+<g:javascript library="mydrop/tag" />
+<g:javascript library="mydrop/home" />
+
+</head>
+
+
+
+<ul class="nav nav-tabs" id="searchTabs">
+ <li><a href="#metaQueryTab">Query</a></li>
+ <li><a href="#resultsTab">Results</a></li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane active" id="metaQueryTab">
+ <div class="row-fluid">
+ <div class="span2">
+ <div class="nav-header">Help</div>
+ <div class="metaHelp">
+ <p>
+ There'll be help
+ <br><br><br><br><br><br><br><br>
+ </p>
+ </div>
+
+ </div>
+ <div class="span9">
+ <g:form id="avuQuery" method="post" controller="metadataSearch"
+ action="search" class="">
+ <table class="filterMetaTable" id="filterTab1">
+ <thead>
+ <tr>
+ <th colspan="2">
+
+ </th>
+ <th colspan="3">
+ <input type="button" class="deleteNodeBtn" id="del" disabled value="X">
+ </th>
+ </tr>
+ <tr>
+ <th colspan="2">
+ <input type="radio" value="Every" name="AVUNodes[0].andOr" checked>
+ <label class="labelRadio"> Every condition fulfilled </label>
+ </th>
+ <th colspan="3">
+ <input type="radio" value="One" name="AVUNodes[0].andOr">
+ <label class="labelRadio"> At least one condition fulfilled</label>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="filterRow0">
+ <!-- <td colspan="2">
+ <!-- <form class="formMeta">
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Attribute </div>
+ <input name="attr" type="text" autocomplete="off">
+ </td>
+ <!-- </div>
+ <div class="singleFilter"> -->
+ <td>
+ <div class="meta-header"> Operator</div>
+ <select name="op" class="metaOperator">
+ <option> = </option>
+ <option> > </option>
+ <option> < </option>
+ <option> >= </option>
+ <option> <= </option>
+ <option> <> </option>
+ <option> like </option>
+ <option> not like </option>
+ </select>
+ </td>
+ <!--</div>
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Value </div>
+ <input name="val" type="text" autocomplete="off">
+ </td>
+ <td> <div class="meta-header"> Unit </div>
+ <input name="unit" type="text" autocomplete="off">
+ </td>
+ <!--</div>
+ <div class="singleFilter">-->
+ <td>
+ <br>
+ <input type='button' class="delConditionBtn" value='DELETE' disabled>
+ </td>
+ <!--</div>
+ </form>-->
+ <!-- </td> -->
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan ="2">
+ <input type="button" class="addConditionBtn" value="ADD CONDITION">
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+
+ <div><input type="button" id="newNodeBtn" value="New conditions node"></div>
+ </g:form>
+ <div><button id="searchBtn" onclick="processMetadataQuery()">SEARCH</button></div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="tab-pane" id="resultsTab">
+ <div id="resultsTabInner">Search Results here</div>
+
+ </div>
+
+</div>
+
+<script>
+ $(document).ready(function() {
+
+ $.ajaxSetup({
+ cache : false
+ });
+ $("#topbarSearch").addClass("active");
+
+ $('#searchTabs a').click(function (e) {
+
+ e.preventDefault();
+ $(this).tab('show');
+ var state = {};
+ var tabId = this.hash
+ state["tab"] = tabId;
+ $.bbq.pushState(state);
+ });
+
+ $(window).bind( 'hashchange', function(e) {
+ processTagSearchStateChange( $.bbq.getState());
+ });
+
+ $(window).trigger( 'hashchange' );
+
+
+ });
+
+
+ //function addAVUTriplet() {
+
+
+ //}
+
+</script> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/sharing/_sharingPanel.gsp b/idrop-web/grails-app/views/sharing/_sharingPanel.gsp
index 8407cea..6a3a4e5 100644
--- a/idrop-web/grails-app/views/sharing/_sharingPanel.gsp
+++ b/idrop-web/grails-app/views/sharing/_sharingPanel.gsp
@@ -15,7 +15,7 @@
<div class="btn-group">
<g:if
test="${grailsApplication.config.idrop.config.use.sharing==true && irodsSharedFileOrCollection != null}">
- <button type="button" onclick="editShareAtPath()">
+ <button onclick="editShareAtPath()">
<g:message code="text.edit.share" />
</button>
<button onclick="removeShareAtPath()">
diff --git a/idrop-web/grails-app/views/sharing/aclDetails.gsp b/idrop-web/grails-app/views/sharing/aclDetails.gsp
index 185424e..1c082eb 100755
--- a/idrop-web/grails-app/views/sharing/aclDetails.gsp
+++ b/idrop-web/grails-app/views/sharing/aclDetails.gsp
@@ -15,13 +15,13 @@
<div class="btn-group">
<button type="button" id="addAclButton"
value="addAcl"
- onclick="prepareAclDialog()"><g:message code="default.button.create.label" /></button>
+ onclick="prepareAclDialog()")><g:message code="default.button.create.label" /></button>
<button type="button" id="deleteAclButton"
value="deleteAcl"
- onclick="deleteAcl()"> <g:message code="default.button.delete.label" /> </button>
+ onclick="deleteAcl()")><g:message code="default.button.delete.label" /></button>
<button type="button" id="reloadAclButton"
value="reloadAcl"
- onclick="reloadAclTable(selectedPath)"><g:message code="default.button.reload.label" /></button>
+ onclick="reloadAclTable(selectedPath)")><g:message code="default.button.reload.label" /></button>
</div>
<div class="btn-group">
<button onclick="makePublicLinkAtPath()"><g:message code="text.create.public.link" /></button>
diff --git a/idrop-web/idrop-web-config2.groovy b/idrop-web/idrop-web-config2.groovy
index 8c8c3be..c3272f0 100755
--- a/idrop-web/idrop-web-config2.groovy
+++ b/idrop-web/idrop-web-config2.groovy
@@ -41,8 +41,8 @@ environments {
idrop.config.idrop.lite.use.applet.dir=false
*/
-idrop.config.idrop.lite.applet.jar="idrop-lite-2.0.1-SNAPSHOT-jar-with-dependencies.jar"
-idrop.config.idrop.lite.codebase="http://iren-web.renci.org/idrop-snapshot"
+idrop.config.idrop.lite.applet.jar="idrop-lite-2.0.0-jar-with-dependencies.jar"
+idrop.config.idrop.lite.codebase="http://iren-web.renci.org/idrop-release"
idrop.config.idrop.lite.use.applet.dir=false
/*
@@ -54,9 +54,9 @@ idrop.config.idrop.lite.use.applet.dir=false
* idrop.config.idrop.jnlp="https://lifetime-library.ils.unc.edu/llclient/idrop.jnlp"
*/
-//idrop.config.idrop.jnlp="http://iren-web.renci.org:8080/idrop/idrop.jnlp"
+idrop.config.idrop.jnlp="http://localhost:8080/idrop-web/idrop.jnlp"
//drop.config.idrop.jnlp="http://iren-web.renci.org/idrop-snapshot/idrop.jnlp"
-idrop.config.idrop.jnlp="http://iren-web.renci.org/idrop-release/idrop.jnlp"
+//idrop.config.idrop.jnlp="http://iren-web.renci.org/idrop-release/idrop.jnlp"
/*
* 5) Customization properties
*/
@@ -69,9 +69,3 @@ idrop.config.use.userprofile=true
// do I support sharing? Requires target server to have specific query support and sharing queries loaded from jargon-user-tagging
idrop.config.use.sharing=true
-
-// do I want to show the gallery view?
-idrop.config.use.gallery.view=false
-
-// do I want to show the browse view?
-idrop.config.use.browse.view=false
diff --git a/idrop-web/release_notes.txt b/idrop-web/release_notes.txt
index da2ee4d..113c3b7 100644
--- a/idrop-web/release_notes.txt
+++ b/idrop-web/release_notes.txt
@@ -1,12 +1,12 @@
*'''Project''': idrop-web
*'''Date''': 03/04/2013
-*'''Release Version''': 2.0.XXX
-*'''git tag''': 2.0.XXX
+*'''Release Version''': 2.0.0
+*'''git tag''': 2.0.0
==News==
-This is a maintenance release of iDrop web2 and the iDrop suite
+This is a release of iDrop web with the version 2.0 redesign work Phase I (GUI redesign)
==Requirements==
@@ -46,30 +46,9 @@ Note that the following bug and feature requests are logged in GForge with relat
*[#1221] twistie broken on search results
-*[#1439] iDrop 2.0.1 release small cleanups and fixes
-**Nicer display when no files/folders to display in home page
-**Gallery and browse view now configurable option in config.groovy
-
-*[#1462] Fix profile to tolerate no 'protected profile read/write' group, it will still write the profile but will not set permissions to that missing group
-
-*[#1475] ie fixes for 2.0.1
-**Lots of cleanups of html and styles as a result of ie testing on win8
-**Fix of login screen rendering on ie
-
-*[#1312] fix public link access to not override account if alread logged in
-
-*[#715] check access before download
-**Check file access and verify is a data object before doing a download, displaying a nicer error message
==Features==
*[#984] iDrop web '2.0' redesign effort
*[#78] very large collection paging
-
-*[#1345] upgrade grails to 2.2.1
-**Upgrade to grails 2.2.1 and related cleanups to make it easier to work with
-**Move plug-in defs to BuildConfig.groovy
-
-*[#1475] login form discombobulated on ie later versions
-**Fix layout markup for login form for better cross-browser compatability
diff --git a/idrop-web/src/templates/war/web.xml b/idrop-web/src/templates/war/web.xml
index aa5182b..51543b3 100755
--- a/idrop-web/src/templates/war/web.xml
+++ b/idrop-web/src/templates/war/web.xml
@@ -88,7 +88,7 @@
-->
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
- <welcome-file>index.gsp</welcome-file>
+ <welcome-file>login/login</welcome-file>
</welcome-file-list>
<jsp-config>
diff --git a/idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy b/idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy
new file mode 100644
index 0000000..3a61185
--- /dev/null
+++ b/idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy
@@ -0,0 +1,17 @@
+package org.irods.mydrop.controller
+
+
+
+import grails.test.mixin.*
+import org.junit.*
+
+/**
+ * See the API for {@link grails.test.mixin.web.ControllerUnitTestMixin} for usage instructions
+ */
+@TestFor(MetadataSearchController)
+class MetadataSearchControllerTests {
+
+ void testSomething() {
+ fail "Implement me"
+ }
+}
diff --git a/idrop-web/web-app/css/bootstrap.css b/idrop-web/web-app/css/bootstrap.css
index 323e264..258561d 100755
--- a/idrop-web/web-app/css/bootstrap.css
+++ b/idrop-web/web-app/css/bootstrap.css
@@ -8,31 +8,31 @@
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix {
- *zoom: 1;
+ *zoom: 1;
}
.clearfix:before,
.clearfix:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
-.clearfix:after {
- clear: both;
+.clearfix:afterP {
+ clear: both;
}
.hide-text {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
}
.input-block-level {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
article,
aside,
@@ -44,476 +44,590 @@ header,
hgroup,
nav,
section {
- display: block;
+ display: block;
}
audio,
canvas,
video {
- display: inline-block;
- *display: inline;
- *zoom: 1;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
}
audio:not([controls]) {
- display: none;
+ display: none;
}
html {
- font-size: 100%;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
}
a:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
a:hover,
a:active {
- outline: 0;
+ outline: 0;
}
sub,
sup {
- position: relative;
- font-size: 75%;
- line-height: 0;
- vertical-align: baseline;
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
}
sup {
- top: -0.5em;
+ top: -0.5em;
}
sub {
- bottom: -0.25em;
+ bottom: -0.25em;
}
img {
- /* Responsive images (ensure images don't scale beyond their parents) */
+ /* Responsive images (ensure images don't scale beyond their parents) */
- max-width: 100%;
- /* Part 1: Set a maxium relative to the parent */
+ max-width: 100%;
+ /* Part 1: Set a maxium relative to the parent */
- width: auto\9;
- /* IE7-8 need help adjusting responsive images */
+ width: auto\9;
+ /* IE7-8 need help adjusting responsive images */
- height: auto;
- /* Part 2: Scale the height according to the width, otherwise you get stretching */
+ height: auto;
+ /* Part 2: Scale the height according to the width, otherwise you get stretching */
- vertical-align: middle;
- border: 0;
- -ms-interpolation-mode: bicubic;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
}
#map_canvas img {
- max-width: none;
+ max-width: none;
}
button,
input,
select,
textarea {
- margin: 0;
- font-size: 100%;
- vertical-align: middle;
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
}
button,
input {
- *overflow: visible;
- line-height: normal;
+ *overflow: visible;
+ line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
- padding: 0;
- border: 0;
+ padding: 0;
+ border: 0;
}
button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
- cursor: pointer;
- -webkit-appearance: button;
+ cursor: pointer;
+ -webkit-appearance: button;
}
input[type="search"] {
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- -webkit-appearance: textfield;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
- -webkit-appearance: none;
+ -webkit-appearance: none;
}
textarea {
- overflow: auto;
- vertical-align: top;
+ overflow: auto;
+ vertical-align: top;
}
body {
- margin: 0;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- line-height: 20px;
- color: #333333;
- background-color: #ffffff;
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333333;
+ background-color: #ffffff;
}
a {
- color: #0088cc;
- text-decoration: none;
+ color: #0088cc;
+ text-decoration: none;
}
a:hover {
- color: #005580;
- text-decoration: underline;
+ color: #005580;
+ text-decoration: underline;
+}
+
+/*Paulina's changes start*/
+
+.delConditionBtn{
+ padding: 5px 20px;
+ background-color: transparent;
+ font-size: 14px;
+ color: #B80000;
+ text-shadow: 0 1px 0 #B80000;
+ opacity: 0.75;
+ border-color: #B80000;
+ border-style: solid;
+ border-width: 2px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+
+}
+
+.addConditionBtn{
+ padding: 5px;
+ margin-right: 70%;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ background-color: transparent;
+ font-size: 14px;
+ font-weight: bold;
+ color: #336699;
+ text-shadow: 0 1px 0 #336699;
+ opacity: 0.75;
+ border-color: #336699;
+ border-style: solid;
+ border-width: 2px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+}
+
+.deleteNodeBtn{
+ margin-left: 85%;
+ font-size: 15px;
+ font-weight: bold;
+ color: #336699;
+ opacity: 0.75;
+ border-color: transparent;
+
+}
+.span2 > .metaHelp{
+ display: block;
+ background-color: #d5d5d5;
+ width: 100%;
+ font-size: 13px;
+ text-align: justify;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
+}
+
+.filterMetaTable {
+ min-width: 95%;
+ border-bottom: medium inset silver;
+ border-top: medium ridge silver;
+}
+
+.filterMetaTable th {
+ padding: 8px;
+ vertical-align: middle;
+}
+
+.filterMetaTable > tbody > tr {
+ vertical-align: middle;
+ border-top: thin solid silver;
+ padding: 10px;
+}
+.filterMetaTable > tbody > tr > td {
+
+ padding: 8px;
+ width:25%;
+}
+
+
+
+.labelRadio {
+ font-size: 13px;
+ display: inline;
+ color: #336699;
+ text-shadow: 0 1px 0 #336699;
+}
+
+
+
+.meta-header { /*header for input in filter form */
+
+ display: block;
+ padding: 3px;
+ width: 180px;
+ font-size: 12px;
+ font-weight: bold;
+ color: #336699;
+ background-color: #d5d5d5;
+ text-shadow: 0 1px 0 #336699;
+ text-transform: uppercase;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
+
+
+.metaOperator {
+ width: 80px;
+}
+
+
+/*Paulina's changes end*/
.img-rounded {
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
.img-polaroid {
- padding: 4px;
- background-color: #fff;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.2);
- -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
- -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ padding: 4px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.img-circle {
- -webkit-border-radius: 500px;
- -moz-border-radius: 500px;
- border-radius: 500px;
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
}
.row {
- margin-left: -20px;
- *zoom: 1;
+ margin-left: -20px;
+ *zoom: 1;
}
.row:before,
.row:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.row:after {
- clear: both;
+ clear: both;
}
[class*="span"] {
- float: left;
- min-height: 1px;
- margin-left: 20px;
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
}
.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
- width: 940px;
+ width: 940px;
}
.span12 {
- width: 940px;
+ width: 940px;
}
.span11 {
- width: 860px;
+ width: 860px;
}
.span10 {
- width: 780px;
+ width: 780px;
}
.span9 {
- width: 700px;
+ width: 700px;
}
.span8 {
- width: 620px;
+ width: 620px;
}
.span7 {
- width: 540px;
+ width: 540px;
}
.span6 {
- width: 460px;
+ width: 460px;
}
.span5 {
- width: 380px;
+ width: 380px;
}
.span4 {
- width: 300px;
+ width: 300px;
}
.span3 {
- width: 220px;
+ width: 220px;
}
.span2 {
- width: 140px;
+ width: 140px;
}
.span1 {
- width: 60px;
+ width: 60px;
}
.offset12 {
- margin-left: 980px;
+ margin-left: 980px;
}
.offset11 {
- margin-left: 900px;
+ margin-left: 900px;
}
.offset10 {
- margin-left: 820px;
+ margin-left: 820px;
}
.offset9 {
- margin-left: 740px;
+ margin-left: 740px;
}
.offset8 {
- margin-left: 660px;
+ margin-left: 660px;
}
.offset7 {
- margin-left: 580px;
+ margin-left: 580px;
}
.offset6 {
- margin-left: 500px;
+ margin-left: 500px;
}
.offset5 {
- margin-left: 420px;
+ margin-left: 420px;
}
.offset4 {
- margin-left: 340px;
+ margin-left: 340px;
}
.offset3 {
- margin-left: 260px;
+ margin-left: 260px;
}
.offset2 {
- margin-left: 180px;
+ margin-left: 180px;
}
.offset1 {
- margin-left: 100px;
+ margin-left: 100px;
}
.row-fluid {
- width: 100%;
- *zoom: 1;
+ width: 100%;
+ *zoom: 1;
}
.row-fluid:before,
.row-fluid:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.row-fluid:after {
- clear: both;
+ clear: both;
}
.row-fluid [class*="span"] {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- float: left;
- margin-left: 2.127659574468085%;
- *margin-left: 2.074468085106383%;
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: left;
+ margin-left: 2.127659574468085%;
+ *margin-left: 2.074468085106383%;
}
.row-fluid [class*="span"]:first-child {
- margin-left: 0;
+ margin-left: 0;
}
.row-fluid .span12 {
- width: 100%;
- *width: 99.94680851063829%;
+ width: 100%;
+ *width: 99.94680851063829%;
}
.row-fluid .span11 {
- width: 91.48936170212765%;
- *width: 91.43617021276594%;
+ width: 91.48936170212765%;
+ *width: 91.43617021276594%;
}
.row-fluid .span10 {
- width: 82.97872340425532%;
- *width: 82.92553191489361%;
+ width: 82.97872340425532%;
+ *width: 82.92553191489361%;
}
.row-fluid .span9 {
- width: 74.46808510638297%;
- *width: 74.41489361702126%;
+ width: 74.46808510638297%;
+ *width: 74.41489361702126%;
}
.row-fluid .span8 {
- width: 65.95744680851064%;
- *width: 65.90425531914893%;
+ width: 65.95744680851064%;
+ *width: 65.90425531914893%;
}
.row-fluid .span7 {
- width: 57.44680851063829%;
- *width: 57.39361702127659%;
+ width: 57.44680851063829%;
+ *width: 57.39361702127659%;
}
.row-fluid .span6 {
- width: 48.93617021276595%;
- *width: 48.88297872340425%;
+ width: 48.93617021276595%;
+ *width: 48.88297872340425%;
}
.row-fluid .span5 {
- width: 40.42553191489362%;
- *width: 40.37234042553192%;
+ width: 40.42553191489362%;
+ *width: 40.37234042553192%;
}
.row-fluid .span4 {
- width: 31.914893617021278%;
- *width: 31.861702127659576%;
+ width: 31.914893617021278%;
+ *width: 31.861702127659576%;
}
.row-fluid .span3 {
- width: 23.404255319148934%;
- *width: 23.351063829787233%;
+ width: 23.404255319148934%;
+ *width: 23.351063829787233%;
}
.row-fluid .span2 {
- width: 14.893617021276595%;
- *width: 14.840425531914894%;
+ width: 14.893617021276595%;
+ *width: 14.840425531914894%;
}
.row-fluid .span1 {
- width: 6.382978723404255%;
- *width: 6.329787234042553%;
+ width: 6.382978723404255%;
+ *width: 6.329787234042553%;
}
.row-fluid .offset12 {
- margin-left: 104.25531914893617%;
- *margin-left: 104.14893617021275%;
+ margin-left: 104.25531914893617%;
+ *margin-left: 104.14893617021275%;
}
.row-fluid .offset12:first-child {
- margin-left: 102.12765957446808%;
- *margin-left: 102.02127659574467%;
+ margin-left: 102.12765957446808%;
+ *margin-left: 102.02127659574467%;
}
.row-fluid .offset11 {
- margin-left: 95.74468085106382%;
- *margin-left: 95.6382978723404%;
+ margin-left: 95.74468085106382%;
+ *margin-left: 95.6382978723404%;
}
.row-fluid .offset11:first-child {
- margin-left: 93.61702127659574%;
- *margin-left: 93.51063829787232%;
+ margin-left: 93.61702127659574%;
+ *margin-left: 93.51063829787232%;
}
.row-fluid .offset10 {
- margin-left: 87.23404255319149%;
- *margin-left: 87.12765957446807%;
+ margin-left: 87.23404255319149%;
+ *margin-left: 87.12765957446807%;
}
.row-fluid .offset10:first-child {
- margin-left: 85.1063829787234%;
- *margin-left: 84.99999999999999%;
+ margin-left: 85.1063829787234%;
+ *margin-left: 84.99999999999999%;
}
.row-fluid .offset9 {
- margin-left: 78.72340425531914%;
- *margin-left: 78.61702127659572%;
+ margin-left: 78.72340425531914%;
+ *margin-left: 78.61702127659572%;
}
.row-fluid .offset9:first-child {
- margin-left: 76.59574468085106%;
- *margin-left: 76.48936170212764%;
+ margin-left: 76.59574468085106%;
+ *margin-left: 76.48936170212764%;
}
.row-fluid .offset8 {
- margin-left: 70.2127659574468%;
- *margin-left: 70.10638297872339%;
+ margin-left: 70.2127659574468%;
+ *margin-left: 70.10638297872339%;
}
.row-fluid .offset8:first-child {
- margin-left: 68.08510638297872%;
- *margin-left: 67.9787234042553%;
+ margin-left: 68.08510638297872%;
+ *margin-left: 67.9787234042553%;
}
.row-fluid .offset7 {
- margin-left: 61.70212765957446%;
- *margin-left: 61.59574468085106%;
+ margin-left: 61.70212765957446%;
+ *margin-left: 61.59574468085106%;
}
.row-fluid .offset7:first-child {
- margin-left: 59.574468085106375%;
- *margin-left: 59.46808510638297%;
+ margin-left: 59.574468085106375%;
+ *margin-left: 59.46808510638297%;
}
.row-fluid .offset6 {
- margin-left: 53.191489361702125%;
- *margin-left: 53.085106382978715%;
+ margin-left: 53.191489361702125%;
+ *margin-left: 53.085106382978715%;
}
.row-fluid .offset6:first-child {
- margin-left: 51.063829787234035%;
- *margin-left: 50.95744680851063%;
+ margin-left: 51.063829787234035%;
+ *margin-left: 50.95744680851063%;
}
.row-fluid .offset5 {
- margin-left: 44.68085106382979%;
- *margin-left: 44.57446808510638%;
+ margin-left: 44.68085106382979%;
+ *margin-left: 44.57446808510638%;
}
.row-fluid .offset5:first-child {
- margin-left: 42.5531914893617%;
- *margin-left: 42.4468085106383%;
+ margin-left: 42.5531914893617%;
+ *margin-left: 42.4468085106383%;
}
.row-fluid .offset4 {
- margin-left: 36.170212765957444%;
- *margin-left: 36.06382978723405%;
+ margin-left: 36.170212765957444%;
+ *margin-left: 36.06382978723405%;
}
.row-fluid .offset4:first-child {
- margin-left: 34.04255319148936%;
- *margin-left: 33.93617021276596%;
+ margin-left: 34.04255319148936%;
+ *margin-left: 33.93617021276596%;
}
.row-fluid .offset3 {
- margin-left: 27.659574468085104%;
- *margin-left: 27.5531914893617%;
+ margin-left: 27.659574468085104%;
+ *margin-left: 27.5531914893617%;
}
.row-fluid .offset3:first-child {
- margin-left: 25.53191489361702%;
- *margin-left: 25.425531914893618%;
+ margin-left: 25.53191489361702%;
+ *margin-left: 25.425531914893618%;
}
.row-fluid .offset2 {
- margin-left: 19.148936170212764%;
- *margin-left: 19.04255319148936%;
+ margin-left: 19.148936170212764%;
+ *margin-left: 19.04255319148936%;
}
.row-fluid .offset2:first-child {
- margin-left: 17.02127659574468%;
- *margin-left: 16.914893617021278%;
+ margin-left: 17.02127659574468%;
+ *margin-left: 16.914893617021278%;
}
.row-fluid .offset1 {
- margin-left: 10.638297872340425%;
- *margin-left: 10.53191489361702%;
+ margin-left: 10.638297872340425%;
+ *margin-left: 10.53191489361702%;
}
.row-fluid .offset1:first-child {
- margin-left: 8.51063829787234%;
- *margin-left: 8.404255319148938%;
+ margin-left: 8.51063829787234%;
+ *margin-left: 8.404255319148938%;
}
[class*="span"].hide,
.row-fluid [class*="span"].hide {
- display: none;
+ display: none;
}
[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
- float: right;
+ float: right;
}
.container {
- margin-right: auto;
- margin-left: auto;
- *zoom: 1;
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
}
.container:before,
.container:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.container:after {
- clear: both;
+ clear: both;
}
.container-fluid {
- padding-right: 20px;
- padding-left: 20px;
- *zoom: 1;
+ padding-right: 20px;
+ padding-left: 20px;
+ *zoom: 1;
}
.container-fluid:before,
.container-fluid:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.container-fluid:after {
- clear: both;
+ clear: both;
}
p {
- margin: 0 0 10px;
+ margin: 0 0 10px;
}
.lead {
- margin-bottom: 20px;
- font-size: 21px;
- font-weight: 200;
- line-height: 30px;
+ margin-bottom: 20px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 30px;
}
small {
- font-size: 85%;
+ font-size: 85%;
}
strong {
- font-weight: bold;
+ font-weight: bold;
}
em {
- font-style: italic;
+ font-style: italic;
}
cite {
- font-style: normal;
+ font-style: normal;
}
.muted {
- color: #999999;
+ color: #999999;
}
.text-warning {
- color: #c09853;
+ color: #c09853;
}
.text-error {
- color: #b94a48;
+ color: #b94a48;
}
.text-info {
- color: #3a87ad;
+ color: #3a87ad;
}
.text-success {
- color: #468847;
+ color: #468847;
}
h1,
h2,
@@ -521,12 +635,12 @@ h3,
h4,
h5,
h6 {
- margin: 10px 0;
- font-family: inherit;
- font-weight: bold;
- line-height: 1;
- color: inherit;
- text-rendering: optimizelegibility;
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 1;
+ color: inherit;
+ text-rendering: optimizelegibility;
}
h1 small,
h2 small,
@@ -534,316 +648,319 @@ h3 small,
h4 small,
h5 small,
h6 small {
- font-weight: normal;
- line-height: 1;
- color: #999999;
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
}
h1 {
- font-size: 36px;
- line-height: 40px;
+ font-size: 36px;
+ line-height: 40px;
}
h2 {
- font-size: 30px;
- line-height: 40px;
+ font-size: 30px;
+ line-height: 40px;
}
h3 {
- font-size: 24px;
- line-height: 40px;
+ font-size: 24px;
+ line-height: 40px;
}
h4 {
- font-size: 18px;
- line-height: 20px;
+ font-size: 18px;
+ line-height: 20px;
}
h5 {
- font-size: 14px;
- line-height: 20px;
+ font-size: 14px;
+ line-height: 20px;
}
h6 {
- font-size: 12px;
- line-height: 20px;
+ font-size: 12px;
+ line-height: 20px;
}
h1 small {
- font-size: 24px;
+ font-size: 24px;
}
h2 small {
- font-size: 18px;
+ font-size: 18px;
}
h3 small {
- font-size: 14px;
+ font-size: 14px;
}
h4 small {
- font-size: 14px;
+ font-size: 14px;
}
.page-header {
- padding-bottom: 9px;
- margin: 20px 0 30px;
- border-bottom: 1px solid #eeeeee;
+ padding-bottom: 9px;
+ margin: 20px 0 30px;
+ border-bottom: 1px solid #eeeeee;
}
ul,
ol {
- padding: 0;
- margin: 0 0 10px 25px;
+ padding: 0;
+ margin: 0 0 10px 25px;
}
ul ul,
ul ol,
ol ol,
ol ul {
- margin-bottom: 0;
+ margin-bottom: 0;
}
li {
- line-height: 20px;
+ line-height: 20px;
}
ul.unstyled,
ol.unstyled {
- margin-left: 0;
- list-style: none;
+ margin-left: 0;
+ list-style: none;
}
dl {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
dt,
dd {
- line-height: 20px;
+ line-height: 20px;
}
dt {
- font-weight: bold;
+ font-weight: bold;
}
dd {
- margin-left: 10px;
+ margin-left: 10px;
}
.dl-horizontal {
- *zoom: 1;
+ *zoom: 1;
}
.dl-horizontal:before,
.dl-horizontal:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.dl-horizontal:after {
- clear: both;
+ clear: both;
}
.dl-horizontal dt {
- float: left;
- width: 160px;
- clear: left;
- text-align: right;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
.dl-horizontal dd {
- margin-left: 180px;
+ margin-left: 180px;
}
hr {
- margin: 20px 0;
- border: 0;
- border-top: 1px solid #eeeeee;
- border-bottom: 1px solid #ffffff;
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
}
abbr[title] {
- cursor: help;
- border-bottom: 1px dotted #999999;
+ cursor: help;
+ border-bottom: 1px dotted #999999;
}
abbr.initialism {
- font-size: 90%;
- text-transform: uppercase;
+ font-size: 90%;
+ text-transform: uppercase;
}
blockquote {
- padding: 0 0 0 15px;
- margin: 0 0 20px;
- border-left: 5px solid #eeeeee;
+ padding: 0 0 0 15px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eeeeee;tab
}
blockquote p {
- margin-bottom: 0;
- font-size: 16px;
- font-weight: 300;
- line-height: 25px;
+ margin-bottom: 0;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 25px;
}
blockquote small {
- display: block;
- line-height: 20px;
- color: #999999;
+ display: block;
+ line-height: 20px;
+ color: #999999;
}
blockquote small:before {
- content: '\2014 \00A0';
+ content: '\2014 \00A0';
}
blockquote.pull-right {
- float: right;
- padding-right: 15px;
- padding-left: 0;
- border-right: 5px solid #eeeeee;
- border-left: 0;
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
}
blockquote.pull-right p,
blockquote.pull-right small {
- text-align: right;
+ text-align: right;
}
blockquote.pull-right small:before {
- content: '';
+ content: '';
}
blockquote.pull-right small:after {
- content: '\00A0 \2014';
+ content: '\00A0 \2014';
}
q:before,
q:after,
blockquote:before,
blockquote:after {
- content: "";
+ content: "";
}
address {
- display: block;
- margin-bottom: 20px;
- font-style: normal;
- line-height: 20px;
+ display: block;
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 20px;
}
code,
pre {
- padding: 0 3px 2px;
- font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
- font-size: 12px;
- color: #333333;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ padding: 0 3px 2px;
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
code {
- padding: 2px 4px;
- color: #d14;
- background-color: #f7f7f9;
- border: 1px solid #e1e1e8;
+ padding: 2px 4px;
+ color: #d14;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
}
pre {
- display: block;
- padding: 9.5px;
- margin: 0 0 10px;
- font-size: 13px;
- line-height: 20px;
- word-break: break-all;
- word-wrap: break-word;
- white-space: pre;
- white-space: pre-wrap;
- background-color: #f5f5f5;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.15);
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 20px;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
pre.prettyprint {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
pre code {
- padding: 0;
- color: inherit;
- background-color: transparent;
- border: 0;
+ padding: 0;
+ color: inherit;
+ background-color: transparent;
+ border: 0;
}
.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll;
+ max-height: 340px;
+ overflow-y: scroll;
}
.label,
.badge {
- font-size: 11.844px;
- font-weight: bold;
- line-height: 14px;
- color: #ffffff;
- vertical-align: baseline;
- white-space: nowrap;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #999999;
+ font-size: 11.844px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #ffffff;
+ vertical-align: baseline;
+ white-space: nowrap;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #999999;
}
.label {
- padding: 1px 4px 2px;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ padding: 1px 4px 2px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
.badge {
- padding: 1px 9px 2px;
- -webkit-border-radius: 9px;
- -moz-border-radius: 9px;
- border-radius: 9px;
+ padding: 1px 9px 2px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
}
a.label:hover,
a.badge:hover {
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
}
.label-important,
.badge-important {
- background-color: #b94a48;
+ background-color: #b94a48;
}
.label-important[href],
.badge-important[href] {
- background-color: #953b39;
+ background-color: #953b39;
}
.label-warning,
.badge-warning {
- background-color: #f89406;
+ background-color: #f89406;
}
.label-warning[href],
.badge-warning[href] {
- background-color: #c67605;
+ background-color: #c67605;
}
.label-success,
.badge-success {
- background-color: #468847;
+ background-color: #468847;
}
.label-success[href],
.badge-success[href] {
- background-color: #356635;
+ background-color: #356635;
}
.label-info,
.badge-info {
- background-color: #3a87ad;
+ background-color: #3a87ad;
}
.label-info[href],
.badge-info[href] {
- background-color: #2d6987;
+ background-color: #2d6987;
}
.label-inverse,
.badge-inverse {
- background-color: #333333;
+ background-color: #333333;
}
.label-inverse[href],
.badge-inverse[href] {
- background-color: #1a1a1a;
+ background-color: #1a1a1a;
}
.btn .label,
.btn .badge {
- position: relative;
- top: -1px;
+ position: relative;
+ top: -1px;
}
.btn-mini .label,
.btn-mini .badge {
- top: 0;
+ top: 0;
}
table {
- max-width: 100%;
- background-color: transparent;
- border-collapse: collapse;
- border-spacing: 0;
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
}
+
+
.table {
- width: 100%;
- margin-bottom: 20px;
+ width: 100%;
+ margin-bottom: 20px;
}
.table th,
.table td {
- padding: 8px;
- line-height: 20px;
- text-align: left;
- vertical-align: top;
- border-top: 1px solid #dddddd;
+ padding: 8px;
+ line-height: 20px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
}
+
.table th {
- font-weight: bold;
+ font-weight: bold;
}
.table thead th {
- vertical-align: bottom;
+ vertical-align: bottom;
}
.table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
@@ -851,27 +968,27 @@ table {
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th,
.table thead:first-child tr:first-child td {
- border-top: 0;
+ border-top: 0;
}
.table tbody + tbody {
- border-top: 2px solid #dddddd;
+ border-top: 2px solid #dddddd;
}
.table-condensed th,
.table-condensed td {
- padding: 4px 5px;
+ padding: 4px 5px;
}
.table-bordered {
- border: 1px solid #dddddd;
- border-collapse: separate;
- *border-collapse: collapse;
- border-left: 0;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ border: 1px solid #dddddd;
+ border-collapse: separate;
+ *border-collapse: collapse;
+ border-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.table-bordered th,
.table-bordered td {
- border-left: 1px solid #dddddd;
+ border-left: 1px solid #dddddd;
}
.table-bordered caption + thead tr:first-child th,
.table-bordered caption + tbody tr:first-child th,
@@ -882,252 +999,252 @@ table {
.table-bordered thead:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child td {
- border-top: 0;
+ border-top: 0;
}
.table-bordered thead:first-child tr:first-child th:first-child,
.table-bordered tbody:first-child tr:first-child td:first-child {
- -webkit-border-top-left-radius: 4px;
- border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
}
.table-bordered thead:first-child tr:first-child th:last-child,
.table-bordered tbody:first-child tr:first-child td:last-child {
- -webkit-border-top-right-radius: 4px;
- border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
}
.table-bordered thead:last-child tr:last-child th:first-child,
.table-bordered tbody:last-child tr:last-child td:first-child,
.table-bordered tfoot:last-child tr:last-child td:first-child {
- -webkit-border-radius: 0 0 0 4px;
- -moz-border-radius: 0 0 0 4px;
- border-radius: 0 0 0 4px;
- -webkit-border-bottom-left-radius: 4px;
- border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
+ -webkit-border-radius: 0 0 0 4px;
+ -moz-border-radius: 0 0 0 4px;
+ border-radius: 0 0 0 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
}
.table-bordered thead:last-child tr:last-child th:last-child,
.table-bordered tbody:last-child tr:last-child td:last-child,
.table-bordered tfoot:last-child tr:last-child td:last-child {
- -webkit-border-bottom-right-radius: 4px;
- border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
}
.table-bordered caption + thead tr:first-child th:first-child,
.table-bordered caption + tbody tr:first-child td:first-child,
.table-bordered colgroup + thead tr:first-child th:first-child,
.table-bordered colgroup + tbody tr:first-child td:first-child {
- -webkit-border-top-left-radius: 4px;
- border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
}
.table-bordered caption + thead tr:first-child th:last-child,
.table-bordered caption + tbody tr:first-child td:last-child,
.table-bordered colgroup + thead tr:first-child th:last-child,
.table-bordered colgroup + tbody tr:first-child td:last-child {
- -webkit-border-top-right-radius: 4px;
- border-top-right-radius: 4px;
- -moz-border-radius-topleft: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topleft: 4px;
}
.table-striped tbody tr:nth-child(odd) td,
.table-striped tbody tr:nth-child(odd) th {
- background-color: #f9f9f9;
+ background-color: #f9f9f9;
}
.table-hover tbody tr:hover td,
.table-hover tbody tr:hover th {
- background-color: #f5f5f5;
+ background-color: #f5f5f5;
}
table [class*=span],
.row-fluid table [class*=span] {
- display: table-cell;
- float: none;
- margin-left: 0;
+ display: table-cell;
+ float: none;
+ margin-left: 0;
}
.table .span1 {
- float: none;
- width: 44px;
- margin-left: 0;
+ float: none;
+ width: 44px;
+ margin-left: 0;
}
.table .span2 {
- float: none;
- width: 124px;
- margin-left: 0;
+ float: none;
+ width: 124px;
+ margin-left: 0;
}
.table .span3 {
- float: none;
- width: 204px;
- margin-left: 0;
+ float: none;
+ width: 204px;
+ margin-left: 0;
}
.table .span4 {
- float: none;
- width: 284px;
- margin-left: 0;
+ float: none;
+ width: 284px;
+ margin-left: 0;
}
.table .span5 {
- float: none;
- width: 364px;
- margin-left: 0;
+ float: none;
+ width: 364px;
+ margin-left: 0;
}
.table .span6 {
- float: none;
- width: 444px;
- margin-left: 0;
+ float: none;
+ width: 444px;
+ margin-left: 0;
}
.table .span7 {
- float: none;
- width: 524px;
- margin-left: 0;
+ float: none;
+ width: 524px;
+ margin-left: 0;
}
.table .span8 {
- float: none;
- width: 604px;
- margin-left: 0;
+ float: none;
+ width: 604px;
+ margin-left: 0;
}
.table .span9 {
- float: none;
- width: 684px;
- margin-left: 0;
+ float: none;
+ width: 684px;
+ margin-left: 0;
}
.table .span10 {
- float: none;
- width: 764px;
- margin-left: 0;
+ float: none;
+ width: 764px;
+ margin-left: 0;
}
.table .span11 {
- float: none;
- width: 844px;
- margin-left: 0;
+ float: none;
+ width: 844px;
+ margin-left: 0;
}
.table .span12 {
- float: none;
- width: 924px;
- margin-left: 0;
+ float: none;
+ width: 924px;
+ margin-left: 0;
}
.table .span13 {
- float: none;
- width: 1004px;
- margin-left: 0;
+ float: none;
+ width: 1004px;
+ margin-left: 0;
}
.table .span14 {
- float: none;
- width: 1084px;
- margin-left: 0;
+ float: none;
+ width: 1084px;
+ margin-left: 0;
}
.table .span15 {
- float: none;
- width: 1164px;
- margin-left: 0;
+ float: none;
+ width: 1164px;
+ margin-left: 0;
}
.table .span16 {
- float: none;
- width: 1244px;
- margin-left: 0;
+ float: none;
+ width: 1244px;
+ margin-left: 0;
}
.table .span17 {
- float: none;
- width: 1324px;
- margin-left: 0;
+ float: none;
+ width: 1324px;
+ margin-left: 0;
}
.table .span18 {
- float: none;
- width: 1404px;
- margin-left: 0;
+ float: none;
+ width: 1404px;
+ margin-left: 0;
}
.table .span19 {
- float: none;
- width: 1484px;
- margin-left: 0;
+ float: none;
+ width: 1484px;
+ margin-left: 0;
}
.table .span20 {
- float: none;
- width: 1564px;
- margin-left: 0;
+ float: none;
+ width: 1564px;
+ margin-left: 0;
}
.table .span21 {
- float: none;
- width: 1644px;
- margin-left: 0;
+ float: none;
+ width: 1644px;
+ margin-left: 0;
}
.table .span22 {
- float: none;
- width: 1724px;
- margin-left: 0;
+ float: none;
+ width: 1724px;
+ margin-left: 0;
}
.table .span23 {
- float: none;
- width: 1804px;
- margin-left: 0;
+ float: none;
+ width: 1804px;
+ margin-left: 0;
}
.table .span24 {
- float: none;
- width: 1884px;
- margin-left: 0;
+ float: none;
+ width: 1884px;
+ margin-left: 0;
}
.table tbody tr.success td {
- background-color: #dff0d8;
+ background-color: #dff0d8;
}
.table tbody tr.error td {
- background-color: #f2dede;
+ background-color: #f2dede;
}
.table tbody tr.warning td {
- background-color: #fcf8e3;
+ background-color: #fcf8e3;
}
.table tbody tr.info td {
- background-color: #d9edf7;
+ background-color: #d9edf7;
}
.table-hover tbody tr.success:hover td {
- background-color: #d0e9c6;
+ background-color: #d0e9c6;
}
.table-hover tbody tr.error:hover td {
- background-color: #ebcccc;
+ background-color: #ebcccc;
}
.table-hover tbody tr.warning:hover td {
- background-color: #faf2cc;
+ background-color: #faf2cc;
}
.table-hover tbody tr.info:hover td {
- background-color: #c4e3f3;
+ background-color: #c4e3f3;
}
form {
- margin: 0 0 20px;
+ margin: 0 0 20px;
}
fieldset {
- padding: 0;
- margin: 0;
- border: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
}
legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: 20px;
- font-size: 21px;
- line-height: 40px;
- color: #333333;
- border: 0;
- border-bottom: 1px solid #e5e5e5;
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: 40px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
}
legend small {
- font-size: 15px;
- color: #999999;
+ font-size: 15px;
+ color: #999999;
}
label,
input,
button,
select,
textarea {
- font-size: 14px;
- font-weight: normal;
- line-height: 20px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
}
input,
button,
select,
textarea {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
label {
- display: block;
- margin-bottom: 5px;
+ display: block;
+ margin-bottom: 5px;
}
select,
textarea,
@@ -1146,24 +1263,24 @@ input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
- display: inline-block;
- height: 20px;
- padding: 4px 6px;
- margin-bottom: 9px;
- font-size: 14px;
- line-height: 20px;
- color: #555555;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ display: inline-block;
+ height: 20px;
+ padding: 4px 6px;
+ margin-bottom: 9px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #555555;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
input,
textarea,
.uneditable-input {
- /*width: 206px;*/
+ /*width: 206px;*/
}
textarea {
- height: auto;
+ height: auto;
}
textarea,
input[type="text"],
@@ -1181,15 +1298,15 @@ input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
- background-color: #ffffff;
- border: 1px solid #cccccc;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -webkit-transition: border linear .2s, box-shadow linear .2s;
- -moz-transition: border linear .2s, box-shadow linear .2s;
- -o-transition: border linear .2s, box-shadow linear .2s;
- transition: border linear .2s, box-shadow linear .2s;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear .2s, box-shadow linear .2s;
+ -moz-transition: border linear .2s, box-shadow linear .2s;
+ -o-transition: border linear .2s, box-shadow linear .2s;
+ transition: border linear .2s, box-shadow linear .2s;
}
textarea:focus,
input[type="text"]:focus,
@@ -1207,26 +1324,26 @@ input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
.uneditable-input:focus {
- border-color: rgba(82, 168, 236, 0.8);
- outline: 0;
- outline: thin dotted \9;
- /* IE6-9 */
+ border-color: rgba(82, 168, 236, 0.8);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
}
input[type="radio"],
input[type="checkbox"] {
- margin: 4px 0 0;
- *margin-top: 0;
- /* IE7 */
+ margin: 4px 0 0;
+ *margin-top: 0;
+ /* IE7 */
- margin-top: 1px \9;
- /* IE8-9 */
+ margin-top: 1px \9;
+ /* IE8-9 */
- line-height: normal;
- cursor: pointer;
+ line-height: normal;
+ cursor: pointer;
}
input[type="file"],
input[type="image"],
@@ -1235,107 +1352,107 @@ input[type="reset"],
input[type="button"],
input[type="radio"],
input[type="checkbox"] {
- width: auto;
+ width: auto;
}
select,
input[type="file"] {
- height: 30px;
- /* In IE7, the height of the select element cannot be changed by height, only font-size */
+ height: 30px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
- *margin-top: 4px;
- /* For IE7, add top margin to align select with labels */
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
- line-height: 30px;
+ line-height: 30px;
}
select {
- width: 220px;
- border: 1px solid #cccccc;
- background-color: #ffffff;
+ width: 220px;
+ border: 1px solid #cccccc;
+ background-color: #ffffff;
}
select[multiple],
select[size] {
- height: auto;
+ height: auto;
}
select:focus,
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
.uneditable-input,
.uneditable-textarea {
- color: #999999;
- background-color: #fcfcfc;
- border-color: #cccccc;
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
- -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
- cursor: not-allowed;
+ color: #999999;
+ background-color: #fcfcfc;
+ border-color: #cccccc;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ cursor: not-allowed;
}
.uneditable-input {
- overflow: hidden;
- white-space: nowrap;
+ overflow: hidden;
+ white-space: nowrap;
}
.uneditable-textarea {
- width: auto;
- height: auto;
+ width: auto;
+ height: auto;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
- color: #999999;
+ color: #999999;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
- color: #999999;
+ color: #999999;
}
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
- color: #999999;
+ color: #999999;
}
.radio,
.checkbox {
- min-height: 18px;
- padding-left: 18px;
+ min-height: 18px;
+ padding-left: 18px;
}
.radio input[type="radio"],
.checkbox input[type="checkbox"] {
- float: left;
- margin-left: -18px;
+ float: left;
+ margin-left: -18px;
}
.controls > .radio:first-child,
.controls > .checkbox:first-child {
- padding-top: 5px;
+ padding-top: 5px;
}
.radio.inline,
.checkbox.inline {
- display: inline-block;
- padding-top: 5px;
- margin-bottom: 0;
- vertical-align: middle;
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
}
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
- margin-left: 10px;
+ margin-left: 10px;
}
.input-mini {
- width: 60px;
+ width: 60px;
}
.input-small {
- width: 90px;
+ width: 90px;
}
.input-medium {
- width: 150px;
+ width: 150px;
}
.input-large {
- width: 210px;
+ width: 210px;
}
.input-xlarge {
- width: 270px;
+ width: 270px;
}
.input-xxlarge {
- width: 530px;
+ width: 530px;
}
input[class*="span"],
select[class*="span"],
@@ -1345,8 +1462,8 @@ textarea[class*="span"],
.row-fluid select[class*="span"],
.row-fluid textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"] {
- float: none;
- margin-left: 0;
+ float: none;
+ margin-left: 0;
}
.input-append input[class*="span"],
.input-append .uneditable-input[class*="span"],
@@ -1358,66 +1475,66 @@ textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"],
.row-fluid .input-prepend [class*="span"],
.row-fluid .input-append [class*="span"] {
- display: inline-block;
+ display: inline-block;
}
input,
textarea,
.uneditable-input {
- margin-left: 0;
+ margin-left: 0;
}
.controls-row [class*="span"] + [class*="span"] {
- margin-left: 20px;
+ margin-left: 20px;
}
input.span12, textarea.span12, .uneditable-input.span12 {
- width: 926px;
+ width: 926px;
}
input.span11, textarea.span11, .uneditable-input.span11 {
- width: 846px;
+ width: 846px;
}
input.span10, textarea.span10, .uneditable-input.span10 {
- width: 766px;
+ width: 766px;
}
input.span9, textarea.span9, .uneditable-input.span9 {
- width: 686px;
+ width: 686px;
}
input.span8, textarea.span8, .uneditable-input.span8 {
- width: 606px;
+ width: 606px;
}
input.span7, textarea.span7, .uneditable-input.span7 {
- width: 526px;
+ width: 526px;
}
input.span6, textarea.span6, .uneditable-input.span6 {
- width: 446px;
+ width: 446px;
}
input.span5, textarea.span5, .uneditable-input.span5 {
- width: 366px;
+ width: 366px;
}
input.span4, textarea.span4, .uneditable-input.span4 {
- width: 286px;
+ width: 286px;
}
input.span3, textarea.span3, .uneditable-input.span3 {
- width: 206px;
+ width: 206px;
}
input.span2, textarea.span2, .uneditable-input.span2 {
- width: 126px;
+ width: 126px;
}
input.span1, textarea.span1, .uneditable-input.span1 {
- width: 46px;
+ width: 46px;
}
.controls-row {
- *zoom: 1;
+ *zoom: 1;
}
.controls-row:before,
.controls-row:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.controls-row:after {
- clear: both;
+ clear: both;
}
.controls-row [class*="span"] {
- float: left;
+ float: left;
}
input[disabled],
select[disabled],
@@ -1425,204 +1542,204 @@ textarea[disabled],
input[readonly],
select[readonly],
textarea[readonly] {
- cursor: not-allowed;
- background-color: #eeeeee;
+ cursor: not-allowed;
+ background-color: #eeeeee;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"][readonly],
input[type="checkbox"][readonly] {
- background-color: transparent;
+ background-color: transparent;
}
.control-group.warning > label,
.control-group.warning .help-block,
.control-group.warning .help-inline {
- color: #c09853;
+ color: #c09853;
}
.control-group.warning .checkbox,
.control-group.warning .radio,
.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
- color: #c09853;
+ color: #c09853;
}
.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
- border-color: #c09853;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #c09853;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.warning input:focus,
.control-group.warning select:focus,
.control-group.warning textarea:focus {
- border-color: #a47e3c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ border-color: #a47e3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
}
.control-group.warning .input-prepend .add-on,
.control-group.warning .input-append .add-on {
- color: #c09853;
- background-color: #fcf8e3;
- border-color: #c09853;
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
}
.control-group.error > label,
.control-group.error .help-block,
.control-group.error .help-inline {
- color: #b94a48;
+ color: #b94a48;
}
.control-group.error .checkbox,
.control-group.error .radio,
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
- color: #b94a48;
+ color: #b94a48;
}
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
- border-color: #b94a48;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #b94a48;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.error input:focus,
.control-group.error select:focus,
.control-group.error textarea:focus {
- border-color: #953b39;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ border-color: #953b39;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
}
.control-group.error .input-prepend .add-on,
.control-group.error .input-append .add-on {
- color: #b94a48;
- background-color: #f2dede;
- border-color: #b94a48;
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
}
.control-group.success > label,
.control-group.success .help-block,
.control-group.success .help-inline {
- color: #468847;
+ color: #468847;
}
.control-group.success .checkbox,
.control-group.success .radio,
.control-group.success input,
.control-group.success select,
.control-group.success textarea {
- color: #468847;
+ color: #468847;
}
.control-group.success input,
.control-group.success select,
.control-group.success textarea {
- border-color: #468847;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #468847;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.success input:focus,
.control-group.success select:focus,
.control-group.success textarea:focus {
- border-color: #356635;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ border-color: #356635;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
}
.control-group.success .input-prepend .add-on,
.control-group.success .input-append .add-on {
- color: #468847;
- background-color: #dff0d8;
- border-color: #468847;
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
}
.control-group.info > label,
.control-group.info .help-block,
.control-group.info .help-inline {
- color: #3a87ad;
+ color: #3a87ad;
}
.control-group.info .checkbox,
.control-group.info .radio,
.control-group.info input,
.control-group.info select,
.control-group.info textarea {
- color: #3a87ad;
+ color: #3a87ad;
}
.control-group.info input,
.control-group.info select,
.control-group.info textarea {
- border-color: #3a87ad;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #3a87ad;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.info input:focus,
.control-group.info select:focus,
.control-group.info textarea:focus {
- border-color: #2d6987;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ border-color: #2d6987;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
}
.control-group.info .input-prepend .add-on,
.control-group.info .input-append .add-on {
- color: #3a87ad;
- background-color: #d9edf7;
- border-color: #3a87ad;
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #3a87ad;
}
input:focus:required:invalid,
textarea:focus:required:invalid,
select:focus:required:invalid {
- color: #b94a48;
- border-color: #ee5f5b;
+ color: #b94a48;
+ border-color: #ee5f5b;
}
input:focus:required:invalid:focus,
textarea:focus:required:invalid:focus,
select:focus:required:invalid:focus {
- border-color: #e9322d;
- -webkit-box-shadow: 0 0 6px #f8b9b7;
- -moz-box-shadow: 0 0 6px #f8b9b7;
- box-shadow: 0 0 6px #f8b9b7;
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
}
.form-actions {
- padding: 19px 20px 20px;
- margin-top: 20px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border-top: 1px solid #e5e5e5;
- *zoom: 1;
+ padding: 19px 20px 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ *zoom: 1;
}
.form-actions:before,
.form-actions:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.form-actions:after {
- clear: both;
+ clear: both;
}
.help-block,
.help-inline {
- color: #595959;
+ color: #595959;
}
.help-block {
- display: block;
- margin-bottom: 10px;
+ display: block;
+ margin-bottom: 10px;
}
.help-inline {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- vertical-align: middle;
- padding-left: 5px;
+ *zoom: 1;
+ vertical-align: middle;
+ padding-left: 5px;
}
.input-append,
.input-prepend {
- margin-bottom: 5px;
- font-size: 0;
- white-space: nowrap;
+ margin-bottom: 5px;
+ font-size: 0;
+ white-space: nowrap;
}
.input-append input,
.input-prepend input,
@@ -1630,14 +1747,14 @@ select:focus:required:invalid:focus {
.input-prepend select,
.input-append .uneditable-input,
.input-prepend .uneditable-input {
- position: relative;
- margin-bottom: 0;
- *margin-left: 0;
- font-size: 14px;
- vertical-align: top;
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ position: relative;
+ margin-bottom: 0;
+ *margin-left: 0;
+ font-size: 14px;
+ vertical-align: top;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
.input-append input:focus,
.input-prepend input:focus,
@@ -1645,123 +1762,123 @@ select:focus:required:invalid:focus {
.input-prepend select:focus,
.input-append .uneditable-input:focus,
.input-prepend .uneditable-input:focus {
- z-index: 2;
+ z-index: 2;
}
.input-append .add-on,
.input-prepend .add-on {
- display: inline-block;
- width: auto;
- height: 20px;
- min-width: 16px;
- padding: 4px 5px;
- font-size: 14px;
- font-weight: normal;
- line-height: 20px;
- text-align: center;
- text-shadow: 0 1px 0 #ffffff;
- background-color: #eeeeee;
- border: 1px solid #ccc;
+ display: inline-block;
+ width: auto;
+ height: 20px;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
}
.input-append .add-on,
.input-prepend .add-on,
.input-append .btn,
.input-prepend .btn {
- vertical-align: top;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ vertical-align: top;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.input-append .active,
.input-prepend .active {
- background-color: #a9dba9;
- border-color: #46a546;
+ background-color: #a9dba9;
+ border-color: #46a546;
}
.input-prepend .add-on,
.input-prepend .btn {
- margin-right: -1px;
+ margin-right: -1px;
}
.input-prepend .add-on:first-child,
.input-prepend .btn:first-child {
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.input-append input,
.input-append select,
.input-append .uneditable-input {
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.input-append .add-on,
.input-append .btn {
- margin-left: -1px;
+ margin-left: -1px;
}
.input-append .add-on:last-child,
.input-append .btn:last-child {
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
.input-prepend.input-append input,
.input-prepend.input-append select,
.input-prepend.input-append .uneditable-input {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.input-prepend.input-append .add-on:first-child,
.input-prepend.input-append .btn:first-child {
- margin-right: -1px;
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ margin-right: -1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.input-prepend.input-append .add-on:last-child,
.input-prepend.input-append .btn:last-child {
- margin-left: -1px;
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
input.search-query {
- padding-right: 14px;
- padding-right: 4px \9;
- padding-left: 14px;
- padding-left: 4px \9;
- /* IE7-8 doesn't have border-radius, so don't indent the padding */
+ padding-right: 14px;
+ padding-right: 4px \9;
+ padding-left: 14px;
+ padding-left: 4px \9;
+ /* IE7-8 doesn't have border-radius, so don't indent the padding */
- margin-bottom: 0;
- -webkit-border-radius: 15px;
- -moz-border-radius: 15px;
- border-radius: 15px;
+ margin-bottom: 0;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
}
/* Allow for input prepend/append in search forms */
.form-search .input-append .search-query,
.form-search .input-prepend .search-query {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.form-search .input-append .search-query {
- -webkit-border-radius: 14px 0 0 14px;
- -moz-border-radius: 14px 0 0 14px;
- border-radius: 14px 0 0 14px;
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
}
.form-search .input-append .btn {
- -webkit-border-radius: 0 14px 14px 0;
- -moz-border-radius: 0 14px 14px 0;
- border-radius: 0 14px 14px 0;
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
}
.form-search .input-prepend .search-query {
- -webkit-border-radius: 0 14px 14px 0;
- -moz-border-radius: 0 14px 14px 0;
- border-radius: 0 14px 14px 0;
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
}
.form-search .input-prepend .btn {
- -webkit-border-radius: 14px 0 0 14px;
- -moz-border-radius: 14px 0 0 14px;
- border-radius: 14px 0 0 14px;
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
}
.form-search input,
.form-inline input,
@@ -1784,229 +1901,229 @@ input.search-query {
.form-search .input-append,
.form-inline .input-append,
.form-horizontal .input-append {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- margin-bottom: 0;
- vertical-align: middle;
+ *zoom: 1;
+ margin-bottom: 0;
+ vertical-align: middle;
}
.form-search .hide,
.form-inline .hide,
.form-horizontal .hide {
- display: none;
+ display: none;
}
.form-search label,
.form-inline label,
.form-search .btn-group,
.form-inline .btn-group {
- display: inline-block;
+ display: inline-block;
}
.form-search .input-append,
.form-inline .input-append,
.form-search .input-prepend,
.form-inline .input-prepend {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.form-search .radio,
.form-search .checkbox,
.form-inline .radio,
.form-inline .checkbox {
- padding-left: 0;
- margin-bottom: 0;
- vertical-align: middle;
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
}
.form-search .radio input[type="radio"],
.form-search .checkbox input[type="checkbox"],
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
- float: left;
- margin-right: 3px;
- margin-left: 0;
+ float: left;
+ margin-right: 3px;
+ margin-left: 0;
}
.control-group {
- margin-bottom: 10px;
+ margin-bottom: 10px;
}
legend + .control-group {
- margin-top: 20px;
- -webkit-margin-top-collapse: separate;
+ margin-top: 20px;
+ -webkit-margin-top-collapse: separate;
}
.form-horizontal .control-group {
- margin-bottom: 20px;
- *zoom: 1;
+ margin-bottom: 20px;
+ *zoom: 1;
}
.form-horizontal .control-group:before,
.form-horizontal .control-group:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.form-horizontal .control-group:after {
- clear: both;
+ clear: both;
}
.form-horizontal .control-label {
- float: left;
- width: 160px;
- padding-top: 5px;
- text-align: right;
+ float: left;
+ width: 160px;
+ padding-top: 5px;
+ text-align: right;
}
.form-horizontal .controls {
- *display: inline-block;
- *padding-left: 20px;
- margin-left: 180px;
- *margin-left: 0;
+ *display: inline-block;
+ *padding-left: 20px;
+ margin-left: 180px;
+ *margin-left: 0;
}
.form-horizontal .controls:first-child {
- *padding-left: 180px;
+ *padding-left: 180px;
}
.form-horizontal .help-block {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.form-horizontal input + .help-block,
.form-horizontal select + .help-block,
.form-horizontal textarea + .help-block {
- margin-top: 10px;
+ margin-top: 10px;
}
.form-horizontal .form-actions {
- padding-left: 180px;
+ padding-left: 180px;
}
.btn {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- padding: 4px 14px;
- margin-bottom: 0;
- font-size: 14px;
- line-height: 20px;
- *line-height: 20px;
- text-align: center;
- vertical-align: middle;
- cursor: pointer;
- color: #333333;
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
- background-color: #f5f5f5;
- background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
- background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
- background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
- background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
- border-color: #e6e6e6 #e6e6e6 #bfbfbf;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #e6e6e6;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ *zoom: 1;
+ padding: 4px 14px;
+ margin-bottom: 0;
+ font-size: 14px;
+ line-height: 20px;
+ *line-height: 20px;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ color: #333333;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ background-color: #f5f5f5;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #e6e6e6;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
- border: 1px solid #bbbbbb;
- *border: 0;
- border-bottom-color: #a2a2a2;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- *margin-left: .3em;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ border: 1px solid #bbbbbb;
+ *border: 0;
+ border-bottom-color: #a2a2a2;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ *margin-left: .3em;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.btn:hover,
.btn:active,
.btn.active,
.btn.disabled,
.btn[disabled] {
- color: #333333;
- background-color: #e6e6e6;
- *background-color: #d9d9d9;
+ color: #333333;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
}
.btn:active,
.btn.active {
- background-color: #cccccc \9;
+ background-color: #cccccc \9;
}
.btn:first-child {
- *margin-left: 0;
+ *margin-left: 0;
}
.btn:hover {
- color: #333333;
- text-decoration: none;
- background-color: #e6e6e6;
- *background-color: #d9d9d9;
- /* Buttons in IE7 don't get borders, so darken on hover */
+ color: #333333;
+ text-decoration: none;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+ /* Buttons in IE7 don't get borders, so darken on hover */
- background-position: 0 -15px;
- -webkit-transition: background-position 0.1s linear;
- -moz-transition: background-position 0.1s linear;
- -o-transition: background-position 0.1s linear;
- transition: background-position 0.1s linear;
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
}
.btn:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
.btn.active,
.btn:active {
- background-color: #e6e6e6;
- background-color: #d9d9d9 \9;
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ background-color: #e6e6e6;
+ background-color: #d9d9d9 \9;
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.btn.disabled,
.btn[disabled] {
- cursor: default;
- background-color: #e6e6e6;
- background-image: none;
- opacity: 0.65;
- filter: alpha(opacity=65);
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
+ cursor: default;
+ background-color: #e6e6e6;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
}
.btn-large {
- padding: 9px 14px;
- font-size: 16px;
- line-height: normal;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
+ padding: 9px 14px;
+ font-size: 16px;
+ line-height: normal;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
}
.btn-large [class^="icon-"] {
- margin-top: 2px;
+ margin-top: 2px;
}
.btn-small {
- padding: 3px 9px;
- font-size: 12px;
- line-height: 18px;
+ padding: 3px 9px;
+ font-size: 12px;
+ line-height: 18px;
}
.btn-small [class^="icon-"] {
- margin-top: 0;
+ margin-top: 0;
}
.btn-mini {
- padding: 2px 6px;
- font-size: 11px;
- line-height: 17px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 17px;
}
.btn-block {
- display: block;
- width: 100%;
- padding-left: 0;
- padding-right: 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: block;
+ width: 100%;
+ padding-left: 0;
+ padding-right: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.btn-block + .btn-block {
- margin-top: 5px;
+ margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
- width: 100%;
+ width: 100%;
}
.btn-primary.active,
.btn-warning.active,
@@ -2014,261 +2131,261 @@ input[type="button"].btn-block {
.btn-success.active,
.btn-info.active,
.btn-inverse.active {
- color: rgba(255, 255, 255, 0.75);
+ color: rgba(255, 255, 255, 0.75);
}
.btn {
- border-color: #c5c5c5;
- border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+ border-color: #c5c5c5;
+ border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
}
.btn-primary {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #006dcc;
- background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
- background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
- background-image: -o-linear-gradient(top, #0088cc, #0044cc);
- background-image: linear-gradient(to bottom, #0088cc, #0044cc);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
- border-color: #0044cc #0044cc #002a80;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #0044cc;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #0044cc;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-primary:hover,
.btn-primary:active,
.btn-primary.active,
.btn-primary.disabled,
.btn-primary[disabled] {
- color: #ffffff;
- background-color: #0044cc;
- *background-color: #003bb3;
+ color: #ffffff;
+ background-color: #0044cc;
+ *background-color: #003bb3;
}
.btn-primary:active,
.btn-primary.active {
- background-color: #003399 \9;
+ background-color: #003399 \9;
}
.btn-warning {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #faa732;
- background-image: -moz-linear-gradient(top, #fbb450, #f89406);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
- background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
- background-image: -o-linear-gradient(top, #fbb450, #f89406);
- background-image: linear-gradient(to bottom, #fbb450, #f89406);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
- border-color: #f89406 #f89406 #ad6704;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #f89406;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #f89406;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-warning:hover,
.btn-warning:active,
.btn-warning.active,
.btn-warning.disabled,
.btn-warning[disabled] {
- color: #ffffff;
- background-color: #f89406;
- *background-color: #df8505;
+ color: #ffffff;
+ background-color: #f89406;
+ *background-color: #df8505;
}
.btn-warning:active,
.btn-warning.active {
- background-color: #c67605 \9;
+ background-color: #c67605 \9;
}
.btn-danger {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #da4f49;
- background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
- background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
- background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
- background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
- border-color: #bd362f #bd362f #802420;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #bd362f;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #da4f49;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #bd362f;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-danger:hover,
.btn-danger:active,
.btn-danger.active,
.btn-danger.disabled,
.btn-danger[disabled] {
- color: #ffffff;
- background-color: #bd362f;
- *background-color: #a9302a;
+ color: #ffffff;
+ background-color: #bd362f;
+ *background-color: #a9302a;
}
.btn-danger:active,
.btn-danger.active {
- background-color: #942a25 \9;
+ background-color: #942a25 \9;
}
.btn-success {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #5bb75b;
- background-image: -moz-linear-gradient(top, #62c462, #51a351);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
- background-image: -webkit-linear-gradient(top, #62c462, #51a351);
- background-image: -o-linear-gradient(top, #62c462, #51a351);
- background-image: linear-gradient(to bottom, #62c462, #51a351);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
- border-color: #51a351 #51a351 #387038;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #51a351;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #5bb75b;
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(to bottom, #62c462, #51a351);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #51a351;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-success:hover,
.btn-success:active,
.btn-success.active,
.btn-success.disabled,
.btn-success[disabled] {
- color: #ffffff;
- background-color: #51a351;
- *background-color: #499249;
+ color: #ffffff;
+ background-color: #51a351;
+ *background-color: #499249;
}
.btn-success:active,
.btn-success.active {
- background-color: #408140 \9;
+ background-color: #408140 \9;
}
.btn-info {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #49afcd;
- background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
- background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
- background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
- background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
- border-color: #2f96b4 #2f96b4 #1f6377;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #2f96b4;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #49afcd;
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #2f96b4;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-info:hover,
.btn-info:active,
.btn-info.active,
.btn-info.disabled,
.btn-info[disabled] {
- color: #ffffff;
- background-color: #2f96b4;
- *background-color: #2a85a0;
+ color: #ffffff;
+ background-color: #2f96b4;
+ *background-color: #2a85a0;
}
.btn-info:active,
.btn-info.active {
- background-color: #24748c \9;
+ background-color: #24748c \9;
}
.btn-inverse {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #363636;
- background-image: -moz-linear-gradient(top, #444444, #222222);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
- background-image: -webkit-linear-gradient(top, #444444, #222222);
- background-image: -o-linear-gradient(top, #444444, #222222);
- background-image: linear-gradient(to bottom, #444444, #222222);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
- border-color: #222222 #222222 #000000;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #222222;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #363636;
+ background-image: -moz-linear-gradient(top, #444444, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+ background-image: -webkit-linear-gradient(top, #444444, #222222);
+ background-image: -o-linear-gradient(top, #444444, #222222);
+ background-image: linear-gradient(to bottom, #444444, #222222);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #222222;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-inverse:hover,
.btn-inverse:active,
.btn-inverse.active,
.btn-inverse.disabled,
.btn-inverse[disabled] {
- color: #ffffff;
- background-color: #222222;
- *background-color: #151515;
+ color: #ffffff;
+ background-color: #222222;
+ *background-color: #151515;
}
.btn-inverse:active,
.btn-inverse.active {
- background-color: #080808 \9;
+ background-color: #080808 \9;
}
button.btn,
input[type="submit"].btn {
- *padding-top: 3px;
- *padding-bottom: 3px;
+ *padding-top: 3px;
+ *padding-bottom: 3px;
}
button.btn::-moz-focus-inner,
input[type="submit"].btn::-moz-focus-inner {
- padding: 0;
- border: 0;
+ padding: 0;
+ border: 0;
}
button.btn.btn-large,
input[type="submit"].btn.btn-large {
- *padding-top: 7px;
- *padding-bottom: 7px;
+ *padding-top: 7px;
+ *padding-bottom: 7px;
}
button.btn.btn-small,
input[type="submit"].btn.btn-small {
- *padding-top: 3px;
- *padding-bottom: 3px;
+ *padding-top: 3px;
+ *padding-bottom: 3px;
}
button.btn.btn-mini,
input[type="submit"].btn.btn-mini {
- *padding-top: 1px;
- *padding-bottom: 1px;
+ *padding-top: 1px;
+ *padding-bottom: 1px;
}
.btn-link,
.btn-link:active,
.btn-link[disabled] {
- background-color: transparent;
- background-image: none;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
+ background-color: transparent;
+ background-image: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
}
.btn-link {
- border-color: transparent;
- cursor: pointer;
- color: #0088cc;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ border-color: transparent;
+ cursor: pointer;
+ color: #0088cc;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.btn-link:hover {
- color: #005580;
- text-decoration: underline;
- background-color: transparent;
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
}
.btn-link[disabled]:hover {
- color: #333333;
- text-decoration: none;
+ color: #333333;
+ text-decoration: none;
}
[class^="icon-"],
[class*=" icon-"] {
- display: inline-block;
- width: 14px;
- height: 14px;
- *margin-right: .3em;
- line-height: 14px;
- vertical-align: text-top;
- background-image: url("../img/glyphicons-halflings.png");
- background-position: 14px 14px;
- background-repeat: no-repeat;
- margin-top: 1px;
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ *margin-right: .3em;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("../img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+ margin-top: 1px;
}
/* White icons with optional class, or on hover/active states of certain elements */
.icon-white,
@@ -2284,597 +2401,597 @@ input[type="submit"].btn.btn-mini {
.dropdown-menu > li > a:hover > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"] {
- background-image: url("../img/glyphicons-halflings-white.png");
+ background-image: url("../img/glyphicons-halflings-white.png");
}
.icon-glass {
- background-position: 0 0;
+ background-position: 0 0;
}
.icon-music {
- background-position: -24px 0;
+ background-position: -24px 0;
}
.icon-search {
- background-position: -48px 0;
+ background-position: -48px 0;
}
.icon-envelope {
- background-position: -72px 0;
+ background-position: -72px 0;
}
.icon-heart {
- background-position: -96px 0;
+ background-position: -96px 0;
}
.icon-star {
- background-position: -120px 0;
+ background-position: -120px 0;
}
.icon-star-empty {
- background-position: -144px 0;
+ background-position: -144px 0;
}
.icon-user {
- background-position: -168px 0;
+ background-position: -168px 0;
}
.icon-film {
- background-position: -192px 0;
+ background-position: -192px 0;
}
.icon-th-large {
- background-position: -216px 0;
+ background-position: -216px 0;
}
.icon-th {
- background-position: -240px 0;
+ background-position: -240px 0;
}
.icon-th-list {
- background-position: -264px 0;
+ background-position: -264px 0;
}
.icon-ok {
- background-position: -288px 0;
+ background-position: -288px 0;
}
.icon-remove {
- background-position: -312px 0;
+ background-position: -312px 0;
}
.icon-zoom-in {
- background-position: -336px 0;
+ background-position: -336px 0;
}
.icon-zoom-out {
- background-position: -360px 0;
+ background-position: -360px 0;
}
.icon-off {
- background-position: -384px 0;
+ background-position: -384px 0;
}
.icon-signal {
- background-position: -408px 0;
+ background-position: -408px 0;
}
.icon-cog {
- background-position: -432px 0;
+ background-position: -432px 0;
}
.icon-trash {
- background-position: -456px 0;
+ background-position: -456px 0;
}
.icon-home {
- background-position: 0 -24px;
+ background-position: 0 -24px;
}
.icon-file {
- background-position: -24px -24px;
+ background-position: -24px -24px;
}
.icon-time {
- background-position: -48px -24px;
+ background-position: -48px -24px;
}
.icon-road {
- background-position: -72px -24px;
+ background-position: -72px -24px;
}
.icon-download-alt {
- background-position: -96px -24px;
+ background-position: -96px -24px;
}
.icon-download {
- background-position: -120px -24px;
+ background-position: -120px -24px;
}
.icon-upload {
- background-position: -144px -24px;
+ background-position: -144px -24px;
}
.icon-inbox {
- background-position: -168px -24px;
+ background-position: -168px -24px;
}
.icon-play-circle {
- background-position: -192px -24px;
+ background-position: -192px -24px;
}
.icon-repeat {
- background-position: -216px -24px;
+ background-position: -216px -24px;
}
.icon-refresh {
- background-position: -240px -24px;
+ background-position: -240px -24px;
}
.icon-list-alt {
- background-position: -264px -24px;
+ background-position: -264px -24px;
}
.icon-lock {
- background-position: -287px -24px;
+ background-position: -287px -24px;
}
.icon-flag {
- background-position: -312px -24px;
+ background-position: -312px -24px;
}
.icon-headphones {
- background-position: -336px -24px;
+ background-position: -336px -24px;
}
.icon-volume-off {
- background-position: -360px -24px;
+ background-position: -360px -24px;
}
.icon-volume-down {
- background-position: -384px -24px;
+ background-position: -384px -24px;
}
.icon-volume-up {
- background-position: -408px -24px;
+ background-position: -408px -24px;
}
.icon-qrcode {
- background-position: -432px -24px;
+ background-position: -432px -24px;
}
.icon-barcode {
- background-position: -456px -24px;
+ background-position: -456px -24px;
}
.icon-tag {
- background-position: 0 -48px;
+ background-position: 0 -48px;
}
.icon-tags {
- background-position: -25px -48px;
+ background-position: -25px -48px;
}
.icon-book {
- background-position: -48px -48px;
+ background-position: -48px -48px;
}
.icon-bookmark {
- background-position: -72px -48px;
+ background-position: -72px -48px;
}
.icon-print {
- background-position: -96px -48px;
+ background-position: -96px -48px;
}
.icon-camera {
- background-position: -120px -48px;
+ background-position: -120px -48px;
}
.icon-font {
- background-position: -144px -48px;
+ background-position: -144px -48px;
}
.icon-bold {
- background-position: -167px -48px;
+ background-position: -167px -48px;
}
.icon-italic {
- background-position: -192px -48px;
+ background-position: -192px -48px;
}
.icon-text-height {
- background-position: -216px -48px;
+ background-position: -216px -48px;
}
.icon-text-width {
- background-position: -240px -48px;
+ background-position: -240px -48px;
}
.icon-align-left {
- background-position: -264px -48px;
+ background-position: -264px -48px;
}
.icon-align-center {
- background-position: -288px -48px;
+ background-position: -288px -48px;
}
.icon-align-right {
- background-position: -312px -48px;
+ background-position: -312px -48px;
}
.icon-align-justify {
- background-position: -336px -48px;
+ background-position: -336px -48px;
}
.icon-list {
- background-position: -360px -48px;
+ background-position: -360px -48px;
}
.icon-indent-left {
- background-position: -384px -48px;
+ background-position: -384px -48px;
}
.icon-indent-right {
- background-position: -408px -48px;
+ background-position: -408px -48px;
}
.icon-facetime-video {
- background-position: -432px -48px;
+ background-position: -432px -48px;
}
.icon-picture {
- background-position: -456px -48px;
+ background-position: -456px -48px;
}
.icon-pencil {
- background-position: 0 -72px;
+ background-position: 0 -72px;
}
.icon-map-marker {
- background-position: -24px -72px;
+ background-position: -24px -72px;
}
.icon-adjust {
- background-position: -48px -72px;
+ background-position: -48px -72px;
}
.icon-tint {
- background-position: -72px -72px;
+ background-position: -72px -72px;
}
.icon-edit {
- background-position: -96px -72px;
+ background-position: -96px -72px;
}
.icon-share {
- background-position: -120px -72px;
+ background-position: -120px -72px;
}
.icon-check {
- background-position: -144px -72px;
+ background-position: -144px -72px;
}
.icon-move {
- background-position: -168px -72px;
+ background-position: -168px -72px;
}
.icon-step-backward {
- background-position: -192px -72px;
+ background-position: -192px -72px;
}
.icon-fast-backward {
- background-position: -216px -72px;
+ background-position: -216px -72px;
}
.icon-backward {
- background-position: -240px -72px;
+ background-position: -240px -72px;
}
.icon-play {
- background-position: -264px -72px;
+ background-position: -264px -72px;
}
.icon-pause {
- background-position: -288px -72px;
+ background-position: -288px -72px;
}
.icon-stop {
- background-position: -312px -72px;
+ background-position: -312px -72px;
}
.icon-forward {
- background-position: -336px -72px;
+ background-position: -336px -72px;
}
.icon-fast-forward {
- background-position: -360px -72px;
+ background-position: -360px -72px;
}
.icon-step-forward {
- background-position: -384px -72px;
+ background-position: -384px -72px;
}
.icon-eject {
- background-position: -408px -72px;
+ background-position: -408px -72px;
}
.icon-chevron-left {
- background-position: -432px -72px;
+ background-position: -432px -72px;
}
.icon-chevron-right {
- background-position: -456px -72px;
+ background-position: -456px -72px;
}
.icon-plus-sign {
- background-position: 0 -96px;
+ background-position: 0 -96px;
}
.icon-minus-sign {
- background-position: -24px -96px;
+ background-position: -24px -96px;
}
.icon-remove-sign {
- background-position: -48px -96px;
+ background-position: -48px -96px;
}
.icon-ok-sign {
- background-position: -72px -96px;
+ background-position: -72px -96px;
}
.icon-question-sign {
- background-position: -96px -96px;
+ background-position: -96px -96px;
}
.icon-info-sign {
- background-position: -120px -96px;
+ background-position: -120px -96px;
}
.icon-screenshot {
- background-position: -144px -96px;
+ background-position: -144px -96px;
}
.icon-remove-circle {
- background-position: -168px -96px;
+ background-position: -168px -96px;
}
.icon-ok-circle {
- background-position: -192px -96px;
+ background-position: -192px -96px;
}
.icon-ban-circle {
- background-position: -216px -96px;
+ background-position: -216px -96px;
}
.icon-arrow-left {
- background-position: -240px -96px;
+ background-position: -240px -96px;
}
.icon-arrow-right {
- background-position: -264px -96px;
+ background-position: -264px -96px;
}
.icon-arrow-up {
- background-position: -289px -96px;
+ background-position: -289px -96px;
}
.icon-arrow-down {
- background-position: -312px -96px;
+ background-position: -312px -96px;
}
.icon-share-alt {
- background-position: -336px -96px;
+ background-position: -336px -96px;
}
.icon-resize-full {
- background-position: -360px -96px;
+ background-position: -360px -96px;
}
.icon-resize-small {
- background-position: -384px -96px;
+ background-position: -384px -96px;
}
.icon-plus {
- background-position: -408px -96px;
+ background-position: -408px -96px;
}
.icon-minus {
- background-position: -433px -96px;
+ background-position: -433px -96px;
}
.icon-asterisk {
- background-position: -456px -96px;
+ background-position: -456px -96px;
}
.icon-exclamation-sign {
- background-position: 0 -120px;
+ background-position: 0 -120px;
}
.icon-gift {
- background-position: -24px -120px;
+ background-position: -24px -120px;
}
.icon-leaf {
- background-position: -48px -120px;
+ background-position: -48px -120px;
}
.icon-fire {
- background-position: -72px -120px;
+ background-position: -72px -120px;
}
.icon-eye-open {
- background-position: -96px -120px;
+ background-position: -96px -120px;
}
.icon-eye-close {
- background-position: -120px -120px;
+ background-position: -120px -120px;
}
.icon-warning-sign {
- background-position: -144px -120px;
+ background-position: -144px -120px;
}
.icon-plane {
- background-position: -168px -120px;
+ background-position: -168px -120px;
}
.icon-calendar {
- background-position: -192px -120px;
+ background-position: -192px -120px;
}
.icon-random {
- background-position: -216px -120px;
- width: 16px;
+ background-position: -216px -120px;
+ width: 16px;
}
.icon-comment {
- background-position: -240px -120px;
+ background-position: -240px -120px;
}
.icon-magnet {
- background-position: -264px -120px;
+ background-position: -264px -120px;
}
.icon-chevron-up {
- background-position: -288px -120px;
+ background-position: -288px -120px;
}
.icon-chevron-down {
- background-position: -313px -119px;
+ background-position: -313px -119px;
}
.icon-retweet {
- background-position: -336px -120px;
+ background-position: -336px -120px;
}
.icon-shopping-cart {
- background-position: -360px -120px;
+ background-position: -360px -120px;
}
.icon-folder-close {
- background-position: -384px -120px;
+ background-position: -384px -120px;
}
.icon-folder-open {
- background-position: -408px -120px;
- width: 16px;
+ background-position: -408px -120px;
+ width: 16px;
}
.icon-resize-vertical {
- background-position: -432px -119px;
+ background-position: -432px -119px;
}
.icon-resize-horizontal {
- background-position: -456px -118px;
+ background-position: -456px -118px;
}
.icon-hdd {
- background-position: 0 -144px;
+ background-position: 0 -144px;
}
.icon-bullhorn {
- background-position: -24px -144px;
+ background-position: -24px -144px;
}
.icon-bell {
- background-position: -48px -144px;
+ background-position: -48px -144px;
}
.icon-certificate {
- background-position: -72px -144px;
+ background-position: -72px -144px;
}
.icon-thumbs-up {
- background-position: -96px -144px;
+ background-position: -96px -144px;
}
.icon-thumbs-down {
- background-position: -120px -144px;
+ background-position: -120px -144px;
}
.icon-hand-right {
- background-position: -144px -144px;
+ background-position: -144px -144px;
}
.icon-hand-left {
- background-position: -168px -144px;
+ background-position: -168px -144px;
}
.icon-hand-up {
- background-position: -192px -144px;
+ background-position: -192px -144px;
}
.icon-hand-down {
- background-position: -216px -144px;
+ background-position: -216px -144px;
}
.icon-circle-arrow-right {
- background-position: -240px -144px;
+ background-position: -240px -144px;
}
.icon-circle-arrow-left {
- background-position: -264px -144px;
+ background-position: -264px -144px;
}
.icon-circle-arrow-up {
- background-position: -288px -144px;
+ background-position: -288px -144px;
}
.icon-circle-arrow-down {
- background-position: -312px -144px;
+ background-position: -312px -144px;
}
.icon-globe {
- background-position: -336px -144px;
+ background-position: -336px -144px;
}
.icon-wrench {
- background-position: -360px -144px;
+ background-position: -360px -144px;
}
.icon-tasks {
- background-position: -384px -144px;
+ background-position: -384px -144px;
}
.icon-filter {
- background-position: -408px -144px;
+ background-position: -408px -144px;
}
.icon-briefcase {
- background-position: -432px -144px;
+ background-position: -432px -144px;
}
.icon-fullscreen {
- background-position: -456px -144px;
+ background-position: -456px -144px;
}
.btn-group {
- position: relative;
- font-size: 0;
- vertical-align: middle;
- white-space: nowrap;
- *margin-left: .3em;
+ position: relative;
+ font-size: 0;
+ vertical-align: middle;
+ white-space: nowrap;
+ *margin-left: .3em;
}
.btn-group:first-child {
- *margin-left: 0;
+ *margin-left: 0;
}
.btn-group + .btn-group {
- margin-left: 5px;
+ margin-left: 5px;
}
.btn-toolbar {
- font-size: 0;
- margin-top: 10px;
- margin-bottom: 10px;
+ font-size: 0;
+ margin-top: 10px;
+ margin-bottom: 10px;
}
.btn-toolbar .btn-group {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
+ *zoom: 1;
}
.btn-toolbar .btn + .btn,
.btn-toolbar .btn-group + .btn,
.btn-toolbar .btn + .btn-group {
- margin-left: 5px;
+ margin-left: 5px;
}
.btn-group > .btn {
- position: relative;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ position: relative;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.btn-group > .btn + .btn {
- margin-left: -1px;
+ margin-left: -1px;
}
.btn-group > .btn,
.btn-group > .dropdown-menu {
- font-size: 14px;
+ font-size: 14px;
}
.btn-group > .btn-mini {
- font-size: 11px;
+ font-size: 11px;
}
.btn-group > .btn-small {
- font-size: 12px;
+ font-size: 12px;
}
.btn-group > .btn-large {
- font-size: 16px;
+ font-size: 16px;
}
.btn-group > .btn:first-child {
- margin-left: 0;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-left-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-left-radius: 4px;
+ margin-left: 0;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
}
.btn-group > .btn:last-child,
.btn-group > .dropdown-toggle {
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
- border-top-right-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
- border-bottom-right-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
}
.btn-group > .btn.large:first-child {
- margin-left: 0;
- -webkit-border-top-left-radius: 6px;
- -moz-border-radius-topleft: 6px;
- border-top-left-radius: 6px;
- -webkit-border-bottom-left-radius: 6px;
- -moz-border-radius-bottomleft: 6px;
- border-bottom-left-radius: 6px;
+ margin-left: 0;
+ -webkit-border-top-left-radius: 6px;
+ -moz-border-radius-topleft: 6px;
+ border-top-left-radius: 6px;
+ -webkit-border-bottom-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ border-bottom-left-radius: 6px;
}
.btn-group > .btn.large:last-child,
.btn-group > .large.dropdown-toggle {
- -webkit-border-top-right-radius: 6px;
- -moz-border-radius-topright: 6px;
- border-top-right-radius: 6px;
- -webkit-border-bottom-right-radius: 6px;
- -moz-border-radius-bottomright: 6px;
- border-bottom-right-radius: 6px;
+ -webkit-border-top-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ -moz-border-radius-bottomright: 6px;
+ border-bottom-right-radius: 6px;
}
.btn-group > .btn:hover,
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active {
- z-index: 2;
+ z-index: 2;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
- outline: 0;
+ outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
- padding-left: 8px;
- padding-right: 8px;
- -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- *padding-top: 5px;
- *padding-bottom: 5px;
+ padding-left: 8px;
+ padding-right: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ *padding-top: 5px;
+ *padding-bottom: 5px;
}
.btn-group > .btn-mini + .dropdown-toggle {
- padding-left: 5px;
- padding-right: 5px;
- *padding-top: 2px;
- *padding-bottom: 2px;
+ padding-left: 5px;
+ padding-right: 5px;
+ *padding-top: 2px;
+ *padding-bottom: 2px;
}
.btn-group > .btn-small + .dropdown-toggle {
- *padding-top: 5px;
- *padding-bottom: 4px;
+ *padding-top: 5px;
+ *padding-bottom: 4px;
}
.btn-group > .btn-large + .dropdown-toggle {
- padding-left: 12px;
- padding-right: 12px;
- *padding-top: 7px;
- *padding-bottom: 7px;
+ padding-left: 12px;
+ padding-right: 12px;
+ *padding-top: 7px;
+ *padding-bottom: 7px;
}
.btn-group.open .dropdown-toggle {
- background-image: none;
- -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.btn-group.open .btn.dropdown-toggle {
- background-color: #e6e6e6;
+ background-color: #e6e6e6;
}
.btn-group.open .btn-primary.dropdown-toggle {
- background-color: #0044cc;
+ background-color: #0044cc;
}
.btn-group.open .btn-warning.dropdown-toggle {
- background-color: #f89406;
+ background-color: #f89406;
}
.btn-group.open .btn-danger.dropdown-toggle {
- background-color: #bd362f;
+ background-color: #bd362f;
}
.btn-group.open .btn-success.dropdown-toggle {
- background-color: #51a351;
+ background-color: #51a351;
}
.btn-group.open .btn-info.dropdown-toggle {
- background-color: #2f96b4;
+ background-color: #2f96b4;
}
.btn-group.open .btn-inverse.dropdown-toggle {
- background-color: #222222;
+ background-color: #222222;
}
.btn .caret {
- margin-top: 8px;
- margin-left: 0;
+ margin-top: 8px;
+ margin-left: 0;
}
.btn-mini .caret,
.btn-small .caret,
.btn-large .caret {
- margin-top: 6px;
+ margin-top: 6px;
}
.btn-large .caret {
- border-left-width: 5px;
- border-right-width: 5px;
- border-top-width: 5px;
+ border-left-width: 5px;
+ border-right-width: 5px;
+ border-top-width: 5px;
}
.dropup .btn-large .caret {
- border-bottom: 5px solid #000000;
- border-top: 0;
+ border-bottom: 5px solid #000000;
+ border-top: 0;
}
.btn-primary .caret,
.btn-warning .caret,
@@ -2882,2956 +2999,2956 @@ input[type="submit"].btn.btn-mini {
.btn-info .caret,
.btn-success .caret,
.btn-inverse .caret {
- border-top-color: #ffffff;
- border-bottom-color: #ffffff;
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
}
.btn-group-vertical {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
+ *zoom: 1;
}
.btn-group-vertical .btn {
- display: block;
- float: none;
- width: 100%;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ display: block;
+ float: none;
+ width: 100%;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.btn-group-vertical .btn + .btn {
- margin-left: 0;
- margin-top: -1px;
+ margin-left: 0;
+ margin-top: -1px;
}
.btn-group-vertical .btn:first-child {
- -webkit-border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
- border-radius: 4px 4px 0 0;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
}
.btn-group-vertical .btn:last-child {
- -webkit-border-radius: 0 0 4px 4px;
- -moz-border-radius: 0 0 4px 4px;
- border-radius: 0 0 4px 4px;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
}
.btn-group-vertical .btn-large:first-child {
- -webkit-border-radius: 6px 6px 0 0;
- -moz-border-radius: 6px 6px 0 0;
- border-radius: 6px 6px 0 0;
+ -webkit-border-radius: 6px 6px 0 0;
+ -moz-border-radius: 6px 6px 0 0;
+ border-radius: 6px 6px 0 0;
}
.btn-group-vertical .btn-large:last-child {
- -webkit-border-radius: 0 0 6px 6px;
- -moz-border-radius: 0 0 6px 6px;
- border-radius: 0 0 6px 6px;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
}
.nav {
- margin-left: 0;
- margin-bottom: 20px;
- list-style: none;
+ margin-left: 0;
+ margin-bottom: 20px;
+ list-style: none;
}
.nav > li > a {
- display: block;
+ display: block;
}
.nav > li > a:hover {
- text-decoration: none;
- background-color: #eeeeee;
+ text-decoration: none;
+ background-color: #eeeeee;
}
.nav > .pull-right {
- float: right;
+ float: right;
}
.nav-header {
- display: block;
- padding: 3px 15px;
- font-size: 11px;
- font-weight: bold;
- line-height: 20px;
- color: #999999;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
- text-transform: uppercase;
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
}
.nav li + .nav-header {
- margin-top: 9px;
+ margin-top: 9px;
}
.nav-list {
- padding-left: 15px;
- padding-right: 15px;
- margin-bottom: 0;
+ padding-left: 15px;
+ padding-right: 15px;
+ margin-bottom: 0;
}
.nav-list > li > a,
.nav-list .nav-header {
- margin-left: -15px;
- margin-right: -15px;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ margin-left: -15px;
+ margin-right: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}
.nav-list > li > a {
- padding: 3px 15px;
+ padding: 3px 15px;
}
.nav-list > .active > a,
.nav-list > .active > a:hover {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
- background-color: #0088cc;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
}
.nav-list [class^="icon-"] {
- margin-right: 2px;
+ margin-right: 2px;
}
.nav-list .divider {
- *width: 100%;
- height: 1px;
- margin: 9px 1px;
- *margin: -5px 0 5px;
- overflow: hidden;
- background-color: #e5e5e5;
- border-bottom: 1px solid #ffffff;
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
}
.nav-tabs,
.nav-pills {
- *zoom: 1;
+ *zoom: 1;
}
.nav-tabs:before,
.nav-pills:before,
.nav-tabs:after,
.nav-pills:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.nav-tabs:after,
.nav-pills:after {
- clear: both;
+ clear: both;
}
.nav-tabs > li,
.nav-pills > li {
- float: left;
+ float: left;
}
.nav-tabs > li > a,
.nav-pills > li > a {
- padding-right: 12px;
- padding-left: 12px;
- margin-right: 2px;
- line-height: 14px;
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
}
.nav-tabs {
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
- margin-bottom: -1px;
+ margin-bottom: -1px;
}
.nav-tabs > li > a {
- padding-top: 8px;
- padding-bottom: 8px;
- line-height: 20px;
- border: 1px solid transparent;
- -webkit-border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
- border-radius: 4px 4px 0 0;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 20px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
}
.nav-tabs > li > a:hover {
- border-color: #eeeeee #eeeeee #dddddd;
+ border-color: #eeeeee #eeeeee #dddddd;
}
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover {
- color: #555555;
- background-color: #ffffff;
- border: 1px solid #ddd;
- border-bottom-color: transparent;
- cursor: default;
+ color: #555555;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+ cursor: default;
}
.nav-pills > li > a {
- padding-top: 8px;
- padding-bottom: 8px;
- margin-top: 2px;
- margin-bottom: 2px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
}
.nav-pills > .active > a,
.nav-pills > .active > a:hover {
- color: #ffffff;
- background-color: #0088cc;
+ color: #ffffff;
+ background-color: #0088cc;
}
.nav-stacked > li {
- float: none;
+ float: none;
}
.nav-stacked > li > a {
- margin-right: 0;
+ margin-right: 0;
}
.nav-tabs.nav-stacked {
- border-bottom: 0;
+ border-bottom: 0;
}
.nav-tabs.nav-stacked > li > a {
- border: 1px solid #ddd;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.nav-tabs.nav-stacked > li:first-child > a {
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
- border-top-right-radius: 4px;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
}
.nav-tabs.nav-stacked > li:last-child > a {
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
- border-bottom-right-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
}
.nav-tabs.nav-stacked > li > a:hover {
- border-color: #ddd;
- z-index: 2;
+ border-color: #ddd;
+ z-index: 2;
}
.nav-pills.nav-stacked > li > a {
- margin-bottom: 3px;
+ margin-bottom: 3px;
}
.nav-pills.nav-stacked > li:last-child > a {
- margin-bottom: 1px;
+ margin-bottom: 1px;
}
.nav-tabs .dropdown-menu {
- -webkit-border-radius: 0 0 6px 6px;
- -moz-border-radius: 0 0 6px 6px;
- border-radius: 0 0 6px 6px;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
}
.nav-pills .dropdown-menu {
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
.nav .dropdown-toggle .caret {
- border-top-color: #0088cc;
- border-bottom-color: #0088cc;
- margin-top: 6px;
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+ margin-top: 6px;
}
.nav .dropdown-toggle:hover .caret {
- border-top-color: #005580;
- border-bottom-color: #005580;
+ border-top-color: #005580;
+ border-bottom-color: #005580;
}
/* move down carets for tabs */
.nav-tabs .dropdown-toggle .caret {
- margin-top: 8px;
+ margin-top: 8px;
}
.nav .active .dropdown-toggle .caret {
- border-top-color: #fff;
- border-bottom-color: #fff;
+ border-top-color: #fff;
+ border-bottom-color: #fff;
}
.nav-tabs .active .dropdown-toggle .caret {
- border-top-color: #555555;
- border-bottom-color: #555555;
+ border-top-color: #555555;
+ border-bottom-color: #555555;
}
.nav > .dropdown.active > a:hover {
- cursor: pointer;
+ cursor: pointer;
}
.nav-tabs .open .dropdown-toggle,